]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
Rebuild dist
authorMark Otto <markdotto@gmail.com>
Wed, 8 Jul 2026 15:08:18 +0000 (08:08 -0700)
committerMark Otto <markdotto@gmail.com>
Wed, 8 Jul 2026 15:08:18 +0000 (08:08 -0700)
14 files changed:
dist/css/bootstrap.css
dist/css/bootstrap.css.map
dist/css/bootstrap.min.css
dist/css/bootstrap.min.css.map
dist/js/bootstrap.bundle.js
dist/js/bootstrap.bundle.js.map
dist/js/bootstrap.bundle.min.js
dist/js/bootstrap.bundle.min.js.map
dist/js/bootstrap.js
dist/js/bootstrap.js.map
dist/js/bootstrap.min.js
dist/js/bootstrap.min.js.map
js/dist/otp-input.js
js/dist/otp-input.js.map

index 3e9e7aac7af8b7d54f953df9c954e206071bdcfa..92270320d6eae934618112a2c2052dae930ffe78 100644 (file)
     height: 100%;
     padding: 0;
     color: transparent;
-    text-align: center;
+    pointer-events: auto;
     cursor: default;
     caret-color: transparent;
     background-color: transparent;
     font-weight: 500;
     line-height: 1;
     color: var(--bs-otp-slot-fg);
+    -webkit-user-select: none;
+    user-select: none;
     background-color: var(--bs-otp-slot-bg);
     border: var(--bs-otp-slot-border-width) solid var(--bs-otp-slot-border-color);
     border-radius: var(--bs-otp-slot-border-radius);
index 9638aed91a1dd7876e46e19d61f39237561ce60e..94faa4746699ed08e6094d3ca28a31499a6c13e3 100644 (file)
@@ -1 +1 @@
-{"version":3,"sources":["bootstrap.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_config.scss","../../scss/mixins/_border-radius.scss","../../scss/content/_type.scss","../../scss/mixins/_lists.scss","../../scss/content/_tables.scss","../../scss/layout/_breakpoints.scss","../../scss/content/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_box-shadow.scss","../../scss/content/_prose.scss","../../scss/mixins/_transition.scss","../../scss/layout/_containers.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_focus-ring.scss","../../scss/forms/_check.scss","../../scss/mixins/_mask-icon.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/forms/_strength.scss","../../scss/forms/_otp-input.scss","../../scss/forms/_form-adorn.scss","../../scss/forms/_chip-input.scss","../../scss/forms/_combobox.scss","../../scss/forms/_form-field.scss","../../scss/forms/_validation.scss","../../scss/mixins/_form-validation.scss","../../scss/buttons/_button.scss","../../scss/buttons/_button-group.scss","../../scss/buttons/_close.scss","../../scss/_accordion.scss","../../scss/_alert.scss","../../scss/_avatar.scss","../../scss/_badge.scss","../../scss/_breadcrumb.scss","../../scss/_chip.scss","../../scss/_card.scss","../../scss/_carousel.scss","../../scss/_datepicker.scss","../../scss/_dialog.scss","../../scss/mixins/_dialog-shared.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_drawer.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/mixins/_reset-text.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_tooltip.scss","../../scss/_transitions.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"names":[],"mappings":"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6EQ;IACE,wBAAA;EnBm6EV;EmBp6EQ;IACE,wBAAA;EnBs6EV;EmBv6EQ;IACE,wBAAA;EnBy6EV;EmB16EQ;IACE,wBAAA;EnB46EV;EmB76EQ;IACE,wBAAA;EnB+6EV;EmBh7EQ;IACE,wBAAA;EnBk7EV;EmBn7EQ;IACE,yBAAA;EnBq7EV;EmBt7EQ;IACE,yBAAA;EnBw7EV;EmBz7EQ;IACE,yBAAA;EnB27EV;EmBp7EQ;IACE,oBAFS;EnBw7EnB;EmBv7EQ;IACE,oBAFS;EnB27EnB;EmB17EQ;IACE,oBAFS;EnB87EnB;EmB77EQ;IACE,oBAFS;EnBi8EnB;EmBh8EQ;IACE,oBAFS;EnBo8EnB;EmBn8EQ;IACE,oBAFS;EnBu8EnB;EmBt8EQ;IACE,oBAFS;EnB08EnB;EmBz8EQ;IACE,oBAFS;EnB68EnB;EmB58EQ;IACE,oBAFS;EnBg9EnB;EmB/8EQ;IACE,qBAFS;EnBm9EnB;EmBl9EQ;IACE,qBAFS;EnBs9EnB;EW1+EE;IQaM;MACE,wBAAA;InBg+ER;ImBj+EM;MACE,wBAAA;InBm+ER;ImBp+EM;MACE,wBAAA;InBs+ER;ImBv+EM;MACE,wBAAA;InBy+ER;ImB1+EM;MACE,wBAAA;InB4+ER;ImB7+EM;MACE,wBAAA;InB++ER;ImBh/EM;MACE,wBAAA;InBk/ER;ImBn/EM;MACE,wBAAA;InBq/ER;ImBt/EM;MACE,wBAAA;InBw/ER;ImBz/EM;MACE,yBAAA;InB2/ER;ImB5/EM;MACE,yBAAA;InB8/ER;ImB//EM;MACE,yBAAA;InBigFR;ImB1/EM;MACE,oBAFS;InB8/EjB;ImB7/EM;MACE,oBAFS;InBigFjB;ImBhgFM;MACE,oBAFS;InBogFjB;ImBngFM;MACE,oBAFS;InBugFjB;ImBtgFM;MACE,oBAFS;InB0gFjB;ImBzgFM;MACE,oBAFS;InB6gFjB;ImB5gFM;MACE,oBAFS;InBghFjB;ImB/gFM;MACE,oBAFS;InBmhFjB;ImBlhFM;MACE,oBAFS;InBshFjB;ImBrhFM;MACE,qBAFS;InByhFjB;ImBxhFM;MACE,qBAFS;InB4hFjB;EACF;EWjjFE;IQaM;MACE,wBAAA;InBuiFR;ImBxiFM;MACE,wBAAA;InB0iFR;ImB3iFM;MACE,wBAAA;InB6iFR;ImB9iFM;MACE,wBAAA;InBgjFR;ImBjjFM;MACE,wBAAA;InBmjFR;ImBpjFM;MACE,wBAAA;InBsjFR;ImBvjFM;MACE,wBAAA;InByjFR;ImB1jFM;MACE,wBAAA;InB4jFR;ImB7jFM;MACE,wBAAA;InB+jFR;ImBhkFM;MACE,yBAAA;InBkkFR;ImBnkFM;MACE,yBAAA;InBqkFR;ImBtkFM;MACE,yBAAA;InBwkFR;ImBjkFM;MACE,oBAFS;InBqkFjB;ImBpkFM;MACE,oBAFS;InBwkFjB;ImBvkFM;MACE,oBAFS;InB2kFjB;ImB1kFM;MACE,oBAFS;InB8kFjB;ImB7kFM;MACE,oBAFS;InBilFjB;ImBhlFM;MACE,oBAFS;InBolFjB;ImBnlFM;MACE,oBAFS;InBulFjB;ImBtlFM;MACE,oBAFS;InB0lFjB;ImBzlFM;MACE,oBAFS;InB6lFjB;ImB5lFM;MACE,qBAFS;InBgmFjB;ImB/lFM;MACE,qBAFS;InBmmFjB;EACF;EWxnFE;IQaM;MACE,wBAAA;InB8mFR;ImB/mFM;MACE,wBAAA;InBinFR;ImBlnFM;MACE,wBAAA;InBonFR;ImBrnFM;MACE,wBAAA;InBunFR;ImBxnFM;MACE,wBAAA;InB0nFR;ImB3nFM;MACE,wBAAA;InB6nFR;ImB9nFM;MACE,wBAAA;InBgoFR;ImBjoFM;MACE,wBAAA;InBmoFR;ImBpoFM;MACE,wBAAA;InBsoFR;ImBvoFM;MACE,yBAAA;InByoFR;ImB1oFM;MACE,yBAAA;InB4oFR;ImB7oFM;MACE,yBAAA;InB+oFR;ImBxoFM;MACE,oBAFS;InB4oFjB;ImB3oFM;MACE,oBAFS;InB+oFjB;ImB9oFM;MACE,oBAFS;InBkpFjB;ImBjpFM;MACE,oBAFS;InBqpFjB;ImBppFM;MACE,oBAFS;InBwpFjB;ImBvpFM;MACE,oBAFS;InB2pFjB;ImB1pFM;MACE,oBAFS;InB8pFjB;ImB7pFM;MACE,oBAFS;InBiqFjB;ImBhqFM;MACE,oBAFS;InBoqFjB;ImBnqFM;MACE,qBAFS;InBuqFjB;ImBtqFM;MACE,qBAFS;InB0qFjB;EACF;EW/rFE;IQaM;MACE,wBAAA;InBqrFR;ImBtrFM;MACE,wBAAA;InBwrFR;ImBzrFM;MACE,wBAAA;InB2rFR;ImB5rFM;MACE,wBAAA;InB8rFR;ImB/rFM;MACE,wBAAA;InBisFR;ImBlsFM;MACE,wBAAA;InBosFR;ImBrsFM;MACE,wBAAA;InBusFR;ImBxsFM;MACE,wBAAA;InB0sFR;ImB3sFM;MACE,wBAAA;InB6sFR;ImB9sFM;MACE,yBAAA;InBgtFR;ImBjtFM;MACE,yBAAA;InBmtFR;ImBptFM;MACE,yBAAA;InBstFR;ImB/sFM;MACE,oBAFS;InBmtFjB;ImBltFM;MACE,oBAFS;InBstFjB;ImBrtFM;MACE,oBAFS;InBytFjB;ImBxtFM;MACE,oBAFS;InB4tFjB;ImB3tFM;MACE,oBAFS;InB+tFjB;ImB9tFM;MACE,oBAFS;InBkuFjB;ImBjuFM;MACE,oBAFS;InBquFjB;ImBpuFM;MACE,oBAFS;InBwuFjB;ImBvuFM;MACE,oBAFS;InB2uFjB;ImB1uFM;MACE,qBAFS;InB8uFjB;ImB7uFM;MACE,qBAFS;InBivFjB;EACF;EWtwFE;IQaM;MACE,wBAAA;InB4vFR;ImB7vFM;MACE,wBAAA;InB+vFR;ImBhwFM;MACE,wBAAA;InBkwFR;ImBnwFM;MACE,wBAAA;InBqwFR;ImBtwFM;MACE,wBAAA;InBwwFR;ImBzwFM;MACE,wBAAA;InB2wFR;ImB5wFM;MACE,wBAAA;InB8wFR;ImB/wFM;MACE,wBAAA;InBixFR;ImBlxFM;MACE,wBAAA;InBoxFR;ImBrxFM;MACE,yBAAA;InBuxFR;ImBxxFM;MACE,yBAAA;InB0xFR;ImB3xFM;MACE,yBAAA;InB6xFR;ImBtxFM;MACE,oBAFS;InB0xFjB;ImBzxFM;MACE,oBAFS;InB6xFjB;ImB5xFM;MACE,oBAFS;InBgyFjB;ImB/xFM;MACE,oBAFS;InBmyFjB;ImBlyFM;MACE,oBAFS;InBsyFjB;ImBryFM;MACE,oBAFS;In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GF,iJ2C4GI;E3D8sQR;EgBtzQI;I2CuGE;M3CtGA,gBAAA;IhByzQJ;EACF;E2DhtQQ;IACE,2DAAA;E3DktQV;E2DhtQU;IACE,0DAAA;E3DktQZ;E2D9sQQ;IACE,0DAAA;E3DgtQV;E2D9sQU;IACE,2DAAA;E3DgtQZ;E2D5sQQ;IACE,2DAAA;E3D8sQV;E2D3sQQ;IACE,0DAAA;E3D6sQV;E2D1sQQ;IACE,0DAAA;E3D4sQV;E2DxsQQ;IACE,mBAAA;I3C7IN,4G2C8IM;E3D0sQV;EgBp1QI;I2CwII;M3CvIF,gBAAA;IhBu1QJ;EACF;E2DjtQQ;IAGE,eAAA;E3DitQV;E2D5sQM;IACE,mBAAA;IACA,eAAA;E3D8sQR;E2DxpQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErDk1QA;EgBr2QI;I2CwMF;M3CvMI,gBAAA;IhBw2QJ;EACF;E2DlqQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErD41QA;EgB/2QI;I2CwMF;M3CvMI,gBAAA;IhBk3QJ;EACF;E2D5qQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErDs2QA;EgBz3QI;I2CwMF;M3CvMI,gBAAA;IhB43QJ;EACF;E2DtrQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErDg3QA;EgBn4QI;I2CwMF;M3CvMI,gBAAA;IhBs4QJ;EACF;E2DhsQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErD03QA;EgB74QI;I2CwMF;M3CvMI,gBAAA;IhBg5QJ;EACF;E2D1sQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErDo4QA;EgBv5QI;I2CwMF;M3CvMI,gBAAA;IhB05QJ;EACF;E2D3sQA;IAEI;MACE,6BAAA;MACA,wBAAA;I3D4sQJ;I2D9sQE;MACE,6BAAA;MACA,wBAAA;I3DgtQJ;I2DltQE;MACE,6BAAA;MACA,wBAAA;I3DotQJ;I2DttQE;MACE,6BAAA;MACA,wBAAA;I3DwtQJ;I2D1tQE;MACE,6BAAA;MACA,wBAAA;I3D4tQJ;I2D9tQE;MACE,6BAAA;MACA,wBAAA;I3DguQJ;EACF;E2D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I,kBAoDG;EnF+hTT;EmFv8SE;IA5II,mBAoDG;EnFkiTT;EmF18SE;IA5II,iBAoDG;EnFqiTT;EmF78SE;IA5II,WAoDG;EnFwiTT;EmFh9SE;IA5II,mBAoDG;EnF2iTT;EmFn9SE;IA5II,iBAoDG;EnF8iTT;EmFt9SE;IA5II,gBAoDG;EnFijTT;EmFz9SE;IA5II,sBAoDG;EnFojTT;EmF59SE;IA5II,gBAoDG;EnFujTT;EmF/9SE;IA5II,UAoDG;EnF0jTT;EmFl+SE;IA5II,aAoDG;EnF6jTT;EmFr+SE;IA5II,YAoDG;EnFgkTT;EmFx+SE;IA5II,aAoDG;EnFmkTT;EmF3+SE;IA5II,UAoDG;EnFskTT;EmF9+SE;IA5II,cAyDO;EnFokTb;EmFj/SE;IA5II,gBAyDO;EnFukTb;EmFp/SE;IA5II,iBAyDO;EnF0kTb;EmFv/SE;IA5II,gBAyDO;EnF6kTb;EmF1/SE;IA5II,gBAyDO;EnFglTb;EmF7/SE;IA5II,kBAyDO;EnFmlTb;EmFhgTE;IA5II,mBAyDO;EnFslTb;EmFngTE;IA5II,kBAyDO;EnFylTb;EmFtgTE;IA5II,gBAyDO;EnF4lTb;EmFzgTE;IA5II,kBAyDO;EnF+lTb;EmF5gTE;IA5II,mBAyDO;EnFkmTb;EmF/gTE;IA5II,kBAyDO;EnFqmTb;EmFlhTE;IA5II,2BAoDG;EnF6mTT;EmFrhTE;IA5II,oBAoDG;EnFgnTT;EmFxhTE;IA5II,eAyDO;EnF8mTb;EmF3hTE;IA5II,qBAyDO;EnFinTb;EmF9hTE;IA5II,cAyDO;EnFonTb;EmFjiTE;IA5II,aAyDO;EnFunTb;EmFpiTE;IA5II,oBAyDO;EnF0nTb;EmFviTE;IA5II,cAyDO;EnF6nTb;EmF1iTE;IA5II,kBAyDO;EnFgoTb;EmF7iTE;IA5II,mBAyDO;EnFmoTb;EmFhjTE;IA5II,aAyDO;EnFsoTb;EmFnjTE;IA5II,oBAyDO;EnFyoTb;EmFtjTE;IA5II,iBAyDO;EnF4oTb;EmFzjTE;IA5II,kBAyDO;EnF+oTb;EmF5jTE;IA5II,aAyDO;EnFkpTb;EmF/jTE;IA5II,gCAoDG;EnF0pTT;EmFlkTE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,cAoDG;EnF0gUT;EmFl7TE;IA5II,mBAyDO;EnFwgUb;EmFr7TE;IA5II,sBAyDO;EnF2gUb;EmFx7TE;IA5II,2BAyDO;EnF8gUb;EmF37TE;IA5II,8BAyDO;EnFihUb;EmF97TE;IA5II,YAoDG;EnFyhUT;EmFj8TE;IA5II,YAoDG;EnF4hUT;EmFp8TE;IA5II,cAoDG;EnF+hUT;EmFv8TE;IA5II,cAoDG;EnFkiUT;EmF18TE;IA5II,eAyDO;EnFgiUb;EmF78TE;IA5II,iBAyDO;EnFmiUb;EmFh9TE;IA5II,uBAyDO;EnFsiUb;EmFn9TE;IA5II,2BAoDG;EnF8iUT;EmFt9TE;IA5II,yBAoDG;EnFijUT;EmFz9TE;IA5II,uBAoDG;EnFojUT;EmF59TE;IA5II,8BAoDG;EnFujUT;EmF/9TE;IA5II,6BAoDG;EnF0jUT;EmFl+TE;IA5II,6BAoDG;EnF6jUT;EmFr+TE;IA5II,oBAoDG;EnFgkUT;EmFx+TE;IA5II,kBAoDG;EnFmkUT;EmF3+TE;IA5II,qBAoDG;EnFskUT;EmF9+TE;IA5II,sBAoDG;EnFykUT;EmFj/TE;IA5II,mBAoDG;EnF4kUT;EmFp/TE;IA5II,iBAoDG;EnF+kUT;EmFv/TE;IA5II,oBAoDG;EnFklUT;EmF1/TE;IA5II,uBAoDG;EnFqlUT;EmF7/TE;IA5II,qBAoDG;EnFwlUT;EmFhgUE;IA5II,mBAoDG;EnF2lUT;EmFngUE;IA5II,qBAoDG;EnF8lUT;EmFtgUE;IA5II,oBAoDG;EnFimUT;EmFzgUE;IA5II,yBAoDG;EnFomUT;EmF5gUE;IA5II,uBAoDG;EnFumUT;EmF/gUE;IA5II,qBAoDG;EnF0mUT;EmFlhUE;IA5II,4BAoDG;EnF6mUT;EmFrhUE;IA5II,2BAoDG;EnFgnUT;EmFxhUE;IA5II,sBAoDG;EnFmnUT;EmF3hUE;IA5II,gBAoDG;EnFsnUT;EmF9hUE;IA5II,sBAoDG;EnFynUT;EmFjiUE;IA5II,oBAoDG;EnF4nUT;EmFpiUE;IA5II,kBAoDG;EnF+nUT;EmFviUE;IA5II,oBAoDG;EnFkoUT;EmF1iUE;IA5II,mBAoDG;EnFqoUT;EmF7iUE;IA5II,kBAoDG;EnFwoUT;EmFhjUE;IA5II,gBAoDG;EnF2oUT;EmFnjUE;IA5II,mBAoDG;EnF8oUT;EmFtjUE;IA5II,oBAoDG;EnFipUT;EmFzjUE;IA5II,0BAoDG;EnFopUT;EmF5jUE;IA5II,qCAoDG;EnFupUT;EmF/jUE;IA5II,qCAoDG;EnF0pUT;EmFlkUE;IA5II,qCAoDG;EnF6pUT;EmFrkUE;IA5II,qCAoDG;EnFgqUT;EmFxkUE;IA5II,mBAoDG;EnFmqUT;EmF3kUE;IA5II,mBAyDO;EnFiqUb;EmF9kUE;IA5II,sBAyDO;EnFoqUb;EmFjlUE;IA5II,qBAyDO;EnFuqUb;EmFplUE;IA5II,SAoDG;EnF+qUT;EmFvlUE;IA5II,QAoDG;EnFkrUT;EmF1lUE;IA5II,QAoDG;EnFqrUT;EmF7lUE;IA5II,QAoDG;EnFwrUT;EmFhmUE;IA5II,QAoDG;EnF2rUT;EmFnmUE;IA5II,QAoDG;EnF8rUT;EmFtmUE;IA5II,QAoDG;EnFisUT;EmFzmUE;IA5II,QAoDG;EnFosUT;EmF5mUE;IA5II,SAoDG;EnFusUT;EmF/mUE;IA5II,eAoDG;EnF0sUT;EmFlnUE;IA5II,cAoDG;EnF6sUT;EmFrnUE;IA5II,eAoDG;EnFgtUT;EmFxnUE;IA5II,YAoDG;EnFmtUT;EmF3nUE;IA5II,eAoDG;EnFstUT;EmF9nUE;IA5II,cAoDG;EnFytUT;EmFjoUE;IA5II,YAoDG;EnF4tUT;EmFpoUE;IA5II,cAoDG;EnF+tUT;EmFvoUE;IA5II,YAoDG;EnFkuUT;EmF1oUE;IA5II,YAoDG;EnFquUT;EmF7oUE;IA5II,gBAoDG;EnFwuUT;EmFhpUE;IA5II,sBAoDG;EnF2uUT;EmFnpUE;IA5II,qBAoDG;EnF8uUT;EmFtpUE;IA5II,sBAoDG;EnFivUT;EmFzpUE;IA5II,mBAoDG;EnFovUT;EmF5pUE;IA5II,sBAoDG;EnFuvUT;EmF/pUE;IA5II,qBAoDG;EnF0vUT;EmFlqUE;IA5II,mBAoDG;EnF6vUT;EmFrqUE;IA5II,qBAoDG;EnFgwUT;EmFxqUE;IA5II,mBAoDG;EnFmwUT;EmF3qUE;IA5II,mBAoDG;EnFswUT;EmF9qUE;IA5II,eAoDG;EnFywUT;EmFjrUE;IA5II,qBAoDG;EnF4wUT;EmFprUE;IA5II,oBAoDG;EnF+wUT;EmFvrUE;IA5II,qBAoDG;EnFkxUT;EmF1rUE;IA5II,kBAoDG;EnFqxUT;EmF7rUE;IA5II,qBAoDG;EnFwxUT;EmFhsUE;IA5II,oBAoDG;EnF2xUT;EmFnsUE;IA5II,kBAoDG;EnF8xUT;EmFtsUE;IA5II,oBAoDG;EnFiyUT;EmFzsUE;IA5II,kBAoDG;EnFoyUT;EmF5sUE;IA5II,kBAoDG;EnFuyUT;EmF/sUE;IA5II,qBAoDG;EnF0yUT;EmFltUE;IA5II,2BAoDG;EnF6yUT;EmFrtUE;IA5II,0BAoDG;EnFgzUT;EmFxtUE;IA5II,2BAoDG;EnFmzUT;EmF3tUE;IA5II,wBAoDG;EnFszUT;EmF9tUE;IA5II,2BAoDG;EnFyzUT;EmFjuUE;IA5II,0BAoDG;EnF4zUT;EmFpuUE;IA5II,wBAoDG;EnF+zUT;EmFvuUE;IA5II,0BAoDG;EnFk0UT;EmF1uUE;IA5II,wBAoDG;EnFq0UT;EmF7uUE;IA5II,wBAoDG;EnFw0UT;EmFhvUE;IA5II,oBAoDG;EnF20UT;EmFnvUE;IA5II,0BAoDG;EnF80UT;EmFtvUE;IA5II,yBAoDG;EnFi1UT;EmFzvUE;IA5II,0BAoDG;EnFo1UT;EmF5vUE;IA5II,uBAoDG;EnFu1UT;EmF/vUE;IA5II,0BAoDG;EnF01UT;EmFlwUE;IA5II,yBAoDG;EnF61UT;EmFrwUE;IA5II,uBAoDG;EnFg2UT;EmFxwUE;IA5II,yBAoDG;EnFm2UT;EmF3wUE;IA5II,uBAoDG;EnFs2UT;EmF9wUE;IA5II,2BAoDG;EnFy2UT;EmFjxUE;IA5II,0BAoDG;EnF42UT;EmFpxUE;IA5II,uBAoDG;EnF+2UT;EmFvxUE;IA5II,mBAoDG;EnFk3UT;EmF1xUE;IA5II,yBAoDG;EnFq3UT;EmF7xUE;IA5II,wBAoDG;EnFw3UT;EmFhyUE;IA5II,yBAoDG;EnF23UT;EmFnyUE;IA5II,sBAoDG;EnF83UT;EmFtyUE;IA5II,yBAoDG;EnFi4UT;EmFzyUE;IA5II,wBAoDG;EnFo4UT;EmF5yUE;IA5II,sBAoDG;EnFu4UT;EmF/yUE;IA5II,wBAoDG;EnF04UT;EmFlzUE;IA5II,sBAoDG;EnF64UT;EmFrzUE;IA5II,sBAoDG;EnFg5UT;EmFxzUE;IA5II,sBAoDG;EnFm5UT;EmF3zUE;IA5II,4BAoDG;EnFs5UT;EmF9zUE;IA5II,2BAoDG;EnFy5UT;EmFj0UE;IA5II,4BAoDG;EnF45UT;EmFp0UE;IA5II,yBAoDG;EnF+5UT;EmFv0UE;IA5II,4BAoDG;EnFk6UT;EmF10UE;IA5II,2BAoDG;EnFq6UT;EmF70UE;IA5II,yBAoDG;EnFw6UT;EmFh1UE;IA5II,2BAoDG;EnF26UT;EmFn1UE;IA5II,yBAoDG;EnF86UT;EmFt1UE;IA5II,6BAoDG;EnFi7UT;EmFz1UE;IA5II,4BAoDG;EnFo7UT;EmF51UE;IA5II,yBAoDG;EnFu7UT;EmF/1UE;IA5II,UAoDG;EnF07UT;EmFl2UE;IA5II,gBAoDG;EnF67UT;EmFr2UE;IA5II,eAoDG;EnFg8UT;EmFx2UE;IA5II,gBAoDG;EnFm8UT;EmF32UE;IA5II,aAoDG;EnFs8UT;EmF92UE;IA5II,gBAoDG;EnFy8UT;EmFj3UE;IA5II,eAoDG;EnF48UT;EmFp3UE;IA5II,aAoDG;EnF+8UT;EmFv3UE;IA5II,eAoDG;EnFk9UT;EmF13UE;IA5II,aAoDG;EnFq9UT;EmF73UE;IA5II,iBAoDG;EnFw9UT;EmFh4UE;IA5II,uBAoDG;EnF29UT;EmFn4UE;IA5II,sBAoDG;EnF89UT;EmFt4UE;IA5II,uBAoDG;EnFi+UT;EmFz4UE;IA5II,oBAoDG;EnFo+UT;EmF54UE;IA5II,uBAoDG;EnFu+UT;EmF/4UE;IA5II,sBAoDG;EnF0+UT;EmFl5UE;IA5II,oBAoDG;EnF6+UT;EmFr5UE;IA5II,sBAoDG;EnFg/UT;EmFx5UE;IA5II,oBAoDG;EnFm/UT;EmF35UE;IA5II,gBAoDG;EnFs/UT;EmF95UE;IA5II,sBAoDG;EnFy/UT;EmFj6UE;IA5II,qBAoDG;EnF4/UT;EmFp6UE;IA5II,sBAoDG;EnF+/UT;EmFv6UE;IA5II,mBAoDG;EnFkgVT;EmF16UE;IA5II,sBAoDG;EnFqgVT;EmF76UE;IA5II,qBAoDG;EnFwgVT;EmFh7UE;IA5II,mBAoDG;EnF2gVT;EmFn7UE;IA5II,qBAoDG;EnF8gVT;EmFt7UE;IA5II,mBAoDG;EnFihVT;EmFz7UE;IA5II,sBAoDG;EnFohVT;EmF57UE;IA5II,4BAoDG;EnFuhVT;EmF/7UE;IA5II,2BAoDG;EnF0hVT;EmFl8UE;IA5II,4BAoDG;EnF6hVT;EmFr8UE;IA5II,yBAoDG;EnFgiVT;EmFx8UE;IA5II,4BAoDG;EnFmiVT;EmF38UE;IA5II,2BAoDG;EnFsiVT;EmF98UE;IA5II,yBAoDG;EnFyiVT;EmFj9UE;IA5II,2BAoDG;EnF4iVT;EmFp9UE;IA5II,yBAoDG;EnF+iVT;EmFv9UE;IA5II,qBAoDG;EnFkjVT;EmF19UE;IA5II,2BAoDG;EnFqjVT;EmF79UE;IA5II,0BAoDG;EnFwjVT;EmFh+UE;IA5II,2BAoDG;EnF2jVT;EmFn+UE;IA5II,wBAoDG;EnF8jVT;EmFt+UE;IA5II,2BAoDG;EnFikVT;EmFz+UE;IA5II,0BAoDG;EnFokVT;EmF5+UE;IA5II,wBAoDG;EnFukVT;EmF/+UE;IA5II,0BAoDG;EnF0kVT;EmFl/UE;IA5II,wBAoDG;EnF6kVT;EmFr/UE;IA5II,oBAoDG;EnFglVT;EmFx/UE;IA5II,0BAoDG;EnFmlVT;EmF3/UE;IA5II,yBAoDG;EnFslVT;EmF9/UE;IA5II,0BAoDG;EnFylVT;EmFjgVE;IA5II,uBAoDG;EnF4lVT;EmFpgVE;IA5II,0BAoDG;EnF+lVT;EmFvgVE;IA5II,yBAoDG;EnFkmVT;EmF1gVE;IA5II,uBAoDG;EnFqmVT;EmF7gVE;IA5II,yBAoDG;EnFwmVT;EmFhhVE;IA5II,uBAoDG;EnF2mVT;EmFnhVE;IA5II,uBAoDG;EnF8mVT;EmFthVE;IA5II,6BAoDG;EnFinVT;EmFzhVE;IA5II,4BAoDG;EnFonVT;EmF5hVE;IA5II,6BAoDG;EnFunVT;EmF/hVE;IA5II,0BAoDG;EnF0nVT;EmFliVE;IA5II,6BAoDG;EnF6nVT;EmFriVE;IA5II,4BAoDG;EnFgoVT;EmFxiVE;IA5II,0BAoDG;EnFmoVT;EmF3iVE;IA5II,4BAoDG;EnFsoVT;EmF9iVE;IA5II,0BAoDG;EnFyoVT;EmFjjVE;IA5II,MAoDG;EnF4oVT;EmFpjVE;IA5II,YAoDG;EnF+oVT;EmFvjVE;IA5II,WAoDG;EnFkpVT;EmF1jVE;IA5II,YAoDG;EnFqpVT;EmF7jVE;IA5II,SAoDG;EnFwpVT;EmFhkVE;IA5II,YAoDG;EnF2pVT;EmFnkVE;IA5II,WAoDG;EnF8pVT;EmFtkVE;IA5II,SAoDG;EnFiqVT;EmFzkVE;IA5II,WAoDG;EnFoqVT;EmF5kVE;IA5II,SAoDG;EnFuqVT;EmF/kVE;IA5II,UAoDG;EnF0qVT;EmFllVE;IA5II,gBAoDG;EnF6qVT;EmFrlVE;IA5II,eAoDG;EnFgrVT;EmFxlVE;IA5II,gBAoDG;EnFmrVT;EmF3lVE;IA5II,aAoDG;EnFsrVT;EmF9lVE;IA5II,gBAoDG;EnFyrVT;EmFjmVE;IA5II,eAoDG;EnF4rVT;EmFpmVE;IA5II,aAoDG;EnF+rVT;EmFvmVE;IA5II,eAoDG;EnFksVT;EmF1mVE;IA5II,aAoDG;EnFqsVT;EmF7mVE;IA5II,aAoDG;EnFwsVT;EmFhnVE;IA5II,mBAoDG;EnF2sVT;EmFnnVE;IA5II,kBAoDG;EnF8sVT;EmFtnVE;IA5II,mBAoDG;EnFitVT;EmFznVE;IA5II,gBAoDG;EnFotVT;EmF5nVE;IA5II,mBAoDG;EnFutVT;EmF/nVE;IA5II,kBAoDG;EnF0tVT;EmFloVE;IA5II,gBAoDG;EnF6tVT;EmFroVE;IA5II,kBAoDG;EnFguVT;EmFxoVE;IA5II,gBAoDG;EnFmuVT;EmF3oVE;IA5II,oBAoDG;EnFsuVT;EmF9oVE;IA5II,0BAoDG;EnFyuVT;EmFjpVE;IA5II,yBAoDG;EnF4uVT;EmFppVE;IA5II,0BAoDG;EnF+uVT;EmFvpVE;IA5II,uBAoDG;EnFkvVT;EmF1pVE;IA5II,0BAoDG;EnFqvVT;EmF7pVE;IA5II,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+lWT;EmFvgWE;IA5II,yDAoDG;EnFkmWT;EmF1gWE;IA5II,yDAoDG;EnFqmWT;EmF7gWE;IA5II,yDAoDG;EnFwmWT;EmFhhWE;IA5II,mBAoDG;EnF2mWT;EmFnhWE;IA5II,iEAoDG;EnF8mWT;EmFzgWM;IAzJA,iEAoDG;EnFinWT;EmFzhWE;IA5II,iEAoDG;EnFonWT;EmF/gWM;IAzJA,iEAoDG;EnFunWT;EmF/hWE;IA5II,iEAoDG;EnF0nWT;EmFrhWM;IAzJA,iEAoDG;EnF6nWT;EmFriWE;IA5II,iEAoDG;EnFgoWT;EmF3hWM;IAzJA,iEAoDG;EnFmoWT;EmF3iWE;IA5II,iEAoDG;EnFsoWT;EmFjiWM;IAzJA,iEAoDG;EnFyoWT;EmFjjWE;IA5II,iEAoDG;EnF4oWT;EmFviWM;IAzJA,iEAoDG;EnF+oWT;EmFvjWE;IA5II,iEAoDG;EnFkpWT;EmF7iWM;IAzJA,iEAoDG;EnFqpWT;EmF7jWE;IA5II,iEAoDG;EnFwpWT;EmFnjWM;IAzJA,iEAoDG;EnF2pWT;EmFnkWE;IA5II,iEAoDG;EnF8pWT;EmFzjWM;IAzJA,iEAoDG;EnFiqWT;EmFzkWE;IA5II,2BAoDG;EnFoqWT;EmF/jWM;IAzJA,2BAoDG;EnFuqWT;EmF/kWE;IA5II,8BAoDG;EnF0qWT;EmFrkWM;IAzJA,8BAoDG;EnF6qWT;EmFrlWE;IA5II,6BAoDG;EnFgrWT;EmF3kWM;IAzJA,6BAoDG;EnFmrWT;EmF3lWE;IA5II,8BAoDG;EnFsrWT;EmFjlWM;IAzJA,8BAoDG;EnFyrWT;EmFjmWE;IA5II,yEAoDG;EnF4rWT;EmFpmWE;IA5II,wHAoDG;EnF+rWT;EmFvmWE;IA5II,2EAoDG;EnFksWT;EmF1mWE;IA5II,uEAoDG;EnFqsWT;EmF7mWE;IA5II,6EAoDG;EnFwsWT;EmFhnWE;IA5II,yEAoDG;EnF2sWT;EmFnnWE;IA5II,yEAoDG;EnF8sWT;EmFtnWE;IA5II,yEAoDG;EnFitWT;EmFznWE;IA5II,iFAoDG;EnFotWT;EmF/mWM;IAzJA,iFAoDG;EnFutWT;EmF/nWE;IA5II,iFAoDG;EnF0tWT;EmFrnW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mFvsXE;IA5II,kBAoDG;EnFkyXT;EmF1sXE;IA5II,WAoDG;EnFqyXT;EmF7sXE;IA5II,UAoDG;EnFwyXT;EmFhtXE;IA5II,UAoDG;EnF2yXT;EmFntXE;IA5II,UAoDG;EnF8yXT;EmFttXE;IA5II,UAoDG;EnFizXT;EWr0XE;IwE4GA;MA5II,mBAoDG;InFqzXP;ImF7tXA;MA5II,iBAoDG;InFwzXP;ImFhuXA;MA5II,WAoDG;InF2zXP;ImFnuXA;MA5II,mBAoDG;InF8zXP;ImFtuXA;MA5II,iBAoDG;InFi0XP;ImFzuXA;MA5II,gBAoDG;InFo0XP;ImF5uXA;MA5II,sBAoDG;InFu0XP;ImF/uXA;MA5II,gBAoDG;InF00XP;ImFlvXA;MA5II,eAyDO;InFw0XX;ImFrvXA;MA5II,qBAyDO;InF20XX;ImFxvXA;MA5II,cAyDO;InF80XX;ImF3vXA;MA5II,aAyDO;InFi1XX;ImF9vXA;MA5II,oBAyDO;InFo1XX;ImFjwXA;MA5II,cAyDO;InFu1XX;ImFpwXA;MA5II,kBAyDO;InF01XX;ImFvwXA;MA5II,mBAyDO;InF61XX;ImF1wXA;MA5II,aAyDO;InFg2XX;ImF7wXA;MA5II,oBAyDO;InFm2XX;ImFhxXA;MA5II,iBAyDO;InFs2XX;ImFnxXA;MA5II,kBAyDO;InFy2XX;ImFtxXA;MA5II,aAyDO;InF42XX;ImFzxXA;MA5II,cAoDG;InFo3XP;ImF5xXA;MA5II,mBAyDO;InFk3XX;ImF/xXA;MA5II,sBAyDO;InFq3XX;ImFlyXA;MA5II,2BAyDO;InFw3XX;ImFryXA;MA5II,8BAyDO;InF23XX;ImFxyXA;MA5II,YAoDG;InFm4XP;ImF3yXA;MA5II,YAoDG;InFs4XP;ImF9yXA;MA5II,cAoDG;InFy4XP;ImFjzXA;MA5II,cAoDG;InF44XP;ImFpzXA;MA5II,eAyDO;InF04XX;ImFvzXA;MA5II,iBAyDO;InF64XX;ImF1zXA;MA5II,uBAyDO;InFg5XX;ImF7zXA;MA5II,2BAoDG;InFw5XP;ImFh0XA;MA5II,yBAoDG;InF25XP;ImFn0XA;MA5II,uBAoDG;InF85XP;ImFt0XA;MA5II,8BAoDG;InFi6XP;ImFz0XA;MA5II,6BAoDG;InFo6XP;ImF50XA;MA5II,6BAoDG;InFu6XP;ImF/0XA;MA5II,oBAoDG;InF06XP;ImFl1XA;MA5II,kBAoDG;InF66XP;ImFr1XA;MA5II,qBAoDG;InFg7XP;ImFx1XA;MA5II,sBAoDG;InFm7XP;ImF31XA;MA5II,mBAoDG;InFs7XP;ImF91XA;MA5II,iBAoDG;InFy7XP;ImFj2XA;MA5II,oBAoDG;InF47XP;ImFp2XA;MA5II,uBAoDG;InF+7XP;ImFv2XA;MA5II,qBAoDG;InFk8XP;ImF12XA;MA5II,mBAoDG;InFq8XP;ImF72XA;MA5II,qBAoDG;InFw8XP;ImFh3XA;MA5II,oBAoDG;InF28XP;ImFn3XA;MA5II,yBAoDG;InF88XP;ImFt3XA;MA5II,uBAoDG;InFi9XP;ImFz3XA;MA5II,qBAoDG;InFo9XP;ImF53XA;MA5II,4BAoDG;InFu9XP;ImF/3XA;MA5II,2BAoDG;InF09XP;ImFl4XA;MA5II,sBAoDG;InF69XP;ImFr4XA;MA5II,gBAoDG;InFg+XP;ImFx4XA;MA5II,sBAoDG;InFm+XP;ImF34XA;MA5II,oBAoDG;InFs+XP;ImF94XA;MA5II,kBAoDG;InFy+XP;ImFj5XA;MA5II,oBAoDG;InF4+XP;ImFp5XA;MA5II,mBAoDG;InF++XP;ImFv5XA;MA5II,kBAoDG;InFk/XP;ImF15XA;MA5II,gBAoDG;InFq/XP;ImF75XA;MA5II,mBAoDG;InFw/XP;ImFh6XA;MA5II,oBAoDG;InF2/XP;ImFn6XA;MA5II,0BAoDG;InF8/XP;ImFt6XA;MA5II,qCAoDG;InFigYP;ImFz6XA;MA5II,qCAoDG;InFogYP;ImF56XA;MA5II,qCAoDG;InFugYP;ImF/6XA;MA5II,qCAoDG;InF0gYP;ImFl7XA;MA5II,mBAoDG;InF6gYP;ImFr7XA;MA5II,mBAyDO;InF2gYX;ImFx7XA;MA5II,sBAyDO;InF8gYX;ImF37XA;MA5II,qBAyDO;InFihYX;ImF97XA;MA5II,SAoDG;InFyhYP;ImFj8XA;MA5II,QAoDG;InF4hYP;ImFp8XA;MA5II,QAoDG;InF+hYP;ImFv8XA;MA5II,QAoDG;InFkiYP;ImF18XA;MA5II,QAoDG;InFqiYP;ImF78XA;MA5II,QAoDG;InFwiYP;ImFh9XA;MA5II,QAoDG;InF2iYP;ImFn9XA;MA5II,QAoDG;InF8iYP;ImFt9XA;MA5II,SAoDG;InFijYP;ImFz9XA;MA5II,eAoDG;InFojYP;ImF59XA;MA5II,cAoDG;InFujYP;ImF/9XA;MA5II,eAoDG;InF0jYP;ImFl+XA;MA5II,YAoDG;InF6jYP;ImFr+XA;MA5II,eAoDG;InFgkYP;ImFx+XA;MA5II,cAoDG;InFmkYP;ImF3+XA;MA5II,YAoDG;InFskYP;ImF9+XA;MA5II,cAoDG;InFykYP;ImFj/XA;MA5II,YAoDG;InF4kYP;ImFp/XA;MA5II,YAoDG;InF+kYP;ImFv/XA;MA5II,gBAoDG;InFklYP;ImF1/XA;MA5II,sBAoDG;InFqlYP;ImF7/XA;MA5II,qBAoDG;InFwlYP;ImFhgYA;MA5II,sBAoDG;InF2lYP;ImFngYA;MA5II,mBAoDG;InF8lYP;ImFtgYA;MA5II,sBAoDG;InFimYP;ImFzgYA;MA5II,qBAoDG;InFomYP;ImF5gYA;MA5II,mBAoDG;InFumYP;ImF/gYA;MA5II,qBAoDG;InF0mYP;ImFlhYA;MA5II,mBAoDG;InF6mYP;ImFrhYA;MA5II,mBAoDG;InFgnYP;ImFxhYA;MA5II,eAoDG;InFmnYP;ImF3hYA;MA5II,qBAoDG;InFsnYP;ImF9hYA;MA5II,oBAoDG;InFynYP;ImFjiYA;MA5II,qBAoDG;InF4nYP;ImFpiYA;MA5II,kBAoDG;InF+nYP;ImFviYA;MA5II,qBAoDG;InFkoYP;ImF1iYA;MA5II,oBAoDG;InFqoYP;ImF7iYA;MA5II,kBAoDG;InFwoYP;ImFhjYA;MA5II,oBAoDG;InF2oYP;ImFnjYA;MA5II,kBAoDG;InF8oYP;ImFtjYA;MA5II,kBAoDG;InFipYP;ImFzjYA;MA5II,qBAoDG;InFopYP;ImF5jYA;MA5II,2BAoDG;InFupYP;ImF/jYA;MA5II,0BAoDG;InF0pYP;ImFlkYA;MA5II,2BAoDG;InF6pYP;ImFrkYA;MA5II,wBAoDG;InFgqYP;ImFxkYA;MA5II,2BAoDG;InFmqYP;ImF3kYA;MA5II,0BAoDG;InFsqYP;ImF9kYA;MA5II,wBAoDG;InFyqYP;ImFjlYA;MA5II,0BAoDG;InF4qYP;ImFplYA;MA5II,wBAoDG;InF+qYP;ImFvlYA;MA5II,wBAoDG;InFkrYP;ImF1lYA;MA5II,oBAoDG;InFqrYP;ImF7lYA;MA5II,0BAoDG;InFwrYP;ImFhmYA;MA5II,yBAoDG;InF2rYP;ImFnmYA;MA5II,0BAoDG;InF8rYP;ImFtmYA;MA5II,uBAoDG;InFisYP;ImFzmYA;MA5II,0BAoDG;InFosYP;ImF5mYA;MA5II,yBAoDG;InFusYP;ImF/mYA;MA5II,uBAoDG;InF0sYP;ImFlnYA;MA5II,yBAoDG;InF6sYP;ImFrnYA;MA5II,uBAoDG;InFgtYP;ImFxnYA;MA5II,2BAoDG;InFmtYP;ImF3nYA;MA5II,0BAoDG;InFstYP;ImF9nYA;MA5II,uBAoDG;InFytYP;ImFjoYA;MA5II,mBAoDG;InF4tYP;ImFpoYA;MA5II,yBAoDG;InF+tYP;ImFvoYA;MA5II,wBAoDG;InFkuYP;ImF1oYA;MA5II,yBAoDG;InFquYP;ImF7oYA;MA5II,sBAoDG;InFwuYP;ImFhpYA;MA5II,yBAoDG;InF2uYP;ImFnpYA;MA5II,wBAoDG;InF8uYP;ImFtpYA;MA5II,sBAoDG;InFivYP;ImFzpYA;MA5II,wBAoDG;InFovYP;ImF5pYA;MA5II,sBAoDG;InFuvYP;ImF/pYA;MA5II,sBAoDG;InF0vYP;ImFlqYA;MA5II,sBAoDG;InF6vYP;ImFrqYA;MA5II,4BAoDG;InFgwYP;ImFxqYA;MA5II,2BAoDG;InFmwYP;ImF3qYA;MA5II,4BAoDG;InFswYP;ImF9qYA;MA5II,yBAoDG;InFywYP;ImFjrYA;MA5II,4BAoDG;InF4wYP;ImFprYA;MA5II,2BAoDG;InF+wYP;ImFvrYA;MA5II,yBAoDG;InFkxYP;ImF1rYA;MA5II,2BAoDG;InFqxYP;ImF7rYA;MA5II,yBAoDG;InFwxYP;ImFhsYA;MA5II,6BAoDG;InF2xYP;ImFnsYA;MA5II,4BAoDG;InF8xYP;ImFtsYA;MA5II,yBAoDG;InFiyYP;ImFzsYA;MA5II,UAoDG;InFoyYP;ImF5sYA;MA5II,gBAoDG;InFuyYP;ImF/sYA;MA5II,eAoDG;InF0yYP;ImFltYA;MA5II,gBAoDG;InF6yYP;ImFrtYA;MA5II,aAoDG;InFgzYP;ImFxtYA;MA5II,gBAoDG;InFmzYP;ImF3tYA;MA5II,eAoDG;InFszYP;ImF9tYA;MA5II,aAoDG;InFyzYP;ImFjuYA;MA5II,eAoDG;InF4zYP;ImFpuYA;MA5II,aAoDG;InF+zYP;ImFvuYA;MA5II,iBAoDG;InFk0YP;ImF1uYA;MA5II,uBAoDG;InFq0YP;ImF7uYA;MA5II,sBAoDG;InFw0YP;ImFhvYA;MA5II,uBAoDG;InF20YP;ImFnvYA;MA5II,oBAoDG;InF80YP;ImFtvYA;MA5II,uBAoDG;InFi1YP;ImFzvYA;MA5II,sBAoDG;InFo1YP;ImF5vYA;MA5II,oBAoDG;InFu1YP;ImF/vYA;MA5II,sBAoDG;InF01YP;ImFlwYA;MA5II,oBAoDG;InF61YP;ImFrwYA;MA5II,gBAoDG;InFg2YP;ImFxwYA;MA5II,sBAoDG;InFm2YP;ImF3wYA;MA5II,qBAoDG;InFs2YP;ImF9wYA;MA5II,sBAoDG;InFy2YP;ImFjxYA;MA5II,mBAoDG;InF42YP;ImFpxYA;MA5II,sBAoDG;InF+2YP;ImFvxYA;MA5II,qBAoDG;InFk3YP;ImF1xYA;MA5II,mBAoDG;InFq3YP;ImF7xYA;MA5II,qBAoDG;InFw3YP;ImFhyYA;MA5II,mBAoDG;InF23YP;ImFnyYA;MA5II,sBAoDG;InF83YP;ImFtyYA;MA5II,4BAoDG;InFi4YP;ImFzyYA;MA5II,2BAoDG;InFo4YP;ImF5yYA;MA5II,4BAoDG;InFu4YP;ImF/yYA;MA5II,yBAoDG;InF04YP;ImFlzYA;MA5II,4BAoDG;InF64YP;ImFrzYA;MA5II,2BAoDG;InFg5YP;ImFxzYA;MA5II,yBAoDG;InFm5YP;ImF3zYA;MA5II,2BAoDG;InFs5YP;ImF9zYA;MA5II,yBAoDG;InFy5YP;ImFj0YA;MA5II,qBAoDG;InF45YP;ImFp0YA;MA5II,2BAoDG;InF+5YP;ImFv0YA;MA5II,0BAoDG;InFk6YP;ImF10YA;MA5II,2BAoDG;InFq6YP;ImF70YA;MA5II,wBAoDG;InFw6YP;ImFh1YA;MA5II,2BAoDG;InF26YP;ImFn1YA;MA5II,0BAoDG;InF86YP;ImFt1YA;MA5II,wBAoDG;InFi7YP;ImFz1YA;MA5II,0BAoDG;InFo7YP;ImF51YA;MA5II,wBAoDG;InFu7YP;ImF/1YA;MA5II,oBAoDG;InF07YP;ImFl2YA;MA5II,0BAoDG;InF67YP;ImFr2YA;MA5II,yBAoDG;InFg8YP;ImFx2YA;MA5II,0BAoDG;InFm8YP;ImF32YA;MA5II,uBAoDG;InFs8YP;ImF92YA;MA5II,0BAoDG;InFy8YP;ImFj3YA;MA5II,yBAoDG;InF48YP;ImFp3YA;MA5II,uBAoDG;InF+8YP;ImFv3YA;MA5II,yBAoDG;InFk9YP;ImF13YA;MA5II,uBAoDG;InFq9YP;ImF73YA;MA5II,uBAoDG;InFw9YP;ImFh4YA;MA5II,6BAoDG;InF29YP;ImFn4YA;MA5II,4BAoDG;InF89YP;ImFt4YA;MA5II,6BAoDG;InFi+YP;ImFz4YA;MA5II,0BAoDG;InFo+YP;ImF54YA;MA5II,6BAoDG;InFu+YP;ImF/4YA;MA5II,4BAoDG;InF0+YP;ImFl5YA;MA5II,0BAoDG;InF6+YP;ImFr5YA;MA5II,4BAoDG;InFg/YP;ImFx5YA;MA5II,0BAoDG;InFm/YP;ImF35YA;MA5II,MAoDG;InFs/YP;ImF95YA;MA5II,YAoDG;InFy/YP;ImFj6YA;MA5II,WAoDG;InF4/YP;ImFp6YA;MA5II,YAoDG;InF+/YP;ImFv6YA;MA5II,SAoDG;InFkgZP;ImF16YA;MA5II,YAoDG;InFqgZP;ImF76YA;MA5II,WAoDG;InFwgZP;ImFh7YA;MA5II,SAoDG;InF2gZP;ImFn7YA;MA5II,WAoDG;InF8gZP;ImFt7YA;MA5II,SAoDG;InFihZP;ImFz7YA;MA5II,UAoDG;InFohZP;ImF57YA;MA5II,gBAoDG;InFuhZP;ImF/7YA;MA5II,eAoDG;InF0hZP;ImFl8YA;MA5II,gBAoDG;InF6hZP;ImFr8YA;MA5II,aAoDG;InFgiZP;ImFx8YA;MA5II,gBAoDG;InFmiZP;ImF38YA;MA5II,eAoDG;InFsiZP;ImF98YA;MA5II,aAoDG;InFyiZP;ImFj9YA;MA5II,eAoDG;InF4iZP;ImFp9YA;MA5II,aAoDG;InF+iZP;ImFv9YA;MA5II,aAoDG;InFkjZP;ImF19YA;MA5II,mBAoDG;InFqjZP;ImF79YA;MA5II,kBAoDG;InFwjZP;ImFh+YA;MA5II,mBAoDG;InF2jZP;ImFn+YA;MA5II,gBAoDG;InF8jZP;ImFt+YA;MA5II,mBAoDG;InFikZP;ImFz+YA;MA5II,kBAoDG;InFokZP;ImF5+YA;MA5II,gBAoDG;InFukZP;ImF/+YA;MA5II,kBAoDG;InF0kZP;ImFl/YA;MA5II,gBAoDG;InF6kZP;ImFr/YA;MA5II,oBAoDG;InFglZP;ImFx/YA;MA5II,0BAoDG;InFmlZP;ImF3/YA;MA5II,yBAoDG;InFslZP;ImF9/YA;MA5II,0BAoDG;InFylZP;ImFjgZA;MA5II,uBAoDG;InF4lZP;ImFpgZA;MA5II,0BAoDG;InF+lZP;ImFvgZA;MA5II,yBAoDG;InFkmZP;ImF1gZA;MA5II,uBAoDG;InFqmZP;ImF7gZA;MA5II,yBAoDG;InFwmZP;ImFhhZA;MA5II,uBAoDG;InF2mZP;ImFnhZA;MA5II,mBAoDG;InF8mZP;ImFthZA;MA5II,yBAoDG;InFinZP;ImFzhZA;MA5II,wBAoDG;InFonZP;ImF5hZA;MA5II,yBAoDG;InFunZP;ImF/hZA;MA5II,sBAoDG;InF0nZP;ImFliZA;MA5II,yBAoDG;InF6nZP;ImFriZA;MA5II,wBAoDG;InFgoZP;ImFxiZA;MA5II,sBAoDG;InFmoZP;ImF3iZA;MA5II,wBAoDG;InFsoZP;ImF9iZA;MA5II,sBAoDG;InFyoZP;ImFjjZA;MA5II,yFAoDG;InF4oZP;ImFpjZA;MA5II,sBAoDG;InF+oZP;ImFvjZA;MA5II,wFAoDG;InFkpZP;ImF1jZA;MA5II,qBAoDG;InFqpZP;ImF7jZA;MA5II,iBAoDG;InFwpZP;ImFhkZA;MA5II,eAoDG;InF2pZP;ImFnkZA;MA5II,kBAoDG;InF8pZP;EACF;EWnrZE;IwE4GA;MA5II,mBAoDG;InFmqZP;ImF3kZA;MA5II,iBAoDG;InFsqZP;ImF9kZA;MA5II,WAoDG;InFyqZP;ImFjlZA;MA5II,mBAoDG;InF4qZP;ImFplZA;MA5II,iBAoDG;InF+qZP;ImFvlZA;MA5II,gBAoDG;InFkrZP;ImF1lZA;MA5II,sBAoDG;InFqrZP;ImF7lZA;MA5II,gBAoDG;InFwrZP;ImFhmZA;MA5II,eAyDO;InFsrZX;ImFnmZA;MA5II,qBAyDO;InFyrZX;ImFtmZA;MA5II,cAyDO;InF4rZX;ImFzmZA;MA5II,aAyDO;InF+rZX;ImF5mZA;MA5II,oBAyDO;InFksZX;ImF/mZA;MA5II,cAyDO;InFqsZX;ImFlnZA;MA5II,kBAyDO;InFwsZX;ImFrnZA;MA5II,mBAyDO;InF2sZX;ImFxnZA;MA5II,aAyDO;InF8sZX;ImF3nZA;MA5II,oBAyDO;InFitZX;ImF9nZA;MA5II,iBAyDO;InFotZX;ImFjoZA;MA5II,kBAyDO;InFutZX;ImFpoZA;MA5II,aAyDO;InF0tZX;ImFvoZA;MA5II,cAoDG;InFkuZP;ImF1oZA;MA5II,mBAyDO;InFguZX;ImF7oZA;MA5II,sBAyDO;InFmuZX;ImFhpZA;MA5II,2BAyDO;InFsuZX;ImFnpZA;MA5II,8BAyDO;InFyuZX;ImFtpZA;MA5II,YAoDG;InFivZP;ImFzpZA;MA5II,YAoDG;InFovZP;ImF5pZA;MA5II,cAoDG;InFuvZP;ImF/pZA;MA5II,cAoDG;InF0vZP;ImFlqZA;MA5II,eAyDO;InFwvZX;ImFrqZA;MA5II,iBAyDO;InF2vZX;ImFxqZA;MA5II,uBAyDO;InF8vZX;ImF3qZA;MA5II,2BAoDG;InFswZP;ImF9qZA;MA5II,yBAoDG;InFywZP;ImFjrZA;MA5II,uBAoDG;InF4wZP;ImFprZA;MA5II,8BAoDG;InF+wZP;ImFvrZA;MA5II,6BAoDG;InFkxZP;ImF1rZA;MA5II,6BAoDG;InFqxZP;ImF7rZA;MA5II,oBAoDG;InFwxZP;ImFhsZA;MA5II,kBAoDG;InF2xZP;ImFnsZA;MA5II,qBAoDG;InF8xZP;ImFtsZA;MA5II,sBAoDG;InFiyZP;ImFzsZA;MA5II,mBAoDG;InFoyZP;ImF5sZA;MA5II,iBAoDG;InFuyZP;ImF/sZA;MA5II,oBAoDG;InF0yZP;ImFltZA;MA5II,uBAoDG;InF6yZP;ImFrtZA;MA5II,qBAoDG;InFgzZP;ImFxtZA;MA5II,mBAoDG;InFmzZP;ImF3tZA;MA5II,qBAoDG;InFszZP;ImF9tZA;MA5II,oBAoDG;InFyzZP;ImFjuZA;MA5II,yBAoDG;InF4zZP;ImFpuZA;MA5II,uBAoDG;InF+zZP;ImFvuZA;MA5II,qBAoDG;InFk0ZP;ImF1uZA;MA5II,4BAoDG;InFq0ZP;ImF7uZA;MA5II,2BAoDG;InFw0ZP;ImFhvZA;MA5II,sBAoDG;InF20ZP;ImFnvZA;MA5II,gBAoDG;InF80ZP;ImFtvZA;MA5II,sBAoDG;InFi1ZP;ImFzvZA;MA5II,oBAoDG;InFo1ZP;ImF5vZA;MA5II,kBAoDG;InFu1ZP;ImF/vZA;MA5II,oBAoDG;InF01ZP;ImFlwZA;MA5II,mBAoDG;InF61ZP;ImFrwZA;MA5II,kBAoDG;InFg2ZP;ImFxwZA;MA5II,gBAoDG;InFm2ZP;ImF3wZA;MA5II,mBAoDG;InFs2ZP;ImF9wZA;MA5II,oBAoDG;InFy2ZP;ImFjxZA;MA5II,0BAoDG;InF42ZP;ImFpxZA;MA5II,qCAoDG;InF+2ZP;ImFvxZA;MA5II,qCAoDG;InFk3ZP;ImF1xZA;MA5II,qCAoDG;InFq3ZP;ImF7xZA;MA5II,qCAoDG;InFw3ZP;ImFhyZA;MA5II,mBAoDG;InF23ZP;ImFnyZA;MA5II,mBAyDO;InFy3ZX;ImFtyZA;MA5II,sBAyDO;InF43ZX;ImFzyZA;MA5II,qBAyDO;InF+3ZX;ImF5yZA;MA5II,SAoDG;InFu4ZP;ImF/yZA;MA5II,QAoDG;InF04ZP;ImFlzZA;MA5II,QAoDG;InF64ZP;ImFrzZA;MA5II,QAoDG;InFg5ZP;ImFxzZA;MA5II,QAoDG;InFm5ZP;ImF3zZA;MA5II,QAoDG;InFs5ZP;ImF9zZA;MA5II,QAoDG;InFy5ZP;ImFj0ZA;MA5II,QAoDG;InF45ZP;ImFp0ZA;MA5II,SAoDG;InF+5ZP;ImFv0ZA;MA5II,eAoDG;InFk6ZP;ImF10ZA;MA5II,cAoDG;InFq6ZP;ImF70ZA;MA5II,eAoDG;InFw6ZP;ImFh1ZA;MA5II,YAoDG;InF26ZP;ImFn1ZA;MA5II,eAoDG;InF86ZP;ImFt1ZA;MA5II,cAoDG;InFi7ZP;ImFz1ZA;MA5II,YAoDG;InFo7ZP;ImF51ZA;MA5II,cAoDG;InFu7ZP;ImF/1ZA;MA5II,YAoDG;InF07ZP;ImFl2ZA;MA5II,YAoDG;InF67ZP;ImFr2ZA;MA5II,gBAoDG;InFg8ZP;ImFx2ZA;MA5II,sBAoDG;InFm8ZP;ImF32ZA;MA5II,qBAoDG;InFs8ZP;ImF92ZA;MA5II,sBAoDG;InFy8ZP;ImFj3ZA;MA5II,mBAoDG;InF48ZP;ImFp3ZA;MA5II,sBAoDG;InF+8ZP;ImFv3ZA;MA5II,qBAoDG;InFk9ZP;ImF13ZA;MA5II,mBAoDG;InFq9ZP;ImF73ZA;MA5II,qBAoDG;InFw9ZP;ImFh4ZA;MA5II,mBAoDG;InF29ZP;ImFn4ZA;MA5II,mBAoDG;InF89ZP;ImFt4ZA;MA5II,eAoDG;InFi+ZP;ImFz4ZA;MA5II,qBAoDG;InFo+ZP;ImF54ZA;MA5II,oBAoDG;InFu+ZP;ImF/4ZA;MA5II,qBAoDG;InF0+ZP;ImFl5ZA;MA5II,kBAoDG;InF6+ZP;ImFr5ZA;MA5II,qBAoDG;InFg/ZP;ImFx5ZA;MA5II,oBAoDG;InFm/ZP;ImF35ZA;MA5II,kBAoDG;InFs/ZP;ImF95ZA;MA5II,oBAoDG;InFy/ZP;ImFj6ZA;MA5II,kBAoDG;InF4/ZP;ImFp6ZA;MA5II,kBAoDG;InF+/ZP;ImFv6ZA;MA5II,qBAoDG;InFkgaP;ImF16ZA;MA5II,2BAoDG;InFqgaP;ImF76ZA;MA5II,0BAoDG;InFwgaP;ImFh7ZA;MA5II,2BAoDG;InF2gaP;ImFn7ZA;MA5II,wBAoDG;InF8gaP;ImFt7ZA;MA5II,2BAoDG;InFihaP;ImFz7ZA;MA5II,0BAoDG;InFohaP;ImF57ZA;MA5II,wBAoDG;InFuhaP;ImF/7ZA;MA5II,0BAoDG;InF0haP;ImFl8ZA;MA5II,wBAoDG;InF6haP;ImFr8ZA;MA5II,wBAoDG;InFgiaP;ImFx8ZA;MA5II,oBAoDG;InFmiaP;ImF38ZA;MA5II,0BAoDG;InFsiaP;ImF98ZA;MA5II,yBAoDG;InFyiaP;ImFj9ZA;MA5II,0BAoDG;InF4iaP;ImFp9ZA;MA5II,uBAoDG;InF+iaP;ImFv9ZA;MA5II,0BAoDG;InFkjaP;ImF19ZA;MA5II,yBAoDG;InFqjaP;ImF79ZA;MA5II,uBAoDG;InFwjaP;ImFh+ZA;MA5II,yBAoDG;InF2jaP;ImFn+ZA;MA5II,uBAoDG;InF8jaP;ImFt+ZA;MA5II,2BAoDG;InFikaP;ImFz+ZA;MA5II,0BAoDG;InFokaP;ImF5+ZA;MA5II,uBAoDG;InFukaP;ImF/+ZA;MA5II,mBAoDG;InF0kaP;ImFl/ZA;MA5II,yBAoDG;InF6kaP;ImFr/ZA;MA5II,wBAoDG;InFglaP;ImFx/ZA;MA5II,yBAoDG;InFmlaP;ImF3/ZA;MA5II,sBAoDG;InFslaP;ImF9/ZA;MA5II,yBAoDG;InFylaP;ImFjgaA;MA5II,wBAoDG;InF4laP;ImFpgaA;MA5II,sBAoDG;InF+laP;ImFvgaA;MA5II,wBAoDG;InFkmaP;ImF1gaA;MA5II,sBAoDG;InFqmaP;ImF7gaA;MA5II,sBAoDG;InFwmaP;ImFhhaA;MA5II,sBAoDG;InF2maP;ImFnhaA;MA5II,4BAoDG;InF8maP;ImFthaA;MA5II,2BAoDG;InFinaP;ImFzhaA;MA5II,4BAoDG;InFonaP;ImF5haA;MA5II,yBAoDG;InFunaP;ImF/haA;MA5II,4BAoDG;InF0naP;ImFliaA;MA5II,2BAoDG;InF6naP;ImFriaA;MA5II,yBAoDG;InFgoaP;ImFxiaA;MA5II,2BAoDG;InFmoaP;ImF3iaA;MA5II,yBAoDG;InFsoaP;ImF9iaA;MA5II,6BAoDG;InFyoaP;ImFjjaA;MA5II,4BAoDG;InF4oaP;ImFpjaA;MA5II,yBAoDG;InF+oaP;ImFvjaA;MA5II,UAoDG;InFkpaP;ImF1jaA;MA5II,gBAoDG;InFqpaP;ImF7jaA;MA5II,eAoDG;InFwpaP;ImFhkaA;MA5II,gBAoDG;InF2paP;ImFnkaA;MA5II,aAoDG;InF8paP;ImFtkaA;MA5II,gBAoDG;InFiqaP;ImFzkaA;MA5II,eAoDG;InFoqaP;ImF5kaA;MA5II,aAoDG;InFuqaP;ImF/kaA;MA5II,eAoDG;InF0qaP;ImFllaA;MA5II,aAoDG;InF6qaP;ImFrlaA;MA5II,iBAoDG;InFgraP;ImFxlaA;MA5II,uBAoDG;InFmraP;ImF3laA;MA5II,sBAoDG;InFsraP;ImF9laA;MA5II,uBAoDG;InFyraP;ImFjmaA;MA5II,oBAoDG;InF4raP;ImFpmaA;MA5II,uBAoDG;InF+raP;ImFvmaA;MA5II,sBAoDG;InFksaP;ImF1maA;MA5II,oBAoDG;InFqsaP;ImF7maA;MA5II,sBAoDG;InFwsaP;ImFhnaA;MA5II,oBAoDG;InF2saP;ImFnnaA;MA5II,gBAoDG;InF8saP;ImFtnaA;MA5II,sBAoDG;InFitaP;ImFznaA;MA5II,qBAoDG;InFotaP;ImF5naA;MA5II,sBAoDG;InFutaP;ImF/naA;MA5II,mBAoDG;InF0taP;ImFloaA;MA5II,sBAoDG;InF6taP;ImFroaA;MA5II,qBAoDG;InFguaP;ImFxoaA;MA5II,mBAoDG;InFmuaP;ImF3oaA;MA5II,qBAoDG;InFsuaP;ImF9oaA;MA5II,mBAoDG;InFyuaP;ImFjpaA;MA5II,sBAoDG;InF4uaP;ImFppaA;MA5II,4BAoDG;InF+uaP;ImFvpaA;MA5II,2BAoDG;InFkvaP;ImF1paA;MA5II,4BAoDG;InFqvaP;ImF7paA;MA5II,yBAoDG;InFwvaP;ImFhqaA;MA5II,4BAoDG;InF2vaP;ImFnqaA;MA5II,2BAoDG;InF8vaP;ImFtqaA;MA5II,yBAoDG;InFiwaP;ImFzqaA;MA5II,2BAoDG;InFowaP;ImF5qaA;MA5II,yBAoDG;InFuwaP;ImF/qaA;MA5II,qBAoDG;InF0waP;ImFlraA;MA5II,2BAoDG;InF6waP;ImFrraA;MA5II,0BAoDG;InFgxaP;ImFxraA;MA5II,2BAoDG;InFmxaP;ImF3raA;MA5II,wBAoDG;InFsxaP;ImF9raA;MA5II,2BAoDG;InFyxaP;ImFjsaA;MA5II,0BAoDG;InF4xaP;ImFpsaA;MA5II,wBAoDG;InF+xaP;ImFvsaA;MA5II,0BAoDG;InFkyaP;ImF1saA;MA5II,wBAoDG;InFqyaP;ImF7saA;MA5II,oBAoDG;InFwyaP;ImFhtaA;MA5II,0BAoDG;InF2yaP;ImFntaA;MA5II,yBAoDG;InF8yaP;ImFttaA;MA5II,0BAoDG;InFizaP;ImFztaA;MA5II,uBAoDG;InFozaP;ImF5taA;MA5II,0BAoDG;InFuzaP;ImF/taA;MA5II,yBAoDG;InF0zaP;ImFluaA;MA5II,uBAoDG;InF6zaP;ImFruaA;MA5II,yBAoDG;InFg0aP;ImFxuaA;MA5II,uBAoDG;InFm0aP;ImF3uaA;MA5II,uBAoDG;InFs0aP;ImF9uaA;MA5II,6BAoDG;InFy0aP;ImFjvaA;MA5II,4BAoDG;InF40aP;ImFpvaA;MA5II,6BAoDG;InF+0aP;ImFvvaA;MA5II,0BAoDG;InFk1aP;ImF1vaA;MA5II,6BAoDG;InFq1aP;ImF7vaA;MA5II,4BAoDG;InFw1aP;ImFhwaA;MA5II,0BAoDG;InF21aP;ImFnwaA;MA5II,4BAoDG;InF81aP;ImFtwaA;MA5II,0BAoDG;InFi2aP;ImFzwaA;MA5II,MAoDG;InFo2aP;ImF5waA;MA5II,YAoDG;InFu2aP;ImF/waA;MA5II,WAoDG;InF02aP;ImFlxaA;MA5II,YAoDG;InF62aP;ImFrxaA;MA5II,SAoDG;InFg3aP;ImFxxaA;MA5II,YAoDG;InFm3aP;ImF3xaA;MA5II,WAoDG;InFs3aP;ImF9xaA;MA5II,SAoDG;InFy3aP;ImFjyaA;MA5II,WAoDG;InF43aP;ImFpyaA;MA5II,SAoDG;InF+3aP;ImFvyaA;MA5II,UAoDG;InFk4aP;ImF1yaA;MA5II,gBAoDG;InFq4aP;ImF7yaA;MA5II,eAoDG;InFw4aP;ImFhzaA;MA5II,gBAoDG;InF24aP;ImFnzaA;MA5II,aAoDG;InF84aP;ImFtzaA;MA5II,gBAoDG;InFi5aP;ImFzzaA;MA5II,eAoDG;InFo5aP;ImF5zaA;MA5II,aAoDG;InFu5aP;ImF/zaA;MA5II,eAoDG;InF05aP;ImFl0aA;MA5II,aAoDG;InF65aP;ImFr0aA;MA5II,aAoDG;InFg6aP;ImFx0aA;MA5II,mBAoDG;InFm6aP;ImF30aA;MA5II,kBAoDG;InFs6aP;ImF90aA;MA5II,mBAoDG;InFy6aP;ImFj1aA;MA5II,gBAoDG;InF46aP;ImFp1aA;MA5II,mBAoDG;InF+6aP;ImFv1aA;MA5II,kBAoDG;InFk7aP;ImF11aA;MA5II,gBAoDG;InFq7aP;ImF71aA;MA5II,kBAoDG;InFw7aP;ImFh2aA;MA5II,gBAoDG;InF27aP;ImFn2aA;MA5II,oBAoDG;InF87aP;ImFt2aA;MA5II,0BAoDG;InFi8aP;ImFz2aA;MA5II,yBAoDG;InFo8aP;ImF52aA;MA5II,0BAoDG;InFu8aP;ImF/2aA;MA5II,uBAoDG;InF08aP;ImFl3aA;MA5II,0BAoDG;InF68aP;ImFr3aA;MA5II,yBAoDG;InFg9aP;ImFx3aA;MA5II,uBAoDG;InFm9aP;ImF33aA;MA5II,yBAoDG;InFs9aP;ImF93aA;MA5II,uBAoDG;InFy9aP;ImFj4aA;MA5II,mBAoDG;InF49aP;ImFp4aA;MA5II,yBAoDG;InF+9aP;ImFv4aA;MA5II,wBAoDG;InFk+aP;ImF14aA;MA5II,yBAoDG;InFq+aP;ImF74aA;MA5II,sBAoDG;InFw+aP;ImFh5aA;MA5II,yBAoDG;InF2+aP;ImFn5aA;MA5II,wBAoDG;InF8+aP;ImFt5aA;MA5II,sBAoDG;InFi/aP;ImFz5aA;MA5II,wBAoDG;InFo/aP;ImF55aA;MA5II,sBAoDG;InFu/aP;ImF/5aA;MA5II,yFAoDG;InF0/aP;ImFl6aA;MA5II,sBAoDG;InF6/aP;ImFr6aA;MA5II,wFAoDG;InFggbP;ImFx6aA;MA5II,qBAoDG;InFmgbP;ImF36aA;MA5II,iBAoDG;InFsgbP;ImF96aA;MA5II,eAoDG;InFygbP;ImFj7aA;MA5II,kBAoDG;InF4gbP;EACF;EWjibE;IwE4GA;MA5II,mBAoDG;InFihbP;ImFz7aA;MA5II,iBAoDG;InFohbP;ImF57aA;MA5II,WAoDG;InFuhbP;ImF/7aA;MA5II,mBAoDG;InF0hbP;ImFl8aA;MA5II,iBAoDG;InF6hbP;ImFr8aA;MA5II,gBAoDG;InFgibP;ImFx8aA;MA5II,sBAoDG;InFmibP;ImF38aA;MA5II,gBAoDG;InFsibP;ImF98aA;MA5II,eAyDO;InFoibX;ImFj9aA;MA5II,qBAyDO;InFuibX;ImFp9aA;MA5II,cAyDO;InF0ibX;ImFv9aA;MA5II,aAyDO;InF6ibX;ImF19aA;MA5II,oBAyDO;InFgjbX;ImF79aA;MA5II,cAyDO;InFmjbX;ImFh+aA;MA5II,kBAyDO;InFsjbX;ImFn+aA;MA5II,mBAyDO;InFyjbX;ImFt+aA;MA5II,aAyDO;InF4jbX;ImFz+aA;MA5II,oBAyDO;InF+jbX;ImF5+aA;MA5II,iBAyDO;InFkkbX;ImF/+aA;MA5II,kBAyDO;InFqkbX;ImFl/aA;MA5II,aAyDO;InFwkbX;ImFr/aA;MA5II,cAoDG;InFglbP;ImFx/aA;MA5II,mBAyDO;InF8kbX;ImF3/aA;MA5II,sBAyDO;InFilbX;ImF9/aA;MA5II,2BAyDO;InFolbX;ImFjgbA;MA5II,8BAyDO;InFulbX;ImFpgbA;MA5II,YAoDG;InF+lbP;ImFvgbA;MA5II,YAoDG;InFkmbP;ImF1gbA;MA5II,cAoDG;InFqmbP;ImF7gbA;MA5II,cAoDG;InFwmbP;ImFhhbA;MA5II,eAyDO;InFsmbX;ImFnhbA;MA5II,iBAyDO;InFymbX;ImFthbA;MA5II,uBAyDO;InF4mbX;ImFzhbA;MA5II,2BAoDG;InFonbP;ImF5hbA;MA5II,yBAoDG;InFunbP;ImF/hbA;MA5II,uBAoDG;InF0nbP;ImFlibA;MA5II,8BAoDG;InF6nbP;ImFribA;MA5II,6BAoDG;InFgobP;ImFxibA;MA5II,6BAoDG;InFmobP;ImF3ibA;MA5II,oBAoDG;InFsobP;ImF9ibA;MA5II,kBAoDG;InFyobP;ImFjjbA;MA5II,qBAoDG;InF4obP;ImFpjbA;MA5II,sBAoDG;InF+obP;ImFvjbA;MA5II,mBAoDG;InFkpbP;ImF1jbA;MA5II,iBAoDG;InFqpbP;ImF7jbA;MA5II,oBAoDG;InFwpbP;ImFhkbA;MA5II,uBAoDG;InF2pbP;ImFnkbA;MA5II,qBAoDG;InF8pbP;ImFtkbA;MA5II,mBAoDG;InFiqbP;ImFzkbA;MA5II,qBAoDG;InFoqbP;ImF5kbA;MA5II,oBAoDG;InFuqbP;ImF/kbA;MA5II,yBAoDG;InF0qbP;ImFllbA;MA5II,uBAoDG;InF6qbP;ImFrlbA;MA5II,qBAoDG;InFgrbP;ImFxlbA;MA5II,4BAoDG;InFmrbP;ImF3lbA;MA5II,2BAoDG;InFsrbP;ImF9lbA;MA5II,sBAoDG;InFyrbP;ImFjmbA;MA5II,gBAoDG;InF4rbP;ImFpmbA;MA5II,sBAoDG;InF+rbP;ImFvmbA;MA5II,oBAoDG;InFksbP;ImF1mbA;MA5II,kBAoDG;InFqsbP;ImF7mbA;MA5II,oBAoDG;InFwsbP;ImFhnbA;MA5II,mBAoDG;InF2sbP;ImFnnbA;MA5II,kBAoDG;InF8sbP;ImFtnbA;MA5II,gBAoDG;InFitbP;ImFznbA;MA5II,mBAoDG;InFotbP;ImF5nbA;MA5II,oBAoDG;InFutbP;ImF/nbA;MA5II,0BAoDG;InF0tbP;ImFlobA;MA5II,qCAoDG;InF6tbP;ImFrobA;MA5II,qCAoDG;InFgubP;ImFxobA;MA5II,qCAoDG;InFmubP;ImF3obA;MA5II,qCAoDG;InFsubP;ImF9obA;MA5II,mBAoDG;InFyubP;ImFjpbA;MA5II,mBAyDO;InFuubX;ImFppbA;MA5II,sBAyDO;InF0ubX;ImFvpbA;MA5II,qBAyDO;InF6ubX;ImF1pbA;MA5II,SAoDG;InFqvbP;ImF7pbA;MA5II,QAoDG;InFwvbP;ImFhqbA;MA5II,QAoDG;InF2vbP;ImFnqbA;MA5II,QAoDG;InF8vbP;ImFtqbA;MA5II,QAoDG;InFiwbP;ImFzqbA;MA5II,QAoDG;InFowbP;ImF5qbA;MA5II,QAoDG;InFuwbP;ImF/qbA;MA5II,QAoDG;InF0wbP;ImFlrbA;MA5II,SAoDG;InF6wbP;ImFrrbA;MA5II,eAoDG;InFgxbP;ImFxrbA;MA5II,cAoDG;InFmxbP;ImF3rbA;MA5II,eAoDG;InFsxbP;ImF9rbA;MA5II,YAoDG;InFyxbP;ImFjsbA;MA5II,eAoDG;InF4xbP;ImFpsbA;MA5II,cAoDG;InF+xbP;ImFvsbA;MA5II,YAoDG;InFkybP;ImF1sbA;MA5II,cAoDG;InFqybP;ImF7sbA;MA5II,YAoDG;InFwybP;ImFhtbA;MA5II,YAoDG;InF2ybP;ImFntbA;MA5II,gBAoDG;InF8ybP;ImFttbA;MA5II,sBAoDG;InFizbP;ImFztbA;MA5II,qBAoDG;InFozbP;ImF5tbA;MA5II,sBAoDG;InFuzbP;ImF/tbA;MA5II,mBAoDG;InF0zbP;ImFlubA;MA5II,sBAoDG;InF6zbP;ImFrubA;MA5II,qBAoDG;InFg0bP;ImFxubA;MA5II,mBAoDG;InFm0bP;ImF3ubA;MA5II,qBAoDG;InFs0bP;ImF9ubA;MA5II,mBAoDG;InFy0bP;ImFjvbA;MA5II,mBAoDG;InF40bP;ImFpvbA;MA5II,eAoDG;InF+0bP;ImFvvbA;MA5II,qBAoDG;InFk1bP;ImF1vbA;MA5II,oBAoDG;InFq1bP;ImF7vbA;MA5II,qBAoDG;InFw1bP;ImFhwbA;MA5II,kBAoDG;InF21bP;ImFnwbA;MA5II,qBAoDG;InF81bP;ImFtwbA;MA5II,oBAoDG;InFi2bP;ImFzwbA;MA5II,kBAoDG;InFo2bP;ImF5wbA;MA5II,oBAoDG;InFu2bP;ImF/wbA;MA5II,kBAoDG;InF02bP;ImFlxbA;MA5II,kBAoDG;InF62bP;ImFrxbA;MA5II,qBAoDG;InFg3bP;ImFxxbA;MA5II,2BAoDG;InFm3bP;ImF3xbA;MA5II,0BAoDG;InFs3bP;ImF9xbA;MA5II,2BAoDG;InFy3bP;ImFjybA;MA5II,wBAoDG;InF43bP;ImFpybA;MA5II,2BAoDG;InF+3bP;ImFvybA;MA5II,0BAoDG;InFk4bP;ImF1ybA;MA5II,wBAoDG;InFq4bP;ImF7ybA;MA5II,0BAoDG;InFw4bP;ImFhzbA;MA5II,wBAoDG;InF24bP;ImFnzbA;MA5II,wBAoDG;InF84bP;ImFtzbA;MA5II,oBAoDG;InFi5bP;ImFzzbA;MA5II,0BAoDG;InFo5bP;ImF5zbA;MA5II,yBAoDG;InFu5bP;ImF/zbA;MA5II,0BAoDG;InF05bP;ImFl0bA;MA5II,uBAoDG;InF65bP;ImFr0bA;MA5II,0BAoDG;InFg6bP;ImFx0bA;MA5II,yBAoDG;InFm6bP;ImF30bA;MA5II,uBAoDG;InFs6bP;ImF90bA;MA5II,yBAoDG;InFy6bP;ImFj1bA;MA5II,uBAoDG;InF46bP;ImFp1bA;MA5II,2BAoDG;InF+6bP;ImFv1bA;MA5II,0BAoDG;InFk7bP;ImF11bA;MA5II,uBAoDG;InFq7bP;ImF71bA;MA5II,mBAoDG;InFw7bP;ImFh2bA;MA5II,yBAoDG;InF27bP;ImFn2bA;MA5II,wBAoDG;InF87bP;ImFt2bA;MA5II,yBAoDG;InFi8bP;ImFz2bA;MA5II,sBAoDG;InFo8bP;ImF52bA;MA5II,yBAoDG;InFu8bP;ImF/2bA;MA5II,wBAoDG;InF08bP;ImFl3bA;MA5II,sBAoDG;InF68bP;ImFr3bA;MA5II,wBAoDG;InFg9bP;ImFx3bA;MA5II,sBAoDG;InFm9bP;ImF33bA;MA5II,sBAoDG;InFs9bP;ImF93bA;MA5II,sBAoDG;InFy9bP;ImFj4bA;MA5II,4BAoDG;InF49bP;ImFp4bA;MA5II,2BAoDG;InF+9bP;ImFv4bA;MA5II,4BAoDG;InFk+bP;ImF14bA;MA5II,yBAoDG;InFq+bP;ImF74bA;MA5II,4BAoDG;InFw+bP;ImFh5bA;MA5II,2BAoDG;InF2+bP;ImFn5bA;MA5II,yBAoDG;InF8+bP;ImFt5bA;MA5II,2BAoDG;InFi/bP;ImFz5bA;MA5II,yBAoDG;InFo/bP;ImF55bA;MA5II,6BAoDG;InFu/bP;ImF/5bA;MA5II,4BAoDG;InF0/bP;ImFl6bA;MA5II,yBAoDG;InF6/bP;ImFr6bA;MA5II,UAoDG;InFggcP;ImFx6bA;MA5II,gBAoDG;InFmgcP;ImF36bA;MA5II,eAoDG;InFsgcP;ImF96bA;MA5II,gBAoDG;InFygcP;ImFj7bA;MA5II,aAoDG;InF4gcP;ImFp7bA;MA5II,gBAoDG;InF+gcP;ImFv7bA;MA5II,eAoDG;InFkhcP;ImF17bA;MA5II,aAoDG;InFqhcP;ImF77bA;MA5II,eAoDG;InFwhcP;ImFh8bA;MA5II,aAoDG;InF2hcP;ImFn8bA;MA5II,iBAoDG;InF8hcP;ImFt8bA;MA5II,uBAoDG;InFiicP;ImFz8bA;MA5II,sBAoDG;InFoicP;ImF58bA;MA5II,uBAoDG;InFuicP;ImF/8bA;MA5II,oBAoDG;InF0icP;ImFl9bA;MA5II,uBAoDG;InF6icP;ImFr9bA;MA5II,sBAoDG;InFgjcP;ImFx9bA;MA5II,oBAoDG;InFmjcP;ImF39bA;MA5II,sBAoDG;InFsjcP;ImF99bA;MA5II,oBAoDG;InFyjcP;ImFj+bA;MA5II,gBAoDG;InF4jcP;ImFp+bA;MA5II,sBAoDG;InF+jcP;ImFv+bA;MA5II,qBAoDG;InFkkcP;ImF1+bA;MA5II,sBAoDG;InFqkcP;ImF7+bA;MA5II,mBAoDG;InFwkcP;ImFh/bA;MA5II,sBAoDG;InF2kcP;ImFn/bA;MA5II,qBAoDG;InF8kcP;ImFt/bA;MA5II,mBAoDG;InFilcP;ImFz/bA;MA5II,qBAoDG;InFolcP;ImF5/bA;MA5II,mBAoDG;InFulcP;ImF//bA;MA5II,sBAoDG;InF0lcP;ImFlgcA;MA5II,4BAoDG;InF6lcP;ImFrgcA;MA5II,2BAoDG;InFgmcP;ImFxgcA;MA5II,4BAoDG;InFmmcP;ImF3gcA;MA5II,yBAoDG;InFsmcP;ImF9gcA;MA5II,4BAoDG;InFymcP;ImFjhcA;MA5II,2BAoDG;InF4mcP;ImFphcA;MA5II,yBAoDG;InF+mcP;ImFvhcA;MA5II,2BAoDG;InFkncP;ImF1hcA;MA5II,yBAoDG;InFqncP;ImF7hcA;MA5II,qBAoDG;InFwncP;ImFhicA;MA5II,2BAoDG;InF2ncP;ImFnicA;MA5II,0BAoDG;InF8ncP;ImFticA;MA5II,2BAoDG;InFiocP;ImFzicA;MA5II,wBAoDG;InFoocP;ImF5icA;MA5II,2BAoDG;InFuocP;ImF/icA;MA5II,0BAoDG;InF0ocP;ImFljcA;MA5II,wBAoDG;InF6ocP;ImFrjcA;MA5II,0BAoDG;InFgpcP;ImFxjcA;MA5II,wBAoDG;InFmpcP;ImF3jcA;MA5II,oBAoDG;InFspcP;ImF9jcA;MA5II,0BAoDG;InFypcP;ImFjkcA;MA5II,yBAoDG;InF4pcP;ImFpkcA;MA5II,0BAoDG;InF+pcP;ImFvkcA;MA5II,uBAoDG;InFkqcP;ImF1kcA;MA5II,0BAoDG;InFqqcP;ImF7kcA;MA5II,yBAoDG;InFwqcP;ImFhlcA;MA5II,uBAoDG;InF2qcP;ImFnlcA;MA5II,yBAoDG;InF8qcP;ImFtlcA;MA5II,uBAoDG;InFircP;ImFzlcA;MA5II,uBAoDG;InForcP;ImF5lcA;MA5II,6BAoDG;InFurcP;ImF/lcA;MA5II,4BAoDG;InF0rcP;ImFlmcA;MA5II,6BAoDG;InF6rcP;ImFrmcA;MA5II,0BAoDG;InFgscP;ImFxmcA;MA5II,6BAoDG;InFmscP;ImF3mcA;MA5II,4BAoDG;InFsscP;ImF9mcA;MA5II,0BAoDG;InFyscP;ImFjncA;MA5II,4BAoDG;InF4scP;ImFpncA;MA5II,0BAoDG;InF+scP;ImFvncA;MA5II,MAoDG;InFktcP;ImF1ncA;MA5II,YAoDG;InFqtcP;ImF7ncA;MA5II,WAoDG;InFwtcP;ImFhocA;MA5II,YAoDG;InF2tcP;ImFnocA;MA5II,SAoDG;InF8tcP;ImFtocA;MA5II,YAoDG;InFiucP;ImFzocA;MA5II,WAoDG;InFoucP;ImF5ocA;MA5II,SAoDG;InFuucP;ImF/ocA;MA5II,WAoDG;InF0ucP;ImFlpcA;MA5II,SAoDG;InF6ucP;ImFrpcA;MA5II,UAoDG;InFgvcP;ImFxpcA;MA5II,gBAoDG;InFmvcP;ImF3pcA;MA5II,eAoDG;InFsvcP;ImF9pcA;MA5II,gBAoDG;InFyvcP;ImFjqcA;MA5II,aAoDG;InF4vcP;ImFpqcA;MA5II,gBAoDG;InF+vcP;ImFvqcA;MA5II,eAoDG;InFkwcP;ImF1qcA;MA5II,aAoDG;InFqwcP;ImF7qcA;MA5II,eAoDG;InFwwcP;ImFhrcA;MA5II,aAoDG;InF2wcP;ImFnrcA;MA5II,aAoDG;InF8wcP;ImFtrcA;MA5II,mBAoDG;InFixcP;ImFzrcA;MA5II,kBAoDG;InFoxcP;ImF5rcA;MA5II,mBAoDG;InFuxcP;ImF/rcA;MA5II,gBAoDG;InF0xcP;ImFlscA;MA5II,mBAoDG;InF6xcP;ImFrscA;MA5II,kBAoDG;InFgycP;ImFxscA;MA5II,gBAoDG;InFmycP;ImF3scA;MA5II,kBAoDG;InFsycP;ImF9scA;MA5II,gBAoDG;InFyycP;ImFjtcA;MA5II,oBAoDG;InF4ycP;ImFptcA;MA5II,0BAoDG;InF+ycP;ImFvtcA;MA5II,yBAoDG;InFkzcP;ImF1tcA;MA5II,0BAoDG;InFqzcP;ImF7tcA;MA5II,uBAoDG;InFwzcP;ImFhucA;MA5II,0BAoDG;InF2zcP;ImFnucA;MA5II,yBAoDG;InF8zcP;ImFtucA;MA5II,uBAoDG;InFi0cP;ImFzucA;MA5II,yBAoDG;InFo0cP;ImF5ucA;MA5II,uBAoDG;InFu0cP;ImF/ucA;MA5II,mBAoDG;InF00cP;ImFlvcA;MA5II,yBAoDG;InF60cP;ImFrvcA;MA5II,wBAoDG;InFg1cP;ImFxvcA;MA5II,yBAoDG;InFm1cP;ImF3vcA;MA5II,sBAoDG;InFs1cP;ImF9vcA;MA5II,yBAoDG;InFy1cP;ImFjwcA;MA5II,wBAoDG;InF41cP;ImFpwcA;MA5II,sBAoDG;InF+1cP;ImFvwcA;MA5II,wBAoDG;InFk2cP;ImF1wcA;MA5II,sBAoDG;InFq2cP;ImF7wcA;MA5II,yFAoDG;InFw2cP;ImFhxcA;MA5II,sBAoDG;InF22cP;ImFnxcA;MA5II,wFAoDG;InF82cP;ImFtxcA;MA5II,qBAoDG;InFi3cP;ImFzxcA;MA5II,iBAoDG;InFo3cP;ImF5xcA;MA5II,eAoDG;InFu3cP;ImF/xcA;MA5II,kBAoDG;InF03cP;EACF;EW/4cE;IwE4GA;MA5II,mBAoDG;InF+3cP;ImFvycA;MA5II,iBAoDG;InFk4cP;ImF1ycA;MA5II,WAoDG;InFq4cP;ImF7ycA;MA5II,mBAoDG;InFw4cP;ImFhzcA;MA5II,iBAoDG;InF24cP;ImFnzcA;MA5II,gBAoDG;InF84cP;ImFtzcA;MA5II,sBAoDG;InFi5cP;ImFzzcA;MA5II,gBAoDG;InFo5cP;ImF5zcA;MA5II,eAyDO;InFk5cX;ImF/zcA;MA5II,qBAyDO;InFq5cX;ImFl0cA;MA5II,cAyDO;InFw5cX;ImFr0cA;MA5II,aAyDO;InF25cX;ImFx0cA;MA5II,oBAyDO;InF85cX;ImF30cA;MA5II,cAyDO;InFi6cX;ImF90cA;MA5II,kBAyDO;InFo6cX;ImFj1cA;MA5II,mBAyDO;InFu6cX;ImFp1cA;MA5II,aAyDO;InF06cX;ImFv1cA;MA5II,oBAyDO;InF66cX;ImF11cA;MA5II,iBAyDO;InFg7cX;ImF71cA;MA5II,kBAyDO;InFm7cX;ImFh2cA;MA5II,aAyDO;InFs7cX;ImFn2cA;MA5II,cAoDG;InF87cP;ImFt2cA;MA5II,mBAyDO;InF47cX;ImFz2cA;MA5II,sBAyDO;InF+7cX;ImF52cA;MA5II,2BAyDO;InFk8cX;ImF/2cA;MA5II,8BAyDO;InFq8cX;ImFl3cA;MA5II,YAoDG;InF68cP;ImFr3cA;MA5II,YAoDG;InFg9cP;ImFx3cA;MA5II,cAoDG;InFm9cP;ImF33cA;MA5II,cAoDG;InFs9cP;ImF93cA;MA5II,eAyDO;InFo9cX;ImFj4cA;MA5II,iBAyDO;InFu9cX;ImFp4cA;MA5II,uBAyDO;InF09cX;ImFv4cA;MA5II,2BAoDG;InFk+cP;ImF14cA;MA5II,yBAoDG;InFq+cP;ImF74cA;MA5II,uBAoDG;InFw+cP;ImFh5cA;MA5II,8BAoDG;InF2+cP;ImFn5cA;MA5II,6BAoDG;InF8+cP;ImFt5cA;MA5II,6BAoDG;InFi/cP;ImFz5cA;MA5II,oBAoDG;InFo/cP;ImF55cA;MA5II,kBAoDG;InFu/cP;ImF/5cA;MA5II,qBAoDG;InF0/cP;ImFl6cA;MA5II,sBAoDG;InF6/cP;ImFr6cA;MA5II,mBAoDG;InFggdP;ImFx6cA;MA5II,iBAoDG;InFmgdP;ImF36cA;MA5II,oBAoDG;InFsgdP;ImF96cA;MA5II,uBAoDG;InFygdP;ImFj7cA;MA5II,qBAoDG;InF4gdP;ImFp7cA;MA5II,mBAoDG;InF+gdP;ImFv7cA;MA5II,qBAoDG;InFkhdP;ImF17cA;MA5II,oBAoDG;InFqhdP;ImF77cA;MA5II,yBAoDG;InFwhdP;ImFh8cA;MA5II,uBAoDG;InF2hdP;ImFn8cA;MA5II,qBAoDG;InF8hdP;ImFt8cA;MA5II,4BAoDG;InFiidP;ImFz8cA;MA5II,2BAoDG;InFoidP;ImF58cA;MA5II,sBAoDG;InFuidP;ImF/8cA;MA5II,gBAoDG;InF0idP;ImFl9cA;MA5II,sBAoDG;InF6idP;ImFr9cA;MA5II,oBAoDG;InFgjdP;ImFx9cA;MA5II,kBAoDG;InFmjdP;ImF39cA;MA5II,oBAoDG;InFsjdP;ImF99cA;MA5II,mBAoDG;InFyjdP;ImFj+cA;MA5II,kBAoDG;InF4jdP;ImFp+cA;MA5II,gBAoDG;InF+jdP;ImFv+cA;MA5II,mBAoDG;InFkkdP;ImF1+cA;MA5II,oBAoDG;InFqkdP;ImF7+cA;MA5II,0BAoDG;InFwkdP;ImFh/cA;MA5II,qCAoDG;InF2kdP;ImFn/cA;MA5II,qCAoDG;InF8kdP;ImFt/cA;MA5II,qCAoDG;InFildP;ImFz/cA;MA5II,qCAoDG;InFoldP;ImF5/cA;MA5II,mBAoDG;InFuldP;ImF//cA;MA5II,mBAyDO;InFqldX;ImFlgdA;MA5II,sBAyDO;InFwldX;ImFrgdA;MA5II,qBAyDO;InF2ldX;ImFxgdA;MA5II,SAoDG;InFmmdP;ImF3gdA;MA5II,QAoDG;InFsmdP;ImF9gdA;MA5II,QAoDG;InFymdP;ImFjhdA;MA5II,QAoDG;InF4mdP;ImFphdA;MA5II,QAoDG;InF+mdP;ImFvhdA;MA5II,QAoDG;InFkndP;ImF1hdA;MA5II,QAoDG;InFqndP;ImF7hdA;MA5II,QAoDG;InFwndP;ImFhidA;MA5II,SAoDG;InF2ndP;ImFnidA;MA5II,eAoDG;InF8ndP;ImFtidA;MA5II,cAoDG;InFiodP;ImFzidA;MA5II,eAoDG;InFoodP;ImF5idA;MA5II,YAoDG;InFuodP;ImF/idA;MA5II,eAoDG;InF0odP;ImFljdA;MA5II,cAoDG;InF6odP;ImFrjdA;MA5II,YAoDG;InFgpdP;ImFxjdA;MA5II,cAoDG;InFmpdP;ImF3jdA;MA5II,YAoDG;InFspdP;ImF9jdA;MA5II,YAoDG;InFypdP;ImFjkdA;MA5II,gBAoDG;InF4pdP;ImFpkdA;MA5II,sBAoDG;InF+pdP;ImFvkdA;MA5II,qBAoDG;InFkqdP;ImF1kdA;MA5II,sBAoDG;InFqqdP;ImF7kdA;MA5II,mBAoDG;InFwqdP;ImFhldA;MA5II,sBAoDG;InF2qdP;ImFnldA;MA5II,qBAoDG;InF8qdP;ImFtldA;MA5II,mBAoDG;InFirdP;ImFzldA;MA5II,qBAoDG;InFordP;ImF5ldA;MA5II,mBAoDG;InFurdP;ImF/ldA;MA5II,mBAoDG;InF0rdP;ImFlmdA;MA5II,eAoDG;InF6rdP;ImFrmdA;MA5II,qBAoDG;InFgsdP;ImFxmdA;MA5II,oBAoDG;InFmsdP;ImF3mdA;MA5II,qBAoDG;InFssdP;ImF9mdA;MA5II,kBAoDG;InFysdP;ImFjndA;MA5II,qBAoDG;InF4sdP;ImFpndA;MA5II,oBAoDG;InF+sdP;ImFvndA;MA5II,kBAoDG;InFktdP;ImF1ndA;MA5II,oBAoDG;InFqtdP;ImF7ndA;MA5II,kBAoDG;InFwtdP;ImFhodA;MA5II,kBAoDG;InF2tdP;ImFnodA;MA5II,qBAoDG;InF8tdP;ImFtodA;MA5II,2BAoDG;InFiudP;ImFzodA;MA5II,0BAoDG;InFoudP;ImF5odA;MA5II,2BAoDG;InFuudP;ImF/odA;MA5II,wBAoDG;InF0udP;ImFlpdA;MA5II,2BAoDG;InF6udP;ImFrpdA;MA5II,0BAoDG;InFgvdP;ImFxpdA;MA5II,wBAoDG;InFmvdP;ImF3pdA;MA5II,0BAoDG;InFsvdP;ImF9pdA;MA5II,wBAoDG;InFyvdP;ImFjqdA;MA5II,wBAoDG;InF4vdP;ImFpqdA;MA5II,oBAoDG;InF+vdP;ImFvqdA;MA5II,0BAoDG;InFkwdP;ImF1qdA;MA5II,yBAoDG;InFqwdP;ImF7qdA;MA5II,0BAoDG;InFwwdP;ImFhrdA;MA5II,uBAoDG;InF2wdP;ImFnrdA;MA5II,0BAoDG;InF8wdP;ImFtrdA;MA5II,yBAoDG;InFixdP;ImFzrdA;MA5II,uBAoDG;InFoxdP;ImF5rdA;MA5II,yBAoDG;InFuxdP;ImF/rdA;MA5II,uBAoDG;InF0xdP;ImFlsdA;MA5II,2BAoDG;InF6xdP;ImFrsdA;MA5II,0BAoDG;InFgydP;ImFxsdA;MA5II,uBAoDG;InFmydP;ImF3sdA;MA5II,mBAoDG;InFsydP;ImF9sdA;MA5II,yBAoDG;InFyydP;ImFjtdA;MA5II,wBAoDG;InF4ydP;ImFptdA;MA5II,yBAoDG;InF+ydP;ImFvtdA;MA5II,sBAoDG;InFkzdP;ImF1tdA;MA5II,yBAoDG;InFqzdP;ImF7tdA;MA5II,wBAoDG;InFwzdP;ImFhudA;MA5II,sBAoDG;InF2zdP;ImFnudA;MA5II,wBAoDG;InF8zdP;ImFtudA;MA5II,sBAoDG;InFi0dP;ImFzudA;MA5II,sBAoDG;InFo0dP;ImF5udA;MA5II,sBAoDG;InFu0dP;ImF/udA;MA5II,4BAoDG;InF00dP;ImFlvdA;MA5II,2BAoDG;InF60dP;ImFrvdA;MA5II,4BAoDG;InFg1dP;ImFxvdA;MA5II,yBAoDG;InFm1dP;ImF3vdA;MA5II,4BAoDG;InFs1dP;ImF9vdA;MA5II,2BAoDG;InFy1dP;ImFjwdA;MA5II,yBAoDG;InF41dP;ImFpwdA;MA5II,2BAoDG;InF+1dP;ImFvwdA;MA5II,yBAoDG;InFk2dP;ImF1wdA;MA5II,6BAoDG;InFq2dP;ImF7wdA;MA5II,4BAoDG;InFw2dP;ImFhxdA;MA5II,yBAoDG;InF22dP;ImFnxdA;MA5II,UAoDG;InF82dP;ImFtxdA;MA5II,gBAoDG;InFi3dP;ImFzxdA;MA5II,eAoDG;InFo3dP;ImF5xdA;MA5II,gBAoDG;InFu3dP;ImF/xdA;MA5II,aAoDG;InF03dP;ImFlydA;MA5II,gBAoDG;InF63dP;ImFrydA;MA5II,eAoDG;InFg4dP;ImFxydA;MA5II,aAoDG;InFm4dP;ImF3ydA;MA5II,eAoDG;InFs4dP;ImF9ydA;MA5II,aAoDG;InFy4dP;ImFjzdA;MA5II,iBAoDG;InF44dP;ImFpzdA;MA5II,uBAoDG;InF+4dP;ImFvzdA;MA5II,sBAoDG;InFk5dP;ImF1zdA;MA5II,uBAoDG;InFq5dP;ImF7zdA;MA5II,oBAoDG;InFw5dP;ImFh0dA;MA5II,uBAoDG;InF25dP;ImFn0dA;MA5II,sBAoDG;InF85dP;ImFt0dA;MA5II,oBAoDG;InFi6dP;ImFz0dA;MA5II,sBAoDG;InFo6dP;ImF50dA;MA5II,oBAoDG;InFu6dP;ImF/0dA;MA5II,gBAoDG;InF06dP;ImFl1dA;MA5II,sBAoDG;InF66dP;ImFr1dA;MA5II,qBAoDG;InFg7dP;ImFx1dA;MA5II,sBAoDG;InFm7dP;ImF31dA;MA5II,mBAoDG;InFs7dP;ImF91dA;MA5II,sBAoDG;InFy7dP;ImFj2dA;MA5II,qBAoDG;InF47dP;ImFp2dA;MA5II,mBAoDG;InF+7dP;ImFv2dA;MA5II,qBAoDG;InFk8dP;ImF12dA;MA5II,mBAoDG;InFq8dP;ImF72dA;MA5II,sBAoDG;InFw8dP;ImFh3dA;MA5II,4BAoDG;InF28dP;ImFn3dA;MA5II,2BAoDG;InF88dP;ImFt3dA;MA5II,4BAoDG;InFi9dP;ImFz3dA;MA5II,yBAoDG;InFo9dP;ImF53dA;MA5II,4BAoDG;InFu9dP;ImF/3dA;MA5II,2BAoDG;InF09dP;ImFl4dA;MA5II,yBAoDG;InF69dP;ImFr4dA;MA5II,2BAoDG;InFg+dP;ImFx4dA;MA5II,yBAoDG;InFm+dP;ImF34dA;MA5II,qBAoDG;InFs+dP;ImF94dA;MA5II,2BAoDG;InFy+dP;ImFj5dA;MA5II,0BAoDG;InF4+dP;ImFp5dA;MA5II,2BAoDG;InF++dP;ImFv5dA;MA5II,wBAoDG;InFk/dP;ImF15dA;MA5II,2BAoDG;InFq/dP;ImF75dA;MA5II,0BAoDG;InFw/dP;ImFh6dA;MA5II,wBAoDG;InF2/dP;ImFn6dA;MA5II,0BAoDG;InF8/dP;ImFt6dA;MA5II,wBAoDG;InFigeP;ImFz6dA;MA5II,oBAoDG;InFogeP;ImF56dA;MA5II,0BAoDG;InFugeP;ImF/6dA;MA5II,yBAoDG;InF0geP;ImFl7dA;MA5II,0BAoDG;InF6geP;ImFr7dA;MA5II,uBAoDG;InFgheP;ImFx7dA;MA5II,0BAoDG;InFmheP;ImF37dA;MA5II,yBAoDG;InFsheP;ImF97dA;MA5II,uBAoDG;InFyheP;ImFj8dA;MA5II,yBAoDG;InF4heP;ImFp8dA;MA5II,uBAoDG;InF+heP;ImFv8dA;MA5II,uBAoDG;InFkieP;ImF18dA;MA5II,6BAoDG;InFqieP;ImF78dA;MA5II,4BAoDG;InFwieP;ImFh9dA;MA5II,6BAoDG;InF2ieP;ImFn9dA;MA5II,0BAoDG;InF8ieP;ImFt9dA;MA5II,6BAoDG;InFijeP;ImFz9dA;MA5II,4BAoDG;InFojeP;ImF59dA;MA5II,0BAoDG;InFujeP;ImF/9dA;MA5II,4BAoDG;InF0jeP;ImFl+dA;MA5II,0BAoDG;InF6jeP;ImFr+dA;MA5II,MAoDG;InFgkeP;ImFx+dA;MA5II,YAoDG;InFmkeP;ImF3+dA;MA5II,WAoDG;InFskeP;ImF9+dA;MA5II,YAoDG;InFykeP;ImFj/dA;MA5II,SAoDG;InF4keP;ImFp/dA;MA5II,YAoDG;InF+keP;ImFv/dA;MA5II,WAoDG;InFkleP;ImF1/dA;MA5II,SAoDG;InFqleP;ImF7/dA;MA5II,WAoDG;InFwleP;ImFhgeA;MA5II,SAoDG;InF2leP;ImFngeA;MA5II,UAoDG;InF8leP;ImFtgeA;MA5II,gBAoDG;InFimeP;ImFzgeA;MA5II,eAoDG;InFomeP;ImF5geA;MA5II,gBAoDG;InFumeP;ImF/geA;MA5II,aAoDG;InF0meP;ImFlheA;MA5II,gBAoDG;InF6meP;ImFrheA;MA5II,eAoDG;InFgneP;ImFxheA;MA5II,aAoDG;InFmneP;ImF3heA;MA5II,eAoDG;InFsneP;ImF9heA;MA5II,aAoDG;InFyneP;ImFjieA;MA5II,aAoDG;InF4neP;ImFpieA;MA5II,mBAoDG;InF+neP;ImFvieA;MA5II,kBAoDG;InFkoeP;ImF1ieA;MA5II,mBAoDG;InFqoeP;ImF7ieA;MA5II,gBAoDG;InFwoeP;ImFhjeA;MA5II,mBAoDG;InF2oeP;ImFnjeA;MA5II,kBAoDG;InF8oeP;ImFtjeA;MA5II,gBAoDG;InFipeP;ImFzjeA;MA5II,kBAoDG;InFopeP;ImF5jeA;MA5II,gBAoDG;InFupeP;ImF/jeA;MA5II,oBAoDG;InF0peP;ImFlkeA;MA5II,0BAoDG;InF6peP;ImFrkeA;MA5II,yBAoDG;InFgqeP;ImFxkeA;MA5II,0BAoDG;InFmqeP;ImF3keA;MA5II,uBAoDG;InFsqeP;ImF9keA;MA5II,0BAoDG;InFyqeP;ImFjleA;MA5II,yBAoDG;InF4qeP;ImFpleA;MA5II,uBAoDG;InF+qeP;ImFvleA;MA5II,yBAoDG;InFkreP;ImF1leA;MA5II,uBAoDG;InFqreP;ImF7leA;MA5II,mBAoDG;InFwreP;ImFhmeA;MA5II,yBAoDG;InF2reP;ImFnmeA;MA5II,wBAoDG;InF8reP;ImFtmeA;MA5II,yBAoDG;InFiseP;ImFzmeA;MA5II,sBAoDG;InFoseP;ImF5meA;MA5II,yBAoDG;InFuseP;ImF/meA;MA5II,wBAoDG;InF0seP;ImFlneA;MA5II,sBAoDG;InF6seP;ImFrneA;MA5II,wBAoDG;InFgteP;ImFxneA;MA5II,sBAoDG;InFmteP;ImF3neA;MA5II,yFAoDG;InFsteP;ImF9neA;MA5II,sBAoDG;InFyteP;ImFjoeA;MA5II,wFAoDG;InF4teP;ImFpoeA;MA5II,qBAoDG;InF+teP;ImFvoeA;MA5II,iBAoDG;InFkueP;ImF1oeA;MA5II,eAoDG;InFqueP;ImF7oeA;MA5II,kBAoDG;InFwueP;EACF;EW7veE;IwE4GA;MA5II,mBAoDG;InF6ueP;ImFrpeA;MA5II,iBAoDG;InFgveP;ImFxpeA;MA5II,WAoDG;InFmveP;ImF3peA;MA5II,mBAoDG;InFsveP;ImF9peA;MA5II,iBAoDG;InFyveP;ImFjqeA;MA5II,gBAoDG;InF4veP;ImFpqeA;MA5II,sBAoDG;InF+veP;ImFvqeA;MA5II,gBAoDG;InFkweP;ImF1qeA;MA5II,eAyDO;InFgweX;ImF7qeA;MA5II,qBAyDO;InFmweX;ImFhreA;MA5II,cAyDO;InFsweX;ImFnreA;MA5II,aAyDO;InFyweX;ImFtreA;MA5II,oBAyDO;InF4weX;ImFzreA;MA5II,cAyDO;InF+weX;ImF5reA;MA5II,kBAyDO;InFkxeX;ImF/reA;MA5II,mBAyDO;InFqxeX;ImFlseA;MA5II,aAyDO;InFwxeX;ImFrseA;MA5II,oBAyDO;InF2xeX;ImFxseA;MA5II,iBAyDO;InF8xeX;ImF3seA;MA5II,kBAyDO;InFiyeX;ImF9seA;MA5II,aAyDO;InFoyeX;ImFjteA;MA5II,cAoDG;InF4yeP;ImFpteA;MA5II,mBAyDO;InF0yeX;ImFvteA;MA5II,sBAyDO;InF6yeX;ImF1teA;MA5II,2BAyDO;InFgzeX;ImF7teA;MA5II,8BAyDO;InFmzeX;ImFhueA;MA5II,YAoDG;InF2zeP;ImFnueA;MA5II,YAoDG;InF8zeP;ImFtueA;MA5II,cAoDG;InFi0eP;ImFzueA;MA5II,cAoDG;InFo0eP;ImF5ueA;MA5II,eAyDO;InFk0eX;ImF/ueA;MA5II,iBAyDO;InFq0eX;ImFlveA;MA5II,uBAyDO;InFw0eX;ImFrveA;MA5II,2BAoDG;InFg1eP;ImFxveA;MA5II,yBAoDG;InFm1eP;ImF3veA;MA5II,uBAoDG;InFs1eP;ImF9veA;MA5II,8BAoDG;InFy1eP;ImFjweA;MA5II,6BAoDG;InF41eP;ImFpweA;MA5II,6BAoDG;InF+1eP;ImFvweA;MA5II,oBAoDG;InFk2eP;ImF1weA;MA5II,kBAoDG;InFq2eP;ImF7weA;MA5II,qBAoDG;InFw2eP;ImFhxeA;MA5II,sBAoDG;InF22eP;ImFnxeA;MA5II,mBAoDG;InF82eP;ImFtxeA;MA5II,iBAoDG;InFi3eP;ImFzxeA;MA5II,oBAoDG;InFo3eP;ImF5xeA;MA5II,uBAoDG;InFu3eP;ImF/xeA;MA5II,qBAoDG;InF03eP;ImFlyeA;MA5II,mBAoDG;InF63eP;ImFryeA;MA5II,qBAoDG;InFg4eP;ImFxyeA;MA5II,oBAoDG;InFm4eP;ImF3yeA;MA5II,yBAoDG;InFs4eP;ImF9yeA;MA5II,uBAoDG;InFy4eP;ImFjzeA;MA5II,qBAoDG;InF44eP;ImFpzeA;MA5II,4BAoDG;InF+4eP;ImFvzeA;MA5II,2BAoDG;InFk5eP;ImF1zeA;MA5II,sBAoDG;InFq5eP;ImF7zeA;MA5II,gBAoDG;InFw5eP;ImFh0eA;MA5II,sBAoDG;InF25eP;ImFn0eA;MA5II,oBAoDG;InF85eP;ImFt0eA;MA5II,kBAoDG;InFi6eP;ImFz0eA;MA5II,oBAoDG;InFo6eP;ImF50eA;MA5II,mBAoDG;InFu6eP;ImF/0eA;MA5II,kBAoDG;InF06eP;ImFl1eA;MA5II,gBAoDG;InF66eP;ImFr1eA;MA5II,mBAoDG;InFg7eP;ImFx1eA;MA5II,oBAoDG;InFm7eP;ImF31eA;MA5II,0BAoDG;InFs7eP;ImF91eA;MA5II,qCAoDG;InFy7eP;ImFj2eA;MA5II,qCAoDG;InF47eP;ImFp2eA;MA5II,qCAoDG;InF+7eP;ImFv2eA;MA5II,qCAoDG;InFk8eP;ImF12eA;MA5II,mBAoDG;InFq8eP;ImF72eA;MA5II,mBAyDO;InFm8eX;ImFh3eA;MA5II,sBAyDO;InFs8eX;ImFn3eA;MA5II,qBAyDO;InFy8eX;ImFt3eA;MA5II,SAoDG;InFi9eP;ImFz3eA;MA5II,QAoDG;InFo9eP;ImF53eA;MA5II,QAoDG;InFu9eP;ImF/3eA;MA5II,QAoDG;InF09eP;ImFl4eA;MA5II,QAoDG;InF69eP;ImFr4eA;MA5II,QAoDG;InFg+eP;ImFx4eA;MA5II,QAoDG;InFm+eP;ImF34eA;MA5II,QAoDG;InFs+eP;ImF94eA;MA5II,SAoDG;InFy+eP;ImFj5eA;MA5II,eAoDG;InF4+eP;ImFp5eA;MA5II,cAoDG;InF++eP;ImFv5eA;MA5II,eAoDG;InFk/eP;ImF15eA;MA5II,YAoDG;InFq/eP;ImF75eA;MA5II,eAoDG;InFw/eP;ImFh6eA;MA5II,cAoDG;InF2/eP;ImFn6eA;MA5II,YAoDG;InF8/eP;ImFt6eA;MA5II,cAoDG;InFigfP;ImFz6eA;MA5II,YAoDG;InFogfP;ImF56eA;MA5II,YAoDG;InFugfP;ImF/6eA;MA5II,gBAoDG;InF0gfP;ImFl7eA;MA5II,sBAoDG;InF6gfP;ImFr7eA;MA5II,qBAoDG;InFghfP;ImFx7eA;MA5II,sBAoDG;InFmhfP;ImF37eA;MA5II,mBAoDG;InFshfP;ImF97eA;MA5II,sBAoDG;InFyhfP;ImFj8eA;MA5II,qBAoDG;InF4hfP;ImFp8eA;MA5II,mBAoDG;InF+hfP;ImFv8eA;MA5II,qBAoDG;InFkifP;ImF18eA;MA5II,mBAoDG;InFqifP;ImF78eA;MA5II,mBAoDG;InFwifP;ImFh9eA;MA5II,eAoDG;InF2ifP;ImFn9eA;MA5II,qBAoDG;InF8ifP;ImFt9eA;MA5II,oBAoDG;InFijfP;ImFz9eA;MA5II,qBAoDG;InFojfP;ImF59eA;MA5II,kBAoDG;InFujfP;ImF/9eA;MA5II,qBAoDG;InF0jfP;ImFl+eA;MA5II,oBAoDG;InF6jfP;ImFr+eA;MA5II,kBAoDG;InFgkfP;ImFx+eA;MA5II,oBAoDG;InFmkfP;ImF3+eA;MA5II,kBAoDG;InFskfP;ImF9+eA;MA5II,kBAoDG;InFykfP;ImFj/eA;MA5II,qBAoDG;InF4kfP;ImFp/eA;MA5II,2BAoDG;InF+kfP;ImFv/eA;MA5II,0BAoDG;InFklfP;ImF1/eA;MA5II,2BAoDG;InFqlfP;ImF7/eA;MA5II,wBAoDG;InFwlfP;ImFhgfA;MA5II,2BAoDG;InF2lfP;ImFngfA;MA5II,0BAoDG;InF8lfP;ImFtgfA;MA5II,wBAoDG;InFimfP;ImFzgfA;MA5II,0BAoDG;InFomfP;ImF5gfA;MA5II,wBAoDG;InFumfP;ImF/gfA;MA5II,wBAoDG;InF0mfP;ImFlhfA;MA5II,oBAoDG;InF6mfP;ImFrhfA;MA5II,0BAoDG;InFgnfP;ImFxhfA;MA5II,yBAoDG;InFmnfP;ImF3hfA;MA5II,0BAoDG;InFsnfP;ImF9hfA;MA5II,uBAoDG;InFynfP;ImFjifA;MA5II,0BAoDG;InF4nfP;ImFpifA;MA5II,yBAoDG;InF+nfP;ImFvifA;MA5II,uBAoDG;InFkofP;ImF1ifA;MA5II,yBAoDG;InFqofP;ImF7ifA;MA5II,uBAoDG;InFwofP;ImFhjfA;MA5II,2BAoDG;InF2ofP;ImFnjfA;MA5II,0BAoDG;InF8ofP;ImFtjfA;MA5II,uBAoDG;InFipfP;ImFzjfA;MA5II,mBAoDG;InFopfP;ImF5jfA;MA5II,yBAoDG;InFupfP;ImF/jfA;MA5II,wBAoDG;InF0pfP;ImFlkfA;MA5II,yBAoDG;InF6pfP;ImFrkfA;MA5II,sBAoDG;InFgqfP;ImFxkfA;MA5II,yBAoDG;InFmqfP;ImF3kfA;MA5II,wBAoDG;InFsqfP;ImF9kfA;MA5II,sBAoDG;InFyqfP;ImFjlfA;MA5II,wBAoDG;InF4qfP;ImFplfA;MA5II,sBAoDG;InF+qfP;ImFvlfA;MA5II,sBAoDG;InFkrfP;ImF1lfA;MA5II,sBAoDG;InFqrfP;ImF7lfA;MA5II,4BAoDG;InFwrfP;ImFhmfA;MA5II,2BAoDG;InF2rfP;ImFnmfA;MA5II,4BAoDG;InF8rfP;ImFtmfA;MA5II,yBAoDG;InFisfP;ImFzmfA;MA5II,4BAoDG;InFosfP;ImF5mfA;MA5II,2BAoDG;InFusfP;ImF/mfA;MA5II,yBAoDG;InF0sfP;ImFlnfA;MA5II,2BAoDG;InF6sfP;ImFrnfA;MA5II,yBAoDG;InFgtfP;ImFxnfA;MA5II,6BAoDG;InFmtfP;ImF3nfA;MA5II,4BAoDG;InFstfP;ImF9nfA;MA5II,yBAoDG;InFytfP;ImFjofA;MA5II,UAoDG;InF4tfP;ImFpofA;MA5II,gBAoDG;InF+tfP;ImFvofA;MA5II,eAoDG;InFkufP;ImF1ofA;MA5II,gBAoDG;InFqufP;ImF7ofA;MA5II,aAoDG;InFwufP;ImFhpfA;MA5II,gBAoDG;InF2ufP;ImFnpfA;MA5II,eAoDG;InF8ufP;ImFtpfA;MA5II,aAoDG;InFivfP;ImFzpfA;MA5II,eAoDG;InFovfP;ImF5pfA;MA5II,aAoDG;InFuvfP;ImF/pfA;MA5II,iBAoDG;InF0vfP;ImFlqfA;MA5II,uBAoDG;InF6vfP;ImFrqfA;MA5II,sBAoDG;InFgwfP;ImFxqfA;MA5II,uBAoDG;InFmwfP;ImF3qfA;MA5II,oBAoDG;InFswfP;ImF9qfA;MA5II,uBAoDG;InFywfP;ImFjrfA;MA5II,sBAoDG;InF4wfP;ImFprfA;MA5II,oBAoDG;InF+wfP;ImFvrfA;MA5II,sBAoDG;InFkxfP;ImF1rfA;MA5II,oBAoDG;InFqxfP;ImF7rfA;MA5II,gBAoDG;InFwxfP;ImFhsfA;MA5II,sBAoDG;InF2xfP;ImFnsfA;MA5II,qBAoDG;InF8xfP;ImFtsfA;MA5II,sBAoDG;InFiyfP;ImFzsfA;MA5II,mBAoDG;InFoyfP;ImF5sfA;MA5II,sBAoDG;InFuyfP;ImF/sfA;MA5II,qBAoDG;InF0yfP;ImFltfA;MA5II,mBAoDG;InF6yfP;ImFrtfA;MA5II,qBAoDG;InFgzfP;ImFxtfA;MA5II,mBAoDG;InFmzfP;ImF3tfA;MA5II,sBAoDG;InFszfP;ImF9tfA;MA5II,4BAoDG;InFyzfP;ImFjufA;MA5II,2BAoDG;InF4zfP;ImFpufA;MA5II,4BAoDG;InF+zfP;ImFvufA;MA5II,yBAoDG;InFk0fP;ImF1ufA;MA5II,4BAoDG;InFq0fP;ImF7ufA;MA5II,2BAoDG;InFw0fP;ImFhvfA;MA5II,yBAoDG;InF20fP;ImFnvfA;MA5II,2BAoDG;InF80fP;ImFtvfA;MA5II,yBAoDG;InFi1fP;ImFzvfA;MA5II,qBAoDG;InFo1fP;ImF5vfA;MA5II,2BAoDG;InFu1fP;ImF/vfA;MA5II,0BAoDG;InF01fP;ImFlwfA;MA5II,2BAoDG;InF61fP;ImFrwfA;MA5II,wBAoDG;InFg2fP;ImFxwfA;MA5II,2BAoDG;InFm2fP;ImF3wfA;MA5II,0BAoDG;InFs2fP;ImF9wfA;MA5II,wBAoDG;InFy2fP;ImFjxfA;MA5II,0BAoDG;InF42fP;ImFpxfA;MA5II,wBAoDG;InF+2fP;ImFvxfA;MA5II,oBAoDG;InFk3fP;ImF1xfA;MA5II,0BAoDG;InFq3fP;ImF7xfA;MA5II,yBAoDG;InFw3fP;ImFhyfA;MA5II,0BAoDG;InF23fP;ImFnyfA;MA5II,uBAoDG;InF83fP;ImFtyfA;MA5II,0BAoDG;InFi4fP;ImFzyfA;MA5II,yBAoDG;InFo4fP;ImF5yfA;MA5II,uBAoDG;InFu4fP;ImF/yfA;MA5II,yBAoDG;InF04fP;ImFlzfA;MA5II,uBAoDG;InF64fP;ImFrzfA;MA5II,uBAoDG;InFg5fP;ImFxzfA;MA5II,6BAoDG;InFm5fP;ImF3zfA;MA5II,4BAoDG;InFs5fP;ImF9zfA;MA5II,6BAoDG;InFy5fP;ImFj0fA;MA5II,0BAoDG;InF45fP;ImFp0fA;MA5II,6BAoDG;InF+5fP;ImFv0fA;MA5II,4BAoDG;InFk6fP;ImF10fA;MA5II,0BAoDG;InFq6fP;ImF70fA;MA5II,4BAoDG;InFw6fP;ImFh1fA;MA5II,0BAoDG;InF26fP;ImFn1fA;MA5II,MAoDG;InF86fP;ImFt1fA;MA5II,YAoDG;InFi7fP;ImFz1fA;MA5II,WAoDG;InFo7fP;ImF51fA;MA5II,YAoDG;InFu7fP;ImF/1fA;MA5II,SAoDG;InF07fP;ImFl2fA;MA5II,YAoDG;InF67fP;ImFr2fA;MA5II,WAoDG;InFg8fP;ImFx2fA;MA5II,SAoDG;InFm8fP;ImF32fA;MA5II,WAoDG;InFs8fP;ImF92fA;MA5II,SAoDG;InFy8fP;ImFj3fA;MA5II,UAoDG;InF48fP;ImFp3fA;MA5II,gBAoDG;InF+8fP;ImFv3fA;MA5II,eAoDG;InFk9fP;ImF13fA;MA5II,gBAoDG;InFq9fP;ImF73fA;MA5II,aAoDG;InFw9fP;ImFh4fA;MA5II,gBAoDG;InF29fP;ImFn4fA;MA5II,eAoDG;InF89fP;ImFt4fA;MA5II,aAoDG;InFi+fP;ImFz4fA;MA5II,eAoDG;InFo+fP;ImF54fA;MA5II,aAoDG;InFu+fP;ImF/4fA;MA5II,aAoDG;InF0+fP;ImFl5fA;MA5II,mBAoDG;InF6+fP;ImFr5fA;MA5II,kBAoDG;InFg/fP;ImFx5fA;MA5II,mBAoDG;InFm/fP;ImF35fA;MA5II,gBAoDG;InFs/fP;ImF95fA;MA5II,mBAoDG;InFy/fP;ImFj6fA;MA5II,kBAoDG;InF4/fP;ImFp6fA;MA5II,gBAoDG;InF+/fP;ImFv6fA;MA5II,kBAoDG;InFkggBP;ImF16fA;MA5II,gBAoDG;InFqggBP;ImF76fA;MA5II,oBAoDG;InFwggBP;ImFh7fA;MA5II,0BAoDG;InF2ggBP;ImFn7fA;MA5II,yBAoDG;InF8ggBP;ImFt7fA;MA5II,0BAoDG;InFihgBP;ImFz7fA;MA5II,uBAoDG;InFohgBP;ImF57fA;MA5II,0BAoDG;InFuhgBP;ImF/7fA;MA5II,yBAoDG;InF0hgBP;ImFl8fA;MA5II,uBAoDG;InF6hgBP;ImFr8fA;MA5II,yBAoDG;InFgigBP;ImFx8fA;MA5II,uBAoDG;InFmigBP;ImF38fA;MA5II,mBAoDG;InFsigBP;ImF98fA;MA5II,yBAoDG;InFyigBP;ImFj9fA;MA5II,wBAoDG;InF4igBP;ImFp9fA;MA5II,yBAoDG;InF+igBP;ImFv9fA;MA5II,sBAoDG;InFkjgBP;ImF19fA;MA5II,yBAoDG;InFqjgBP;ImF79fA;MA5II,wBAoDG;InFwjgBP;ImFh+fA;MA5II,sBAoDG;InF2jgBP;ImFn+fA;MA5II,wBAoDG;InF8jgBP;ImFt+fA;MA5II,sBAoDG;InFikgBP;ImFz+fA;MA5II,yFAoDG;InFokgBP;ImF5+fA;MA5II,sBAoDG;InFukgBP;ImF/+fA;MA5II,wFAoDG;InF0kgBP;ImFl/fA;MA5II,qBAoDG;InF6kgBP;ImFr/fA;MA5II,iBAoDG;InFglgBP;ImFx/fA;MA5II,eAoDG;InFmlgBP;ImF3/fA;MA5II,kBAoDG;InFslgBP;EACF;AACF","file":"bootstrap.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n  * Bootstrap  v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-fg));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', monospace;;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(var(--gray-200), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --box-shadow-xs: 0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.075);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--radius-5);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--radius-5);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--radius-5);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--radius-7);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-fg: light-dark(var(--blue-600), var(--blue-400));\n  --primary-fg-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-fg-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-fg: light-dark(var(--green-600), var(--green-400));\n  --success-fg-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-fg: light-dark(var(--red-600), var(--red-400));\n  --danger-fg-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-fg: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-fg-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-fg: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-fg-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-fg: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-fg-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-fg: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-fg-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-fg: var(--fg-body);\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-bg: var(--bg-body);\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  --spacer-0: 0;\n  --spacer-1: 0.25rem;\n  --spacer-2: 0.5rem;\n  --spacer-3: 0.75rem;\n  --spacer-4: 1rem;\n  --spacer-5: 1.25rem;\n  --spacer-6: 1.5rem;\n  --spacer-7: 2rem;\n  --spacer-8: 2.5rem;\n  --spacer-9: 3rem;\n  --radius-0: 0;\n  --radius-1: 0.125rem;\n  --radius-2: 0.1875rem;\n  --radius-3: 0.25rem;\n  --radius-4: 0.375rem;\n  --radius-5: 0.5rem;\n  --radius-6: 0.625rem;\n  --radius-7: 0.75rem;\n  --radius-8: 1rem;\n  --radius-9: 1.5rem;\n  --radius-pill: 50rem;\n  color-scheme: light dark;\n  scrollbar-gutter: stable;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  iframe {\n    color-scheme: light dark;\n    border: 0;\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: transparent;\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: var(--spacer-2);\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-fg-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href], [class]), a:not([href], [class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--radius-5);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date], [type=datetime-local], [type=month], [type=week], [type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-meridiem-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button,\n  ::-webkit-outer-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n@layer content {\n  .list-unstyled {\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .list-inline-item {\n    display: inline-block;\n  }\n  .list-inline-item:not(:last-child) {\n    margin-inline-end: var(--list-inline-padding, var(--spacer)/2);\n  }\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n  .blockquote {\n    --blockquote-gap: calc(var(--spacer) / 2);\n    --blockquote-padding-x: var(--spacer);\n    --blockquote-margin-y: 1rem;\n    --blockquote-font-size: var(--font-size-md);\n    --blockquote-border-width: 0.25rem;\n    --blockquote-border-color: var(--border-color);\n    --blockquote-footer-font-size: var(--font-size-sm);\n    --blockquote-footer-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n  }\n  .blockquote > * {\n    margin-bottom: 0;\n  }\n  figure.blockquote blockquote {\n    margin-bottom: 0;\n  }\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n  }\n  .blockquote-footer::before {\n    content: \"— \";\n  }\n}\n@layer content {\n  .table {\n    --table-cell-padding-y: 0.5rem;\n    --table-cell-padding-x: 0.5rem;\n    --table-cell-vertical-align: top;\n    --table-color: var(--fg-body);\n    --table-bg: var(--bg-body);\n    --table-accent-bg: transparent;\n    --table-border-width: var(--border-width);\n    --table-border-color: var(--border-color);\n    --table-group-separator-color: currentcolor;\n    --table-striped-color: var(--table-color);\n    --table-striped-bg-factor: 5%;\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent);\n    --table-active-color: var(--table-color);\n    --table-active-bg-factor: 10%;\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent);\n    --table-hover-color: var(--table-color);\n    --table-hover-bg-factor: 7.5%;\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent);\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    width: 100%;\n    margin-bottom: var(--spacer);\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n  }\n  .table > :not(caption) > * > * {\n    padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n    color: var(--table-color-state, var(--table-color-type, var(--theme-fg, var(--table-color))));\n    background-color: var(--theme-bg-subtle, var(--table-bg));\n    border-block-end-width: var(--table-border-width);\n    box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n  }\n  .table > tbody {\n    vertical-align: inherit;\n  }\n  .table > thead {\n    vertical-align: bottom;\n  }\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n  .caption-top {\n    caption-side: top;\n  }\n  .table-sm > :not(caption) > * > * {\n    --table-cell-padding-y: .25rem;\n    --table-cell-padding-x: .25rem;\n  }\n  .table-bordered > :not(caption) > * {\n    border-width: var(--table-border-width) 0;\n  }\n  .table-bordered > :not(caption) > * > * {\n    border-width: 0 var(--table-border-width);\n  }\n  .table-borderless > :not(caption) > * > * {\n    border-block-end-width: 0;\n  }\n  .table-borderless > :not(:first-child) {\n    border-block-start-width: 0;\n  }\n  .table-striped > tbody > tr:nth-of-type(odd) > * {\n    --table-color-type: var(--theme-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-striped-columns > :not(caption) > tr > :nth-child(even) {\n    --table-color-type: var(--theme-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-fg, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    container-type: inline-size;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .sm\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 576px) {\n    .sm\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .md\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 768px) {\n    .md\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .lg\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1024px) {\n    .lg\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1280px) {\n    .xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .\\32 xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .table-stacked > thead {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n  }\n  .table-stacked > tbody > tr {\n    display: block;\n    padding-block: var(--table-cell-padding-y);\n  }\n  .table-stacked > tbody > tr + tr {\n    border-block-start: var(--table-border-width) solid var(--table-border-color);\n  }\n  .table-stacked > tbody > tr > td {\n    display: block;\n    padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n    border: 0;\n  }\n  .table-stacked > tbody > tr > td:first-child {\n    font-weight: var(--font-weight-bold);\n  }\n  .table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n    display: block;\n    font-weight: var(--font-weight-semibold);\n    content: attr(data-cell);\n  }\n  .table-stacked > tbody > tr > td:not(:first-child) + td::before {\n    margin-block-start: 0.25rem;\n  }\n  @container (width < 576px) {\n    .sm\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .sm\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .sm\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .sm\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .sm\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 768px) {\n    .md\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .md\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .md\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .md\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .md\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1024px) {\n    .lg\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .lg\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .lg\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .lg\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .lg\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1280px) {\n    .xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1536px) {\n    .\\32 xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n}\n@layer content {\n  .img-fluid {\n    max-width: 100%;\n    height: auto;\n  }\n  .img-thumbnail {\n    --thumbnail-padding: 0.25rem;\n    --thumbnail-bg: var(--bg-body);\n    --thumbnail-border-width: var(--border-width);\n    --thumbnail-border-color: var(--border-color);\n    --thumbnail-border-radius: var(--radius-5);\n    --thumbnail-box-shadow: var(--box-shadow-sm);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    border-radius: var(--thumbnail-border-radius);\n    box-shadow: var(--thumbnail-box-shadow);\n    max-width: 100%;\n    height: auto;\n  }\n  .figure {\n    --figure-gap: calc(var(--spacer) * 0.5);\n    --figure-caption-font-size: var(--font-size-sm);\n    --figure-caption-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n@layer content {\n  .prose {\n    --content-font-size: 1rem;\n    --content-line-height: 1.5;\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height));\n    --heading-color: light-dark(var(--gray-900), var(--white));\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: var(--content-line-height);\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n    }\n  }\n  .prose :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n    margin-block: 0;\n  }\n  .prose :where(ul, ol):not([class], :where(.not-prose, .not-prose *)) li:not(:last-child) {\n    margin-bottom: calc(var(--content-gap) / 4);\n  }\n  .prose :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) / 4);\n  }\n  .prose :where(hr):not(:where(.not-prose, .not-prose *)) {\n    margin: calc(var(--content-gap) * 1.5) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) {\n    margin-top: 0;\n    margin-bottom: calc(var(--content-gap) / -2);\n    font-weight: 500;\n    line-height: 1.25;\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child, :where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.75);\n  }\n  .prose :where(h3, h4, h5, h6):not(:first-child, :where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.5);\n  }\n  .prose :where(h1):not(:where(.not-prose, .not-prose *)) {\n    font-size: 2.25em;\n    line-height: 1.1;\n  }\n  .prose :where(h2):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.75em;\n  }\n  .prose :where(h3):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.5em;\n  }\n  .prose :where(h4):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.25em;\n  }\n  .prose :where(h5):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.125em;\n  }\n  .prose :where(h6):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1em;\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n    color: var(--link-color);\n    text-decoration: underline;\n    text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n    text-underline-offset: 4px;\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      transition: none;\n    }\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)):hover {\n    text-decoration-color: var(--link-hover-color);\n  }\n  .prose :where(img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n  .prose :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n    padding-inline-start: calc(var(--content-gap) / 2);\n    margin: 0;\n    border-inline-start: 4px solid var(--border-color);\n  }\n  .prose :where(table):not(:where(.not-prose, .not-prose *)) {\n    width: 100%;\n    border-spacing: 0;\n    border-collapse: collapse;\n  }\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) td,\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) th {\n    padding: 6px 12px;\n    text-align: inherit;\n    border: 1px solid var(--border-color);\n  }\n  .prose :where(dt):not(:where(.not-prose, .not-prose *)) {\n    font-weight: 500;\n  }\n  .prose :where(video, img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n}\n@layer layout {\n  .container,\n  .container-fluid,\n  .\\32 xl\\:container,\n  .xl\\:container,\n  .lg\\:container,\n  .md\\:container,\n  .sm\\:container {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .sm\\:container, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:container, .sm\\:container, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:container, .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 0.75rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 0.75rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 1.25rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 1.25rem;\n  }\n  .g-6,\n  .gx-6 {\n    --gutter-x: 1.5rem;\n  }\n  .g-6,\n  .gy-6 {\n    --gutter-y: 1.5rem;\n  }\n  .g-7,\n  .gx-7 {\n    --gutter-x: 2rem;\n  }\n  .g-7,\n  .gy-7 {\n    --gutter-y: 2rem;\n  }\n  .g-8,\n  .gx-8 {\n    --gutter-x: 2.5rem;\n  }\n  .g-8,\n  .gy-8 {\n    --gutter-y: 2.5rem;\n  }\n  .g-9,\n  .gx-9 {\n    --gutter-x: 3rem;\n  }\n  .g-9,\n  .gy-9 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .sm\\:col {\n      flex: 1 0 0;\n    }\n    .sm\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .sm\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .sm\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .sm\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .sm\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .sm\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .sm\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .sm\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .sm\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .sm\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .sm\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .sm\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .sm\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .sm\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .sm\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .sm\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .sm\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .sm\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .sm\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .sm\\:g-0,\n    .sm\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .sm\\:g-0,\n    .sm\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .sm\\:g-1,\n    .sm\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .sm\\:g-1,\n    .sm\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:col {\n      flex: 1 0 0;\n    }\n    .md\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .md\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .md\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .md\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .md\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .md\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .md\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .md\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .md\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .md\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .md\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .md\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .md\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .md\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .md\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .md\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .md\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .md\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .md\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .md\\:g-0,\n    .md\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .md\\:g-0,\n    .md\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .md\\:g-1,\n    .md\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .md\\:g-1,\n    .md\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .md\\:g-2,\n    .md\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .md\\:g-2,\n    .md\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .md\\:g-3,\n    .md\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .md\\:g-3,\n    .md\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .md\\:g-4,\n    .md\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .md\\:g-4,\n    .md\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .md\\:g-5,\n    .md\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .md\\:g-5,\n    .md\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .md\\:g-6,\n    .md\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .md\\:g-6,\n    .md\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .md\\:g-7,\n    .md\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .md\\:g-7,\n    .md\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .md\\:g-8,\n    .md\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .md\\:g-8,\n    .md\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .md\\:g-9,\n    .md\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .md\\:g-9,\n    .md\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:col {\n      flex: 1 0 0;\n    }\n    .lg\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .lg\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .lg\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .lg\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .lg\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .lg\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .lg\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .lg\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .lg\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .lg\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .lg\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .lg\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .lg\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .lg\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .lg\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .lg\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .lg\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .lg\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .lg\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .lg\\:g-0,\n    .lg\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .lg\\:g-0,\n    .lg\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .lg\\:g-1,\n    .lg\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .lg\\:g-1,\n    .lg\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:col {\n      flex: 1 0 0;\n    }\n    .xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .xl\\:g-0,\n    .xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .xl\\:g-0,\n    .xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .xl\\:g-1,\n    .xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .xl\\:g-1,\n    .xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:col {\n      flex: 1 0 0;\n    }\n    .\\32 xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .\\32 xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .\\32 xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .\\32 xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .\\32 xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .\\32 xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .\\32 xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .\\32 xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .\\32 xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .\\32 xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .\\32 xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .\\32 xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .\\32 xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .\\32 xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .\\32 xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .\\32 xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .\\32 xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .\\32 xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .\\32 xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .sm\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .sm\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .sm\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .sm\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .sm\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .sm\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .sm\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .sm\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .sm\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .sm\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .sm\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .sm\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .sm\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .sm\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .sm\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .sm\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .sm\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .sm\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .sm\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .sm\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .sm\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .sm\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .sm\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .md\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .md\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .md\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .md\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .md\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .md\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .md\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .md\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .md\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .md\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .md\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .md\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .md\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .md\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .md\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .md\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .md\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .md\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .md\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .md\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .md\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .md\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .lg\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .lg\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .lg\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .lg\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .lg\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .lg\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .lg\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .lg\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .lg\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .lg\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .lg\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .lg\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .lg\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .lg\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .lg\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .lg\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .lg\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .lg\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .lg\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .lg\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .lg\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .lg\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .\\32 xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .\\32 xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .\\32 xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .\\32 xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .\\32 xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .\\32 xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .\\32 xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .\\32 xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .\\32 xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .\\32 xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .\\32 xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .\\32 xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .\\32 xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .\\32 xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .\\32 xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .\\32 xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .\\32 xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .\\32 xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .\\32 xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .\\32 xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .\\32 xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .\\32 xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\n    color: var(--label-color, var(--fg-body));\n  }\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0;\n  }\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n@layer forms {\n  .form-text {\n    --form-text-margin-top: 0.25rem;\n    --form-text-font-size: var(--font-size-sm);\n    --form-text-color: var(--fg-2);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n@layer forms {\n  .form-control {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n    box-shadow: var(--control-box-shadow);\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control {\n      transition: none;\n    }\n  }\n  .form-control:focus-visible {\n    --focus-ring-offset: -1px;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-control::placeholder {\n    color: var(--control-placeholder-color);\n    opacity: 1;\n  }\n  .form-control:disabled {\n    color: var(--control-disabled-color);\n    background-color: var(--control-disabled-bg);\n    border-color: var(--control-disabled-border-color);\n    opacity: 1;\n  }\n  .form-control::-webkit-datetime-edit {\n    display: block;\n    height: 1.5rem;\n    padding: 0;\n    margin-bottom: -0.125rem;\n  }\n  .form-control::-webkit-datetime-edit-fields-wrapper {\n    height: 1.5rem;\n  }\n  .form-control[type=file] {\n    overflow: hidden;\n  }\n  .form-control[type=file]:not(:disabled, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control::file-selector-button {\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n    margin-inline-end: var(--control-padding-x);\n    color: var(--control-fg);\n    pointer-events: none;\n    background-color: var(--control-action-bg);\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: var(--control-border-width);\n    border-radius: 0;\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control::file-selector-button {\n      transition: none;\n    }\n  }\n  .form-control:hover:not(:disabled, [readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0;\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n  }\n  .form-control-plaintext:focus {\n    outline: 0;\n  }\n  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n    padding-inline: 0;\n  }\n  select.form-control,\n  .form-control-caret {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n  }\n  select.form-control[multiple], select.form-control[size]:not([size=\"1\"]),\n  .form-control-caret[multiple],\n  .form-control-caret[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  [data-bs-theme=dark] select.form-control,\n  [data-bs-theme=dark] .form-control-caret {\n    background-image: var(--control-select-bg-dark);\n  }\n  .form-control-sm {\n    --control-min-height: var(--btn-input-sm-min-height);\n    --control-padding-y: var(--btn-input-sm-padding-y);\n    --control-padding-x: var(--btn-input-sm-padding-x);\n    --control-font-size: var(--btn-input-sm-font-size);\n    --control-line-height: var(--btn-input-sm-line-height);\n    --control-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .form-control-lg {\n    --control-min-height: var(--btn-input-lg-min-height);\n    --control-padding-y: var(--btn-input-lg-padding-y);\n    --control-padding-x: var(--btn-input-lg-padding-x);\n    --control-font-size: var(--btn-input-lg-font-size);\n    --control-line-height: var(--btn-input-lg-line-height);\n    --control-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n  }\n  .form-control-color:not(:disabled, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n  }\n  .form-ghost:focus {\n    outline: 0;\n  }\n  .form-ghost::placeholder {\n    color: var(--fg-3);\n    opacity: 1;\n  }\n  .form-ghost:disabled {\n    color: var(--fg-4);\n    cursor: not-allowed;\n  }\n}\n@layer forms {\n  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: var(--bg-body);\n    --check-border-color: var(--border-color);\n    --check-border-radius: var(--radius-5);\n    --check-icon-checked: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e\");\n    --check-icon-indeterminate: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e\");\n    --check-checked-bg: var(--control-checked-bg);\n    --check-checked-border-color: var(--control-checked-border-color);\n    --check-indeterminate-bg: var(--control-checked-bg);\n    --check-indeterminate-border-color: var(--control-checked-border-color);\n    --check-active-bg: var(--control-active-bg);\n    --check-active-border-color: var(--control-active-border-color);\n    --check-disabled-bg: var(--control-disabled-bg);\n    --check-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    border-radius: 33%;\n  }\n  .check:checked, .check:indeterminate {\n    background-color: var(--theme-bg, var(--check-checked-bg));\n    border-color: var(--theme-bg, var(--check-checked-border-color));\n  }\n  .check:checked::before, .check:indeterminate::before {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    content: \"\";\n    background-color: var(--theme-contrast, var(--primary-contrast));\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .check:checked::before {\n    mask-image: var(--check-icon-checked);\n  }\n  .check:indeterminate::before {\n    mask-image: var(--check-icon-indeterminate);\n  }\n  .check:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: -1px;\n  }\n  .check:disabled {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:disabled ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:disabled:checked {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n  }\n  .check-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: var(--bg-body);\n    --radio-border-color: var(--border-color);\n    --radio-checked-bg: var(--control-checked-bg);\n    --radio-checked-border-color: var(--control-checked-border-color);\n    --radio-disabled-bg: var(--control-disabled-bg);\n    --radio-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    border-radius: 50%;\n  }\n  .radio:checked {\n    color: var(--theme-contrast, var(--primary-contrast));\n    background-color: var(--theme-bg, var(--radio-checked-bg));\n    border-color: var(--theme-bg, var(--radio-checked-border-color));\n  }\n  .radio:checked::before {\n    position: absolute;\n    inset: calc(var(--radio-size) * 0.25);\n    content: \"\";\n    background-color: currentcolor;\n    border-radius: 50%;\n  }\n  .radio:disabled {\n    --radio-bg: var(--radio-disabled-bg);\n  }\n  .radio:disabled ~ label {\n    color: var(--secondary-fg);\n    cursor: default;\n  }\n  .radio:disabled:checked {\n    opacity: var(--radio-disabled-opacity);\n  }\n  .radio:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n  }\n  .radio-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.75);\n    --switch-padding: 0.0625rem;\n    --switch-margin-block: 0.125rem;\n    --switch-bg: var(--bg-3);\n    --switch-border-width: var(--border-width);\n    --switch-border-color: var(--border-color);\n    --switch-indicator-bg: var(--white);\n    --switch-indicator-width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-indicator-height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-checked-bg: var(--control-checked-bg);\n    --switch-checked-border-color: var(--switch-checked-bg);\n    --switch-checked-indicator-bg: var(--white);\n    --switch-disabled-bg: var(--control-disabled-bg);\n    --switch-disabled-indicator-bg: var(--fg-3);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);\n    transition: background-color 0.15s ease-in-out;\n  }\n  .switch::before {\n    position: absolute;\n    inset-block: var(--switch-padding);\n    inset-inline-start: var(--switch-padding);\n    width: var(--switch-indicator-width);\n    height: var(--switch-indicator-height);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 10rem;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    transition: inset-inline-start 0.15s ease-in-out;\n  }\n  .switch input {\n    position: absolute;\n    inset: 0;\n    appearance: none;\n    background-color: transparent;\n    outline: 0;\n  }\n  .switch:focus-within {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .switch:has(input:disabled:not(:checked)) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled:not(:checked))::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled:not(:checked)) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch:has(input:checked) {\n    background-color: var(--theme-bg, var(--switch-checked-bg));\n    border-color: var(--theme-bg, var(--switch-checked-border-color));\n  }\n  .switch:has(input:checked)::before {\n    inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n  }\n  .switch:has(input:checked:disabled) {\n    opacity: 0.65;\n  }\n  .switch:has(input:checked:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n  }\n  .switch-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .form-range {\n    --range-track-width: 100%;\n    --range-track-height: 0.5rem;\n    --range-track-cursor: pointer;\n    --range-track-bg: var(--bg-3);\n    --range-track-border-radius: 1rem;\n    --range-track-fill-bg: var(--primary-base);\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3));\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color);\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%);\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body));\n    --range-thumb-disabled-bg: var(--fg-3);\n    --range-thumb-transition-property: background-color, border-color, box-shadow;\n    --range-thumb-transition-timing: 0.15s ease-in-out;\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing);\n    --range-tick-width: var(--border-width);\n    --range-tick-height: 0.5rem;\n    --range-tick-bg: var(--border-color);\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n  .form-range-input {\n    display: block;\n    width: 100%;\n    height: calc(var(--range-thumb-height) + var(--focus-ring-width) * 2);\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n  }\n  .form-range-input:hover::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:hover::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:focus-visible {\n    outline: 0;\n  }\n  .form-range-input:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range-input::-webkit-slider-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    background-image: var(--gradient);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range-input::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range-input::-moz-range-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    background-image: var(--gradient);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range-input::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-runnable-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input::-moz-range-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input:disabled {\n    pointer-events: none;\n  }\n  .form-range-input:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-webkit-slider-runnable-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc(var(--range-thumb-width) * 0.5 + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n  }\n  .form-range-bubble .tooltip-arrow {\n    position: absolute;\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n    left: 50%;\n    transform: translateX(-50%);\n  }\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * 0.25);\n  }\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    width: 0;\n  }\n  .form-range-tick::before {\n    width: var(--range-tick-width);\n    height: var(--range-tick-height);\n    content: \"\";\n    background-color: var(--range-tick-bg);\n  }\n  .form-range-tick:first-child {\n    align-items: flex-start;\n  }\n  .form-range-tick:last-child {\n    align-items: flex-end;\n  }\n  .form-range-tick-label {\n    margin-top: 0.125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.75rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25);\n    --form-floating-padding-y: 1rem;\n    --form-floating-input-padding-t: 1.625rem;\n    --form-floating-input-padding-b: 0.625rem;\n    --form-floating-label-height: 1.5em;\n    --form-floating-label-bg: var(--btn-input-bg);\n    --form-floating-label-disabled-bg: var(--bg-2);\n    --form-floating-label-opacity: 0.65;\n    --form-floating-label-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n    --form-floating-label-disabled-color: var(--fg-3);\n    --form-floating-transition-property: opacity, transform;\n    --form-floating-transition-timing: 0.1s ease-in-out;\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing);\n    position: relative;\n  }\n  .form-floating > label {\n    position: absolute;\n    inset-block-start: 0;\n    inset-inline-start: 0;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    height: 100%;\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    overflow: hidden;\n    color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n    text-align: start;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    pointer-events: none;\n    border: var(--border-width) solid transparent;\n    transform-origin: 0 0;\n    transition: var(--form-floating-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-floating > label {\n      transition: none;\n    }\n  }\n  .form-floating > label:has(~ textarea) {\n    align-items: flex-start;\n  }\n  .form-floating > .form-control,\n  .form-floating > .form-control-plaintext {\n    height: var(--form-floating-height);\n    min-height: var(--form-floating-height);\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    line-height: var(--form-floating-line-height);\n  }\n  .form-floating > .form-control::placeholder,\n  .form-floating > .form-control-plaintext::placeholder {\n    color: transparent;\n  }\n  .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n  .form-floating > .form-control-plaintext:focus,\n  .form-floating > .form-control-plaintext:not(:placeholder-shown) {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:-webkit-autofill,\n  .form-floating > .form-control-plaintext:-webkit-autofill {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > label:has(~ .form-control:focus),\n  .form-floating > label:has(~ .form-control:not(:placeholder-shown)),\n  .form-floating > label:has(~ .form-control-plaintext) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ .form-control:-webkit-autofill) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ textarea:focus)::after,\n  .form-floating > label:has(~ textarea:not(:placeholder-shown))::after {\n    position: absolute;\n    inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * 0.5);\n    z-index: -1;\n    height: var(--form-floating-label-height);\n    content: \"\";\n    background-color: var(--form-floating-label-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > label:has(~ textarea:disabled)::after {\n    background-color: var(--form-floating-label-disabled-bg);\n  }\n  .form-floating > label:has(~ .form-control-plaintext) {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > label:has(~ :disabled),\n  .form-floating > label:has(~ .form-control:disabled) {\n    color: var(--form-floating-label-disabled-color);\n  }\n}\n@layer components {\n  .input-group {\n    --input-group-addon-padding-y: var(--btn-input-padding-y);\n    --input-group-addon-padding-x: var(--btn-input-padding-x);\n    --input-group-addon-font-size: var(--btn-input-font-size);\n    --input-group-addon-line-height: var(--btn-input-line-height);\n    --input-group-addon-color: var(--fg-body);\n    --input-group-addon-bg: var(--bg-2);\n    --input-group-addon-border-color: var(--border-color);\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    width: 100%;\n  }\n  .input-group > .form-control,\n  .input-group > .form-floating {\n    position: relative;\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0;\n  }\n  .input-group > .form-control:focus,\n  .input-group > .form-floating:focus-within {\n    z-index: 5;\n  }\n  .input-group > .input-group-btn {\n    position: relative;\n    z-index: 2;\n  }\n  .input-group > .input-group-btn:focus {\n    z-index: 5;\n  }\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size);\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .input-group-sm > .form-control,\n  .input-group-sm > .input-group-text,\n  .input-group-sm > .btn {\n    min-height: var(--btn-input-sm-min-height);\n    padding: var(--btn-input-sm-padding-y) var(--btn-input-sm-padding-x);\n    font-size: var(--btn-input-sm-font-size);\n    border-radius: var(--btn-input-sm-border-radius);\n  }\n  .input-group-lg > .form-control,\n  .input-group-lg > .input-group-text,\n  .input-group-lg > .btn {\n    min-height: var(--btn-input-lg-min-height);\n    padding: var(--btn-input-lg-padding-y) var(--btn-input-lg-padding-x);\n    font-size: var(--btn-input-lg-font-size);\n    border-radius: var(--btn-input-lg-border-radius);\n  }\n  .input-group > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n  .input-group > .menu-toggle-split:nth-last-child(n+3),\n  .input-group > .form-floating:not(:last-child) > .form-control,\n  .input-group > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child, .menu, .input-group-ignore) {\n    margin-inline-start: calc(-1 * var(--border-width));\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .input-group > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n    border-start-start-radius: var(--btn-input-border-radius);\n    border-end-start-radius: var(--btn-input-border-radius);\n  }\n  .input-group > .form-floating:not(:first-child) > .form-control,\n  .input-group > .form-floating:not(:first-child) > .form-select {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n}\n@layer forms {\n  .strength {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-segment {\n      transition: none;\n    }\n  }\n  .strength-segment.active {\n    background-color: var(--strength-color);\n  }\n  .strength[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n  }\n  .strength[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n  }\n  .strength[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n  }\n  .strength[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n  }\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    transition: color 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-text {\n      transition: none;\n    }\n  }\n  .strength-text:empty {\n    display: none;\n  }\n  .strength-bar {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    --strength-color: transparent;\n    --strength-width: 0%;\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n  }\n  .strength-bar::after {\n    display: block;\n    width: var(--strength-width);\n    height: 100%;\n    content: \"\";\n    background-color: var(--strength-color);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-bar::after {\n      transition: none;\n    }\n  }\n  .strength-bar[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n    --strength-width: 25%;\n  }\n  .strength-bar[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n    --strength-width: 50%;\n  }\n  .strength-bar[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n    --strength-width: 75%;\n  }\n  .strength-bar[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n    --strength-width: 100%;\n  }\n}\n@layer components {\n  .otp {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-font-size);\n    --otp-gap: 0.5rem;\n    --otp-slot-fg: var(--btn-input-fg);\n    --otp-slot-bg: var(--btn-input-bg);\n    --otp-slot-border-width: var(--border-width);\n    --otp-slot-border-color: var(--border-color);\n    --otp-slot-border-radius: var(--radius-5);\n    position: relative;\n    display: flex;\n  }\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n  }\n  .otp-rendered .otp-input::selection {\n    color: transparent;\n    background-color: transparent;\n  }\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none;\n  }\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    border-radius: var(--otp-slot-border-radius);\n    box-shadow: var(--box-shadow-inset);\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .otp-slot {\n      transition: none;\n    }\n  }\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .otp-slot-active:not(.otp-slot-filled)::after {\n    width: 1px;\n    height: 50%;\n    content: \"\";\n    background-color: var(--otp-slot-fg);\n    animation: otp-caret-blink 1s step-end infinite;\n  }\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0;\n  }\n  .otp-connected .otp-slot:not(:first-child) {\n    margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n  }\n  .otp-connected .otp-slot:first-child {\n    border-start-start-radius: var(--otp-slot-border-radius);\n    border-end-start-radius: var(--otp-slot-border-radius);\n  }\n  .otp-connected .otp-slot:last-child {\n    border-start-end-radius: var(--otp-slot-border-radius);\n    border-end-end-radius: var(--otp-slot-border-radius);\n  }\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n  .otp-sm {\n    --otp-size: var(--btn-input-sm-min-height);\n    --otp-font-size: var(--btn-input-sm-font-size);\n  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n  }\n}\n@keyframes otp-caret-blink {\n  0%, 100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\n  }\n}\n@layer forms {\n  .form-adorn {\n    --form-adorn-gap: 0.375rem;\n    --form-adorn-icon-size: 1rem;\n    --form-adorn-icon-color: var(--fg-2);\n    gap: var(--form-adorn-gap);\n    align-items: center;\n  }\n  .form-adorn:focus-visible {\n    outline: 0;\n  }\n  .form-adorn:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-adorn > .form-ghost {\n    flex: 1;\n    min-width: 0;\n  }\n  .form-adorn.form-adorn-end > .form-ghost {\n    order: -1;\n  }\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n  }\n  .form-adorn-icon > svg {\n    width: var(--form-adorn-icon-size);\n    height: var(--form-adorn-icon-size);\n  }\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n@layer forms {\n  .chip-input {\n    --chip-input-padding-y: 0.75rem;\n    --chip-input-padding-x: 0.75rem;\n    --chip-input-gap: 0.375rem;\n    --chip-input-ghost-min-width: 5rem;\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n  }\n  .chip-input:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .chip-input > .form-ghost {\n    flex: 1 1 0;\n    min-width: var(--chip-input-ghost-min-width);\n    min-height: 1.75rem;\n  }\n  .chip-input.disabled, .chip-input:has(.form-ghost:disabled) {\n    cursor: not-allowed;\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled:focus-within, .chip-input:has(.form-ghost:disabled):focus-within {\n    border-color: var(--control-border-color);\n    outline: 0;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    pointer-events: none;\n    opacity: var(--control-disabled-opacity);\n  }\n}\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n  }\n  .combobox-toggle.show {\n    background-color: var(--bg-1);\n  }\n  .combobox-toggle:disabled, .combobox-toggle.disabled {\n    cursor: not-allowed;\n    opacity: 0.65;\n  }\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: 0.5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .combobox-caret {\n    flex-shrink: 0;\n    transition: transform 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .combobox-caret {\n      transition: none;\n    }\n  }\n  .show > .combobox-caret {\n    transform: rotate(180deg);\n  }\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, 0.25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n  .combobox-search-input {\n    width: 100%;\n  }\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-field > label,\n  .form-field > .form-label {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n  .form-field:has(> .check, > .radio, > .switch) {\n    grid-template-columns: auto 1fr;\n    column-gap: 0.5rem;\n    align-items: start;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .check,\n  .form-field:has(> .check, > .radio, > .switch) > .radio,\n  .form-field:has(> .check, > .radio, > .switch) > .switch {\n    grid-column: 1;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > :not(.check, .radio, .switch) {\n    grid-column: 2;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .form-label {\n    grid-column: 1/-1;\n  }\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * 0.75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    border-radius: var(--radius-7);\n  }\n  .form-field-card:hover {\n    background-color: var(--bg-1);\n  }\n  .form-field-card:has(:checked) {\n    background-color: var(--bg-1);\n    border-color: var(--border-color);\n  }\n  .form-field-card label::before {\n    position: absolute;\n    inset: 0;\n    content: \"\";\n  }\n  .form-group {\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-group > label,\n  .form-group > .form-label,\n  .form-group > legend {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--success-fg);\n  }\n  .tooltip.valid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    color: var(--success-contrast);\n    text-align: center;\n    background-color: var(--success-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] :user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] :user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-control.is-valid {\n    --control-border-color: var(--success-border);\n  }\n  .form-control.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid {\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  .check.is-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  .check.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .check:user-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .check:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.check.is-valid) .valid-feedback,\n  .form-field:has(.check.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .radio.is-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  .radio.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .radio:user-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .radio:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.radio.is-valid) .valid-feedback,\n  .form-field:has(.radio.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  .switch:has(input.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.switch input.is-valid) .valid-feedback,\n  .form-field:has(.switch input.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-valid) ~ .valid-feedback,\n  .form-range:has(.form-range-input.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-valid) .valid-feedback,\n  .form-field:has(.input-group .form-control.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  [data-bs-validate~=valid] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-valid {\n    z-index: 3;\n  }\n  .otp.is-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  .otp.is-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--danger-fg);\n  }\n  .tooltip.invalid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    color: var(--danger-contrast);\n    text-align: center;\n    background-color: var(--danger-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] :user-invalid ~ .invalid-feedback,\n  [data-bs-validate] :user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-control.is-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  .form-control.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  .check.is-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  .check.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .check:user-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .check:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.check.is-invalid) .invalid-feedback,\n  .form-field:has(.check.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .radio.is-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  .radio.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .radio:user-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .radio:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.radio.is-invalid) .invalid-feedback,\n  .form-field:has(.radio.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  .switch:has(input.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.switch input.is-invalid) .invalid-feedback,\n  .form-field:has(.switch input.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-feedback,\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n  [data-bs-validate] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-invalid {\n    z-index: 4;\n  }\n  .otp.is-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  .otp.is-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n@layer components {\n  .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n    --btn-min-height: var(--btn-input-min-height);\n    --btn-padding-x: var(--btn-input-padding-x);\n    --btn-padding-y: var(--btn-input-padding-y);\n    --btn-font-size: var(--btn-input-font-size);\n    --btn-font-weight: var(--btn-input-font-weight);\n    --btn-line-height: var(--btn-input-line-height);\n    --btn-color: var(--fg-body);\n    --btn-white-space: nowrap;\n    --btn-border-width: var(--border-width);\n    --btn-border-color: transparent;\n    --btn-border-radius: var(--radius-5);\n    --btn-hover-border-color: transparent;\n    --btn-disabled-opacity: 0.65;\n    --btn-transition-timing: 0.15s ease-in-out;\n    --btn-transition-property: color, background-color, border-color, box-shadow;\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing);\n    display: inline-flex;\n    gap: var(--btn-gap, 0.25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    cursor: pointer;\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    border-radius: var(--btn-border-radius);\n    transition: var(--btn-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n      transition: none;\n    }\n  }\n  .btn:hover, .btn-link:hover, .btn-icon:hover, .btn-solid:hover, .btn-outline:hover, .btn-subtle:hover, .btn-text:hover {\n    color: var(--btn-hover-color);\n    background-color: var(--btn-hover-bg, var(--bg-3));\n    border-color: var(--btn-hover-border-color);\n  }\n  .btn:focus-visible, .btn-link:focus-visible, .btn-icon:focus-visible, .btn-solid:focus-visible, .btn-outline:focus-visible, .btn-subtle:focus-visible, .btn-text:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn.active, .btn.show, .btn-link.active, .btn-link.show, .btn-icon.active, .btn-icon.show, .btn-solid.active, .btn-solid.show, .btn-outline.active, .btn-outline.show, .btn-subtle.active, .btn-subtle.show, .btn-text.active, .btn-text.show {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n  }\n  .btn.active:focus-visible, .btn.show:focus-visible, .btn-link.active:focus-visible, .btn-link.show:focus-visible, .btn-icon.active:focus-visible, .btn-icon.show:focus-visible, .btn-solid.active:focus-visible, .btn-solid.show:focus-visible, .btn-outline.active:focus-visible, .btn-outline.show:focus-visible, .btn-subtle.active:focus-visible, .btn-subtle.show:focus-visible, .btn-text.active:focus-visible, .btn-text.show:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .btn:disabled, .btn.disabled, fieldset:disabled .btn, .btn-link:disabled, .btn-link.disabled, fieldset:disabled .btn-link, .btn-icon:disabled, .btn-icon.disabled, fieldset:disabled .btn-icon, .btn-solid:disabled, .btn-solid.disabled, fieldset:disabled .btn-solid, .btn-outline:disabled, .btn-outline.disabled, fieldset:disabled .btn-outline, .btn-subtle:disabled, .btn-subtle.disabled, fieldset:disabled .btn-subtle, .btn-text:disabled, .btn-text.disabled, fieldset:disabled .btn-text {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    background-image: none;\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n  }\n  .btn-solid {\n    --btn-bg: var(--theme-bg);\n    --btn-color: var(--theme-contrast);\n    --btn-border-color: var(--theme-bg);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-solid:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-solid:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-solid:active, .btn-solid.active, .btn-solid.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-solid:disabled, .btn-solid.disabled, .btn-solid.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-outline {\n    --btn-bg: transparent;\n    --btn-color: var(--theme-fg);\n    --btn-border-color: var(--theme-border);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-outline:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-outline:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-outline:active, .btn-outline.active, .btn-outline.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-outline:disabled, .btn-outline.disabled, .btn-outline.btn-check:has(input:disabled) {\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-fg);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-subtle:hover {\n    --btn-hover-bg: color-mix(in oklch, var(--theme-bg-muted) 50%, var(--theme-bg-subtle));\n    --btn-hover-color: oklch(from var(--theme-fg-emphasis) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-subtle:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-subtle:active, .btn-subtle.active, .btn-subtle.btn-check:has(input:checked) {\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-subtle:disabled, .btn-subtle.disabled, .btn-subtle.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-fg);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-fg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-text:active, .btn-text.active, .btn-text.btn-check:has(input:checked) {\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:disabled, .btn-text.disabled, .btn-text.btn-check:has(input:disabled) {\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-link {\n    --btn-font-weight: var(--font-weight-normal);\n    --btn-color: var(--link-color);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-hover-color: var(--link-hover-color);\n    --btn-hover-bg: transparent;\n    --btn-hover-border-color: transparent;\n    --btn-active-color: var(--link-hover-color);\n    --btn-active-bg: transparent;\n    --btn-active-border-color: transparent;\n    --btn-disabled-color: var(--fg-3);\n    --btn-disabled-border-color: transparent;\n    color: var(--theme-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n    background-image: none;\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-fg, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-fg-emphasis, var(--btn-hover-color));\n  }\n  .btn-xs,\n  .btn-group-xs > [class*=btn-] {\n    --btn-min-height: var(--btn-input-xs-min-height);\n    --btn-padding-y: var(--btn-input-xs-padding-y);\n    --btn-padding-x: var(--btn-input-xs-padding-x);\n    --btn-font-size: var(--btn-input-xs-font-size);\n    --btn-line-height: var(--btn-input-xs-line-height);\n    --btn-border-radius: var(--btn-input-xs-border-radius);\n  }\n  .btn-sm,\n  .btn-group-sm > [class*=btn-] {\n    --btn-min-height: var(--btn-input-sm-min-height);\n    --btn-padding-y: var(--btn-input-sm-padding-y);\n    --btn-padding-x: var(--btn-input-sm-padding-x);\n    --btn-font-size: var(--btn-input-sm-font-size);\n    --btn-line-height: var(--btn-input-sm-line-height);\n    --btn-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .btn-lg,\n  .btn-group-lg > [class*=btn-] {\n    --btn-min-height: var(--btn-input-lg-min-height);\n    --btn-padding-y: var(--btn-input-lg-padding-y);\n    --btn-padding-x: var(--btn-input-lg-padding-x);\n    --btn-font-size: var(--btn-input-lg-font-size);\n    --btn-line-height: var(--btn-input-lg-line-height);\n    --btn-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n  .btn-check > input {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none;\n  }\n  .btn-check:has(input:checked) {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    background-image: none;\n    border-color: var(--btn-active-border-color);\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-check:has(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn-check:has(input:disabled) {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    background-image: none;\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n    box-shadow: none;\n  }\n  .btn-styled {\n    --btn-gradient-start: rgba(255, 255, 255, 0.125);\n    --btn-gradient-end: rgba(0, 0, 0, 0.075);\n    --btn-border-mix-color: #000;\n    --btn-border-mix-amount: 10%;\n    --btn-border-hover-mix-amount: 12.5%;\n    --btn-border-active-mix-amount: 20%;\n    --btn-shadow: 0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%);\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n  }\n  .btn-styled:hover {\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n  }\n  .btn-styled:active, .btn-styled.active {\n    background-image: none;\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-styled:disabled, .btn-styled.disabled {\n    background-image: none;\n    box-shadow: none;\n  }\n}\n@layer components {\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle;\n  }\n  .btn-group > [class*=btn-],\n  .btn-group-vertical > [class*=btn-] {\n    position: relative;\n    flex: 1 1 auto;\n  }\n  .btn-group > [class*=btn-]:hover,\n  .btn-group-vertical > [class*=btn-]:hover {\n    z-index: 1;\n  }\n  .btn-group > .btn-check:has(input:checked),\n  .btn-group > [class*=btn-]:active,\n  .btn-group > [class*=btn-].active,\n  .btn-group-vertical > .btn-check:has(input:checked),\n  .btn-group-vertical > [class*=btn-]:active,\n  .btn-group-vertical > [class*=btn-].active {\n    z-index: 2;\n  }\n  .btn-group > .btn-check:has(input:focus),\n  .btn-group > [class*=btn-]:focus,\n  .btn-group-vertical > .btn-check:has(input:focus),\n  .btn-group-vertical > [class*=btn-]:focus {\n    z-index: 3;\n  }\n  .btn-group-divider > [class*=btn-] + [class*=btn-]::before {\n    position: absolute;\n    z-index: 3;\n    content: \"\";\n    background-color: var(--btn-color);\n    opacity: 0.25;\n  }\n  .btn-group:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: 25%;\n    bottom: 25%;\n    left: calc(var(--btn-border-width) * -1);\n    width: var(--btn-border-width);\n  }\n  .btn-group-vertical:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: calc(var(--btn-border-width) * -1);\n    right: var(--btn-padding-x);\n    left: var(--btn-padding-x);\n    height: var(--btn-border-width);\n  }\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    justify-content: flex-start;\n  }\n  .btn-toolbar .input-group {\n    width: auto;\n  }\n  .btn-group {\n    border-radius: var(--btn-border-radius);\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) {\n    margin-inline-start: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group > [class*=btn-]:not(:last-child, :has(+ .menu)),\n  .btn-group > .btn-group:not(:last-child) > [class*=btn-] {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n  }\n  .btn-group-vertical > [class*=btn-],\n  .btn-group-vertical > .btn-group {\n    width: 100%;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) {\n    margin-top: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group-vertical > [class*=btn-]:not(:last-child, :has(+ .menu)),\n  .btn-group-vertical > .btn-group:not(:last-child) > [class*=btn-] {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n}\n@layer components {\n  .btn-close {\n    --btn-close-size: 1.5rem;\n    --btn-close-color: inherit;\n    --btn-close-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e\");\n    --btn-close-opacity: 0.5;\n    --btn-close-hover-opacity: 0.75;\n    --btn-close-focus-opacity: 0.85;\n    --btn-close-disabled-opacity: 0.25;\n    box-sizing: content-box;\n    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0;\n    border-radius: var(--radius-5);\n    opacity: var(--btn-close-opacity);\n    mask-image: var(--btn-close-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .btn-close:hover {\n    color: var(--btn-close-color);\n    text-decoration: none;\n    opacity: var(--btn-close-hover-opacity);\n  }\n  .btn-close:focus-visible {\n    opacity: var(--btn-close-focus-opacity);\n    outline: var(--focus-ring);\n  }\n  .btn-close:disabled, .btn-close.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: var(--btn-close-disabled-opacity);\n  }\n}\n@layer components {\n  .accordion {\n    --accordion-padding-x: 1.25rem;\n    --accordion-padding-y: 1rem;\n    --accordion-color: var(--fg-body);\n    --accordion-bg: var(--bg-body);\n    --accordion-transition-property: color, background-color, border-radius;\n    --accordion-transition-timing: .15s ease-in-out;\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing);\n    --accordion-border-color: var(--border-color);\n    --accordion-border-width: var(--border-width);\n    --accordion-border-radius: var(--accordion-radius, var(--radius-7));\n    --accordion-btn-color: var(--fg-2);\n    --accordion-btn-bg: var(--bg-body);\n    --accordion-btn-icon-width: 1rem;\n    --accordion-btn-icon-transform: rotate(-180deg);\n    --accordion-btn-icon-transition: transform 0.2s ease-in-out;\n    --accordion-active-color: var(--fg);\n    --accordion-active-bg: var(--bg-2);\n  }\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none;\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    transition: var(--accordion-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header {\n      transition: none;\n    }\n  }\n  .accordion-header::-webkit-details-marker {\n    display: none;\n  }\n  .accordion-header .accordion-icon {\n    flex-shrink: 0;\n    width: var(--accordion-btn-icon-width);\n    height: var(--accordion-btn-icon-width);\n    margin-inline-start: auto;\n    color: currentcolor;\n    transition: var(--accordion-btn-icon-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header .accordion-icon {\n      transition: none;\n    }\n  }\n  .accordion-header:hover {\n    z-index: 2;\n  }\n  .accordion-header:focus-visible {\n    position: relative;\n    z-index: 3;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    outline-offset: -1px;\n  }\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .accordion-item {\n      interpolate-size: allow-keywords;\n    }\n  }\n  .accordion-item::details-content {\n    block-size: 0;\n    overflow-y: clip;\n    transition: content-visibility 0.2s allow-discrete, block-size 0.2s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-item::details-content {\n      transition: none;\n    }\n  }\n  .accordion-item:first-of-type {\n    border-start-start-radius: var(--accordion-border-radius);\n    border-start-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:first-of-type > .accordion-header {\n    border-start-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-start-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:not(:first-of-type) {\n    border-block-start: 0;\n  }\n  .accordion-item:last-of-type {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:last-of-type > .accordion-header {\n    border-end-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-end-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:last-of-type > .accordion-body {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item[open] {\n    border-color: var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open]::details-content {\n    block-size: auto;\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-fg, var(--accordion-active-color));\n    background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n    box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header .accordion-icon {\n    transform: var(--accordion-btn-icon-transform);\n  }\n  .accordion-item[open]:last-of-type > .accordion-header {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n  .accordion-flush > .accordion-item {\n    border-inline: 0;\n    border-radius: 0;\n  }\n  .accordion-flush > .accordion-item:first-child {\n    border-block-start: 0;\n  }\n  .accordion-flush > .accordion-item:last-child {\n    border-block-end: 0;\n  }\n  .accordion-flush > .accordion-item > .accordion-header,\n  .accordion-flush > .accordion-item > .accordion-body {\n    border-radius: 0;\n  }\n}\n@layer components {\n  .alert {\n    --alert-gap: var(--spacer-3);\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: var(--spacer);\n    --alert-padding-y: var(--spacer);\n    --alert-color: var(--theme-fg, inherit);\n    --alert-border-color: var(--theme-border, var(--border-color));\n    --alert-border: var(--border-width) solid var(--alert-border-color);\n    --alert-border-radius: var(--radius-5);\n    --alert-link-color: inherit;\n    --hr-border-color: var(--theme-border, var(--border-color));\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    border-radius: var(--alert-border-radius);\n  }\n  .alert > p {\n    margin-bottom: 0;\n  }\n  .alert-heading {\n    color: inherit;\n  }\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n@layer components {\n  .avatar {\n    --avatar-size: 2.5rem;\n    --avatar-border-radius: 50%;\n    --avatar-border-width: 2px;\n    --avatar-border-color: var(--bg-body);\n    --avatar-bg: var(--bg-2);\n    --avatar-color: var(--fg-body);\n    --avatar-status-size: 0.75rem;\n    --avatar-status-border-width: 2px;\n    --avatar-status-border-color: var(--bg-body);\n    --avatar-stack-spacing: -0.3;\n    --avatar-stack-transition: transform .2s ease-in-out;\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * 0.4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    border-radius: var(--avatar-border-radius);\n  }\n  .avatar > .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    border-radius: var(--avatar-border-radius, 50%);\n  }\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    border-radius: 50%;\n  }\n  .avatar-status.status-online {\n    background-color: var(--green-500);\n  }\n  .avatar-status.status-offline {\n    background-color: var(--gray-400);\n    border-radius: 20%;\n  }\n  .avatar-status.status-busy {\n    background-color: var(--red-500);\n    border-radius: 20%;\n  }\n  .avatar-status.status-away {\n    background-color: var(--yellow-500);\n  }\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n  }\n  .avatar-stack .avatar {\n    margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n    border: var(--avatar-border-width) solid var(--avatar-border-color);\n    mask-image: none;\n    transition: var(--avatar-stack-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .avatar-stack .avatar {\n      transition: none;\n    }\n  }\n  .avatar-stack .avatar:last-child {\n    margin-left: 0;\n  }\n  .avatar-stack .avatar:hover {\n    z-index: 1;\n    transform: translateY(-2px);\n  }\n  .avatar-xs,\n  .avatar-stack-xs > .avatar {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm > .avatar {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg > .avatar {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n    --avatar-border-width: 3px;\n  }\n  .avatar-xl,\n  .avatar-stack-xl > .avatar {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n    --avatar-border-width: 4px;\n  }\n}\n@layer components {\n  .badge {\n    --badge-padding-x: 0.625em;\n    --badge-padding-y: 0.25em;\n    --badge-font-size: clamp(12px, 0.75em, 0.75em);\n    --badge-font-weight: var(--font-weight-semibold);\n    --badge-color: inherit;\n    --badge-bg: var(--bg-2);\n    --badge-border-width: var(--border-width);\n    --badge-border-color: transparent;\n    --badge-border-radius: var(--radius-7);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    border-radius: var(--badge-border-radius);\n  }\n  .badge:empty {\n    display: none;\n  }\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n  .badge-subtle {\n    --badge-color: var(--theme-fg);\n    --badge-bg: var(--theme-bg-subtle);\n    --badge-border-color: transparent;\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n  .badge-outline {\n    --badge-color: var(--theme-fg);\n    --badge-bg: transparent;\n    --badge-border-color: var(--theme-border);\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n}\n@layer components {\n  .breadcrumb {\n    --breadcrumb-margin-bottom: 1rem;\n    --breadcrumb-font-size: inherit;\n    --breadcrumb-bg: transparent;\n    --breadcrumb-border-radius: var(--radius-5);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-divider-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e\");\n    --breadcrumb-divider-width: 0.375rem;\n    --breadcrumb-divider-height: 0.75rem;\n    --breadcrumb-link-padding-x: 0.75rem;\n    --breadcrumb-link-padding-y: 0.25rem;\n    --breadcrumb-link-color: var(--fg-3);\n    --breadcrumb-link-hover-color: var(--fg-2);\n    --breadcrumb-link-hover-bg: var(--bg-1);\n    --breadcrumb-link-active-color: var(--fg-1);\n    --breadcrumb-link-border-radius: var(--radius-7);\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style-type: \"\";\n    background-color: var(--breadcrumb-bg);\n    border-radius: var(--breadcrumb-border-radius);\n  }\n  .breadcrumb-item {\n    display: flex;\n  }\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n  .breadcrumb-divider:empty::before {\n    display: block;\n    width: var(--breadcrumb-divider-width);\n    height: var(--breadcrumb-divider-height);\n    content: \"\";\n    background-color: currentcolor;\n    mask-image: var(--breadcrumb-divider-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    border-radius: var(--breadcrumb-link-border-radius);\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .breadcrumb-link {\n      transition: none;\n    }\n  }\n  .breadcrumb-link:hover {\n    z-index: 2;\n    color: var(--breadcrumb-link-hover-color);\n    background-color: var(--breadcrumb-link-hover-bg);\n  }\n  .breadcrumb-link.active {\n    color: var(--breadcrumb-link-active-color);\n  }\n}\n@layer components {\n  .chip {\n    --chip-height: 1.75rem;\n    --chip-padding-x: 0.625rem;\n    --chip-gap: 0.3125rem;\n    --chip-border-radius: var(--radius-pill);\n    --chip-img-size: 1.25rem;\n    --chip-icon-size: 1rem;\n    --chip-dismiss-size: 1rem;\n    --chip-dismiss-opacity: 0.65;\n    --chip-dismiss-hover-opacity: 1;\n    --chip-color: var(--theme-fg, var(--fg-body));\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2));\n    --chip-border-color: transparent;\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast));\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg));\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg));\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    border-radius: var(--chip-border-radius);\n  }\n  .chip:hover {\n    --chip-bg: var(--theme-bg-muted, var(--bg-3));\n  }\n  .chip:focus-visible {\n    outline: 0;\n  }\n  .chip.active {\n    --chip-color: var(--chip-selected-color);\n    --chip-bg: var(--chip-selected-bg);\n    --chip-border-color: var(--chip-selected-border-color);\n  }\n  .chip.active:hover {\n    --chip-bg: var(--chip-selected-bg);\n    opacity: 0.9;\n  }\n  .chip.disabled, .chip:disabled {\n    pointer-events: none;\n    opacity: 0.65;\n  }\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    border-radius: 50%;\n  }\n  .chip-img:first-child {\n    margin-inline-start: -0.375rem;\n  }\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -0.25);\n  }\n  .chip-icon > svg {\n    display: block;\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n  }\n  .chip-icon > img {\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n    object-fit: cover;\n    border-radius: 50%;\n  }\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    margin-inline-end: calc(var(--chip-padding-x) * -0.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n  }\n  .chip-dismiss:hover {\n    opacity: var(--chip-dismiss-hover-opacity);\n  }\n  .chip-dismiss:focus-visible {\n    outline: 0;\n    opacity: 1;\n    outline: var(--focus-ring);\n  }\n  .chip-dismiss > svg {\n    display: block;\n    width: var(--chip-dismiss-size);\n    height: var(--chip-dismiss-size);\n  }\n}\n@layer components {\n  .card {\n    --card-spacer-y: var(--spacer-5);\n    --card-spacer-x: var(--spacer-5);\n    --card-subtitle-color: inherit;\n    --card-border-width: var(--border-width);\n    --card-border-color: var(--border-color-translucent);\n    --card-border-radius: var(--radius-7);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --card-cap-padding-y: var(--spacer-3);\n    --card-cap-padding-x: var(--spacer);\n    --card-cap-bg: var(--bg-1);\n    --card-cap-color: inherit;\n    --card-height: auto;\n    --card-color: inherit;\n    --card-bg: var(--bg-body);\n    --card-img-overlay-padding: var(--card-spacer-y);\n    --card-group-margin: 0.75rem;\n    --card-body-gap: calc(var(--card-spacer-y) * 0.5);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    border-radius: var(--card-border-radius);\n    box-shadow: var(--card-box-shadow);\n  }\n  .card > hr {\n    margin-inline: 0;\n  }\n  .card-body {\n    display: flex;\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body > * {\n    margin-block: 0;\n  }\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body:first-child,\n  .card-list:first-child {\n    border-start-start-radius: var(--card-border-radius);\n    border-start-end-radius: var(--card-border-radius);\n    border-top-width: var(--card-border-width);\n  }\n  .card-body:last-child,\n  .card-list:last-child {\n    border-end-start-radius: var(--card-border-radius);\n    border-end-end-radius: var(--card-border-radius);\n    border-bottom-width: var(--card-border-width);\n  }\n  .card-body:not(:first-child, :last-child),\n  .card-list:not(:first-child, :last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-body:has(+ .card-footer),\n  .card-list:has(+ .card-footer) {\n    border-block-end-width: 0;\n  }\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -0.5);\n  }\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0;\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-header:first-child {\n    border-radius: var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0;\n  }\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-footer:last-child {\n    border-radius: 0 0 var(--card-inner-border-radius) var(--card-inner-border-radius);\n  }\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .card-translucent .card-header,\n  .card-translucent .card-footer {\n    background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n  }\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-header {\n    color: var(--theme-fg-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-footer {\n    color: var(--theme-fg-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-body,\n  .card-subtle .card-list {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .nav.card-header-tabs {\n    margin-inline: calc(-0.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y) - var(--nav-tabs-border-width));\n    border-block-end: 0;\n  }\n  .nav.card-header-tabs .nav-link.active {\n    background-color: var(--card-bg);\n    border-block-end-color: var(--card-bg);\n  }\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    border-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%;\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n  .card-img,\n  .card-img-top {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-start-end-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-bottom {\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-row {\n    flex-direction: row;\n  }\n  .card-row .card-body,\n  .card-row .card-list {\n    border-width: var(--card-border-width) 0;\n    border-radius: 0;\n  }\n  .card-row .card-body:first-child,\n  .card-row .card-list:first-child {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-inline-start-width: var(--card-border-width);\n  }\n  .card-row .card-body:last-child,\n  .card-row .card-list:last-child {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-row .card-body:not(:first-child, :last-child),\n  .card-row .card-list:not(:first-child, :last-child) {\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-img-start {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n  }\n  .card-img-end {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-group > .card {\n    margin-bottom: var(--card-group-margin);\n  }\n  @container (width >= 576px) {\n    .card-group {\n      display: flex;\n      flex-flow: row wrap;\n    }\n    .card-group > .card {\n      flex: 1 0 0;\n      margin-bottom: 0;\n    }\n    .card-group > .card + .card {\n      margin-inline-start: calc(-1 * var(--card-border-width));\n    }\n    .card-group > .card:not(:last-child) {\n      border-start-end-radius: 0;\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-top,\n    .card-group > .card:not(:last-child) > .card-header,\n    .card-group > .card:not(:last-child) > .card-body {\n      border-start-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-bottom,\n    .card-group > .card:not(:last-child) > .card-footer,\n    .card-group > .card:not(:last-child) > .card-body {\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:first-child) {\n      border-start-start-radius: 0;\n      border-end-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-top,\n    .card-group > .card:not(:first-child) > .card-header,\n    .card-group > .card:not(:first-child) > .card-body {\n      border-start-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-bottom,\n    .card-group > .card:not(:first-child) > .card-footer,\n    .card-group > .card:not(:first-child) > .card-body {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    --carousel-gap: 0.75rem;\n    --carousel-indicator-bg: var(--fg-3);\n    --carousel-indicator-width: 0.75rem;\n    --carousel-indicator-height: 0.75rem;\n    --carousel-indicator-spacer: 0.25rem;\n    --carousel-indicator-transition: opacity .6s ease, width .3s ease;\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg);\n    --carousel-control-icon-width: 1rem;\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n    --carousel-control-next-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n    --carousel-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\");\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\");\n    --carousel-items: 1;\n    --carousel-items-gap: 0px;\n    --carousel-items-peek: 0px;\n    --carousel-fade-duration: 0.6s;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none;\n  }\n  .carousel-inner::-webkit-scrollbar {\n    display: none;\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n  .carousel-item {\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n  .carousel-center .carousel-item {\n    scroll-snap-align: center;\n  }\n  .carousel-auto .carousel-item {\n    flex-basis: auto;\n  }\n  .carousel-fade .carousel-inner {\n    display: grid;\n    overflow: hidden;\n    scroll-snap-type: none;\n  }\n  .carousel-fade .carousel-item {\n    grid-area: 1/1;\n    width: 100%;\n    visibility: hidden;\n    opacity: 0;\n    transition: opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-fade .carousel-item.active {\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--carousel-fade-duration) ease;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item.active {\n      transition: none;\n    }\n  }\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    mask-repeat: no-repeat;\n    mask-position: 50%;\n    mask-size: 100% 100%;\n  }\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n  [dir=rtl] .carousel-icon-prev,\n  [dir=rtl] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-pause {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-play {\n    display: inline-block;\n  }\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n  }\n  .carousel-indicators [data-bs-target] {\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    cursor: pointer;\n    background-color: transparent;\n    border: 1px solid var(--carousel-indicator-bg);\n    border-radius: var(--carousel-indicator-width);\n    transition: var(--carousel-indicator-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-indicators [data-bs-target] {\n      transition: none;\n    }\n  }\n  .carousel-indicators .active {\n    width: calc(var(--carousel-indicator-width) * 2.5);\n    background-color: var(--carousel-indicator-bg);\n    border-color: var(--carousel-indicator-bg);\n  }\n  @keyframes carousel-indicator-progress {\n    from {\n      inline-size: 0;\n    }\n    to {\n      inline-size: 100%;\n    }\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-playing .carousel-indicators .active {\n      position: relative;\n      overflow: hidden;\n      background-color: transparent;\n    }\n    .carousel-playing .carousel-indicators .active::after {\n      position: absolute;\n      inset-block: 0;\n      inset-inline-start: 0;\n      inline-size: 0;\n      content: \"\";\n      background-color: var(--carousel-indicator-progress-bg);\n      animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n    }\n  }\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n  }\n  .carousel-overlay .carousel-overlay-controls {\n    position: absolute;\n    inset-block-end: 1rem;\n    inset-inline: 1rem;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n}\n@layer components {\n  [data-vc=calendar] {\n    --datepicker-padding: 1rem;\n    --datepicker-bg: var(--bg-body);\n    --datepicker-color: var(--fg-body);\n    --datepicker-border-color: var(--border-color-translucent);\n    --datepicker-border-width: var(--border-width);\n    --datepicker-border-radius: var(--radius-7);\n    --datepicker-box-shadow: var(--box-shadow);\n    --datepicker-font-size: var(--font-size-sm);\n    --datepicker-min-width: 280px;\n    --datepicker-zindex: 1000;\n    --datepicker-header-font-weight: 600;\n    --datepicker-weekday-color: var(--fg-3);\n    --datepicker-day-hover-bg: var(--bg-1);\n    --datepicker-day-selected-bg: var(--primary-bg);\n    --datepicker-day-selected-color: var(--primary-contrast);\n    --datepicker-day-today-bg: var(--bg-2);\n    --datepicker-day-today-color: var(--fg-1);\n    --datepicker-day-disabled-color: var(--fg-4);\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    border-radius: var(--datepicker-border-radius);\n  }\n  [data-vc=calendar][data-bs-theme=light] {\n    color-scheme: light;\n  }\n  [data-vc=calendar][data-bs-theme=dark] {\n    color-scheme: dark;\n  }\n  [data-vc=calendar] button:focus-visible {\n    position: relative;\n    z-index: 1;\n    outline: var(--focus-ring);\n  }\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n  [data-vc=calendar]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n  [data-vc-position=bottom] {\n    margin-block-start: 0.25rem;\n  }\n  [data-vc-position=top] {\n    margin-block-end: -0.25rem;\n  }\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: var(--datepicker-color);\n    mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n    mask-repeat: no-repeat;\n    mask-position: center;\n  }\n  [data-vc-arrow]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-arrow=prev]::before {\n    transform: rotate(90deg);\n  }\n  [data-vc-arrow=next]::before {\n    transform: rotate(-90deg);\n  }\n  [data-vc=controls] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n  [data-vc=grid] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n  [data-vc=column] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n  [data-vc=header] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: 0.75rem;\n  }\n  [data-vc-header=content] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n  [data-vc=month],\n  [data-vc=year] {\n    padding: 0.25rem 0.5rem;\n    margin-inline: -0.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc=month]:disabled,\n  [data-vc=year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc=month]:hover:not(:disabled),\n  [data-vc=year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc=content] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n  [data-vc=months],\n  [data-vc=years] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: 0.25rem;\n    align-items: center;\n  }\n  [data-vc=years] {\n    --vc-columns: 5;\n  }\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: 0.25rem;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-months-month]:disabled,\n  [data-vc-years-year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc-months-month]:hover:not(:disabled),\n  [data-vc-years-year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected], [data-vc-months-month][data-vc-years-year-selected],\n  [data-vc-years-year][data-vc-months-month-selected],\n  [data-vc-years-year][data-vc-years-year-selected] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected]:hover, [data-vc-months-month][data-vc-years-year-selected]:hover,\n  [data-vc-years-year][data-vc-months-month-selected]:hover,\n  [data-vc-years-year][data-vc-years-year-selected]:hover {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc=week] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: 0.5rem;\n  }\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n  [data-vc=dates] {\n    pointer-events: none;\n  }\n  [data-vc-dates=row] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: 0.125rem;\n    padding-bottom: 0.125rem;\n    pointer-events: auto;\n  }\n  [data-vc-date]:not(:has([data-vc-date-btn])), [data-vc-date][data-vc-date-disabled], [data-vc-date][data-vc-date-disabled] [data-vc-date-btn] {\n    pointer-events: none;\n  }\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: 0.75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-date-btn]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n  [data-vc-date-month=next] [data-vc-date-btn],\n  [data-vc-date-month=prev] [data-vc-date-btn] {\n    opacity: 0.5;\n  }\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n  [data-vc-date-hover=first] [data-vc-date-btn] {\n    border-start-start-radius: var(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=middle] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: 0.8;\n  }\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-date-selected=first] [data-vc-date-btn] {\n    border-top-left-radius: var(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n@layer components {\n  :root.dialog-open {\n    overflow: hidden;\n  }\n  .dialog {\n    --dialog-padding: 1rem;\n    --dialog-width: 500px;\n    --dialog-margin: 1.75rem;\n    --dialog-color: var(--fg-body);\n    --dialog-bg: var(--bg-body);\n    --dialog-border-color: var(--border-color-translucent);\n    --dialog-border-width: var(--border-width);\n    --dialog-border-radius: var(--radius-7);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-transition-duration: 0.3s;\n    --dialog-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --dialog-backdrop-bg: light-dark(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.65));\n    --dialog-backdrop-blur: 8px;\n    --dialog-header-padding: 1rem;\n    --dialog-header-border-color: var(--border-color-translucent);\n    --dialog-header-border-width: var(--border-width);\n    --dialog-footer-padding: 1rem;\n    --dialog-footer-border-color: var(--border-color-translucent);\n    --dialog-footer-border-width: var(--border-width);\n    --dialog-footer-gap: 0.5rem;\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog:not(.dialog-instant) {\n    opacity: 0;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s var(--dialog-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).dialog-slide-down {\n    transform: translateY(-3rem);\n  }\n  .dialog:not(.dialog-instant).dialog-slide-up {\n    transform: translateY(3rem);\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)[open]:not(.hiding) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    transform: none;\n  }\n  .dialog:not(.dialog-instant)[open].dialog-static:not(.hiding) {\n    transform: scale(1.02);\n  }\n  .dialog:not(.dialog-instant)::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n    transition: background-color var(--dialog-transition-duration) var(--dialog-transition-timing), backdrop-filter var(--dialog-transition-duration) var(--dialog-transition-timing), display var(--dialog-transition-duration) allow-discrete, overlay var(--dialog-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)::backdrop {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).hiding::backdrop {\n    background-color: transparent;\n    backdrop-filter: blur(0);\n  }\n  .dialog.dialog-instant::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transform: none;\n  }\n  .dialog.dialog-nonmodal {\n    position: fixed;\n    inset-block-start: 50%;\n    inset-inline-start: 50%;\n    z-index: 1055;\n    margin-inline: 0;\n    transform: translate(-50%, -50%);\n  }\n  .dialog.dialog-scrollable[open] {\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n  }\n  .dialog-sm {\n    --dialog-width: 280px;\n  }\n  .dialog-lg {\n    --dialog-width: 800px;\n  }\n  .dialog-xl {\n    --dialog-width: 1140px;\n  }\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n  @media (width < 576px) {\n    .sm-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 768px) {\n    .md-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n  }\n  .dialog-header .btn-close {\n    margin-inline-start: auto;\n  }\n  .dialog-title {\n    margin-bottom: 0;\n    line-height: 1.5;\n    font-size: var(--font-size-md);\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n  }\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n@layer components {\n  .menu {\n    --menu-zindex: 1000;\n    --menu-gap: 0.125rem;\n    --menu-min-width: 10rem;\n    --menu-padding-x: 0.25rem;\n    --menu-padding-y: 0.25rem;\n    --menu-spacer: 0.125rem;\n    --menu-font-size: var(--font-size-sm);\n    --menu-color: var(--fg-body);\n    --menu-bg: var(--bg-body);\n    --menu-box-shadow: var(--box-shadow);\n    --menu-divider-bg: var(--border-color-translucent);\n    --menu-divider-margin-y: 0.125rem;\n    --menu-divider-margin-x: 0.25rem;\n    --menu-item-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-bg: var(--bg-1);\n    --menu-item-active-color: var(--primary-contrast);\n    --menu-item-active-bg: var(--primary-bg);\n    --menu-item-disabled-color: var(--fg-3);\n    --menu-item-gap: 0.5rem;\n    --menu-item-padding-x: 0.75rem;\n    --menu-item-padding-y: 0.25rem;\n    --menu-item-border-radius: var(--radius-5);\n    --menu-icon-size: 1rem;\n    --menu-description-font-size: var(--font-size-xs);\n    --menu-check-color: currentcolor;\n    --menu-header-color: var(--fg-3);\n    --menu-header-padding-x: 0.75rem;\n    --menu-header-padding-y: 0.25rem;\n    --menu-transition-duration: 0.15s;\n    --menu-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style-type: \"\";\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    border-radius: var(--menu-border-radius, var(--radius-7));\n    box-shadow: var(--menu-box-shadow);\n    opacity: 0;\n    transform: scale(0.95);\n    transform-origin: top start;\n  }\n  .menu[data-bs-placement^=top] {\n    transform-origin: bottom start;\n  }\n  .menu[data-bs-placement=bottom-end] {\n    transform-origin: top end;\n  }\n  .menu[data-bs-placement=top-end] {\n    transform-origin: bottom end;\n  }\n  .menu[data-bs-placement^=left] {\n    transform-origin: top end;\n  }\n  .menu {\n    transition: opacity var(--menu-transition-duration) var(--menu-transition-timing), transform var(--menu-transition-duration) var(--menu-transition-timing), display var(--menu-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .menu {\n      transition: none;\n    }\n  }\n  .menu.show {\n    display: flex;\n    opacity: 1;\n    transform: none;\n  }\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(0.95);\n    }\n  }\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-fg, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    border-radius: var(--menu-item-border-radius, 0);\n  }\n  .menu-item:hover, .menu-item:focus {\n    color: var(--theme-fg-emphasis, var(--menu-item-hover-color));\n    background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n  }\n  .menu-item.active, .menu-item:active {\n    color: var(--theme-contrast, var(--menu-item-active-color));\n    background-color: var(--theme-bg, var(--menu-item-active-bg));\n  }\n  .menu-item.active .menu-item-icon, .menu-item:active .menu-item-icon {\n    color: inherit !important;\n  }\n  .menu-item.selected {\n    font-weight: 600;\n  }\n  .menu-item.disabled, .menu-item:disabled {\n    color: var(--menu-item-disabled-color);\n    pointer-events: none;\n    background-color: transparent;\n    background-image: none;\n  }\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: 0.125rem;\n  }\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: 0.125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n  }\n  .selected > .menu-item-check {\n    visibility: visible;\n  }\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n  .submenu {\n    position: relative;\n  }\n  .submenu > .menu-item {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .submenu > .menu-item::after {\n    display: inline-block;\n    flex-shrink: 0;\n    width: 0.375em;\n    height: 0.375em;\n    margin-inline-start: auto;\n    content: \"\";\n    border-color: currentcolor;\n    border-style: solid;\n    border-width: 0 0.125em 0.125em 0;\n    transform: rotate(-45deg);\n  }\n  [dir=rtl] .submenu > .menu-item::after {\n    transform: rotate(135deg);\n  }\n  .submenu > .menu {\n    top: 0;\n    margin-top: calc(-1 * var(--menu-padding-y));\n  }\n  .submenu:hover > .menu-item, .submenu:focus-within > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n  .submenu.show > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n}\n@layer components {\n  .list-group {\n    --list-group-color: var(--fg-body);\n    --list-group-bg: var(--bg-body);\n    --list-group-border-color: var(--border-color);\n    --list-group-border-width: var(--border-width);\n    --list-group-border-radius: var(--radius-5);\n    --list-group-item-padding-x: var(--spacer);\n    --list-group-item-padding-y: var(--spacer-2);\n    --list-group-action-color: var(--fg-2);\n    --list-group-action-hover-color: var(--fg-1);\n    --list-group-action-hover-bg: var(--bg-1);\n    --list-group-action-active-color: var(--fg-body);\n    --list-group-action-active-bg: var(--bg-2);\n    --list-group-disabled-color: var(--fg-3);\n    --list-group-disabled-bg: var(--bg-body);\n    --list-group-active-color: var(--primary-contrast);\n    --list-group-active-bg: var(--primary-bg);\n    --list-group-active-border-color: var(--primary-bg);\n    display: flex;\n    flex-direction: column;\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    border-radius: var(--list-group-border-radius);\n  }\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n  }\n  .list-group-numbered > .list-group-item::before {\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-fg, var(--list-group-color));\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n  }\n  .list-group-item:first-child {\n    border-start-start-radius: inherit;\n    border-start-end-radius: inherit;\n  }\n  .list-group-item:last-child {\n    border-end-start-radius: inherit;\n    border-end-end-radius: inherit;\n  }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: var(--list-group-disabled-color);\n    pointer-events: none;\n    background-color: var(--list-group-disabled-bg);\n  }\n  .list-group-item.active {\n    z-index: 2;\n    color: var(--list-group-active-color);\n    background-color: var(--list-group-active-bg);\n    border-color: var(--list-group-active-border-color);\n  }\n  .list-group-item + .list-group-item {\n    border-block-start-width: 0;\n  }\n  .list-group-item + .list-group-item.active {\n    margin-top: calc(-1 * var(--list-group-border-width));\n    border-block-start-width: var(--list-group-border-width);\n  }\n  .list-group-item-action {\n    width: 100%;\n    color: var(--theme-fg, var(--list-group-action-color));\n    text-align: inherit;\n    text-decoration: none;\n  }\n  .list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {\n    z-index: 1;\n    color: var(--theme-fg-emphasis, var(--list-group-action-hover-color));\n    text-decoration: none;\n    background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n  }\n  .list-group-item-action:not(.active):active {\n    color: var(--theme-fg-emphasis, var(--list-group-action-active-color));\n    background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n  }\n  .list-group-horizontal {\n    flex-direction: row;\n  }\n  .list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n    border-end-start-radius: var(--list-group-border-radius);\n    border-start-end-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n    border-start-end-radius: var(--list-group-border-radius);\n    border-end-start-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item {\n    border-block-start-width: var(--list-group-border-width);\n    border-inline-start-width: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item.active {\n    margin-inline-start: calc(-1 * var(--list-group-border-width));\n    border-inline-start-width: var(--list-group-border-width);\n  }\n  @container (width >= 576px) {\n    .sm\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .sm\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .md\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .lg\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .xl\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  .list-group-flush {\n    border-radius: 0;\n  }\n  .list-group-flush > .list-group-item {\n    border-width: 0 0 var(--list-group-border-width);\n  }\n  .list-group-flush > .list-group-item:last-child {\n    border-block-end-width: 0;\n  }\n}\n@layer components {\n  .nav {\n    --nav-gap: 0.125rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-align: center;\n    --nav-link-justify: center;\n    --nav-link-padding-x: 0.75rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--fg-2);\n    --nav-link-hover-color: var(--fg-1);\n    --nav-link-hover-bg: var(--bg-1);\n    --nav-link-active-color: var(--fg-body);\n    --nav-link-active-bg: var(--bg-2);\n    --nav-link-disabled-color: var(--fg-4);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-transition-property: color, background-color, border-color;\n    --nav-link-transition-timing: 0.15s ease-in-out;\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n  .nav-item {\n    display: flex;\n  }\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    border-radius: var(--radius-5);\n    transition: var(--nav-link-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nav-link {\n      transition: none;\n    }\n  }\n  .nav-link:hover, .nav-link:focus {\n    color: var(--nav-link-hover-color);\n    background-color: var(--nav-link-hover-bg);\n  }\n  .nav-link:focus-visible {\n    --focus-ring-offset: 1px;\n    color: var(--nav-link-hover-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .nav-link.active, .nav-link:active {\n    color: var(--nav-link-active-color);\n    background-color: var(--nav-link-active-bg);\n  }\n  .nav-link.disabled, .nav-link:disabled {\n    color: var(--nav-link-disabled-color);\n    pointer-events: none;\n    cursor: default;\n  }\n  .nav-tabs {\n    --nav-tabs-border-width: var(--border-width);\n    --nav-tabs-border-color: var(--border-color);\n    --nav-tabs-border-radius: var(--radius-5);\n    --nav-tabs-link-hover-border-color: var(--border-subtle);\n    --nav-tabs-link-active-color: var(--fg-color);\n    --nav-tabs-link-active-bg: var(--bg-body);\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body);\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link {\n    border: var(--nav-tabs-border-width) solid transparent;\n    border-bottom-color: var(--nav-tabs-border-color);\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .nav-tabs .nav-link:hover {\n    isolation: isolate;\n    border-color: var(--nav-tabs-link-hover-border-color);\n    border-bottom-color: var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: var(--nav-tabs-link-active-color);\n    background-color: var(--nav-tabs-link-active-bg);\n    border-color: var(--nav-tabs-link-active-border-color);\n    border-bottom-color: var(--nav-tabs-link-active-bg);\n  }\n  .nav-tabs .menu {\n    margin-top: calc(-1 * var(--nav-tabs-border-width));\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .nav-pills {\n    --nav-pills-bg: var(--bg-1);\n    --nav-pills-padding: 0.25rem;\n    --nav-pills-border-radius: var(--radius-9);\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n    --nav-pills-link-border-radius: var(--radius-9);\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    border-radius: var(--nav-pills-border-radius);\n  }\n  .nav-pills .nav-link {\n    border-radius: var(--nav-pills-link-border-radius);\n  }\n  .nav-pills .nav-link.active,\n  .nav-pills .show > .nav-link {\n    color: var(--nav-pills-link-active-color);\n    background-color: var(--nav-pills-link-active-bg);\n    background-image: var(--gradient);\n  }\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n  }\n  .nav-pills-vertical .nav-item,\n  .nav-pills-vertical .nav-link {\n    width: 100%;\n  }\n  .nav-underline {\n    --nav-gap: 1rem;\n    --nav-link-active-bg: transparent;\n    --nav-underline-border-width: 0.125rem;\n    --nav-underline-link-active-color: var(--fg-color);\n  }\n  .nav-underline .nav-link {\n    padding-inline: 0;\n    border: 0;\n    border-block-end: var(--nav-underline-border-width) solid transparent;\n    border-radius: 0;\n  }\n  .nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n    border-block-end-color: currentcolor;\n  }\n  .nav-underline .nav-link.active,\n  .nav-underline .show > .nav-link {\n    font-weight: 700;\n    color: var(--nav-underline-link-active-color);\n    border-block-end-color: currentcolor;\n  }\n  .nav-fill > .nav-link,\n  .nav-fill .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n  .nav-justified > .nav-link,\n  .nav-justified .nav-item {\n    flex-grow: 1;\n    flex-basis: 0;\n    text-align: center;\n  }\n  .nav-fill .nav-item .nav-link,\n  .nav-justified .nav-item .nav-link {\n    width: 100%;\n  }\n  .tab-content > .tab-pane {\n    display: none;\n  }\n  .tab-content > .active {\n    display: block;\n  }\n}\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0;\n  }\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\n  }\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n  .nav-overflow [data-bs-nav-overflow=true] {\n    display: none;\n  }\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n@layer components {\n  .navbar {\n    --navbar-padding-x: 0;\n    --navbar-padding-y: 0.5rem;\n    --navbar-color: var(--fg-2);\n    --navbar-hover-color: var(--fg-1);\n    --navbar-disabled-color: var(--fg-3);\n    --navbar-active-color: var(--fg-body);\n    --navbar-brand-padding-y: 0.75rem;\n    --navbar-brand-margin-end: 1rem;\n    --navbar-brand-font-size: var(--font-size-md);\n    --navbar-brand-font-weight: var(--font-weight-medium);\n    --navbar-brand-color: var(--fg-body);\n    --navbar-brand-hover-color: var(--fg-body);\n    --navbar-nav-link-padding-x: 0.75rem;\n    --navbar-toggler-width: 2rem;\n    --navbar-toggler-padding-y: 0.25rem;\n    --navbar-toggler-padding-x: 0.75rem;\n    --navbar-toggler-font-size: var(--font-size-lg);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent);\n    --navbar-toggler-border-radius: var(--radius-5);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    --navbar-toggler-icon-size: 1.25rem;\n    --navbar-toggler-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e\");\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    container-type: inline-size;\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n  }\n  .navbar > .\\32 xl\\:container, .navbar > .xl\\:container, .navbar > .lg\\:container, .navbar > .md\\:container, .navbar > .sm\\:container, .navbar > .container,\n  .navbar > .container-fluid {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n  }\n  .navbar-brand:hover, .navbar-brand:focus {\n    color: var(--navbar-brand-hover-color);\n  }\n  .navbar-nav {\n    --nav-gap: 0.25rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-padding-x: 0.5rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n  .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n    color: var(--navbar-active-color);\n    border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n  }\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n  }\n  .navbar-text a,\n  .navbar-text a:hover,\n  .navbar-text a:focus {\n    color: var(--navbar-active-color);\n  }\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    mask-image: var(--navbar-toggler-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand .navbar-nav {\n    --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n    flex-direction: row;\n  }\n  .navbar-expand .navbar-toggler {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] {\n    position: static !important;\n    inset: auto !important;\n    z-index: auto;\n    display: flex !important;\n    flex-grow: 1;\n    width: auto !important;\n    max-width: none !important;\n    height: auto !important;\n    max-height: none !important;\n    padding: 0;\n    margin: 0;\n    visibility: visible !important;\n    background-color: transparent !important;\n    border: 0 !important;\n    transform: none !important;\n    box-shadow: none;\n    transition: none;\n  }\n  .navbar-expand [class*=drawer] .drawer-header {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] .drawer-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: row;\n    align-items: center;\n    padding: 0;\n    overflow-y: visible;\n  }\n  .navbar-expand {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  @container (width >= 576px) {\n    .sm\\:navbar-expand > .container,\n    .sm\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .sm\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .sm\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:navbar-expand > .container,\n    .md\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .md\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .md\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:navbar-expand > .container,\n    .lg\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .lg\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .lg\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:navbar-expand > .container,\n    .xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:navbar-expand > .container,\n    .\\32 xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .\\32 xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar [class*=drawer]:not([open], .hiding) {\n    transition: none !important;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .navbar [class*=drawer]:not([open], .hiding) {\n      transition: none;\n    }\n  }\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n  }\n  .navbar-translucent::before {\n    position: absolute;\n    inset: 0;\n    z-index: -1;\n    content: \"\";\n    background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n    background-image: none;\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .navbar[data-bs-theme=dark] {\n    --navbar-color: color-mix(in oklch, var(--white) 0.55, transparent);\n    --navbar-hover-color: color-mix(in oklch, var(--white) 0.75, transparent);\n    --navbar-disabled-color: color-mix(in oklch, var(--white) 0.25, transparent);\n    --navbar-active-color: var(--white);\n    --navbar-brand-color: var(--white);\n    --navbar-brand-hover-color: var(--white);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) 0.1, transparent);\n  }\n}\n.drawer, .\\32 xl\\:drawer, .xl\\:drawer, .lg\\:drawer, .md\\:drawer, .sm\\:drawer {\n  --drawer-inset: var(--spacer);\n  --drawer-zindex: 1045;\n  --drawer-width: 400px;\n  --drawer-height: 30vh;\n  --drawer-padding-x: var(--spacer);\n  --drawer-padding-y: var(--spacer);\n  --drawer-color: var(--fg-body);\n  --drawer-bg: var(--bg-body);\n  --drawer-border-width: var(--border-width);\n  --drawer-border-color: var(--border-color-translucent);\n  --drawer-border-radius: var(--radius-7);\n  --drawer-box-shadow: var(--box-shadow-lg);\n  --drawer-transition-duration: 0.3s;\n  --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n  --drawer-title-line-height: 1.5;\n  --drawer-backdrop-bg: color-mix(in oklch, var(--bg-body) 25%, transparent);\n  --drawer-backdrop-blur: 8px;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .sm\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .sm\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer .drawer-header {\n      display: none;\n    }\n    .sm\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .md\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .md\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer .drawer-header {\n      display: none;\n    }\n    .md\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .lg\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer .drawer-header {\n      display: none;\n    }\n    .lg\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .\\32 xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .\\32 xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .drawer {\n    position: fixed;\n    inset: auto;\n    z-index: var(--drawer-zindex);\n    display: flex;\n    flex-direction: column;\n    width: auto;\n    max-width: calc(100% - var(--drawer-inset) * 2);\n    height: auto;\n    max-height: calc(100% - var(--drawer-inset) * 2);\n    padding: 0;\n    margin: 0;\n    color: var(--drawer-color);\n    visibility: hidden;\n    background-color: var(--drawer-bg);\n    background-clip: padding-box;\n    border: var(--drawer-border-width) solid var(--drawer-border-color);\n    outline: 0;\n    border-radius: var(--drawer-border-radius);\n    box-shadow: var(--drawer-box-shadow);\n  }\n  .drawer:where(.drawer-start) {\n    inset-block: var(--drawer-inset);\n    inset-inline-start: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-end) {\n    inset-block: var(--drawer-inset);\n    inset-inline-end: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-top) {\n    inset: var(--drawer-inset) var(--drawer-inset) auto;\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-bottom) {\n    inset: auto var(--drawer-inset) var(--drawer-inset);\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-fullscreen) {\n    inset: var(--drawer-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n  }\n  .drawer:not(.drawer-instant) {\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-top) {\n    transform: translateY(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-bottom) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant)[open] {\n    visibility: visible;\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant)[open] {\n    transform: none;\n  }\n  .drawer[open] {\n    visibility: visible;\n    transform: none;\n  }\n  .sm\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .sm\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .md\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .md\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .lg\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .lg\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .xl\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .\\32 xl\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer::backdrop {\n      transition: none;\n    }\n  }\n  @starting-style {\n    .sm\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .md\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .lg\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .\\32 xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n  }\n  .drawer-static {\n    transform: scale(1.02);\n  }\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .drawer-sheet {\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100vw;\n    margin-inline: auto;\n    margin-bottom: calc(-1 * var(--drawer-border-width));\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  @media (width >= 1024px) {\n    .drawer-sheet {\n      max-width: var(--drawer-sheet-width, 760px);\n    }\n  }\n  .drawer-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n  }\n  .drawer-header .btn-close {\n    margin-block: calc(-0.5 * var(--drawer-padding-y));\n    margin-inline-start: auto;\n  }\n  .drawer-title {\n    margin-bottom: 0;\n    line-height: var(--drawer-title-line-height);\n  }\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    flex: 1 1 auto;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    overflow-y: auto;\n  }\n  .drawer-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    border-block-start: var(--drawer-border-width) solid var(--drawer-border-color);\n  }\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\n}\n@layer components {\n  .pagination {\n    --pagination-min-height: var(--btn-input-min-height);\n    --pagination-padding-x: var(--btn-input-padding-x);\n    --pagination-padding-y: var(--btn-input-padding-y);\n    --pagination-font-size: var(--btn-input-font-size);\n    --pagination-color: var(--link-color);\n    --pagination-bg: var(--bg-body);\n    --pagination-border-width: var(--border-width);\n    --pagination-border-color: var(--border-color);\n    --pagination-border-radius: var(--btn-input-border-radius);\n    --pagination-hover-color: var(--link-hover-color);\n    --pagination-hover-bg: var(--bg-1);\n    --pagination-hover-border-color: var(--border-color);\n    --pagination-focus-color: var(--link-hover-color);\n    --pagination-focus-bg: var(--bg-2);\n    --pagination-active-color: var(--primary-contrast);\n    --pagination-active-bg: var(--primary-bg);\n    --pagination-active-border-color: var(--primary-bg);\n    --pagination-disabled-color: var(--fg-3);\n    --pagination-disabled-bg: var(--bg-2);\n    --pagination-disabled-border-color: var(--border-color);\n    display: flex;\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .page-link {\n      transition: none;\n    }\n  }\n  .page-link:hover {\n    z-index: 2;\n    color: var(--pagination-hover-color);\n    background-color: var(--pagination-hover-bg);\n    border-color: var(--pagination-hover-border-color);\n  }\n  .page-link:focus-visible {\n    z-index: 3;\n    color: var(--pagination-focus-color);\n    background-color: var(--pagination-focus-bg);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .page-link.active, .active > .page-link {\n    z-index: 3;\n    color: var(--pagination-active-color);\n    background-color: var(--pagination-active-bg);\n    background-image: var(--gradient);\n    border-color: var(--pagination-active-border-color);\n  }\n  .page-link.disabled, .disabled > .page-link {\n    color: var(--pagination-disabled-color);\n    pointer-events: none;\n    background-color: var(--pagination-disabled-bg);\n    border-color: var(--pagination-disabled-border-color);\n  }\n  .page-item:not(:first-child) .page-link {\n    margin-inline-start: calc(-1 * var(--pagination-border-width));\n  }\n  .page-item:first-child .page-link {\n    border-start-start-radius: var(--pagination-border-radius);\n    border-end-start-radius: var(--pagination-border-radius);\n  }\n  .page-item:last-child .page-link {\n    border-start-end-radius: var(--pagination-border-radius);\n    border-end-end-radius: var(--pagination-border-radius);\n  }\n  .pagination-sm {\n    --pagination-min-height: var(--bs-btn-input-sm-min-height);\n    --pagination-padding-y: var(--btn-input-sm-padding-y);\n    --pagination-padding-x: var(--btn-input-sm-padding-x);\n    --pagination-font-size: var(--btn-input-sm-font-size);\n    --pagination-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .pagination-lg {\n    --pagination-min-height: var(--bs-btn-input-lg-min-height);\n    --pagination-padding-y: var(--btn-input-lg-padding-y);\n    --pagination-padding-x: var(--btn-input-lg-padding-x);\n    --pagination-font-size: var(--btn-input-lg-font-size);\n    --pagination-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer components {\n  .placeholder {\n    --placeholder-opacity-max: 0.5;\n    --placeholder-opacity-min: 0.2;\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n  }\n  .placeholder.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n  .placeholder-xs {\n    min-height: 0.6em;\n  }\n  .placeholder-sm {\n    min-height: 0.8em;\n  }\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n  .placeholder-glow .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, #000 55%, rgb(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, #000 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n@layer components {\n  .popover {\n    --popover-zindex: 1070;\n    --popover-max-width: 280px;\n    --popover-font-size: var(--font-size-sm);\n    --popover-bg: var(--bg-body);\n    --popover-border-width: var(--border-width);\n    --popover-border-color: var(--border-color-translucent);\n    --popover-border-radius: var(--radius-7);\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: var(--spacer);\n    --popover-header-padding-y: var(--spacer-3);\n    --popover-header-font-size: var(--font-size-sm);\n    --popover-header-color: inherit;\n    --popover-header-bg: var(--bg-1);\n    --popover-body-padding-x: var(--spacer);\n    --popover-body-padding-y: var(--spacer-3);\n    --popover-body-color: var(--fg-body);\n    --popover-arrow-width: 1rem;\n    --popover-arrow-height: 0.5rem;\n    --popover-arrow-border: var(--popover-border-color);\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--popover-font-size);\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    border-radius: var(--popover-border-radius);\n    box-shadow: var(--popover-box-shadow);\n  }\n  .popover .popover-arrow {\n    display: block;\n    width: var(--popover-arrow-width);\n    height: var(--popover-arrow-height);\n  }\n  .popover .popover-arrow::before, .popover .popover-arrow::after {\n    position: absolute;\n    display: block;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n    border-width: 0;\n  }\n  .bs-popover-top > .popover-arrow, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow {\n    bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before {\n    bottom: 0;\n    border-block-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    bottom: var(--popover-border-width);\n    border-block-start-color: var(--popover-bg);\n  }\n  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow {\n    left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before {\n    left: 0;\n    border-inline-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    left: var(--popover-border-width);\n    border-inline-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow {\n    top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    border-width: 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before {\n    top: 0;\n    border-block-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    top: var(--popover-border-width);\n    border-block-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow:has(+ .popover-header)::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow:has(+ .popover-header)::after {\n    border-block-end-color: var(--popover-header-bg);\n  }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[data-bs-placement^=bottom] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: var(--popover-arrow-width);\n    margin-inline-start: calc(-0.5 * var(--popover-arrow-width));\n    content: \"\";\n    border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n  }\n  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow {\n    right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before {\n    right: 0;\n    border-inline-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    right: var(--popover-border-width);\n    border-inline-start-color: var(--popover-bg);\n  }\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    border-start-start-radius: var(--popover-inner-border-radius);\n    border-start-end-radius: var(--popover-inner-border-radius);\n  }\n  .popover-header:empty {\n    display: none;\n  }\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n@layer components {\n  @keyframes progress-bar-stripes {\n    0% {\n      background-position-x: var(--progress-height);\n    }\n  }\n  .progress,\n  .progress-stacked {\n    --progress-height: 1rem;\n    --progress-font-size: var(--font-size-sm);\n    --progress-bg: var(--bg-2);\n    --progress-border-radius: var(--radius-5);\n    --progress-box-shadow: var(--box-shadow-inset);\n    --progress-bar-color: var(--white);\n    --progress-bar-bg: var(--primary-bg);\n    --progress-bar-transition: width 0.6s ease;\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite;\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    border-radius: var(--progress-border-radius);\n    box-shadow: var(--progress-box-shadow);\n  }\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    transition: var(--progress-bar-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      transition: none;\n    }\n  }\n  .progress-bar-striped {\n    background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n    background-size: var(--progress-height) var(--progress-height);\n  }\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n  .progress-bar-animated {\n    animation: var(--progress-bar-animation);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar-animated {\n      animation: none;\n    }\n  }\n}\n@layer components {\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n  @keyframes spinner-border {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n  .spinner-border {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-border-width: 0.25em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-border;\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n  .spinner-border-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n  }\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  .spinner-grow {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-grow;\n    background-color: currentcolor;\n    opacity: 0;\n  }\n  .spinner-grow-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      --spinner-animation-speed: 1.5s;\n    }\n  }\n}\n@layer components {\n  .stepper {\n    --stepper-size: 2rem;\n    --stepper-gap: 1rem;\n    --stepper-font-size: var(--font-size-sm);\n    --stepper-text-gap: 0.5rem;\n    --stepper-track-size: 0.125rem;\n    --stepper-bg: var(--bg-2);\n    --stepper-active-color: var(--primary-contrast);\n    --stepper-active-bg: var(--primary-bg);\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\n  }\n  .stepper-item {\n    position: relative;\n    display: grid;\n    grid-template-rows: auto;\n    grid-template-columns: var(--stepper-size) auto;\n    gap: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, center);\n    text-decoration: none;\n  }\n  .stepper-item::before {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--stepper-size);\n    height: var(--stepper-size);\n    padding: 0.5rem;\n    font-size: var(--stepper-font-size);\n    font-weight: 600;\n    line-height: 1;\n    text-align: center;\n    content: counter(stepper);\n    counter-increment: stepper;\n    background-color: var(--stepper-bg);\n    border-radius: 50%;\n  }\n  .stepper-item::after {\n    position: absolute;\n    inset-block-start: 50%;\n    inset-block-end: 100%;\n    inset-inline-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    width: var(--stepper-track-size);\n    height: calc(100% + var(--stepper-gap));\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n  .stepper-item:last-child::after {\n    display: none;\n  }\n  .stepper-item.active::before, .stepper-item.active::after {\n    color: var(--theme-contrast, var(--stepper-active-color));\n    background-color: var(--theme-bg, var(--stepper-active-bg));\n  }\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n  .stepper-horizontal {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal .stepper-item {\n    grid-template-rows: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n  }\n  .stepper-horizontal .stepper-item::after {\n    inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    inset-block-end: auto;\n    inset-inline-start: 50%;\n    inset-inline-end: 100%;\n    width: calc(100% + var(--stepper-gap));\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal .stepper-item:last-child::after {\n    right: 100%;\n  }\n  @container (width >= 576px) {\n    .sm\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .sm\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .sm\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .sm\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .md\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .md\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .md\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .lg\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .lg\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .lg\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  .stepper-overflow {\n    container-type: inline-size;\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n  }\n  .stepper-overflow > .stepper {\n    width: max-content;\n    min-width: 100%;\n  }\n}\n@layer components {\n  .toast {\n    --toast-zindex: 1090;\n    --toast-padding-x: 1rem;\n    --toast-padding-y: 0.75rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: var(--font-size-sm);\n    --toast-bg: var(--bg-body);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: var(--bg-1);\n    --toast-header-border-color: var(--border-color-translucent);\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius, var(--radius-7));\n  }\n  .toast.showing {\n    opacity: 0;\n  }\n  .toast:not(.show) {\n    display: none;\n  }\n  .toast-container {\n    --toast-zindex: 1090;\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n  }\n  .toast-container > :not(:last-child) {\n    margin-bottom: var(--toast-spacing);\n  }\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: calc(0.5 * var(--toast-padding-x));\n    margin-inline-end: calc(-0.25 * var(--toast-padding-x));\n    color: inherit;\n  }\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: var(--spacer-3);\n    --tooltip-padding-y: calc(var(--spacer) * 0.375);\n    --tooltip-font-size: var(--font-size-sm);\n    --tooltip-color: var(--bg-body);\n    --tooltip-bg: var(--fg-body);\n    --tooltip-border-radius: var(--radius-5);\n    --tooltip-opacity: 0.95;\n    --tooltip-arrow-width: 0.8rem;\n    --tooltip-arrow-height: 0.4rem;\n    z-index: var(--tooltip-zindex);\n    display: block;\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--tooltip-font-size);\n    word-wrap: break-word;\n    opacity: 0;\n  }\n  .tooltip.show {\n    opacity: var(--tooltip-opacity);\n  }\n  .tooltip .tooltip-arrow {\n    display: block;\n    width: var(--tooltip-arrow-width);\n    height: var(--tooltip-arrow-height);\n  }\n  .tooltip .tooltip-arrow::before {\n    position: absolute;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n  }\n  .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow::before {\n    top: -1px;\n    border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-block-start-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow::before {\n    right: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-inline-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow::before {\n    bottom: -1px;\n    border-width: 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-block-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow::before {\n    left: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-inline-start-color: var(--tooltip-bg);\n  }\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n}\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sm\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sm\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .md\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .lg\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .\\32 xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .sm\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .sm\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-fg: var(--primary-fg);\n    --theme-fg-emphasis: var(--primary-fg-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-fg: var(--accent-fg);\n    --theme-fg-emphasis: var(--accent-fg-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-fg: var(--success-fg);\n    --theme-fg-emphasis: var(--success-fg-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-fg: var(--danger-fg);\n    --theme-fg-emphasis: var(--danger-fg-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-fg: var(--warning-fg);\n    --theme-fg-emphasis: var(--warning-fg-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-fg: var(--info-fg);\n    --theme-fg-emphasis: var(--info-fg-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-fg: var(--inverse-fg);\n    --theme-fg-emphasis: var(--inverse-fg-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-fg: var(--secondary-fg);\n    --theme-fg-emphasis: var(--secondary-fg-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus, :focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus, :focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus, :focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .contains-inline {\n    container-type: inline-size;\n  }\n  .contains-size {\n    container-type: size;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-xs {\n    box-shadow: var(--box-shadow-xs);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    inset-inline-start: 0;\n  }\n  .start-50 {\n    inset-inline-start: 50%;\n  }\n  .start-100 {\n    inset-inline-start: 100%;\n  }\n  .end-0 {\n    inset-inline-end: 0;\n  }\n  .end-50 {\n    inset-inline-end: 50%;\n  }\n  .end-100 {\n    inset-inline-end: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-y {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-y-0 {\n    border-block: 0;\n  }\n  .border-x {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-x-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--primary-bg);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--accent-bg);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--success-bg);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--danger-bg);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--warning-bg);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--info-bg);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: var(--inverse-bg);\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: var(--secondary-bg);\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--border-bg);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: var(--border-body);\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: var(--border-muted);\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: var(--border-subtle);\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: var(--border-emphasized);\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--border-white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--border-black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: var(--primary-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: var(--accent-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: var(--success-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: var(--danger-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: var(--warning-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: var(--info-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: var(--inverse-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: var(--secondary-border);\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: start;\n  }\n  .justify-self-end {\n    justify-self: end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-1 {\n    grid-template-columns: 1fr;\n  }\n  .grid-cols-2 {\n    grid-template-columns: repeat(2, 1fr);\n  }\n  .grid-cols-3 {\n    grid-template-columns: repeat(3, 1fr);\n  }\n  .grid-cols-4 {\n    grid-template-columns: repeat(4, 1fr);\n  }\n  .grid-cols-6 {\n    grid-template-columns: repeat(6, 1fr);\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 0.75rem;\n  }\n  .m-4 {\n    margin: 1rem;\n  }\n  .m-5 {\n    margin: 1.25rem;\n  }\n  .m-6 {\n    margin: 1.5rem;\n  }\n  .m-7 {\n    margin: 2rem;\n  }\n  .m-8 {\n    margin: 2.5rem;\n  }\n  .m-9 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 0.75rem;\n  }\n  .mx-4 {\n    margin-inline: 1rem;\n  }\n  .mx-5 {\n    margin-inline: 1.25rem;\n  }\n  .mx-6 {\n    margin-inline: 1.5rem;\n  }\n  .mx-7 {\n    margin-inline: 2rem;\n  }\n  .mx-8 {\n    margin-inline: 2.5rem;\n  }\n  .mx-9 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 0.75rem;\n  }\n  .my-4 {\n    margin-block: 1rem;\n  }\n  .my-5 {\n    margin-block: 1.25rem;\n  }\n  .my-6 {\n    margin-block: 1.5rem;\n  }\n  .my-7 {\n    margin-block: 2rem;\n  }\n  .my-8 {\n    margin-block: 2.5rem;\n  }\n  .my-9 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 0.75rem;\n  }\n  .mt-4 {\n    margin-block-start: 1rem;\n  }\n  .mt-5 {\n    margin-block-start: 1.25rem;\n  }\n  .mt-6 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-7 {\n    margin-block-start: 2rem;\n  }\n  .mt-8 {\n    margin-block-start: 2.5rem;\n  }\n  .mt-9 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 0.75rem;\n  }\n  .me-4 {\n    margin-inline-end: 1rem;\n  }\n  .me-5 {\n    margin-inline-end: 1.25rem;\n  }\n  .me-6 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-7 {\n    margin-inline-end: 2rem;\n  }\n  .me-8 {\n    margin-inline-end: 2.5rem;\n  }\n  .me-9 {\n    margin-inline-end: 3rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 0.75rem;\n  }\n  .mb-4 {\n    margin-block-end: 1rem;\n  }\n  .mb-5 {\n    margin-block-end: 1.25rem;\n  }\n  .mb-6 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-7 {\n    margin-block-end: 2rem;\n  }\n  .mb-8 {\n    margin-block-end: 2.5rem;\n  }\n  .mb-9 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 0.75rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1rem;\n  }\n  .ms-5 {\n    margin-inline-start: 1.25rem;\n  }\n  .ms-6 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-7 {\n    margin-inline-start: 2rem;\n  }\n  .ms-8 {\n    margin-inline-start: 2.5rem;\n  }\n  .ms-9 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 0.75rem;\n  }\n  .p-4 {\n    padding: 1rem;\n  }\n  .p-5 {\n    padding: 1.25rem;\n  }\n  .p-6 {\n    padding: 1.5rem;\n  }\n  .p-7 {\n    padding: 2rem;\n  }\n  .p-8 {\n    padding: 2.5rem;\n  }\n  .p-9 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 0.75rem;\n  }\n  .px-4 {\n    padding-inline: 1rem;\n  }\n  .px-5 {\n    padding-inline: 1.25rem;\n  }\n  .px-6 {\n    padding-inline: 1.5rem;\n  }\n  .px-7 {\n    padding-inline: 2rem;\n  }\n  .px-8 {\n    padding-inline: 2.5rem;\n  }\n  .px-9 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 0.75rem;\n  }\n  .py-4 {\n    padding-block: 1rem;\n  }\n  .py-5 {\n    padding-block: 1.25rem;\n  }\n  .py-6 {\n    padding-block: 1.5rem;\n  }\n  .py-7 {\n    padding-block: 2rem;\n  }\n  .py-8 {\n    padding-block: 2.5rem;\n  }\n  .py-9 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 0.75rem;\n  }\n  .pt-4 {\n    padding-block-start: 1rem;\n  }\n  .pt-5 {\n    padding-block-start: 1.25rem;\n  }\n  .pt-6 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-7 {\n    padding-block-start: 2rem;\n  }\n  .pt-8 {\n    padding-block-start: 2.5rem;\n  }\n  .pt-9 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 0.75rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1rem;\n  }\n  .pe-5 {\n    padding-inline-end: 1.25rem;\n  }\n  .pe-6 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-7 {\n    padding-inline-end: 2rem;\n  }\n  .pe-8 {\n    padding-inline-end: 2.5rem;\n  }\n  .pe-9 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 0.75rem;\n  }\n  .pb-4 {\n    padding-block-end: 1rem;\n  }\n  .pb-5 {\n    padding-block-end: 1.25rem;\n  }\n  .pb-6 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-7 {\n    padding-block-end: 2rem;\n  }\n  .pb-8 {\n    padding-block-end: 2.5rem;\n  }\n  .pb-9 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 0.75rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1rem;\n  }\n  .ps-5 {\n    padding-inline-start: 1.25rem;\n  }\n  .ps-6 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-7 {\n    padding-inline-start: 2rem;\n  }\n  .ps-8 {\n    padding-inline-start: 2.5rem;\n  }\n  .ps-9 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 0.75rem;\n  }\n  .gap-4 {\n    gap: 1rem;\n  }\n  .gap-5 {\n    gap: 1.25rem;\n  }\n  .gap-6 {\n    gap: 1.5rem;\n  }\n  .gap-7 {\n    gap: 2rem;\n  }\n  .gap-8 {\n    gap: 2.5rem;\n  }\n  .gap-9 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 0.75rem;\n  }\n  .row-gap-4 {\n    row-gap: 1rem;\n  }\n  .row-gap-5 {\n    row-gap: 1.25rem;\n  }\n  .row-gap-6 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-7 {\n    row-gap: 2rem;\n  }\n  .row-gap-8 {\n    row-gap: 2.5rem;\n  }\n  .row-gap-9 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 0.75rem;\n  }\n  .column-gap-4 {\n    column-gap: 1rem;\n  }\n  .column-gap-5 {\n    column-gap: 1.25rem;\n  }\n  .column-gap-6 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-7 {\n    column-gap: 2rem;\n  }\n  .column-gap-8 {\n    column-gap: 2.5rem;\n  }\n  .column-gap-9 {\n    column-gap: 3rem;\n  }\n  :where(.space-x-0 > :not(:last-child)) {\n    margin-inline-end: 0;\n  }\n  :where(.space-x-1 > :not(:last-child)) {\n    margin-inline-end: 0.25rem;\n  }\n  :where(.space-x-2 > :not(:last-child)) {\n    margin-inline-end: 0.5rem;\n  }\n  :where(.space-x-3 > :not(:last-child)) {\n    margin-inline-end: 0.75rem;\n  }\n  :where(.space-x-4 > :not(:last-child)) {\n    margin-inline-end: 1rem;\n  }\n  :where(.space-x-5 > :not(:last-child)) {\n    margin-inline-end: 1.25rem;\n  }\n  :where(.space-x-6 > :not(:last-child)) {\n    margin-inline-end: 1.5rem;\n  }\n  :where(.space-x-7 > :not(:last-child)) {\n    margin-inline-end: 2rem;\n  }\n  :where(.space-x-8 > :not(:last-child)) {\n    margin-inline-end: 2.5rem;\n  }\n  :where(.space-x-9 > :not(:last-child)) {\n    margin-inline-end: 3rem;\n  }\n  :where(.space-y-0 > :not(:last-child)) {\n    margin-block-end: 0;\n  }\n  :where(.space-y-1 > :not(:last-child)) {\n    margin-block-end: 0.25rem;\n  }\n  :where(.space-y-2 > :not(:last-child)) {\n    margin-block-end: 0.5rem;\n  }\n  :where(.space-y-3 > :not(:last-child)) {\n    margin-block-end: 0.75rem;\n  }\n  :where(.space-y-4 > :not(:last-child)) {\n    margin-block-end: 1rem;\n  }\n  :where(.space-y-5 > :not(:last-child)) {\n    margin-block-end: 1.25rem;\n  }\n  :where(.space-y-6 > :not(:last-child)) {\n    margin-block-end: 1.5rem;\n  }\n  :where(.space-y-7 > :not(:last-child)) {\n    margin-block-end: 2rem;\n  }\n  :where(.space-y-8 > :not(:last-child)) {\n    margin-block-end: 2.5rem;\n  }\n  :where(.space-y-9 > :not(:last-child)) {\n    margin-block-end: 3rem;\n  }\n  :where(.divide-x > :not(:first-child)) {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-x-0 > :not(:first-child)) {\n    border-inline-start: 0;\n  }\n  :where(.divide-y > :not(:first-child)) {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-y-0 > :not(:first-child)) {\n    border-block-start: 0;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: 0.75rem;\n  }\n  .fs-sm {\n    font-size: 0.875rem;\n  }\n  .fs-md {\n    font-size: 1rem;\n  }\n  .fs-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  }\n  .fs-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  }\n  .fs-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  }\n  .fs-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  }\n  .fs-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  }\n  .fs-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n  }\n  .fs-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  }\n  .text-xs {\n    font-size: 0.75rem;\n    line-height: 1.25;\n  }\n  .text-sm {\n    font-size: 0.875rem;\n    line-height: 1.5;\n  }\n  .text-md {\n    font-size: 1rem;\n    line-height: 1.5;\n  }\n  .text-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n    line-height: 1.5;\n  }\n  .text-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n    line-height: 1.4285714286;\n  }\n  .text-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n    line-height: 1.3333333333;\n  }\n  .text-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n    line-height: 1.2;\n  }\n  .text-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n    line-height: 1.1;\n  }\n  .text-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n    line-height: 1.1;\n  }\n  .text-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n    line-height: 1;\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    text-wrap: wrap;\n  }\n  .text-nowrap {\n    text-wrap: nowrap;\n  }\n  .text-balance {\n    text-wrap: balance;\n  }\n  .text-pretty {\n    text-wrap: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: var(--primary-fg);\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: var(--accent-fg);\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: var(--success-fg);\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: var(--danger-fg);\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: var(--warning-fg);\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: var(--info-fg);\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: var(--inverse-fg);\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: var(--secondary-fg);\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: var(--fg-body);\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: var(--fg-1);\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: var(--fg-2);\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: var(--fg-3);\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: var(--fg-4);\n    color: var(--fg);\n  }\n  .fg-bg {\n    --fg: var(--fg-bg);\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--fg-white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--fg-black);\n    color: var(--fg);\n  }\n  .fg-reset {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: var(--primary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: var(--accent-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: var(--success-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: var(--danger-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: var(--warning-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: var(--info-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: var(--inverse-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: var(--secondary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--primary-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--accent-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--success-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--danger-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--warning-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--info-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: var(--inverse-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: var(--secondary-contrast);\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .hover\\:link-10:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .hover\\:link-20:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .hover\\:link-30:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .hover\\:link-40:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .hover\\:link-50:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .hover\\:link-60:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .hover\\:link-70:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .hover\\:link-80:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .hover\\:link-90:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .hover\\:link-100:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .hover\\:underline-offset-1:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .hover\\:underline-offset-2:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .hover\\:underline-offset-3:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .hover\\:underline-10:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .hover\\:underline-20:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .hover\\:underline-30:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .hover\\:underline-40:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .hover\\:underline-50:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .hover\\:underline-60:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .hover\\:underline-70:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .hover\\:underline-80:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .hover\\:underline-90:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .hover\\:underline-100:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .hover\\:underline-thickness-1:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .hover\\:underline-thickness-2:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .hover\\:underline-thickness-3:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .hover\\:underline-thickness-4:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .hover\\:underline-thickness-5:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--primary-bg);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--accent-bg);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--success-bg);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--danger-bg);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--warning-bg);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--info-bg);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: var(--inverse-bg);\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: var(--secondary-bg);\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: var(--bg-body);\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: var(--bg-1);\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: var(--bg-2);\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: var(--bg-3);\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: var(--bg-4);\n    background-color: var(--bg);\n  }\n  .bg-fg {\n    --bg: var(--bg-fg);\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--bg-white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--bg-black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: var(--bg-transparent);\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: var(--primary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: var(--accent-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: var(--success-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: var(--danger-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: var(--warning-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: var(--info-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: var(--inverse-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: var(--secondary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: var(--primary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: var(--accent-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: var(--success-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: var(--danger-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: var(--warning-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: var(--info-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: var(--inverse-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: var(--secondary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-fg);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-fg-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-text {\n    user-select: text;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded-0 {\n    --rounded-size: 0;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-1 {\n    --rounded-size: 0.125rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-2 {\n    --rounded-size: 0.1875rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-3 {\n    --rounded-size: 0.25rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-4 {\n    --rounded-size: 0.375rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-5 {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-6 {\n    --rounded-size: 0.625rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-7 {\n    --rounded-size: 0.75rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-8 {\n    --rounded-size: 1rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-9 {\n    --rounded-size: 1.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-circle {\n    --rounded-size: 50%;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-pill {\n    --rounded-size: var(--radius-pill);\n    border-radius: var(--rounded-size);\n  }\n  .rounded-size-0 {\n    --rounded-size: 0;\n  }\n  .rounded-size-1 {\n    --rounded-size: 0.125rem;\n  }\n  .rounded-size-2 {\n    --rounded-size: 0.1875rem;\n  }\n  .rounded-size-3 {\n    --rounded-size: 0.25rem;\n  }\n  .rounded-size-4 {\n    --rounded-size: 0.375rem;\n  }\n  .rounded-size-5 {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-6 {\n    --rounded-size: 0.625rem;\n  }\n  .rounded-size-7 {\n    --rounded-size: 0.75rem;\n  }\n  .rounded-size-8 {\n    --rounded-size: 1rem;\n  }\n  .rounded-size-9 {\n    --rounded-size: 1.5rem;\n  }\n  .rounded-size {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-circle {\n    --rounded-size: 50%;\n  }\n  .rounded-size-pill {\n    --rounded-size: var(--radius-pill);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: 0.125rem;\n    border-start-end-radius: 0.125rem;\n  }\n  .rounded-top-2 {\n    border-start-start-radius: 0.1875rem;\n    border-start-end-radius: 0.1875rem;\n  }\n  .rounded-top-3 {\n    border-start-start-radius: 0.25rem;\n    border-start-end-radius: 0.25rem;\n  }\n  .rounded-top-4 {\n    border-start-start-radius: 0.375rem;\n    border-start-end-radius: 0.375rem;\n  }\n  .rounded-top-5 {\n    border-start-start-radius: 0.5rem;\n    border-start-end-radius: 0.5rem;\n  }\n  .rounded-top-6 {\n    border-start-start-radius: 0.625rem;\n    border-start-end-radius: 0.625rem;\n  }\n  .rounded-top-7 {\n    border-start-start-radius: 0.75rem;\n    border-start-end-radius: 0.75rem;\n  }\n  .rounded-top-8 {\n    border-start-start-radius: 1rem;\n    border-start-end-radius: 1rem;\n  }\n  .rounded-top-9 {\n    border-start-start-radius: 1.5rem;\n    border-start-end-radius: 1.5rem;\n  }\n  .rounded-top {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-start-end-radius: var(--radius-pill);\n  }\n  .rounded-end-0 {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-end-1 {\n    border-start-end-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-end-2 {\n    border-start-end-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-end-3 {\n    border-start-end-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-end-4 {\n    border-start-end-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-end-5 {\n    border-start-end-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-end-6 {\n    border-start-end-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-end-7 {\n    border-start-end-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-end-8 {\n    border-start-end-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-end-9 {\n    border-start-end-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-end {\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-end-circle {\n    border-start-end-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-start-end-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-bottom-0 {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-start-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-bottom-2 {\n    border-end-start-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-bottom-3 {\n    border-end-start-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-bottom-4 {\n    border-end-start-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-bottom-5 {\n    border-end-start-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-bottom-6 {\n    border-end-start-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-bottom-7 {\n    border-end-start-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-bottom-8 {\n    border-end-start-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-bottom-9 {\n    border-end-start-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-bottom {\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-bottom-circle {\n    border-end-start-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-start-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: 0.125rem;\n    border-end-start-radius: 0.125rem;\n  }\n  .rounded-start-2 {\n    border-start-start-radius: 0.1875rem;\n    border-end-start-radius: 0.1875rem;\n  }\n  .rounded-start-3 {\n    border-start-start-radius: 0.25rem;\n    border-end-start-radius: 0.25rem;\n  }\n  .rounded-start-4 {\n    border-start-start-radius: 0.375rem;\n    border-end-start-radius: 0.375rem;\n  }\n  .rounded-start-5 {\n    border-start-start-radius: 0.5rem;\n    border-end-start-radius: 0.5rem;\n  }\n  .rounded-start-6 {\n    border-start-start-radius: 0.625rem;\n    border-end-start-radius: 0.625rem;\n  }\n  .rounded-start-7 {\n    border-start-start-radius: 0.75rem;\n    border-end-start-radius: 0.75rem;\n  }\n  .rounded-start-8 {\n    border-start-start-radius: 1rem;\n    border-end-start-radius: 1rem;\n  }\n  .rounded-start-9 {\n    border-start-start-radius: 1.5rem;\n    border-end-start-radius: 1.5rem;\n  }\n  .rounded-start {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-end-start-radius: var(--radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .sm\\:float-start {\n      float: inline-start;\n    }\n    .sm\\:float-end {\n      float: inline-end;\n    }\n    .sm\\:float-none {\n      float: none;\n    }\n    .sm\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .sm\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .sm\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .sm\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .sm\\:object-fit-none {\n      object-fit: none;\n    }\n    .sm\\:d-inline {\n      display: inline;\n    }\n    .sm\\:d-inline-block {\n      display: inline-block;\n    }\n    .sm\\:d-block {\n      display: block;\n    }\n    .sm\\:d-grid {\n      display: grid;\n    }\n    .sm\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .sm\\:d-table {\n      display: table;\n    }\n    .sm\\:d-table-row {\n      display: table-row;\n    }\n    .sm\\:d-table-cell {\n      display: table-cell;\n    }\n    .sm\\:d-flex {\n      display: flex;\n    }\n    .sm\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .sm\\:d-contents {\n      display: contents;\n    }\n    .sm\\:d-flow-root {\n      display: flow-root;\n    }\n    .sm\\:d-none {\n      display: none;\n    }\n    .sm\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .sm\\:flex-row {\n      flex-direction: row;\n    }\n    .sm\\:flex-column {\n      flex-direction: column;\n    }\n    .sm\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .sm\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .sm\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .sm\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .sm\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .sm\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .sm\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .sm\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .sm\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .sm\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .sm\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .sm\\:justify-content-center {\n      justify-content: center;\n    }\n    .sm\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .sm\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .sm\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .sm\\:justify-items-start {\n      justify-items: start;\n    }\n    .sm\\:justify-items-end {\n      justify-items: end;\n    }\n    .sm\\:justify-items-center {\n      justify-items: center;\n    }\n    .sm\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .sm\\:justify-self-start {\n      justify-self: start;\n    }\n    .sm\\:justify-self-end {\n      justify-self: end;\n    }\n    .sm\\:justify-self-center {\n      justify-self: center;\n    }\n    .sm\\:align-items-start {\n      align-items: flex-start;\n    }\n    .sm\\:align-items-end {\n      align-items: flex-end;\n    }\n    .sm\\:align-items-center {\n      align-items: center;\n    }\n    .sm\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .sm\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .sm\\:align-content-start {\n      align-content: flex-start;\n    }\n    .sm\\:align-content-end {\n      align-content: flex-end;\n    }\n    .sm\\:align-content-center {\n      align-content: center;\n    }\n    .sm\\:align-content-between {\n      align-content: space-between;\n    }\n    .sm\\:align-content-around {\n      align-content: space-around;\n    }\n    .sm\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .sm\\:align-self-auto {\n      align-self: auto;\n    }\n    .sm\\:align-self-start {\n      align-self: flex-start;\n    }\n    .sm\\:align-self-end {\n      align-self: flex-end;\n    }\n    .sm\\:align-self-center {\n      align-self: center;\n    }\n    .sm\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .sm\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .sm\\:place-items-start {\n      place-items: start;\n    }\n    .sm\\:place-items-end {\n      place-items: end;\n    }\n    .sm\\:place-items-center {\n      place-items: center;\n    }\n    .sm\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .sm\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .sm\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .sm\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .sm\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .sm\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .sm\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .sm\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .sm\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .sm\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .sm\\:order-first {\n      order: -1;\n    }\n    .sm\\:order-0 {\n      order: 0;\n    }\n    .sm\\:order-1 {\n      order: 1;\n    }\n    .sm\\:order-2 {\n      order: 2;\n    }\n    .sm\\:order-3 {\n      order: 3;\n    }\n    .sm\\:order-4 {\n      order: 4;\n    }\n    .sm\\:order-5 {\n      order: 5;\n    }\n    .sm\\:order-last {\n      order: 6;\n    }\n    .sm\\:m-0 {\n      margin: 0;\n    }\n    .sm\\:m-1 {\n      margin: 0.25rem;\n    }\n    .sm\\:m-2 {\n      margin: 0.5rem;\n    }\n    .sm\\:m-3 {\n      margin: 0.75rem;\n    }\n    .sm\\:m-4 {\n      margin: 1rem;\n    }\n    .sm\\:m-5 {\n      margin: 1.25rem;\n    }\n    .sm\\:m-6 {\n      margin: 1.5rem;\n    }\n    .sm\\:m-7 {\n      margin: 2rem;\n    }\n    .sm\\:m-8 {\n      margin: 2.5rem;\n    }\n    .sm\\:m-9 {\n      margin: 3rem;\n    }\n    .sm\\:m-auto {\n      margin: auto;\n    }\n    .sm\\:mx-0 {\n      margin-inline: 0;\n    }\n    .sm\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .sm\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .sm\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .sm\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .sm\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .sm\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .sm\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .sm\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .sm\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .sm\\:mx-auto {\n      margin-inline: auto;\n    }\n    .sm\\:my-0 {\n      margin-block: 0;\n    }\n    .sm\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .sm\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .sm\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .sm\\:my-4 {\n      margin-block: 1rem;\n    }\n    .sm\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .sm\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .sm\\:my-7 {\n      margin-block: 2rem;\n    }\n    .sm\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .sm\\:my-9 {\n      margin-block: 3rem;\n    }\n    .sm\\:my-auto {\n      margin-block: auto;\n    }\n    .sm\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .sm\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .sm\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .sm\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .sm\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .sm\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .sm\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .sm\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .sm\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .sm\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .sm\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .sm\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .sm\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .sm\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .sm\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .sm\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .sm\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .sm\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .sm\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .sm\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .sm\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .sm\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .sm\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .sm\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .sm\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .sm\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .sm\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .sm\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .sm\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .sm\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .sm\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .sm\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .sm\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .sm\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .sm\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .sm\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .sm\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .sm\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .sm\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .sm\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .sm\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .sm\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .sm\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .sm\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .sm\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .sm\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .sm\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .sm\\:p-0 {\n      padding: 0;\n    }\n    .sm\\:p-1 {\n      padding: 0.25rem;\n    }\n    .sm\\:p-2 {\n      padding: 0.5rem;\n    }\n    .sm\\:p-3 {\n      padding: 0.75rem;\n    }\n    .sm\\:p-4 {\n      padding: 1rem;\n    }\n    .sm\\:p-5 {\n      padding: 1.25rem;\n    }\n    .sm\\:p-6 {\n      padding: 1.5rem;\n    }\n    .sm\\:p-7 {\n      padding: 2rem;\n    }\n    .sm\\:p-8 {\n      padding: 2.5rem;\n    }\n    .sm\\:p-9 {\n      padding: 3rem;\n    }\n    .sm\\:px-0 {\n      padding-inline: 0;\n    }\n    .sm\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .sm\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .sm\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .sm\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .sm\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .sm\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .sm\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .sm\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .sm\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .sm\\:py-0 {\n      padding-block: 0;\n    }\n    .sm\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .sm\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .sm\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .sm\\:py-4 {\n      padding-block: 1rem;\n    }\n    .sm\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .sm\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .sm\\:py-7 {\n      padding-block: 2rem;\n    }\n    .sm\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .sm\\:py-9 {\n      padding-block: 3rem;\n    }\n    .sm\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .sm\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .sm\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .sm\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .sm\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .sm\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .sm\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .sm\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .sm\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .sm\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .sm\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .sm\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .sm\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .sm\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .sm\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .sm\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .sm\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .sm\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .sm\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .sm\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .sm\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .sm\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .sm\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .sm\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .sm\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .sm\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .sm\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .sm\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .sm\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .sm\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .sm\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .sm\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .sm\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .sm\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .sm\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .sm\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .sm\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .sm\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .sm\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .sm\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .sm\\:gap-0 {\n      gap: 0;\n    }\n    .sm\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .sm\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .sm\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .sm\\:gap-4 {\n      gap: 1rem;\n    }\n    .sm\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .sm\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .sm\\:gap-7 {\n      gap: 2rem;\n    }\n    .sm\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .sm\\:gap-9 {\n      gap: 3rem;\n    }\n    .sm\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .sm\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .sm\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .sm\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .sm\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .sm\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .sm\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .sm\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .sm\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .sm\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .sm\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .sm\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .sm\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .sm\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .sm\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .sm\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .sm\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .sm\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .sm\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .sm\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.sm\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.sm\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.sm\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.sm\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.sm\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.sm\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.sm\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.sm\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.sm\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.sm\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.sm\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.sm\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.sm\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.sm\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.sm\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.sm\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.sm\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.sm\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.sm\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.sm\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.sm\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.sm\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .sm\\:text-start {\n      text-align: start;\n    }\n    .sm\\:text-end {\n      text-align: end;\n    }\n    .sm\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:float-start {\n      float: inline-start;\n    }\n    .md\\:float-end {\n      float: inline-end;\n    }\n    .md\\:float-none {\n      float: none;\n    }\n    .md\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .md\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .md\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .md\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .md\\:object-fit-none {\n      object-fit: none;\n    }\n    .md\\:d-inline {\n      display: inline;\n    }\n    .md\\:d-inline-block {\n      display: inline-block;\n    }\n    .md\\:d-block {\n      display: block;\n    }\n    .md\\:d-grid {\n      display: grid;\n    }\n    .md\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .md\\:d-table {\n      display: table;\n    }\n    .md\\:d-table-row {\n      display: table-row;\n    }\n    .md\\:d-table-cell {\n      display: table-cell;\n    }\n    .md\\:d-flex {\n      display: flex;\n    }\n    .md\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .md\\:d-contents {\n      display: contents;\n    }\n    .md\\:d-flow-root {\n      display: flow-root;\n    }\n    .md\\:d-none {\n      display: none;\n    }\n    .md\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .md\\:flex-row {\n      flex-direction: row;\n    }\n    .md\\:flex-column {\n      flex-direction: column;\n    }\n    .md\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .md\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .md\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .md\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .md\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .md\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .md\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .md\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .md\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .md\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .md\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .md\\:justify-content-center {\n      justify-content: center;\n    }\n    .md\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .md\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .md\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .md\\:justify-items-start {\n      justify-items: start;\n    }\n    .md\\:justify-items-end {\n      justify-items: end;\n    }\n    .md\\:justify-items-center {\n      justify-items: center;\n    }\n    .md\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .md\\:justify-self-start {\n      justify-self: start;\n    }\n    .md\\:justify-self-end {\n      justify-self: end;\n    }\n    .md\\:justify-self-center {\n      justify-self: center;\n    }\n    .md\\:align-items-start {\n      align-items: flex-start;\n    }\n    .md\\:align-items-end {\n      align-items: flex-end;\n    }\n    .md\\:align-items-center {\n      align-items: center;\n    }\n    .md\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .md\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .md\\:align-content-start {\n      align-content: flex-start;\n    }\n    .md\\:align-content-end {\n      align-content: flex-end;\n    }\n    .md\\:align-content-center {\n      align-content: center;\n    }\n    .md\\:align-content-between {\n      align-content: space-between;\n    }\n    .md\\:align-content-around {\n      align-content: space-around;\n    }\n    .md\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .md\\:align-self-auto {\n      align-self: auto;\n    }\n    .md\\:align-self-start {\n      align-self: flex-start;\n    }\n    .md\\:align-self-end {\n      align-self: flex-end;\n    }\n    .md\\:align-self-center {\n      align-self: center;\n    }\n    .md\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .md\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .md\\:place-items-start {\n      place-items: start;\n    }\n    .md\\:place-items-end {\n      place-items: end;\n    }\n    .md\\:place-items-center {\n      place-items: center;\n    }\n    .md\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .md\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .md\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .md\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .md\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .md\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .md\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .md\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .md\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .md\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .md\\:order-first {\n      order: -1;\n    }\n    .md\\:order-0 {\n      order: 0;\n    }\n    .md\\:order-1 {\n      order: 1;\n    }\n    .md\\:order-2 {\n      order: 2;\n    }\n    .md\\:order-3 {\n      order: 3;\n    }\n    .md\\:order-4 {\n      order: 4;\n    }\n    .md\\:order-5 {\n      order: 5;\n    }\n    .md\\:order-last {\n      order: 6;\n    }\n    .md\\:m-0 {\n      margin: 0;\n    }\n    .md\\:m-1 {\n      margin: 0.25rem;\n    }\n    .md\\:m-2 {\n      margin: 0.5rem;\n    }\n    .md\\:m-3 {\n      margin: 0.75rem;\n    }\n    .md\\:m-4 {\n      margin: 1rem;\n    }\n    .md\\:m-5 {\n      margin: 1.25rem;\n    }\n    .md\\:m-6 {\n      margin: 1.5rem;\n    }\n    .md\\:m-7 {\n      margin: 2rem;\n    }\n    .md\\:m-8 {\n      margin: 2.5rem;\n    }\n    .md\\:m-9 {\n      margin: 3rem;\n    }\n    .md\\:m-auto {\n      margin: auto;\n    }\n    .md\\:mx-0 {\n      margin-inline: 0;\n    }\n    .md\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .md\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .md\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .md\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .md\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .md\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .md\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .md\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .md\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .md\\:mx-auto {\n      margin-inline: auto;\n    }\n    .md\\:my-0 {\n      margin-block: 0;\n    }\n    .md\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .md\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .md\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .md\\:my-4 {\n      margin-block: 1rem;\n    }\n    .md\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .md\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .md\\:my-7 {\n      margin-block: 2rem;\n    }\n    .md\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .md\\:my-9 {\n      margin-block: 3rem;\n    }\n    .md\\:my-auto {\n      margin-block: auto;\n    }\n    .md\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .md\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .md\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .md\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .md\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .md\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .md\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .md\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .md\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .md\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .md\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .md\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .md\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .md\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .md\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .md\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .md\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .md\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .md\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .md\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .md\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .md\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .md\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .md\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .md\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .md\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .md\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .md\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .md\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .md\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .md\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .md\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .md\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .md\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .md\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .md\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .md\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .md\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .md\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .md\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .md\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .md\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .md\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .md\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .md\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .md\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .md\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .md\\:p-0 {\n      padding: 0;\n    }\n    .md\\:p-1 {\n      padding: 0.25rem;\n    }\n    .md\\:p-2 {\n      padding: 0.5rem;\n    }\n    .md\\:p-3 {\n      padding: 0.75rem;\n    }\n    .md\\:p-4 {\n      padding: 1rem;\n    }\n    .md\\:p-5 {\n      padding: 1.25rem;\n    }\n    .md\\:p-6 {\n      padding: 1.5rem;\n    }\n    .md\\:p-7 {\n      padding: 2rem;\n    }\n    .md\\:p-8 {\n      padding: 2.5rem;\n    }\n    .md\\:p-9 {\n      padding: 3rem;\n    }\n    .md\\:px-0 {\n      padding-inline: 0;\n    }\n    .md\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .md\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .md\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .md\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .md\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .md\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .md\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .md\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .md\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .md\\:py-0 {\n      padding-block: 0;\n    }\n    .md\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .md\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .md\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .md\\:py-4 {\n      padding-block: 1rem;\n    }\n    .md\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .md\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .md\\:py-7 {\n      padding-block: 2rem;\n    }\n    .md\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .md\\:py-9 {\n      padding-block: 3rem;\n    }\n    .md\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .md\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .md\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .md\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .md\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .md\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .md\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .md\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .md\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .md\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .md\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .md\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .md\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .md\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .md\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .md\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .md\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .md\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .md\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .md\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .md\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .md\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .md\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .md\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .md\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .md\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .md\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .md\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .md\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .md\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .md\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .md\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .md\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .md\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .md\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .md\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .md\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .md\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .md\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .md\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .md\\:gap-0 {\n      gap: 0;\n    }\n    .md\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .md\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .md\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .md\\:gap-4 {\n      gap: 1rem;\n    }\n    .md\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .md\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .md\\:gap-7 {\n      gap: 2rem;\n    }\n    .md\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .md\\:gap-9 {\n      gap: 3rem;\n    }\n    .md\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .md\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .md\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .md\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .md\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .md\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .md\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .md\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .md\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .md\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .md\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .md\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .md\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .md\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .md\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .md\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .md\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .md\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .md\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .md\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.md\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.md\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.md\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.md\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.md\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.md\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.md\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.md\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.md\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.md\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.md\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.md\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.md\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.md\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.md\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.md\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.md\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.md\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.md\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.md\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.md\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.md\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .md\\:text-start {\n      text-align: start;\n    }\n    .md\\:text-end {\n      text-align: end;\n    }\n    .md\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:float-start {\n      float: inline-start;\n    }\n    .lg\\:float-end {\n      float: inline-end;\n    }\n    .lg\\:float-none {\n      float: none;\n    }\n    .lg\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .lg\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .lg\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .lg\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .lg\\:object-fit-none {\n      object-fit: none;\n    }\n    .lg\\:d-inline {\n      display: inline;\n    }\n    .lg\\:d-inline-block {\n      display: inline-block;\n    }\n    .lg\\:d-block {\n      display: block;\n    }\n    .lg\\:d-grid {\n      display: grid;\n    }\n    .lg\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .lg\\:d-table {\n      display: table;\n    }\n    .lg\\:d-table-row {\n      display: table-row;\n    }\n    .lg\\:d-table-cell {\n      display: table-cell;\n    }\n    .lg\\:d-flex {\n      display: flex;\n    }\n    .lg\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .lg\\:d-contents {\n      display: contents;\n    }\n    .lg\\:d-flow-root {\n      display: flow-root;\n    }\n    .lg\\:d-none {\n      display: none;\n    }\n    .lg\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .lg\\:flex-row {\n      flex-direction: row;\n    }\n    .lg\\:flex-column {\n      flex-direction: column;\n    }\n    .lg\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .lg\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .lg\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .lg\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .lg\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .lg\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .lg\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .lg\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .lg\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .lg\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .lg\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .lg\\:justify-content-center {\n      justify-content: center;\n    }\n    .lg\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .lg\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .lg\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .lg\\:justify-items-start {\n      justify-items: start;\n    }\n    .lg\\:justify-items-end {\n      justify-items: end;\n    }\n    .lg\\:justify-items-center {\n      justify-items: center;\n    }\n    .lg\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .lg\\:justify-self-start {\n      justify-self: start;\n    }\n    .lg\\:justify-self-end {\n      justify-self: end;\n    }\n    .lg\\:justify-self-center {\n      justify-self: center;\n    }\n    .lg\\:align-items-start {\n      align-items: flex-start;\n    }\n    .lg\\:align-items-end {\n      align-items: flex-end;\n    }\n    .lg\\:align-items-center {\n      align-items: center;\n    }\n    .lg\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .lg\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .lg\\:align-content-start {\n      align-content: flex-start;\n    }\n    .lg\\:align-content-end {\n      align-content: flex-end;\n    }\n    .lg\\:align-content-center {\n      align-content: center;\n    }\n    .lg\\:align-content-between {\n      align-content: space-between;\n    }\n    .lg\\:align-content-around {\n      align-content: space-around;\n    }\n    .lg\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .lg\\:align-self-auto {\n      align-self: auto;\n    }\n    .lg\\:align-self-start {\n      align-self: flex-start;\n    }\n    .lg\\:align-self-end {\n      align-self: flex-end;\n    }\n    .lg\\:align-self-center {\n      align-self: center;\n    }\n    .lg\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .lg\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .lg\\:place-items-start {\n      place-items: start;\n    }\n    .lg\\:place-items-end {\n      place-items: end;\n    }\n    .lg\\:place-items-center {\n      place-items: center;\n    }\n    .lg\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .lg\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .lg\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .lg\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .lg\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .lg\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .lg\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .lg\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .lg\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .lg\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .lg\\:order-first {\n      order: -1;\n    }\n    .lg\\:order-0 {\n      order: 0;\n    }\n    .lg\\:order-1 {\n      order: 1;\n    }\n    .lg\\:order-2 {\n      order: 2;\n    }\n    .lg\\:order-3 {\n      order: 3;\n    }\n    .lg\\:order-4 {\n      order: 4;\n    }\n    .lg\\:order-5 {\n      order: 5;\n    }\n    .lg\\:order-last {\n      order: 6;\n    }\n    .lg\\:m-0 {\n      margin: 0;\n    }\n    .lg\\:m-1 {\n      margin: 0.25rem;\n    }\n    .lg\\:m-2 {\n      margin: 0.5rem;\n    }\n    .lg\\:m-3 {\n      margin: 0.75rem;\n    }\n    .lg\\:m-4 {\n      margin: 1rem;\n    }\n    .lg\\:m-5 {\n      margin: 1.25rem;\n    }\n    .lg\\:m-6 {\n      margin: 1.5rem;\n    }\n    .lg\\:m-7 {\n      margin: 2rem;\n    }\n    .lg\\:m-8 {\n      margin: 2.5rem;\n    }\n    .lg\\:m-9 {\n      margin: 3rem;\n    }\n    .lg\\:m-auto {\n      margin: auto;\n    }\n    .lg\\:mx-0 {\n      margin-inline: 0;\n    }\n    .lg\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .lg\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .lg\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .lg\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .lg\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .lg\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .lg\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .lg\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .lg\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .lg\\:mx-auto {\n      margin-inline: auto;\n    }\n    .lg\\:my-0 {\n      margin-block: 0;\n    }\n    .lg\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .lg\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .lg\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .lg\\:my-4 {\n      margin-block: 1rem;\n    }\n    .lg\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .lg\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .lg\\:my-7 {\n      margin-block: 2rem;\n    }\n    .lg\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .lg\\:my-9 {\n      margin-block: 3rem;\n    }\n    .lg\\:my-auto {\n      margin-block: auto;\n    }\n    .lg\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .lg\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .lg\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .lg\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .lg\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .lg\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .lg\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .lg\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .lg\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .lg\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .lg\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .lg\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .lg\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .lg\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .lg\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .lg\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .lg\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .lg\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .lg\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .lg\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .lg\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .lg\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .lg\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .lg\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .lg\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .lg\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .lg\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .lg\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .lg\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .lg\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .lg\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .lg\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .lg\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .lg\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .lg\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .lg\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .lg\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .lg\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .lg\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .lg\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .lg\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .lg\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .lg\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .lg\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .lg\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .lg\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .lg\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .lg\\:p-0 {\n      padding: 0;\n    }\n    .lg\\:p-1 {\n      padding: 0.25rem;\n    }\n    .lg\\:p-2 {\n      padding: 0.5rem;\n    }\n    .lg\\:p-3 {\n      padding: 0.75rem;\n    }\n    .lg\\:p-4 {\n      padding: 1rem;\n    }\n    .lg\\:p-5 {\n      padding: 1.25rem;\n    }\n    .lg\\:p-6 {\n      padding: 1.5rem;\n    }\n    .lg\\:p-7 {\n      padding: 2rem;\n    }\n    .lg\\:p-8 {\n      padding: 2.5rem;\n    }\n    .lg\\:p-9 {\n      padding: 3rem;\n    }\n    .lg\\:px-0 {\n      padding-inline: 0;\n    }\n    .lg\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .lg\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .lg\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .lg\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .lg\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .lg\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .lg\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .lg\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .lg\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .lg\\:py-0 {\n      padding-block: 0;\n    }\n    .lg\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .lg\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .lg\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .lg\\:py-4 {\n      padding-block: 1rem;\n    }\n    .lg\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .lg\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .lg\\:py-7 {\n      padding-block: 2rem;\n    }\n    .lg\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .lg\\:py-9 {\n      padding-block: 3rem;\n    }\n    .lg\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .lg\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .lg\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .lg\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .lg\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .lg\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .lg\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .lg\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .lg\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .lg\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .lg\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .lg\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .lg\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .lg\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .lg\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .lg\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .lg\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .lg\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .lg\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .lg\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .lg\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .lg\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .lg\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .lg\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .lg\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .lg\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .lg\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .lg\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .lg\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .lg\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .lg\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .lg\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .lg\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .lg\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .lg\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .lg\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .lg\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .lg\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .lg\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .lg\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .lg\\:gap-0 {\n      gap: 0;\n    }\n    .lg\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .lg\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .lg\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .lg\\:gap-4 {\n      gap: 1rem;\n    }\n    .lg\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .lg\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .lg\\:gap-7 {\n      gap: 2rem;\n    }\n    .lg\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .lg\\:gap-9 {\n      gap: 3rem;\n    }\n    .lg\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .lg\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .lg\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .lg\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .lg\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .lg\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .lg\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .lg\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .lg\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .lg\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .lg\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .lg\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .lg\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .lg\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .lg\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .lg\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .lg\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .lg\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .lg\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .lg\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.lg\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.lg\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.lg\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.lg\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.lg\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.lg\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.lg\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.lg\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.lg\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.lg\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.lg\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.lg\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.lg\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.lg\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.lg\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.lg\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.lg\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.lg\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.lg\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.lg\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.lg\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.lg\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .lg\\:text-start {\n      text-align: start;\n    }\n    .lg\\:text-end {\n      text-align: end;\n    }\n    .lg\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:float-start {\n      float: inline-start;\n    }\n    .xl\\:float-end {\n      float: inline-end;\n    }\n    .xl\\:float-none {\n      float: none;\n    }\n    .xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .xl\\:d-inline {\n      display: inline;\n    }\n    .xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .xl\\:d-block {\n      display: block;\n    }\n    .xl\\:d-grid {\n      display: grid;\n    }\n    .xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .xl\\:d-table {\n      display: table;\n    }\n    .xl\\:d-table-row {\n      display: table-row;\n    }\n    .xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .xl\\:d-flex {\n      display: flex;\n    }\n    .xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .xl\\:d-contents {\n      display: contents;\n    }\n    .xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .xl\\:d-none {\n      display: none;\n    }\n    .xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .xl\\:flex-row {\n      flex-direction: row;\n    }\n    .xl\\:flex-column {\n      flex-direction: column;\n    }\n    .xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .xl\\:align-items-center {\n      align-items: center;\n    }\n    .xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .xl\\:align-content-center {\n      align-content: center;\n    }\n    .xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .xl\\:align-self-center {\n      align-self: center;\n    }\n    .xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .xl\\:place-items-start {\n      place-items: start;\n    }\n    .xl\\:place-items-end {\n      place-items: end;\n    }\n    .xl\\:place-items-center {\n      place-items: center;\n    }\n    .xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .xl\\:order-first {\n      order: -1;\n    }\n    .xl\\:order-0 {\n      order: 0;\n    }\n    .xl\\:order-1 {\n      order: 1;\n    }\n    .xl\\:order-2 {\n      order: 2;\n    }\n    .xl\\:order-3 {\n      order: 3;\n    }\n    .xl\\:order-4 {\n      order: 4;\n    }\n    .xl\\:order-5 {\n      order: 5;\n    }\n    .xl\\:order-last {\n      order: 6;\n    }\n    .xl\\:m-0 {\n      margin: 0;\n    }\n    .xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .xl\\:m-4 {\n      margin: 1rem;\n    }\n    .xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .xl\\:m-7 {\n      margin: 2rem;\n    }\n    .xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .xl\\:m-9 {\n      margin: 3rem;\n    }\n    .xl\\:m-auto {\n      margin: auto;\n    }\n    .xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .xl\\:my-0 {\n      margin-block: 0;\n    }\n    .xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .xl\\:my-auto {\n      margin-block: auto;\n    }\n    .xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .xl\\:p-0 {\n      padding: 0;\n    }\n    .xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .xl\\:p-4 {\n      padding: 1rem;\n    }\n    .xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .xl\\:p-7 {\n      padding: 2rem;\n    }\n    .xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .xl\\:p-9 {\n      padding: 3rem;\n    }\n    .xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .xl\\:py-0 {\n      padding-block: 0;\n    }\n    .xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .xl\\:gap-0 {\n      gap: 0;\n    }\n    .xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .xl\\:text-start {\n      text-align: start;\n    }\n    .xl\\:text-end {\n      text-align: end;\n    }\n    .xl\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:float-start {\n      float: inline-start;\n    }\n    .\\32 xl\\:float-end {\n      float: inline-end;\n    }\n    .\\32 xl\\:float-none {\n      float: none;\n    }\n    .\\32 xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .\\32 xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .\\32 xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .\\32 xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .\\32 xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .\\32 xl\\:d-inline {\n      display: inline;\n    }\n    .\\32 xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .\\32 xl\\:d-block {\n      display: block;\n    }\n    .\\32 xl\\:d-grid {\n      display: grid;\n    }\n    .\\32 xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .\\32 xl\\:d-table {\n      display: table;\n    }\n    .\\32 xl\\:d-table-row {\n      display: table-row;\n    }\n    .\\32 xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .\\32 xl\\:d-flex {\n      display: flex;\n    }\n    .\\32 xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .\\32 xl\\:d-contents {\n      display: contents;\n    }\n    .\\32 xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .\\32 xl\\:d-none {\n      display: none;\n    }\n    .\\32 xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .\\32 xl\\:flex-row {\n      flex-direction: row;\n    }\n    .\\32 xl\\:flex-column {\n      flex-direction: column;\n    }\n    .\\32 xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .\\32 xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .\\32 xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .\\32 xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .\\32 xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .\\32 xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .\\32 xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .\\32 xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .\\32 xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .\\32 xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .\\32 xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .\\32 xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .\\32 xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .\\32 xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .\\32 xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .\\32 xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .\\32 xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .\\32 xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .\\32 xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .\\32 xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .\\32 xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .\\32 xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .\\32 xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .\\32 xl\\:align-items-center {\n      align-items: center;\n    }\n    .\\32 xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .\\32 xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .\\32 xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .\\32 xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .\\32 xl\\:align-content-center {\n      align-content: center;\n    }\n    .\\32 xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .\\32 xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .\\32 xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .\\32 xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .\\32 xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .\\32 xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .\\32 xl\\:align-self-center {\n      align-self: center;\n    }\n    .\\32 xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .\\32 xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .\\32 xl\\:place-items-start {\n      place-items: start;\n    }\n    .\\32 xl\\:place-items-end {\n      place-items: end;\n    }\n    .\\32 xl\\:place-items-center {\n      place-items: center;\n    }\n    .\\32 xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .\\32 xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .\\32 xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .\\32 xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .\\32 xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .\\32 xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .\\32 xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .\\32 xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .\\32 xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .\\32 xl\\:order-first {\n      order: -1;\n    }\n    .\\32 xl\\:order-0 {\n      order: 0;\n    }\n    .\\32 xl\\:order-1 {\n      order: 1;\n    }\n    .\\32 xl\\:order-2 {\n      order: 2;\n    }\n    .\\32 xl\\:order-3 {\n      order: 3;\n    }\n    .\\32 xl\\:order-4 {\n      order: 4;\n    }\n    .\\32 xl\\:order-5 {\n      order: 5;\n    }\n    .\\32 xl\\:order-last {\n      order: 6;\n    }\n    .\\32 xl\\:m-0 {\n      margin: 0;\n    }\n    .\\32 xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .\\32 xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .\\32 xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .\\32 xl\\:m-4 {\n      margin: 1rem;\n    }\n    .\\32 xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .\\32 xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .\\32 xl\\:m-7 {\n      margin: 2rem;\n    }\n    .\\32 xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .\\32 xl\\:m-9 {\n      margin: 3rem;\n    }\n    .\\32 xl\\:m-auto {\n      margin: auto;\n    }\n    .\\32 xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .\\32 xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .\\32 xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .\\32 xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .\\32 xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .\\32 xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .\\32 xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .\\32 xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .\\32 xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .\\32 xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .\\32 xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .\\32 xl\\:my-0 {\n      margin-block: 0;\n    }\n    .\\32 xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .\\32 xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .\\32 xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .\\32 xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .\\32 xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .\\32 xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .\\32 xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .\\32 xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .\\32 xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .\\32 xl\\:my-auto {\n      margin-block: auto;\n    }\n    .\\32 xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .\\32 xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .\\32 xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .\\32 xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .\\32 xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .\\32 xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .\\32 xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .\\32 xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .\\32 xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .\\32 xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .\\32 xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .\\32 xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .\\32 xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .\\32 xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .\\32 xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .\\32 xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .\\32 xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .\\32 xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .\\32 xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .\\32 xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .\\32 xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .\\32 xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .\\32 xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .\\32 xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .\\32 xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .\\32 xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .\\32 xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .\\32 xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .\\32 xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .\\32 xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .\\32 xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .\\32 xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .\\32 xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .\\32 xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .\\32 xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .\\32 xl\\:p-0 {\n      padding: 0;\n    }\n    .\\32 xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .\\32 xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .\\32 xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .\\32 xl\\:p-4 {\n      padding: 1rem;\n    }\n    .\\32 xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .\\32 xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .\\32 xl\\:p-7 {\n      padding: 2rem;\n    }\n    .\\32 xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .\\32 xl\\:p-9 {\n      padding: 3rem;\n    }\n    .\\32 xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .\\32 xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .\\32 xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .\\32 xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .\\32 xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .\\32 xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .\\32 xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .\\32 xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .\\32 xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .\\32 xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .\\32 xl\\:py-0 {\n      padding-block: 0;\n    }\n    .\\32 xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .\\32 xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .\\32 xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .\\32 xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .\\32 xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .\\32 xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .\\32 xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .\\32 xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .\\32 xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .\\32 xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .\\32 xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .\\32 xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .\\32 xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .\\32 xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .\\32 xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .\\32 xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .\\32 xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .\\32 xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .\\32 xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .\\32 xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .\\32 xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .\\32 xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .\\32 xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .\\32 xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .\\32 xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .\\32 xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .\\32 xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .\\32 xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .\\32 xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .\\32 xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .\\32 xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .\\32 xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .\\32 xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .\\32 xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .\\32 xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .\\32 xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .\\32 xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .\\32 xl\\:gap-0 {\n      gap: 0;\n    }\n    .\\32 xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .\\32 xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .\\32 xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .\\32 xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .\\32 xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .\\32 xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .\\32 xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .\\32 xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .\\32 xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .\\32 xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .\\32 xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .\\32 xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .\\32 xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .\\32 xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .\\32 xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .\\32 xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .\\32 xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .\\32 xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .\\32 xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .\\32 xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .\\32 xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .\\32 xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .\\32 xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .\\32 xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .\\32 xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .\\32 xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .\\32 xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .\\32 xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .\\32 xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.\\32 xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.\\32 xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.\\32 xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.\\32 xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.\\32 xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.\\32 xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .\\32 xl\\:text-start {\n      text-align: start;\n    }\n    .\\32 xl\\:text-end {\n      text-align: end;\n    }\n    .\\32 xl\\:text-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-fg)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', monospace;\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(var(--gray-200), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow-xs: 0 .0625rem .1875rem rgb(0 0 0 / 7.5%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--radius-5),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--radius-5),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--radius-5),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--radius-7),\n    // scss-docs-end root-form-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n// Generate spacer tokens\n// scss-docs-start root-spacer-loop\n@each $key, $value in $spacers {\n  $root-tokens: map.set($root-tokens, --spacer-#{$key}, $value);\n}\n// scss-docs-end root-spacer-loop\n\n// Generate radius tokens\n// scss-docs-start root-radius-loop\n@each $key, $value in $radii {\n  $root-tokens: map.set($root-tokens, --radius-#{$key}, $value);\n}\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: map.set($root-tokens, --radius-pill, 50rem);\n// scss-docs-end root-radius-loop\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n  // Always reserve the viewport scrollbar gutter so layout doesn't shift\n  // when overflow: hidden is applied (e.g. when a dialog opens on Windows).\n  scrollbar-gutter: stable;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--radius-5),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Reset iframe color-scheme\n  //\n  // If the color scheme of an iframe differs from parent document, iframe gets\n  // an opaque canvas background appropriate (resulting in a white background\n  // on the iframe when in a page with a dark color scheme).\n  iframe {\n    color-scheme: light dark;\n    border: 0;\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: transparent; // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: var(--font-size-3xl);\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: var(--font-size-2xl);\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: var(--font-size-xl);\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: var(--font-size-lg);\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: var(--font-size-md);\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: var(--font-size-sm);\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-fg-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href], [class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"], [type=\"datetime-local\"], [type=\"month\"], [type=\"week\"], [type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-meridiem-field, // WebKit\n  ::-webkit-datetime-edit-ampm-field, // Chromium\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button,\n  ::-webkit-outer-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            true !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        false !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer * .75,\n  4: $spacer,\n  5: $spacer * 1.25,\n  6: $spacer * 1.5,\n  7: $spacer * 2,\n  8: $spacer * 2.5,\n  9: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: $spacer * 2,\n  3: $spacer * 3,\n  4: $spacer * 4,\n  5: $spacer * 5,\n  6: $spacer * 6,\n  7: $spacer * 7,\n  8: $spacer * 8,\n  9: $spacer * 9,\n  10: $spacer * 10,\n  11: $spacer * 11,\n  12: $spacer * 12,\n) !default;\n\n$radius: .5rem !default;\n$radii: (\n  0: 0,\n  1: $radius * .25,\n  2: $radius * .375,\n  3: $radius * .5,\n  4: $radius * .75,\n  5: $radius,\n  6: $radius * 1.25,\n  7: $radius * 1.5,\n  8: $radius * 2,\n  9: $radius * 3,\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      var(--spacer-2) !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n// $zindex-drawer-backdrop:         1040 !default;\n$zindex-drawer:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--radius-5), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/lists\" as *;\n@use \"../mixins/tokens\" as *;\n\n$blockquote-tokens: () !default;\n\n// scss-docs-start blockquote-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$blockquote-tokens: defaults(\n  (\n    --blockquote-gap: calc(var(--spacer) / 2),\n    --blockquote-padding-x: var(--spacer),\n    --blockquote-margin-y: 1rem,\n    --blockquote-font-size: var(--font-size-md),\n    --blockquote-border-width: .25rem,\n    --blockquote-border-color: var(--border-color),\n    --blockquote-footer-font-size: var(--font-size-sm),\n    --blockquote-footer-color: var(--fg-3),\n  ),\n  $blockquote-tokens\n);\n// scss-docs-end blockquote-tokens\n\n@layer content {\n  //\n  // Lists\n  //\n\n  .list-unstyled {\n    @include list-unstyled();\n  }\n\n  // Inline turns list items into inline-block\n  .list-inline {\n    @include list-unstyled();\n  }\n  .list-inline-item {\n    display: inline-block;\n\n    &:not(:last-child) {\n      margin-inline-end: var(--list-inline-padding, var(--spacer) / 2);\n    }\n  }\n\n  //\n  // Misc\n  //\n\n  // Builds on `abbr`\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n\n  // Blockquotes\n  .blockquote {\n    @include tokens($blockquote-tokens);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n\n    > * {\n      margin-bottom: 0;\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  figure.blockquote {\n    blockquote {\n      margin-bottom: 0;\n    }\n  }\n\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n\n    &::before {\n      content: \"\\2014\\00A0\"; // em dash, nbsp\n    }\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-inline-start: 0;\n  list-style-type: \"\";\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$table-tokens: () !default;\n\n// scss-docs-start table-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$table-tokens: defaults(\n  (\n    --table-cell-padding-y: .5rem,\n    --table-cell-padding-x: .5rem,\n    --table-cell-vertical-align: top,\n    --table-color: var(--fg-body),\n    --table-bg: var(--bg-body),\n    --table-accent-bg: transparent,\n    --table-border-width: var(--border-width),\n    --table-border-color: var(--border-color),\n    --table-group-separator-color: currentcolor,\n    --table-striped-color: var(--table-color),\n    --table-striped-bg-factor: 5%,\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent),\n    --table-active-color: var(--table-color),\n    --table-active-bg-factor: 10%,\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent),\n    --table-hover-color: var(--table-color),\n    --table-hover-bg-factor: 7.5%,\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent),\n  ),\n  $table-tokens\n);\n// scss-docs-end table-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n//\n// Basic Bootstrap table\n//\n\n@layer content {\n  .table {\n    @include tokens($table-tokens);\n\n    // Reset needed for nesting tables\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    // End of reset\n\n    width: 100%;\n    margin-bottom: var(--spacer);\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n\n    // Target th & td\n    // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n    // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n    // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n      // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb\n      color: var(--table-color-state, var(--table-color-type, var(--theme-fg, var(--table-color))));\n      background-color: var(--theme-bg-subtle, var(--table-bg));\n      border-block-end-width: var(--table-border-width);\n      box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n    }\n\n    > tbody {\n      vertical-align: inherit;\n    }\n\n    > thead {\n      vertical-align: bottom;\n    }\n  }\n\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n\n  //\n  // Change placement of captions with a class\n  //\n\n  .caption-top {\n    caption-side: top;\n  }\n\n  //\n  // Condensed table w/ half padding\n  //\n\n  .table-sm {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      --table-cell-padding-y: .25rem;\n      --table-cell-padding-x: .25rem;\n    }\n  }\n\n  // Border versions\n  //\n  // Add or remove borders all around the table and between all the columns.\n  //\n  // When borders are added on all sides of the cells, the corners can render odd when\n  // these borders do not have the same color or if they are semi-transparent.\n  // Therefore we add top and border bottoms to the `tr`s and left and right borders\n  // to the `td`s or `th`s\n\n  .table-bordered {\n    > :not(caption) > * {\n      border-width: var(--table-border-width) 0;\n\n      // stylelint-disable-next-line selector-max-universal\n      > * {\n        border-width: 0 var(--table-border-width);\n      }\n    }\n  }\n\n  .table-borderless {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      border-block-end-width: 0;\n    }\n\n    > :not(:first-child) {\n      border-block-start-width: 0;\n    }\n  }\n\n  // Zebra-striping\n  //\n  // Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n  // For rows\n  .table-striped {\n    > tbody > tr:nth-of-type(#{$table-striped-order}) > * {\n      --table-color-type: var(--theme-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // For columns\n  .table-striped-columns {\n    > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {\n      --table-color-type: var(--theme-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // Active table\n  //\n  // The `.table-active` class can be added to highlight rows or cells\n\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n\n  // Hover effect\n  //\n  // Placed here since it has to come after the potential zebra striping\n\n  .table-hover {\n    > tbody > tr:hover > * {\n      --table-color-state: var(--theme-fg, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate `.table-responsive` classes that act as container query contexts\n  // and enable horizontal scrolling when table content overflows.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    .#{$prefix}table-responsive {\n      container-type: inline-size;\n\n      @include media-breakpoint-down($breakpoint) {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n\n  // Stacked tables\n  //\n  // Generate `.table-stacked` classes that convert table rows into stacked\n  // blocks using container queries. Requires a `.table-responsive` ancestor\n  // and `data-cell` attributes on `<td>` elements for column labels.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include container-breakpoint-down($breakpoint) {\n      .#{$prefix}table-stacked {\n        > thead {\n          position: absolute;\n          width: 1px;\n          height: 1px;\n          padding: 0;\n          margin: -1px;\n          overflow: hidden;\n          clip: rect(0, 0, 0, 0);\n          white-space: nowrap;\n          border: 0;\n        }\n\n        > tbody > tr {\n          display: block;\n          padding-block: var(--table-cell-padding-y);\n\n          + tr {\n            border-block-start: var(--table-border-width) solid var(--table-border-color);\n          }\n\n          > td {\n            display: block;\n            padding: calc(var(--table-cell-padding-y) * .25) calc(var(--table-cell-padding-x) * 2);\n            border: 0;\n\n            &:first-child {\n              font-weight: var(--font-weight-bold);\n            }\n\n            // + td::before {\n            //   margin-block-start: .25rem;\n            // }\n\n            &[data-cell]:not(:first-child)::before {\n              display: block;\n              font-weight: var(--font-weight-semibold);\n              content: attr(data-cell);\n            }\n          }\n\n          > td:not(:first-child) + td::before {\n            margin-block-start: .25rem;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:string\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Escape a name for use at the start of a CSS identifier.\n// Leading digits are hex-escaped (e.g., 2xl becomes \\32 xl).\n@function css-escape-ident($name) {\n  $name-str: \"#{$name}\";\n  $digits: \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\";\n  $first: string.slice($name-str, 1, 1);\n\n  @if list.index($digits, $first) {\n    @return \"\\\\3#{$first} #{string.slice($name-str, 2)}\";\n  }\n\n  @return $name-str;\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name\n// with an escaped colon as a Tailwind-style prefix for responsive class names.\n// Leading digits are CSS-escaped (e.g., 2xl becomes \\32 xl) for valid identifiers.\n//\n//    >> breakpoint-prefix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-prefix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"sm\\:\"\n//    >> breakpoint-prefix(2xl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\\32 xl\\:\"\n@function breakpoint-prefix($name, $breakpoints: $breakpoints) {\n  @if breakpoint-min($name, $breakpoints) == null {\n    @return \"\";\n  }\n\n  @return \"#{css-escape-ident($name)}\\\\:\";\n}\n\n// Iterate all breakpoints and provide the current name and prefix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n    @content($breakpoint, $prefix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next prefix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $prefix: breakpoint-prefix($next, $breakpoints);\n    @content($breakpoint, $next, $prefix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $prefix) {\n    @content($breakpoint, $next, $prefix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/image\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/tokens\" as *;\n\n$thumbnail-tokens: () !default;\n\n// scss-docs-start thumbnail-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$thumbnail-tokens: defaults(\n  (\n    --thumbnail-padding: .25rem,\n    --thumbnail-bg: var(--bg-body),\n    --thumbnail-border-width: var(--border-width),\n    --thumbnail-border-color: var(--border-color),\n    --thumbnail-border-radius: var(--radius-5),\n    --thumbnail-box-shadow: var(--box-shadow-sm),\n  ),\n  $thumbnail-tokens\n);\n// scss-docs-end thumbnail-tokens\n\n$figure-tokens: () !default;\n\n// scss-docs-start figure-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$figure-tokens: defaults(\n  (\n    --figure-gap: calc(var(--spacer) * .5),\n    --figure-caption-font-size: var(--font-size-sm),\n    --figure-caption-color: var(--fg-3),\n  ),\n  $figure-tokens\n);\n// scss-docs-end figure-tokens\n\n@layer content {\n  // Responsive images (ensure images don't scale beyond their parents)\n  //\n  // This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n  // We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n  // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n  // which weren't expecting the images within themselves to be involuntarily resized.\n  // See also https://github.com/twbs/bootstrap/issues/18178\n  .img-fluid {\n    @include img-fluid();\n  }\n\n  .img-thumbnail {\n    @include tokens($thumbnail-tokens);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    @include border-radius(var(--thumbnail-border-radius));\n    @include box-shadow(var(--thumbnail-box-shadow));\n\n    // Keep them at most 100% wide\n    @include img-fluid();\n  }\n\n  .figure {\n    @include tokens($figure-tokens);\n    // Ensures the caption's text aligns with the image.\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n@mixin box-shadow($shadow...) {\n  @if $enable-shadows {\n    $result: ();\n    $has-single-value: false;\n    $single-value: null;\n\n    @each $value in $shadow {\n      @if $value != null {\n        @if $value == none or $value == initial or $value == inherit or $value == unset {\n          $has-single-value: true;\n          $single-value: $value;\n        } @else {\n          $result: list.append($result, $value, \"comma\");\n        }\n      }\n    }\n\n    @if $has-single-value {\n      box-shadow: $single-value;\n    } @else if (list.length($result) > 0) {\n      box-shadow: $result;\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$prose-tokens: () !default;\n\n// scss-docs-start prose-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$prose-tokens: defaults(\n  (\n    --content-font-size: 1rem,\n    --content-line-height: 1.5,\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height)),\n    --heading-color: light-dark(var(--gray-900), var(--white)),\n  ),\n  $prose-tokens\n);\n// scss-docs-end prose-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer content {\n  .prose {\n    @include tokens($prose-tokens);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: var(--content-line-height);\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n      // --content-gap: calc(var(--content-font-size) * var(--content-line-height));\n    }\n\n    :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n      margin-block: 0;\n    }\n\n    :where(ul, ol):not([class], :where(.not-prose, .not-prose *)) li:not(:last-child) {\n      margin-bottom: calc(var(--content-gap) / 4);\n    }\n\n    :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) / 4);\n    }\n\n    :where(hr):not(:where(.not-prose, .not-prose *)) {\n      margin: calc(var(--content-gap) * 1.5) 0;\n      border: 0;\n      border-block-start: var(--border-width) solid var(--hr-border-color);\n    }\n\n    :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) {\n      margin-top: 0;\n      margin-bottom: calc(var(--content-gap) / -2);\n      font-weight: 500;\n      line-height: 1.25;\n\n      code {\n        font-weight: 600;\n        color: inherit;\n      }\n    }\n\n    :where(h1, h2):not(:first-child, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .5);\n    }\n\n    :where(h1):not(:where(.not-prose, .not-prose *)) {\n      font-size: 2.25em;\n      line-height: 1.1;\n    }\n    :where(h2):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.75em;\n    }\n    :where(h3):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.5em;\n    }\n    :where(h4):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.25em;\n    }\n    :where(h5):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.125em;\n    }\n    :where(h6):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1em;\n    }\n\n    :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      color: var(--link-color);\n      text-decoration: underline;\n      text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n      text-underline-offset: 4px;\n      @include transition(.1s text-decoration-color ease-in-out);\n\n      &:hover {\n        text-decoration-color: var(--link-hover-color);\n      }\n    }\n\n    :where(img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n\n    :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n      padding-inline-start: calc(var(--content-gap) / 2);\n      margin: 0;\n      border-inline-start: 4px solid var(--border-color);\n    }\n\n    :where(table):not(:where(.not-prose, .not-prose *)) {\n      width: 100%;\n      border-spacing: 0;\n      border-collapse: collapse;\n    }\n\n    :where(table:not([class])):not(:where(.not-prose, .not-prose *)) {\n      td,\n      th {\n        padding: 6px 12px;\n        text-align: inherit;\n        border: 1px solid var(--border-color);\n      }\n    }\n\n    :where(dt):not(:where(.not-prose, .not-prose *)) {\n      font-weight: 500;\n    }\n\n    :where(video, img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .#{breakpoint-prefix($breakpoint, $breakpoints)}container {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .#{breakpoint-prefix($name, $breakpoints)}container {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      .#{$prefix}col {\n        flex: 1 0 0;\n      }\n\n      .#{$prefix}row-cols-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .#{$prefix}row-cols-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .#{$prefix}col-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}col-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($prefix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .#{$prefix}offset-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gx-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gy-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}g-col-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .#{$prefix}g-start-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n\n$form-label-tokens: () !default;\n\n// scss-docs-start form-label-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-label-tokens: defaults(\n  (\n    --label-margin-bottom: calc(var(--spacer) / 2),\n    --label-font-size: null,\n    --label-font-style: null,\n    --label-font-weight: null,\n    --label-color: null,\n  ),\n  $form-label-tokens\n);\n// scss-docs-end form-label-tokens\n\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\n    color: var(--label-color, var(--fg-body));\n  }\n\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n\n  // For use with horizontal and inline forms, when you need the label (or legend)\n  // text to align with the form controls.\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0; // Override the `<legend>` default\n  }\n\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-text-tokens: () !default;\n\n// scss-docs-start form-text-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-text-tokens: defaults(\n  (\n    --form-text-margin-top: .25rem,\n    --form-text-font-size: var(--font-size-sm),\n    --form-text-font-style: null,\n    --form-text-font-weight: null,\n    --form-text-color: var(--fg-2),\n  ),\n  $form-text-tokens\n);\n// scss-docs-end form-text-tokens\n\n@layer forms {\n  .form-text {\n    @include tokens($form-text-tokens);\n\n    // margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-control-tokens: () !default;\n\n// scss-docs-start form-control-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-tokens: defaults(\n  (\n    --control-min-height: var(--btn-input-min-height),\n    --control-padding-y: var(--btn-input-padding-y),\n    --control-padding-x: var(--btn-input-padding-x),\n    --control-font-size: var(--btn-input-font-size),\n    --control-line-height: var(--btn-input-line-height),\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--radius-5),\n    --control-box-shadow: var(--box-shadow-inset),\n    --control-action-bg: var(--bg-1),\n    --control-action-hover-bg: var(--bg-2),\n    --control-transition-property: \"border-color, box-shadow\",\n    --control-transition-timing: .15s ease-in-out,\n    --control-transition: var(--control-transition-property) var(--control-transition-timing),\n    --control-placeholder-color: var(--fg-3),\n    --control-disabled-color: var(--control-fg),\n    --control-disabled-bg: var(--bg-2),\n    --control-disabled-border-color: var(--control-border-color),\n    --control-select-bg: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#00000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n    --control-select-bg-position: right .75rem center,\n    --control-select-bg-size: 16px 12px,\n    --control-select-bg-dark: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n  ),\n  $form-control-tokens\n);\n// scss-docs-end form-control-tokens\n\n// scss-docs-start form-control-sizes\n$form-control-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $form-control-sizes\n);\n// scss-docs-end form-control-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .form-control {\n    @include tokens($form-control-tokens);\n\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n    @include box-shadow(var(--control-box-shadow));\n    @include transition(var(--control-transition));\n\n    // Customize the `:focus` state to imitate native WebKit styles.\n    &:focus-visible {\n      --focus-ring-offset: -1px;\n      @include focus-ring(true);\n    }\n\n    // Placeholder\n    &::placeholder {\n      color: var(--control-placeholder-color);\n      // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n      opacity: 1;\n    }\n\n    // Disabled inputs\n    //\n    // HTML5 says that controls under a fieldset > legend:first-child won't be\n    // disabled if the fieldset is disabled. Due to implementation difficulty, we\n    // don't honor that edge case; we style them as disabled anyway.\n    &:disabled {\n      color: var(--control-disabled-color);\n      background-color: var(--control-disabled-bg);\n      border-color: var(--control-disabled-border-color);\n      // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n      opacity: 1;\n    }\n\n    // Date and time inputs\n    // &::-webkit-date-and-time-value {\n    //   // On Android Chrome, form-control's \"width: 100%\" makes the input width too small\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   //\n    //   // On iOS Safari, form-control's \"appearance: none\" + \"width: 100%\" makes the input width too small\n    //   // Tested under iOS 16.2 / Safari 16.2\n    //   min-width: 85px; // Seems to be a good minimum safe width\n\n    //   // Add some height to date inputs on iOS\n    //   // https://github.com/twbs/bootstrap/issues/23307\n    //   // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n    //   // Multiply line-height by 1em if it has no unit\n    //   height: 1.5em;\n\n    //   // Android Chrome type=\"date\" is taller than the other inputs\n    //   // because of \"margin: 1px 24px 1px 4px\" inside the shadow DOM\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   margin: 0;\n    //   background-color: var(--red-500);\n    // }\n\n    // Prevent excessive date input height in Webkit\n    // https://github.com/twbs/bootstrap/issues/34433\n\n    // mdo-do: need to check this stuff out across browsers\n    &::-webkit-datetime-edit {\n      display: block;\n      height: 1.5rem;\n      padding: 0;\n      margin-bottom: -.125rem;\n    }\n    &::-webkit-datetime-edit-fields-wrapper {\n      height: 1.5rem;\n    }\n\n    // File inputs\n    &[type=\"file\"] {\n      overflow: hidden; // prevent pseudo element button overlap\n\n      &:not(:disabled, [readonly]) {\n        cursor: pointer;\n      }\n    }\n    &::file-selector-button {\n      min-height: var(--control-min-height);\n      padding: var(--control-padding-y) var(--control-padding-x);\n      margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n      margin-inline-end: var(--control-padding-x);\n      color: var(--control-fg);\n      // @include gradient-bg(var(--control-action-bg));\n      pointer-events: none;\n      background-color: var(--control-action-bg);\n      border-color: inherit;\n      border-style: solid;\n      border-width: 0;\n      border-inline-end-width: var(--control-border-width);\n      border-radius: 0; // stylelint-disable-line property-disallowed-list\n      @include transition(var(--control-transition));\n    }\n\n    &:hover:not(:disabled, [readonly])::file-selector-button {\n      background-color: var(--control-action-hover-bg);\n    }\n  }\n\n  // Readonly controls as plain text\n  //\n  // Apply class to a readonly input to make it appear like regular plain\n  // text (without any border, background color, focus indicator)\n\n  .form-control-plaintext {\n    // Plaintext is a standalone class (not combined with `.form-control`), so it\n    // needs its own copy of the control tokens. Without them the `var(--control-*)`\n    // references below are invalid and fall back to their initial values (e.g.\n    // `border-width: medium`), which adds phantom inline borders and misaligns the\n    // text from a floating label.\n    @include tokens($form-control-tokens);\n\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &.form-control-sm,\n    &.form-control-lg {\n      padding-inline: 0;\n    }\n  }\n\n  // stylelint-disable selector-no-qualifying-type\n  select.form-control,\n  .form-control-caret {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n\n    &[multiple],\n    &[size]:not([size=\"1\"]) {\n      padding-inline-end: var(--control-padding-x);\n      background-image: none;\n    }\n  }\n\n  [data-bs-theme=\"dark\"] {\n    select.form-control,\n    .form-control-caret {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  // Form control sizing\n  //\n  // Build on `.form-control` with modifier classes to decrease or increase the\n  // height and font-size of form controls.\n  //\n  // Repeated in `_input_group.scss` to avoid Sass extend issues.\n  @each $size, $_ in $form-control-sizes {\n    .form-control-#{$size} {\n      --control-min-height: var(--btn-input-#{$size}-min-height);\n      --control-padding-y: var(--btn-input-#{$size}-padding-y);\n      --control-padding-x: var(--btn-input-#{$size}-padding-x);\n      --control-font-size: var(--btn-input-#{$size}-font-size);\n      --control-line-height: var(--btn-input-#{$size}-line-height);\n      --control-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n\n    &:not(:disabled, [readonly]) {\n      cursor: pointer;\n    }\n\n    &::-moz-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\n    }\n  }\n\n  // Ghost input - removes all visual styling\n  // Used inside custom wrappers that handle their own styling\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &::placeholder {\n      color: var(--fg-3);\n      opacity: 1;\n    }\n\n    &:disabled {\n      color: var(--fg-4);\n      cursor: not-allowed;\n    }\n  }\n}\n","@mixin focus-ring($offset: false, $color: null) {\n  @if $color != null {\n    outline: var(--focus-ring-width) solid #{$color};\n  } @else {\n    outline: var(--focus-ring);\n  }\n  @if $offset {\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$check-tokens: () !default;\n\n// scss-docs-start check-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$check-tokens: defaults(\n  (\n    --check-size: 1.25rem,\n    --check-margin-block: .125rem,\n    --check-bg: var(--bg-body),\n    --check-border-color: var(--border-color),\n    --check-border-radius: var(--radius-5),\n    --check-icon-checked: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/></svg>\"))},\n    --check-icon-indeterminate: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/></svg>\"))},\n    --check-checked-bg: var(--control-checked-bg),\n    --check-checked-border-color: var(--control-checked-border-color),\n    --check-indeterminate-bg: var(--control-checked-bg),\n    --check-indeterminate-border-color: var(--control-checked-border-color),\n    --check-active-bg: var(--control-active-bg),\n    --check-active-border-color: var(--control-active-border-color),\n    --check-disabled-bg: var(--control-disabled-bg),\n    --check-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $check-tokens\n);\n// scss-docs-end check-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  // The class lives on the `<input>` itself; `appearance: none` controls render\n  // pseudo-elements, so the mark is drawn directly on the input — no wrapper.\n  .check {\n    @include tokens($check-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\n    appearance: none;\n    // later: maybe set a tertiary bg color?\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 33%;\n\n    &:checked,\n    &:indeterminate {\n      background-color: var(--theme-bg, var(--check-checked-bg));\n      border-color: var(--theme-bg, var(--check-checked-border-color));\n\n      // Check/indeterminate mark, overlaid on the input and rendered via a CSS\n      // mask so it inherits the contrast color without an inline SVG.\n      &::before {\n        position: absolute;\n        inset: 0;\n        pointer-events: none;\n        content: \"\";\n        background-color: var(--theme-contrast, var(--primary-contrast));\n        @include mask-icon();\n      }\n    }\n\n    &:checked::before { mask-image: var(--check-icon-checked); }\n    &:indeterminate::before { mask-image: var(--check-icon-indeterminate); }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: -1px;\n    }\n\n    &:disabled {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--check-disabled-opacity);\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","// Mask icon\n//\n// Renders an SVG icon via a CSS mask so the shape is painted with the\n// element's `background-color` and therefore inherits theme/dark-mode color.\n// Set `background-color` on the element itself; pass `null` for `$icon` when\n// the mask image is applied conditionally (e.g. per state or direction).\n\n// scss-docs-start mask-icon-mixin\n@mixin mask-icon($icon: null, $size: contain, $position: center) {\n  @if $icon != null {\n    mask-image: $icon;\n  }\n  mask-repeat: no-repeat;\n  @if $position != null {\n    mask-position: $position;\n  }\n  @if $size != null {\n    mask-size: $size;\n  }\n}\n// scss-docs-end mask-icon-mixin\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$radio-tokens: () !default;\n\n// scss-docs-start radio-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$radio-tokens: defaults(\n  (\n    --radio-size: 1.25rem,\n    --radio-margin-block: .125rem,\n    --radio-bg: var(--bg-body),\n    --radio-border-color: var(--border-color),\n    --radio-checked-bg: var(--control-checked-bg),\n    --radio-checked-border-color: var(--control-checked-border-color),\n    --radio-disabled-bg: var(--control-disabled-bg),\n    --radio-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $radio-tokens\n);\n// scss-docs-end radio-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .radio {\n    @include tokens($radio-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n\n    &:checked {\n      color: var(--theme-contrast, var(--primary-contrast));\n      background-color: var(--theme-bg, var(--radio-checked-bg));\n      border-color: var(--theme-bg, var(--radio-checked-border-color));\n\n      &::before {\n        position: absolute;\n        inset: calc(var(--radio-size) * .25);\n        content: \"\";\n        background-color: currentcolor;\n        // stylelint-disable-next-line property-disallowed-list\n        border-radius: 50%;\n      }\n    }\n\n    &:disabled {\n      --radio-bg: var(--radio-disabled-bg);\n\n      ~ label {\n        color: var(--secondary-fg);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--radio-disabled-opacity);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$switch-tokens: () !default;\n\n// scss-docs-start switch-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$switch-tokens: defaults(\n  (\n    --switch-height: 1.25rem,\n    --switch-width: calc(var(--switch-height) * 1.75),\n    --switch-padding: .0625rem,\n    --switch-margin-block: .125rem,\n    --switch-bg: var(--bg-3),\n    --switch-border-width: var(--border-width),\n    --switch-border-color: var(--border-color),\n    --switch-indicator-bg: var(--white),\n    --switch-indicator-width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-indicator-height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-checked-bg: var(--control-checked-bg),\n    --switch-checked-border-color: var(--switch-checked-bg),\n    --switch-checked-indicator-bg: var(--white),\n    --switch-disabled-bg: var(--control-disabled-bg),\n    --switch-disabled-indicator-bg: var(--fg-3),\n  ),\n  $switch-tokens\n);\n// scss-docs-end switch-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .switch {\n    @include tokens($switch-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgb(0 0 0 / .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: background-color .15s ease-in-out;\n\n    &::before {\n      position: absolute;\n      inset-block: var(--switch-padding);\n      inset-inline-start: var(--switch-padding);\n      width: var(--switch-indicator-width);\n      height: var(--switch-indicator-height);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 10rem;\n      box-shadow: 0 1px 2px rgb(0 0 0 / .1);\n      // stylelint-disable-next-line property-disallowed-list\n      transition: inset-inline-start .15s ease-in-out;\n    }\n\n    input {\n      position: absolute;\n      inset: 0;\n      appearance: none;\n      background-color: transparent;\n      outline: 0;\n    }\n\n    &:focus-within {\n      @include focus-ring(true);\n    }\n\n    &:has(input:disabled:not(:checked)) {\n      --switch-bg: var(--switch-disabled-bg);\n      --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n\n      &::before { opacity: .4; }\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n\n    &:has(input:checked) {\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n\n      &::before {\n        inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n      }\n    }\n\n    &:has(input:checked:disabled) {\n      opacity: .65;\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$range-tokens: () !default;\n\n// scss-docs-start range-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$range-tokens: defaults(\n  (\n    --range-track-width: 100%,\n    --range-track-height: .5rem,\n    --range-track-cursor: pointer,\n    --range-track-bg: var(--bg-3),\n    --range-track-border-radius: 1rem,\n    --range-track-fill-bg: var(--primary-base),\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3)),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color),\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: \"0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%)\",\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body)),\n    --range-thumb-disabled-bg: var(--fg-3),\n    --range-thumb-transition-property: \"background-color, border-color, box-shadow\",\n    --range-thumb-transition-timing: .15s ease-in-out,\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing),\n    --range-tick-width: var(--border-width),\n    --range-tick-height: .5rem,\n    --range-tick-bg: var(--border-color),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start range-mixins\n@mixin range-thumb() {\n  width: var(--range-thumb-width);\n  height: var(--range-thumb-height);\n  appearance: none;\n  @include gradient-bg(var(--range-thumb-bg));\n  border: var(--range-thumb-border);\n  @include border-radius(var(--range-thumb-border-radius));\n  @include box-shadow(var(--range-thumb-box-shadow));\n  @include transition(var(--range-thumb-transition));\n\n  &:active {\n    @include gradient-bg(var(--range-thumb-active-bg));\n  }\n}\n\n@mixin range-track() {\n  width: var(--range-track-width);\n  height: var(--range-track-height);\n  color: transparent;\n  cursor: var(--range-track-cursor);\n  // Fill (progress) up to the thumb. The Range plugin keeps `--range-fill` (0–1) in sync.\n  background-color: var(--range-track-bg);\n  background-image:\n    linear-gradient(\n      to right,\n      var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%),\n      transparent calc(var(--range-fill, 0) * 100%)\n    );\n  border-color: transparent;\n  @include border-radius(var(--range-track-border-radius));\n  @include box-shadow(var(--range-track-box-shadow));\n}\n// scss-docs-end range-mixins\n\n@layer forms {\n  .form-range {\n    @include tokens($range-tokens);\n\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n\n  .form-range-input {\n    display: block;\n    width: 100%;\n    height: calc(var(--range-thumb-height) + (var(--focus-ring-width) * 2));\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n\n    &:hover {\n      &::-webkit-slider-thumb {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n    }\n\n    &:focus-visible {\n      outline: 0;\n\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n    }\n\n    &::-moz-focus-outer {\n      border: 0;\n    }\n\n    &::-webkit-slider-thumb {\n      @include range-thumb();\n      margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * .5);\n    }\n\n    &::-moz-range-thumb {\n      @include range-thumb();\n    }\n\n    &::-webkit-slider-runnable-track {\n      @include range-track();\n    }\n\n    &::-moz-range-track {\n      @include range-track();\n    }\n\n    &:disabled {\n      pointer-events: none;\n\n      &::-webkit-slider-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-moz-range-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-webkit-slider-runnable-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n\n      &::-moz-range-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n    }\n  }\n\n  // Value bubble: reuses the tooltip styles (`.tooltip` markup) so we don't duplicate the\n  // pill and arrow. We only add the static positioning the Tooltip plugin would normally do.\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc((var(--range-thumb-width) * .5) + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n\n    .tooltip-arrow {\n      position: absolute;\n      bottom: calc(-1 * var(--tooltip-arrow-height));\n      left: 50%;\n      transform: translateX(-50%);\n    }\n  }\n\n  // Tick marks generated from the linked <datalist>. Plugin builds `grid-template-columns`\n  // from the gaps between values so each tick lands on a grid line (handles uneven values).\n  // Track is inset by 1/4th of the thumb width to keep alignment.\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * .25);\n  }\n\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    // Zero-width items so labels never widen their `fr` column; the tick line and label\n    // overflow centered on the grid line via `align-items`.\n    width: 0;\n\n    &::before {\n      width: var(--range-tick-width);\n      height: var(--range-tick-height);\n      content: \"\";\n      background-color: var(--range-tick-bg);\n    }\n\n    &:first-child {\n      align-items: flex-start;\n    }\n\n    &:last-child {\n      align-items: flex-end;\n    }\n  }\n\n  .form-range-tick-label {\n    margin-top: .125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n\n// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: var(--gray-700), $end-color: var(--gray-800), $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: var(--gray-700), $outer-color: var(--gray-800)) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgb(255 255 255 / .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-floating-tokens: () !default;\n\n// scss-docs-start form-floating-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-floating-tokens: defaults(\n  (\n    --form-floating-height: calc(3.75rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25),\n    --form-floating-padding-y: 1rem,\n    --form-floating-input-padding-t: 1.625rem,\n    --form-floating-input-padding-b: .625rem,\n    --form-floating-label-height: 1.5em,\n    // Backgrounds for the textarea label's masking pseudo-element. Mirrors\n    // `.form-control` here because the label is a sibling of the control, so it\n    // can't inherit the control's own `--control-bg`/`--control-disabled-bg`.\n    --form-floating-label-bg: var(--btn-input-bg),\n    --form-floating-label-disabled-bg: var(--bg-2),\n    --form-floating-label-opacity: .65,\n    --form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem),\n    --form-floating-label-disabled-color: var(--fg-3),\n    --form-floating-transition-property: \"opacity, transform\",\n    --form-floating-transition-timing: .1s ease-in-out,\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing),\n  ),\n  $form-floating-tokens\n);\n// scss-docs-end form-floating-tokens\n\n@layer forms {\n  .form-floating {\n    @include tokens($form-floating-tokens);\n\n    position: relative;\n\n    > label {\n      position: absolute;\n      inset-block-start: 0;\n      inset-inline-start: 0;\n      z-index: 2;\n      display: flex;\n      align-items: center;\n      max-width: 100%;\n      height: 100%; // allow textareas\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      overflow: hidden;\n      color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n      text-align: start;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      pointer-events: none;\n      border: var(--border-width) solid transparent; // Required for aligning label's text with the input as it affects inner box model\n      transform-origin: 0 0;\n      @include transition(var(--form-floating-transition));\n    }\n\n    // Anchor the label to the top for textareas so it floats correctly at any height\n    > label:has(~ textarea) {\n      align-items: flex-start;\n    }\n\n    > .form-control,\n    > .form-control-plaintext {\n      height: var(--form-floating-height);\n      min-height: var(--form-floating-height);\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      line-height: var(--form-floating-line-height);\n\n      &::placeholder {\n        color: transparent;\n      }\n\n      &:focus,\n      &:not(:placeholder-shown) {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n      // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n      &:-webkit-autofill {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n    }\n\n    // The label precedes the control in the DOM so screen readers announce it\n    // before the field's value, so we look forward with `:has()` to react to the\n    // control's state (focus, value, disabled, etc.).\n    > label:has(~ .form-control:focus),\n    > label:has(~ .form-control:not(:placeholder-shown)),\n    > label:has(~ .form-control-plaintext) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > label:has(~ .form-control:-webkit-autofill) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    > label:has(~ textarea:focus),\n    > label:has(~ textarea:not(:placeholder-shown)) {\n      &::after {\n        position: absolute;\n        inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * .5);\n        z-index: -1;\n        height: var(--form-floating-label-height);\n        content: \"\";\n        background-color: var(--form-floating-label-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > label:has(~ textarea:disabled)::after {\n      background-color: var(--form-floating-label-disabled-bg);\n    }\n\n    > label:has(~ .form-control-plaintext) {\n      border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n    }\n\n    > label:has(~ :disabled),\n    > label:has(~ .form-control:disabled) { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n$input-group-addon-tokens: () !default;\n\n// scss-docs-start input-group-addon-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-addon-tokens: defaults(\n  (\n    --input-group-addon-padding-y: var(--btn-input-padding-y),\n    --input-group-addon-padding-x: var(--btn-input-padding-x),\n    --input-group-addon-font-size: var(--btn-input-font-size),\n    --input-group-addon-line-height: var(--btn-input-line-height),\n    --input-group-addon-color: var(--fg-body),\n    --input-group-addon-bg: var(--bg-2),\n    --input-group-addon-border-color: var(--border-color),\n  ),\n  $input-group-addon-tokens\n);\n// scss-docs-end input-group-addon-tokens\n\n// scss-docs-start input-group-sizes\n$input-group-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $input-group-sizes\n);\n// scss-docs-end input-group-sizes\n\n@layer components {\n  .input-group {\n    @include tokens($input-group-addon-tokens);\n\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    width: 100%;\n\n    > .form-control,\n    > .form-floating {\n      position: relative; // For focus state's z-index\n      flex: 1 1 auto;\n      width: 1%;\n      min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n    }\n\n    // Bring the \"active\" form control to the top of surrounding elements\n    > .form-control:focus,\n    > .form-floating:focus-within {\n      z-index: 5;\n    }\n\n    // Ensure buttons are always above inputs for more visually pleasing borders.\n    // This isn't needed for `.input-group-text` since it shares the same border-color\n    // as our inputs.\n    > .input-group-btn {\n      position: relative;\n      z-index: 2;\n\n      &:focus {\n        z-index: 5;\n      }\n    }\n  }\n\n  // Textual addons\n  //\n  // Serves as a catch-all element for any text or radio/checkbox input you wish\n  // to prepend or append to an input.\n\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size); // Match inputs\n    // font-weight: $input-group-addon-font-weight;\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    @include border-radius(var(--btn-input-border-radius));\n  }\n\n  // Sizing\n  //\n  // Remix the default form control sizing classes into new ones for easier\n  // manipulation.\n\n  @each $size, $_ in $input-group-sizes {\n    .input-group-#{$size} {\n      > .form-control,\n      > .input-group-text,\n      > .btn {\n        min-height: var(--btn-input-#{$size}-min-height);\n        padding: var(--btn-input-#{$size}-padding-y) var(--btn-input-#{$size}-padding-x);\n        font-size: var(--btn-input-#{$size}-font-size);\n        @include border-radius(var(--btn-input-#{$size}-border-radius));\n      }\n    }\n  }\n\n  // Rounded corners\n  //\n  // These rulesets must come after the sizing ones to properly override sm and lg\n  // border-radius values when extending. They're more specific than we'd like\n  // with the `.input-group >` part, but without it, we cannot override the sizing.\n\n  // stylelint-disable-next-line no-duplicate-selectors\n  .input-group {\n    > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n    > .menu-toggle-split:nth-last-child(n + 3),\n    > .form-floating:not(:last-child) > .form-control,\n    > .form-floating:not(:last-child) > .form-select {\n      @include border-end-radius(0);\n    }\n\n    > :not(:first-child, .menu, .input-group-ignore) {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n      @include border-start-radius(var(--btn-input-border-radius));\n    }\n\n    > .form-floating:not(:first-child) > .form-control,\n    > .form-floating:not(:first-child) > .form-select {\n      @include border-start-radius(0);\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$strength-tokens: () !default;\n\n// scss-docs-start strength-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$strength-tokens: defaults(\n  (\n    --strength-height: .375rem,\n    --strength-gap: .25rem,\n    --strength-margin-top: .25rem,\n    --strength-border-radius: var(--radius-pill),\n    --strength-bg: var(--bg-2),\n    --strength-color: var(--bg-2),\n    --strength-weak-color: var(--danger-bg),\n    --strength-fair-color: var(--warning-bg),\n    --strength-good-color: var(--info-bg),\n    --strength-strong-color: var(--success-bg),\n  ),\n  $strength-tokens\n);\n// scss-docs-end strength-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start strength-levels\n$strength-levels: weak, fair, good, strong !default;\n// scss-docs-end strength-levels\n\n$strength-transition: background-color .2s ease-in-out, width .3s ease-in-out !default;\n\n@layer forms {\n  // Strength meter container\n  .strength {\n    @include tokens($strength-tokens);\n\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n\n  // Individual strength segments\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n    @include transition($strength-transition);\n\n    // Filled state\n    &.active {\n      background-color: var(--strength-color);\n    }\n  }\n\n  @each $level in $strength-levels {\n    .strength[data-bs-strength=\"#{$level}\"] {\n      --strength-color: var(--strength-#{$level}-color);\n    }\n  }\n  // Optional text feedback\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    @include transition(color .2s ease-in-out);\n\n    // Hide when empty\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Alternative: Single bar variant (like a progress bar)\n  .strength-bar {\n    @include tokens($strength-tokens);\n\n    --strength-color: transparent;\n    --strength-width: 0%;\n\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n\n    &::after {\n      display: block;\n      width: var(--strength-width);\n      height: 100%;\n      content: \"\";\n      background-color: var(--strength-color);\n      @include border-radius(var(--strength-border-radius));\n      @include transition($strength-transition);\n    }\n\n    @each $level in $strength-levels {\n      &[data-bs-strength=\"#{$level}\"] {\n        --strength-color: var(--strength-#{$level}-color);\n        --strength-width: #{list.index($strength-levels, $level) * 25%};\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-tokens: defaults(\n  (\n    --otp-size: var(--btn-input-lg-min-height),\n    --otp-font-size: var(--btn-input-font-size),\n    --otp-gap: .5rem,\n    --otp-slot-fg: var(--btn-input-fg),\n    --otp-slot-bg: var(--btn-input-bg),\n    --otp-slot-border-width: var(--border-width),\n    --otp-slot-border-color: var(--border-color),\n    --otp-slot-border-radius: var(--radius-5),\n  ),\n  $otp-tokens\n);\n// scss-docs-end otp-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start otp-sizes\n$otp-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $otp-sizes\n);\n// scss-docs-end otp-sizes\n\n@layer components {\n  .otp {\n    @include tokens($otp-tokens);\n\n    position: relative;\n    display: flex;\n  }\n\n  // A single real input backs the whole control. Once the JS renders the\n  // visual slots (`.otp-rendered`), the input becomes a transparent overlay\n  // that captures all interaction while the slots display the value.\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n\n    // Never reveal the underlying characters, even on selection\n    &::selection {\n      color: transparent;\n      background-color: transparent;\n    }\n  }\n\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none; // let clicks fall through to the input overlay\n  }\n\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    @include border-radius(var(--otp-slot-border-radius));\n    @include box-shadow(var(--box-shadow-inset));\n    @include transition(border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n  }\n\n  // The slot at the caret gets the focus ring; empty active slots show a\n  // blinking caret so the entry point is obvious.\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    @include focus-ring(true);\n\n    &:not(.otp-slot-filled)::after {\n      width: 1px;\n      height: 50%;\n      content: \"\";\n      background-color: var(--otp-slot-fg);\n      animation: otp-caret-blink 1s step-end infinite;\n    }\n  }\n\n  // Disabled state mirrors disabled form controls\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n\n  // Connected slots share borders for a single cohesive field\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n\n    &:not(:first-child) {\n      margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n    }\n    &:first-child {\n      @include border-start-radius(var(--otp-slot-border-radius));\n    }\n    &:last-child {\n      @include border-end-radius(var(--otp-slot-border-radius));\n    }\n  }\n\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n\n  // OTP input sizing — keep in sync with `$form-control-sizes`.\n  @each $size, $_ in $otp-sizes {\n    .otp-#{$size} {\n      --otp-size: var(--btn-input-#{$size}-min-height);\n      --otp-font-size: var(--btn-input-#{$size}-font-size);\n    }\n  }\n}\n\n@keyframes otp-caret-blink {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-adorn-tokens: () !default;\n\n// scss-docs-start form-adorn-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-adorn-tokens: defaults(\n  (\n    --form-adorn-gap: .375rem,\n    --form-adorn-icon-size: 1rem,\n    --form-adorn-icon-color: var(--fg-2),\n  ),\n  $form-adorn-tokens\n);\n// scss-docs-end form-adorn-tokens\n\n@layer forms {\n  .form-adorn {\n    @include tokens($form-adorn-tokens);\n\n    gap: var(--form-adorn-gap);\n    align-items: center;\n\n    // Prevent default `.form-control` focus\n    &:focus-visible {\n      outline: 0;\n    }\n\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1;\n      min-width: 0; // Prevent text overflow\n    }\n\n    &.form-adorn-end > .form-ghost {\n      order: -1;\n    }\n  }\n\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n\n    > svg {\n      width: var(--form-adorn-icon-size);\n      height: var(--form-adorn-icon-size);\n    }\n  }\n\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$chip-input-tokens: () !default;\n\n// scss-docs-start chip-input-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-input-tokens: defaults(\n  (\n    --chip-input-padding-y: .75rem,\n    --chip-input-padding-x: .75rem,\n    --chip-input-gap: .375rem,\n    --chip-input-ghost-min-width: 5rem,\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--radius-5),\n  ),\n  $chip-input-tokens\n);\n// scss-docs-end chip-input-tokens\n\n@layer forms {\n  .chip-input {\n    @include tokens($chip-input-tokens);\n\n    // Flexbox wrapping layout\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n\n    // Focus state when ghost input is focused\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1 1 0;\n      min-width: var(--chip-input-ghost-min-width);\n      min-height: 1.75rem;\n    }\n\n    // Disabled state\n    &.disabled,\n    &:has(.form-ghost:disabled) {\n      cursor: not-allowed;\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      &:focus-within {\n        border-color: var(--control-border-color);\n        outline: 0;\n      }\n\n      > .chip {\n        pointer-events: none;\n        opacity: var(--control-disabled-opacity);\n      }\n    }\n  }\n}\n","@use \"../mixins/transition\" as *;\n\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: .5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n\n    &.show {\n      background-color: var(--bg-1);\n    }\n\n    &:disabled,\n    &.disabled {\n      cursor: not-allowed;\n      opacity: .65;\n    }\n  }\n\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: .5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .combobox-caret {\n    flex-shrink: 0;\n    @include transition(transform .2s ease-in-out);\n\n    .show > & {\n      transform: rotate(180deg);\n    }\n  }\n\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, .25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n\n  .combobox-search-input {\n    width: 100%;\n  }\n\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n// scss-docs-start form-field\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: .5rem;\n    // width: 100%;\n\n    > label,\n    > .form-label {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n\n    &:has(> .check, > .radio, > .switch) {\n      grid-template-columns: auto 1fr;\n      column-gap: .5rem;\n      align-items: start;\n\n      > .check,\n      > .radio,\n      > .switch {\n        grid-column: 1;\n      }\n\n      > :not(.check, .radio, .switch) {\n        grid-column: 2;\n      }\n\n      > .form-label {\n        grid-column: 1 / -1;\n      }\n    }\n  }\n\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * .75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    @include border-radius(var(--radius-7));\n\n    &:hover {\n      background-color: var(--bg-1);\n    }\n\n    &:has(:checked) {\n      background-color: var(--bg-1);\n      border-color: var(--border-color);\n    }\n\n    label::before {\n      position: absolute;\n      inset: 0;\n      content: \"\";\n    }\n  }\n\n  .form-group {\n    display: grid;\n    gap: .5rem;\n\n    > label,\n    > .form-label,\n    > legend {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n  }\n}\n// scss-docs-end form-field\n","@use \"../config\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/form-validation\" as *;\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid.\n// Server-side: `.is-invalid` / `.is-valid` classes work globally.\n// Client-side: `:user-invalid` pseudo-class is scoped behind `[data-bs-validate]`.\n// `:user-valid` is scoped behind `[data-bs-validate~=\"valid\"]` so success styling is opt-in.\n// Custom states (e.g., \"warning\") use only `.is-*` classes.\n\n// scss-docs-start form-validation-states\n$validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$validation-states: defaults(\n  (\n    \"valid\": \"success\",\n    \"invalid\": \"danger\",\n  ),\n  $validation-states\n);\n// scss-docs-end form-validation-states\n\n// scss-docs-start form-validation-state-mixin\n@mixin form-validation-state($state, $theme) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--#{$theme}-fg);\n  }\n\n  // More specific to override base tooltip styles\n  .tooltip.#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: .1rem;\n    color: var(--#{$theme}-contrast);\n    text-align: center;\n    background-color: var(--#{$theme}-bg);\n    opacity: 1;\n    @include border-radius(var(--tooltip-border-radius));\n  }\n\n  // Generic sibling feedback display — works for .form-control, .form-range,\n  // and any element where feedback is a direct sibling.\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  // Form control\n  .form-control {\n    @include form-validation-state-selector($state) {\n      --control-border-color: var(--#{$theme}-border);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        --control-border-color: var(--#{$theme}-border);\n      }\n    }\n  }\n\n  // Checkbox — control-level styling (border, checked bg, focus ring).\n  .check {\n    @include form-validation-state-selector($state) {\n      --check-border-color: var(--#{$theme}-border);\n      --check-checked-bg: var(--#{$theme}-bg);\n      --check-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Checkbox — label color and feedback display via .form-field:has().\n  .form-field:has(.check.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.check:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.check:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Radio — control-level styling.\n  .radio {\n    @include form-validation-state-selector($state) {\n      --radio-border-color: var(--#{$theme}-border);\n      --radio-checked-bg: var(--#{$theme}-bg);\n      --radio-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Radio — label color and feedback display via .form-field:has().\n  .form-field:has(.radio.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.radio:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.radio:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Switch — control-level styling. The input is an invisible overlay;\n  // all visuals are on the .switch wrapper.\n  .switch:has(input.is-#{$state}) {\n    --switch-border-color: var(--#{$theme}-border);\n    --switch-checked-bg: var(--#{$theme}-bg);\n    --switch-checked-border-color: var(--#{$theme}-bg);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n    }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .switch:has(input:user-invalid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .switch:has(input:user-valid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Switch — label color and feedback display via .form-field:has().\n  .form-field:has(.switch input.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.switch input:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.switch input:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Chip input — wrapper has the visible border; the .form-ghost inside\n  // receives the native pseudo-class.\n  .chip-input:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .chip-input:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Form adorn — :user-invalid fires on the inner .form-ghost, so we\n  // propagate it to the visible wrapper with :has().\n  .form-adorn:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-adorn:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Range — the validation class lives on .form-range-input, while feedback sits outside\n  // the .form-range wrapper, so we use :has() to toggle it.\n  .form-range-input {\n    @include form-validation-state-selector($state) {\n      &::-webkit-slider-thumb { background: var(--#{$theme}-bg); }\n      &::-moz-range-thumb { background: var(--#{$theme}-bg); }\n\n      &:focus-visible {\n        &::-webkit-slider-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n        &::-moz-range-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n      }\n    }\n  }\n\n  .form-range:has(.form-range-input.is-#{$state}) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  // Input group — feedback lives outside the input-group in the parent\n  // .form-field, so we use :has() to toggle display.\n  .form-field:has(.input-group .form-control.is-#{$state}) {\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) {\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.input-group .form-control:user-valid) {\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  .input-group {\n    > .form-control:not(:focus),\n    > .form-floating:not(:focus-within) {\n      @include form-validation-state-selector($state) {\n        @if $state == \"valid\" {\n          z-index: 3;\n        } @else if $state == \"invalid\" {\n          z-index: 4;\n        }\n      }\n    }\n  }\n\n  // OTP — validation applies to the wrapper; the visual slots inherit the state.\n  .otp {\n    @include form-validation-state-selector($state) {\n      .otp-slot {\n        --otp-slot-border-color: var(--#{$theme}-border);\n      }\n\n      .otp-slot-active {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-mixin\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $theme in $validation-states {\n    @include form-validation-state($state, $theme);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-validation-state-selector\n@mixin form-validation-state-selector($state) {\n  @if & {\n    &.is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      @at-root [data-bs-validate] #{&}:user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      @at-root [data-bs-validate~=\"valid\"] #{&}:user-valid {\n        @content;\n      }\n    }\n  } @else {\n    .is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      [data-bs-validate] :user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      [data-bs-validate~=\"valid\"] :user-valid {\n        @content;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-selector\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n$button-tokens: () !default;\n\n// scss-docs-start btn-tokens\n$button-tokens: defaults(\n  (\n    --btn-min-height: var(--btn-input-min-height),\n    --btn-padding-x: var(--btn-input-padding-x),\n    --btn-padding-y: var(--btn-input-padding-y),\n    --btn-font-size: var(--btn-input-font-size),\n    --btn-font-weight: var(--btn-input-font-weight),\n    --btn-line-height: var(--btn-input-line-height),\n    --btn-color: var(--fg-body),\n    --btn-white-space: nowrap,\n    --btn-border-width: var(--border-width),\n    --btn-border-color: transparent,\n    --btn-border-radius: var(--radius-5),\n    --btn-hover-border-color: transparent,\n    --btn-disabled-opacity: .65,\n    --btn-transition-timing: .15s ease-in-out,\n    --btn-transition-property: \"color, background-color, border-color, box-shadow\",\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing),\n  ),\n  $button-tokens\n);\n// scss-docs-end btn-tokens\n\n$button-link-tokens: () !default;\n\n// scss-docs-start button-link-tokens\n$button-link-tokens: defaults(\n  (\n    --btn-font-weight: var(--font-weight-normal),\n    --btn-color: var(--link-color),\n    --btn-bg: transparent,\n    --btn-border-color: transparent,\n    --btn-hover-color: var(--link-hover-color),\n    --btn-hover-bg: transparent,\n    --btn-hover-border-color: transparent,\n    --btn-active-color: var(--link-hover-color),\n    --btn-active-bg: transparent,\n    --btn-active-border-color: transparent,\n    --btn-disabled-color: var(--fg-3),\n    --btn-disabled-border-color: transparent,\n  ),\n  $button-link-tokens\n);\n// scss-docs-end button-link-tokens\n\n$button-styled-tokens: () !default;\n\n// scss-docs-start button-styled-tokens\n$button-styled-tokens: defaults(\n  (\n    --btn-gradient-start: rgb(255 255 255 / 12.5%),\n    --btn-gradient-end: rgb(0 0 0 / 7.5%) ,\n    --btn-border-mix-color: #000,\n    --btn-border-mix-amount: 10%,\n    --btn-border-hover-mix-amount: 12.5%,\n    --btn-border-active-mix-amount: 20%,\n    --btn-shadow: \"0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%)\",\n    --btn-active-shadow: inset 0 2px 4px rgb(0 0 0 / .15) ,\n  ),\n  $button-styled-tokens\n);\n// scss-docs-end button-styled-tokens\n\n// scss-docs-start button-sizes\n$button-sizes: () !default;\n$button-sizes: defaults(\n  (\"xs\", \"sm\", \"lg\"),\n  $button-sizes\n);\n// scss-docs-end button-sizes\n\n$button-variants: () !default;\n\n// scss-docs-start btn-variants\n$button-variants: defaults(\n  (\n    \"solid\": (\n      \"base\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      )\n    ),\n    \"outline\": (\n      \"base\": (\n        \"bg\": \"transparent\",\n        \"color\": \"fg\",\n        \"border-color\": \"border\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      )\n    ),\n    \"subtle\": (\n      \"base\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"fg-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"fg\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      )\n    )\n  ),\n  $button-variants\n);\n// scss-docs-end btn-variants\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n//\n// Base styles\n//\n\n// scss-docs-start btn-variant-selectors\n$btn-variant-selectors: (string.unquote(\".btn\"), string.unquote(\".btn-link\"), string.unquote(\".btn-icon\")) !default;\n@each $variant, $config in $button-variants {\n  $btn-variant-selectors: list.append($btn-variant-selectors, string.unquote(\".btn-#{$variant}\"), comma);\n}\n// scss-docs-end btn-variant-selectors\n\n@layer components {\n  #{$btn-variant-selectors} {\n    @include tokens($button-tokens);\n\n    display: inline-flex;\n    gap: var(--btn-gap, .25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    // font-family: var(--btn-font-family);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    cursor: if(sass($enable-button-pointers): pointer; else: null);\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    @include border-radius(var(--btn-border-radius));\n    @include transition(var(--btn-transition));\n\n    &:hover {\n      color: var(--btn-hover-color);\n      background-color: var(--btn-hover-bg, var(--bg-3));\n      border-color: var(--btn-hover-border-color);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &.active,\n    &.show {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      border-color: var(--btn-active-border-color);\n\n      &:focus-visible {\n        @include focus-ring(true);\n      }\n    }\n\n    &:disabled,\n    &.disabled,\n    fieldset:disabled & {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n    }\n  }\n\n  // Main button style generator mixin\n  // Generate button variant classes (e.g., .btn-solid, .btn-outline, etc.)\n  // scss-docs-start btn-variant-mixin\n  @each $variant, $config in $button-variants {\n    .btn-#{$variant} {\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-#{$property}: transparent;\n        } @else {\n          --btn-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      @each $property, $value in map.get($button-variants, $variant, \"active\") {\n        @if $value == \"transparent\" {\n          --btn-active-#{$property}: transparent;\n        } @else if $value == \"bg-subtle\" {\n          --btn-active-#{$property}: var(--theme-#{$value});\n        } @else {\n          --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n        }\n      }\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-disabled-#{$property}: transparent;\n        } @else {\n          --btn-disabled-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      &:hover {\n        @each $property, $value in map.get($button-variants, $variant, \"hover\") {\n          @if $value == \"transparent\" {\n            --btn-hover-#{$property}: transparent;\n          } @else if meta.type-of($value) == \"list\" {\n            $first-value: list.nth($value, 1);\n            $second-value: list.nth($value, 2);\n            --btn-hover-#{$property}: color-mix(in oklch, var(--theme-#{$first-value}) 50%, var(--theme-#{$second-value}));\n          } @else if $value == \"bg-subtle\" {\n            --btn-hover-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-hover-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .95) calc(c * 1.1) h);\n          }\n        }\n      }\n\n      &:focus-visible {\n        outline-color: var(--theme-focus-ring);\n      }\n\n      &:active,\n      &.active,\n      &.btn-check:has(input:checked) {\n        @each $property, $value in map.get($button-variants, $variant, \"active\") {\n          @if $value == \"transparent\" {\n            --btn-active-#{$property}: transparent;\n          } @else if $value == \"bg-subtle\" {\n            --btn-active-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n          }\n        }\n      }\n\n      // Disabled state for toggle buttons\n      &:disabled,\n      &.disabled,\n      &.btn-check:has(input:disabled) {\n        @each $property, $value in map.get($button-variants, $variant, \"base\") {\n          @if $value == \"transparent\" {\n            --btn-disabled-#{$property}: transparent;\n          } @else {\n            --btn-disabled-#{$property}: var(--theme-#{$value});\n          }\n        }\n      }\n    }\n  }\n  // scss-docs-end btn-variant-mixin\n\n  //\n  // Link buttons\n  //\n\n  // Make a button look and behave like a link\n  .btn-link {\n    @include tokens($button-link-tokens);\n\n    color: var(--theme-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n\n    @if $enable-gradients {\n      background-image: none;\n    }\n\n    &:focus-visible {\n      color: var(--theme-fg, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-fg-emphasis, var(--btn-hover-color));\n    }\n\n    // No need for an active state here\n  }\n\n  //\n  // Button Sizes\n  //\n\n  // Generate button size classes from the $button-sizes map\n  // Skip \"md\" as it's the default size for .btn\n\n  // scss-docs-start btn-sizes-loop\n  @each $size, $_ in $button-sizes {\n    .btn-#{$size},\n    .btn-group-#{$size} > [class*=\"btn-\"] {\n      --btn-min-height: var(--btn-input-#{$size}-min-height);\n      --btn-padding-y: var(--btn-input-#{$size}-padding-y);\n      --btn-padding-x: var(--btn-input-#{$size}-padding-x);\n      --btn-font-size: var(--btn-input-#{$size}-font-size);\n      --btn-line-height: var(--btn-input-#{$size}-line-height);\n      --btn-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end btn-sizes-loop\n\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n\n  //\n  // Toggle buttons (.btn-check)\n  //\n  // Checkbox and radio inputs that look like buttons. Add .btn-check to a\n  // label with button classes, with the input nested inside.\n  //\n  // Example: <label class=\"btn-check btn-solid theme-primary\"><input type=\"checkbox\">Toggle</label>\n\n  .btn-check {\n    > input {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n\n    &:has(input:checked) {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-active-border-color);\n      @include box-shadow(var(--btn-active-shadow));\n    }\n\n    &:has(input:focus-visible) {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &:has(input:disabled) {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n      @include box-shadow(none);\n    }\n  }\n\n  //\n  // Styled buttons\n  //\n  // Add visual depth with gradients and shadows. Customize via CSS variables.\n\n  .btn-styled {\n    @include tokens($button-styled-tokens);\n\n    background-image:\n      linear-gradient(\n        to bottom,\n        var(--btn-gradient-start),\n        var(--btn-gradient-end)\n      );\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n\n    &:hover {\n      background-image:\n        linear-gradient(\n          to bottom,\n          var(--btn-gradient-start),\n          var(--btn-gradient-end)\n        );\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n    }\n\n    &:active,\n    &.active {\n      background-image: none;\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n      box-shadow: var(--btn-active-shadow);\n    }\n\n    &:disabled,\n    &.disabled {\n      background-image: none;\n      box-shadow: none;\n    }\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n@layer components {\n  // Make the div behave like a button\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle; // match .btn alignment given font-size hack above\n\n    > [class*=\"btn-\"] {\n      position: relative;\n      flex: 1 1 auto;\n\n      &:hover {\n        z-index: 1;\n      }\n    }\n\n    > .btn-check:has(input:checked),\n    > [class*=\"btn-\"]:active,\n    > [class*=\"btn-\"].active {\n      z-index: 2;\n    }\n\n    > .btn-check:has(input:focus),\n    > [class*=\"btn-\"]:focus {\n      z-index: 3;\n    }\n  }\n\n  .btn-group-divider {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        position: absolute;\n        // top: 25%;\n        // bottom: 25%;\n        // left: calc(var(--btn-border-width) * -1);\n        z-index: 3;\n        // width: var(--btn-border-width);\n        content: \"\";\n        background-color: var(--btn-color);\n        opacity: .25;\n      }\n    }\n  }\n\n  .btn-group:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: 25%;\n        bottom: 25%;\n        left: calc(var(--btn-border-width) * -1);\n        width: var(--btn-border-width);\n      }\n    }\n  }\n\n  .btn-group-vertical:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: calc(var(--btn-border-width) * -1);\n        right: var(--btn-padding-x);\n        left: var(--btn-padding-x);\n        height: var(--btn-border-width);\n      }\n    }\n  }\n\n  // Optional: Group multiple button groups together for a toolbar\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: .5rem;\n    justify-content: flex-start;\n\n    .input-group {\n      width: auto;\n    }\n  }\n\n  .btn-group {\n    @include border-radius(var(--btn-border-radius));\n\n    // Prevent double borders when buttons are next to each other\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-inline-start: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child, :has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-end-radius(0);\n    }\n\n    // The left radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-start-radius(0);\n    }\n  }\n\n  //\n  // Vertical button groups\n  //\n\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    > [class*=\"btn-\"],\n    > .btn-group {\n      width: 100%;\n    }\n\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-top: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child, :has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-bottom-radius(0);\n    }\n\n    // The top radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-top-radius(0);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" as *;\n@use \"../mixins/tokens\" as *;\n\n$btn-close-tokens: () !default;\n\n// scss-docs-start btn-close-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$btn-close-tokens: defaults(\n  (\n    --btn-close-size: 1.5rem,\n    --btn-close-color: inherit,\n    --btn-close-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/></svg>\"))},\n    --btn-close-opacity: .5,\n    --btn-close-hover-opacity: .75,\n    --btn-close-focus-opacity: .85,\n    --btn-close-disabled-opacity: .25,\n  ),\n  $btn-close-tokens\n);\n// scss-docs-end btn-close-tokens\n\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n@layer components {\n  .btn-close {\n    @include tokens($btn-close-tokens);\n\n    box-sizing: content-box;\n    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0; // for button elements\n    @include border-radius(var(--radius-5));\n    opacity: var(--btn-close-opacity);\n    @include mask-icon(var(--btn-close-icon));\n\n    // Override <a>'s hover style\n    &:hover {\n      color: var(--btn-close-color);\n      text-decoration: none;\n      opacity: var(--btn-close-hover-opacity);\n    }\n\n    &:focus-visible {\n      opacity: var(--btn-close-focus-opacity);\n      @include focus-ring();\n    }\n\n    &:disabled,\n    &.disabled {\n      pointer-events: none;\n      user-select: none;\n      opacity: var(--btn-close-disabled-opacity);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$accordion-tokens: () !default;\n\n// scss-docs-start accordion-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$accordion-tokens: defaults(\n  (\n    --accordion-padding-x: 1.25rem,\n    --accordion-padding-y: 1rem,\n    --accordion-color: var(--fg-body),\n    --accordion-bg: var(--bg-body),\n    --accordion-transition-property: \"color, background-color, border-radius\",\n    --accordion-transition-timing: \".15s ease-in-out\",\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing),\n    --accordion-border-color: var(--border-color),\n    --accordion-border-width: var(--border-width),\n    --accordion-border-radius: var(--accordion-radius, var(--radius-7)),\n    --accordion-btn-color: var(--fg-2),\n    --accordion-btn-bg: var(--bg-body),\n    --accordion-btn-icon-width: 1rem,\n    --accordion-btn-icon-transform: rotate(-180deg),\n    --accordion-btn-icon-transition: transform .2s ease-in-out,\n    --accordion-active-color: var(--fg),\n    --accordion-active-bg: var(--bg-2),\n  ),\n  $accordion-tokens\n);\n// scss-docs-end accordion-tokens\n\n@layer components {\n  .accordion {\n    @include tokens($accordion-tokens);\n  }\n\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none; // Remove default marker\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    @include transition(var(--accordion-transition));\n\n    &::-webkit-details-marker {\n      display: none;\n    }\n\n    .accordion-icon {\n      flex-shrink: 0;\n      width: var(--accordion-btn-icon-width);\n      height: var(--accordion-btn-icon-width);\n      margin-inline-start: auto;\n      color: currentcolor;\n      @include transition(var(--accordion-btn-icon-transition));\n    }\n\n    &:hover {\n      z-index: 2;\n    }\n\n    &:focus-visible {\n      position: relative;\n      z-index: 3;\n      @include focus-ring(true);\n      outline-offset: -1px;\n    }\n  }\n\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n\n    @media (prefers-reduced-motion: no-preference) {\n      interpolate-size: allow-keywords;\n    }\n\n    &::details-content {\n      block-size: 0;\n      overflow-y: clip;\n      @include transition(content-visibility .2s allow-discrete, block-size .2s);\n    }\n\n    &:first-of-type {\n      @include border-top-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-top-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n    }\n\n    &:not(:first-of-type) {\n      border-block-start: 0;\n    }\n\n    // Only set a border-radius on the last item if the accordion is collapsed\n    &:last-of-type {\n      @include border-bottom-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-bottom-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n\n      > .accordion-body {\n        @include border-bottom-radius(var(--accordion-border-radius));\n      }\n    }\n\n    // Open state - details[open] applies these styles\n    &[open] {\n\n      border-color: var(--theme-border, var(--accordion-border-color));\n      &::details-content {\n        block-size: auto;\n      }\n\n      > .accordion-header {\n        color: var(--theme-fg, var(--accordion-active-color));\n        background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n        box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n\n        .accordion-icon {\n          transform: var(--accordion-btn-icon-transform);\n        }\n      }\n\n      // Remove bottom radius from header when open (even on last item)\n      &:last-of-type > .accordion-header {\n        @include border-bottom-radius(0);\n      }\n    }\n  }\n\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n\n\n  // Flush accordion items\n  //\n  // Remove borders and border-radius to keep accordion items edge-to-edge.\n\n  .accordion-flush {\n    > .accordion-item {\n      border-inline: 0;\n      @include border-radius(0);\n\n      &:first-child {\n        border-block-start: 0;\n      }\n\n      &:last-child {\n        border-block-end: 0;\n      }\n\n      > .accordion-header,\n      > .accordion-body {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$alert-tokens: () !default;\n\n// scss-docs-start alert-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$alert-tokens: defaults(\n  (\n    --alert-gap: var(--spacer-3),\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: var(--spacer),\n    --alert-padding-y: var(--spacer),\n    --alert-color: var(--theme-fg, inherit),\n    --alert-border-color: var(--theme-border, var(--border-color)),\n    --alert-border: var(--border-width) solid var(--alert-border-color),\n    --alert-border-radius: var(--radius-5),\n    --alert-link-color: inherit,\n    --hr-border-color: var(--theme-border, var(--border-color)),\n  ),\n  $alert-tokens\n);\n// scss-docs-end alert-tokens\n\n@layer components {\n  .alert {\n    @include tokens($alert-tokens);\n\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    @include border-radius(var(--alert-border-radius));\n  }\n\n  .alert > p {\n    margin-bottom: 0;\n  }\n\n  .alert-heading {\n    // Specified to prevent conflicts of changing $headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n","@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$avatar-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start avatar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-tokens: defaults(\n  (\n    --avatar-size: 2.5rem,\n    --avatar-border-radius: 50%,\n    --avatar-border-width: 2px,\n    --avatar-border-color: var(--bg-body),\n    --avatar-bg: var(--bg-2),\n    --avatar-color: var(--fg-body),\n    // --avatar-font-weight: var(--font-weight-medium), // Defaults to fallback\n    --avatar-status-size: .75rem,\n    --avatar-status-border-width: 2px,\n    --avatar-status-border-color: var(--bg-body),\n    --avatar-stack-spacing: -.3,\n    --avatar-stack-transition: \"transform .2s ease-in-out\",\n  ),\n  $avatar-tokens\n);\n// scss-docs-end avatar-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start avatar-sizes\n$avatar-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-sizes: defaults(\n  (\n    \"xs\": (\n      size: 1.5rem,\n      status-size: .625rem,\n    ),\n    \"sm\": (\n      size: 2rem,\n    ),\n    \"lg\": (\n      size: 3rem,\n      status-size: 1rem,\n      border-width: 3px,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n      border-width: 4px,\n    ),\n  ),\n  $avatar-sizes\n);\n// scss-docs-end avatar-sizes\n\n@layer components {\n  .avatar {\n    @include tokens($avatar-tokens);\n\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * .4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    @include border-radius(var(--avatar-border-radius));\n\n    > .avatar-img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n  }\n\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    @include border-radius(var(--avatar-border-radius, 50%));\n  }\n\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    @include border-radius(50%);\n\n    &.status-online {\n      background-color: var(--green-500);\n    }\n\n    &.status-offline {\n      background-color: var(--gray-400);\n      @include border-radius(20%);\n    }\n\n    &.status-busy {\n      background-color: var(--red-500);\n      @include border-radius(20%);\n    }\n\n    &.status-away {\n      background-color: var(--yellow-500);\n    }\n  }\n\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n\n    .avatar {\n      // Stack spacing is calculated as a percentage of avatar size\n      margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n      border: var(--avatar-border-width) solid var(--avatar-border-color);\n      mask-image: none;\n      @include transition(var(--avatar-stack-transition));\n\n      &:last-child {\n        margin-left: 0;\n      }\n\n      &:hover {\n        z-index: 1;\n        transform: translateY(-2px);\n      }\n    }\n  }\n\n  @each $size, $tokens in $avatar-sizes {\n    .avatar-#{$size},\n    .avatar-stack-#{$size} > .avatar {\n      --avatar-size: #{map.get($tokens, size)};\n\n      @if map.has-key($tokens, status-size) {\n        --avatar-status-size: #{map.get($tokens, status-size)};\n      }\n\n      @if map.has-key($tokens, border-width) {\n        --avatar-border-width: #{map.get($tokens, border-width)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$badge-tokens: () !default;\n\n// scss-docs-start badge-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$badge-tokens: defaults(\n  (\n    --badge-padding-x: .625em,\n    --badge-padding-y: .25em,\n    --badge-font-size: clamp(12px, .75em, .75em),\n    --badge-font-weight: var(--font-weight-semibold),\n    --badge-color: inherit,\n    --badge-bg: var(--bg-2),\n    --badge-border-width: var(--border-width),\n    --badge-border-color: transparent,\n    --badge-border-radius: var(--radius-7),\n  ),\n  $badge-tokens\n);\n// scss-docs-end badge-tokens\n\n// scss-docs-start badge-variants\n$badge-variants: (\n  \"subtle\": (\n    \"color\": \"fg\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"fg\",\n    \"bg\": \"transparent\",\n    \"border-color\": \"border\"\n  )\n) !default;\n// scss-docs-end badge-variants\n\n@layer components {\n  .badge {\n    @include tokens($badge-tokens);\n\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    @include border-radius(var(--badge-border-radius));\n    // @include gradient-bg();\n\n    // Empty badges collapse automatically\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Quick fix for badges in buttons\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n\n  // scss-docs-start badge-variant-loop\n  @each $variant, $properties in $badge-variants {\n    .badge-#{$variant} {\n      @each $property, $value in $properties {\n        @if $value == \"transparent\" {\n          --badge-#{$property}: transparent;\n        } @else {\n          --badge-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      color: var(--badge-color);\n      background-color: var(--badge-bg);\n      border-color: var(--badge-border-color);\n    }\n  }\n  // scss-docs-end badge-variant-loop\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$breadcrumb-tokens: () !default;\n\n// scss-docs-start breadcrumb-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$breadcrumb-tokens: defaults(\n  (\n    --breadcrumb-margin-bottom: 1rem,\n    --breadcrumb-font-size: inherit,\n    --breadcrumb-bg: transparent,\n    --breadcrumb-border-radius: var(--radius-5),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-divider-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/></svg>\"))},\n    --breadcrumb-divider-width: .375rem,\n    --breadcrumb-divider-height: .75rem,\n    --breadcrumb-link-padding-x: .75rem,\n    --breadcrumb-link-padding-y: .25rem,\n    --breadcrumb-link-color: var(--fg-3),\n    --breadcrumb-link-hover-color: var(--fg-2),\n    --breadcrumb-link-hover-bg: var(--bg-1),\n    --breadcrumb-link-active-color: var(--fg-1),\n    --breadcrumb-link-border-radius: var(--radius-7),\n  ),\n  $breadcrumb-tokens\n);\n// scss-docs-end breadcrumb-tokens\n\n@layer components {\n  .breadcrumb {\n    @include tokens($breadcrumb-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style-type: \"\";\n    background-color: var(--breadcrumb-bg);\n    @include border-radius(var(--breadcrumb-border-radius));\n  }\n\n  .breadcrumb-item {\n    display: flex;\n  }\n\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n\n    // Render a default chevron, painted with `currentcolor` via a mask, when the\n    // divider has no explicit content. Any content (an inline SVG, a text\n    // character, etc.) added to the element overrides this default.\n    &:empty::before {\n      display: block;\n      width: var(--breadcrumb-divider-width);\n      height: var(--breadcrumb-divider-height);\n      content: \"\";\n      background-color: currentcolor;\n      @include mask-icon(var(--breadcrumb-divider-icon));\n    }\n  }\n\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    @include border-radius(var(--breadcrumb-link-border-radius));\n    @include transition(.1s text-decoration-color ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--breadcrumb-link-hover-color);\n      background-color: var(--breadcrumb-link-hover-bg);\n    }\n\n    &.active {\n      color: var(--breadcrumb-link-active-color);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$chip-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start chip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-tokens: defaults(\n  (\n    --chip-height: 1.75rem,\n    --chip-padding-x: .625rem,\n    --chip-gap: .3125rem,\n    --chip-border-radius: var(--radius-pill),\n    --chip-img-size: 1.25rem,\n    --chip-icon-size: 1rem,\n    --chip-dismiss-size: 1rem,\n    --chip-dismiss-opacity: .65,\n    --chip-dismiss-hover-opacity: 1,\n    --chip-color: var(--theme-fg, var(--fg-body)),\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2)),\n    --chip-border-color: transparent,\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast)),\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg)),\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg)),\n  ),\n  $chip-tokens\n);\n// scss-docs-end chip-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .chip {\n    @include tokens($chip-tokens);\n\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    @include border-radius(var(--chip-border-radius));\n\n    &:hover {\n      --chip-bg: var(--theme-bg-muted, var(--bg-3));\n    }\n\n    &:focus-visible {\n      outline: 0;\n      // @include focus-ring();\n    }\n\n    &.active {\n      --chip-color: var(--chip-selected-color);\n      --chip-bg: var(--chip-selected-bg);\n      --chip-border-color: var(--chip-selected-border-color);\n\n      &:hover {\n        --chip-bg: var(--chip-selected-bg);\n        opacity: .9;\n      }\n    }\n\n    &.disabled,\n    &:disabled {\n      pointer-events: none;\n      opacity: .65;\n    }\n  }\n\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    @include border-radius(50%);\n\n    &:first-child {\n      margin-inline-start: -.375rem;\n    }\n  }\n\n  // Chip icon (left side)\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -.25);\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n    }\n\n    > img {\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n      object-fit: cover;\n      @include border-radius(50%);\n    }\n  }\n\n  // Dismiss button (right side)\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    // margin-inline-start: calc(var(--chip-padding-x) * -.5);\n    margin-inline-end: calc(var(--chip-padding-x) * -.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n    // @include transition(opacity .15s ease-in-out);\n\n    &:hover {\n      opacity: var(--chip-dismiss-hover-opacity);\n    }\n\n    &:focus-visible {\n      outline: 0;\n      opacity: 1;\n      @include focus-ring();\n    }\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-dismiss-size);\n      height: var(--chip-dismiss-size);\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"layout/breakpoints\" as *;\n\n$card-tokens: () !default;\n\n// scss-docs-start card-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$card-tokens: defaults(\n  (\n    --card-spacer-y: var(--spacer-5),\n    --card-spacer-x: var(--spacer-5),\n    --card-subtitle-color: inherit,\n    --card-border-width: var(--border-width),\n    --card-border-color: var(--border-color-translucent),\n    --card-border-radius: var(--radius-7),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --card-cap-padding-y: var(--spacer-3),\n    --card-cap-padding-x: var(--spacer),\n    --card-cap-bg: var(--bg-1),\n    --card-cap-color: inherit,\n    --card-height: auto,\n    --card-color: inherit,\n    --card-bg: var(--bg-body),\n    --card-img-overlay-padding: var(--card-spacer-y),\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: calc(var(--card-spacer-y) * .5),\n  ),\n  $card-tokens\n);\n// scss-docs-end card-tokens\n\n@layer components {\n  .card {\n    @include tokens($card-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    // border: var(--card-border-width) solid var(--card-border-color);\n    @include border-radius(var(--card-border-radius));\n    @include box-shadow(var(--card-box-shadow));\n\n    > hr {\n      margin-inline: 0;\n    }\n  }\n\n  .card-body {\n    display: flex;\n    // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n    // as much space as possible, ensuring footers are aligned to the bottom.\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    &:first-child {\n      @include border-top-radius(var(--card-border-radius));\n      border-top-width: var(--card-border-width);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(var(--card-border-radius));\n      border-bottom-width: var(--card-border-width);\n    }\n\n    &:not(:first-child, :last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n\n    // The footer draws a full border (including its top edge), so a body/list\n    // segment that precedes it must not also draw a bottom border or the seam\n    // doubles up.\n    &:has(+ .card-footer) {\n      border-block-end-width: 0;\n    }\n  }\n\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -.5);\n  }\n\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0; // Removes the default margin-bottom of <hN>\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:first-child {\n      @include border-radius(var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0);\n    }\n  }\n\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:last-child {\n      @include border-radius(0 0 var(--card-inner-border-radius) var(--card-inner-border-radius));\n    }\n  }\n\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n\n    .card-header,\n    .card-footer {\n      background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n    }\n  }\n\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n\n    .card-header {\n      color: var(--theme-fg-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-footer {\n      color: var(--theme-fg-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-body,\n    .card-list {\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n  }\n\n  //\n  // Header navs\n  //\n\n  // Combined selector because of specificity match with `.nav` base class\n  .nav.card-header-tabs {\n    margin-inline: calc(-.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y) - var(--nav-tabs-border-width));\n    border-block-end: 0;\n\n    .nav-link.active {\n      background-color: var(--card-bg);\n      border-block-end-color: var(--card-bg);\n    }\n  }\n\n  // Card image\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    @include border-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n\n  .card-img,\n  .card-img-top {\n    @include border-top-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-bottom {\n    @include border-bottom-radius(var(--card-inner-border-radius));\n  }\n\n  .card-row {\n    flex-direction: row;\n\n    .card-body,\n    .card-list {\n      border-width: var(--card-border-width) 0;\n      @include border-radius(0);\n\n      &:first-child {\n        @include border-start-radius(var(--card-inner-border-radius));\n        border-inline-start-width: var(--card-border-width);\n      }\n\n      &:last-child {\n        @include border-end-radius(var(--card-inner-border-radius));\n        border-inline-end-width: var(--card-border-width);\n      }\n\n      &:not(:first-child, :last-child) {\n        border-inline-end-width: var(--card-border-width);\n      }\n    }\n  }\n\n  .card-img-start {\n    @include border-start-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img-end {\n    @include border-end-radius(var(--card-inner-border-radius));\n  }\n\n  //\n  // Card groups\n  //\n\n  // Card groups lay out their cards in a row using a container query, so wrap the\n  // group in a query container (e.g., the `.contains-inline` utility) for the row\n  // layout to take effect. Without a query container the cards remain stacked.\n  .card-group {\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      margin-bottom: var(--card-group-margin);\n    }\n\n    @include container-breakpoint-up(sm) {\n      display: flex;\n      flex-flow: row wrap;\n      // The child selector allows nested `.card` within `.card-group`\n      // to display properly.\n      > .card {\n        flex: 1 0 0;\n        margin-bottom: 0;\n\n        // Borders now live on the inner segments (header, body, list, footer)\n        // and the card images use outlines, so adjacent cards would otherwise\n        // render a doubled-up border at each seam. Pull subsequent cards back by\n        // one border width so their leading edges overlap the previous card's\n        // trailing edge, collapsing the seam into a single line. Gap can't be\n        // negative, so this relies on a negative margin.\n        + .card {\n          margin-inline-start: calc(-1 * var(--card-border-width));\n        }\n\n        // Handle rounded corners\n        @if $enable-rounded {\n          &:not(:last-child) {\n            @include border-end-radius(0);\n\n            > .card-img-top,\n            > .card-header,\n            > .card-body {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-end-radius: 0;\n            }\n          }\n\n          &:not(:first-child) {\n            @include border-start-radius(0);\n\n            > .card-img-top,\n            > .card-header,\n            > .card-body {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-gap: .75rem,\n    --carousel-indicator-bg: var(--fg-3),\n    --carousel-indicator-width: .75rem,\n    --carousel-indicator-height: .75rem,\n    --carousel-indicator-spacer: .25rem,\n    --carousel-indicator-transition: \"opacity .6s ease, width .3s ease\",\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg),\n    --carousel-control-icon-width: 1rem,\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\"),\n    --carousel-control-next-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\"),\n    --carousel-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\"),\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\"),\n    // Scroll-snap engine. `gap` must carry a length unit: it feeds the\n    // `.carousel-item` flex-basis `calc()`, and subtracting a unitless `0` from a\n    // percentage is invalid CSS (it would drop the whole declaration and collapse\n    // every slide to its content width). `peek` only feeds `padding-inline`/\n    // `scroll-padding-inline`, so a bare `0` would be valid there, but we keep it\n    // unit-bearing for consistency.\n    --carousel-items: 1,\n    --carousel-items-gap: 0px,\n    --carousel-items-peek: 0px,\n    --carousel-fade-duration: .6s,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .carousel {\n    @include tokens($carousel-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n\n  // The scroll viewport\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none; // Hide the scrollbar without losing scrollability\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n  }\n\n  // Smooth programmatic/keyboard scrolling, disabled under reduced-motion\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n\n  .carousel-item {\n    // `100%` here is `.carousel-inner`'s content box, which `padding-inline`\n    // has already inset by the peek on each side, so the peek must NOT be\n    // subtracted again — doing so makes every slide `2 * peek` too narrow and\n    // the peek lopsided. Only the inter-slide gaps need removing.\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n\n  //\n  // Layout variants\n  //\n\n  // Center the active slide in the viewport (pairs well with `--carousel-items-peek`)\n  .carousel-center {\n    .carousel-item {\n      scroll-snap-align: center;\n    }\n  }\n\n  // Let each slide size itself; snap points still land on every item\n  .carousel-auto {\n    .carousel-item {\n      flex-basis: auto;\n    }\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  // Fade can't ride scroll-snap (it stacks slides instead of scrolling), so it\n  // becomes a JavaScript-driven mode: every slide is stacked and the active one\n  // is faded in via a CSS opacity transition.\n  .carousel-fade {\n    .carousel-inner {\n      display: grid;\n      overflow: hidden;\n      scroll-snap-type: none;\n    }\n\n    .carousel-item {\n      grid-area: 1 / 1;\n      width: 100%;\n      visibility: hidden;\n      opacity: 0;\n      @include transition(opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration));\n    }\n\n    .carousel-item.active {\n      visibility: visible;\n      opacity: 1;\n      @include transition(opacity var(--carousel-fade-duration) ease);\n    }\n  }\n\n  // Icons for within, rendered via CSS mask so they inherit the current text\n  // color (white on the overlay controls, the button color inside `.btn-*`).\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    @include mask-icon($size: 100% 100%, $position: 50%);\n  }\n\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n\n  [dir=\"rtl\"] .carousel-icon-prev,\n  [dir=\"rtl\"] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n\n  // Optional play/pause control\n  //\n  // A discoverable toggle so users can stop an autoplaying carousel, as required\n  // by WCAG 2.2.2 (Pause, Stop, Hide). `.carousel-control-play-pause` is only a\n  // behavior hook—JS toggles `.paused` on it and its appearance comes from the\n  // wrapping button (e.g. `.btn-icon`). The button holds both glyphs and we show\n  // whichever `.carousel-icon-*` matches the current state.\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n\n  .carousel-control-play-pause.paused {\n    .carousel-icon-pause {\n      display: none;\n    }\n\n    .carousel-icon-play {\n      display: inline-block;\n    }\n  }\n\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n\n    [data-bs-target] {\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      cursor: pointer;\n      background-color: transparent;\n      border: 1px solid var(--carousel-indicator-bg);\n      @include border-radius(var(--carousel-indicator-width));\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      width: calc(var(--carousel-indicator-width) * 2.5);\n      background-color: var(--carousel-indicator-bg);\n      border-color: var(--carousel-indicator-bg);\n    }\n  }\n\n  // Autoplay progress: fill the active indicator like a progress bar over the\n  // current slide's interval. The JS adds `.carousel-playing` and sets\n  // `--carousel-interval` (shipped as `--bs-carousel-interval`) while autoplay is\n  // running. The fill restarts on its own each slide because `.active` moves to a\n  // fresh indicator, so its `::after` animation begins from scratch.\n  @if $enable-transitions {\n    @keyframes carousel-indicator-progress {\n      from { inline-size: 0; }\n      to { inline-size: 100%; }\n    }\n\n    .carousel-playing .carousel-indicators .active {\n      @media (prefers-reduced-motion: no-preference) {\n        position: relative;\n        overflow: hidden;\n        // Empty the pill so it reads as a track that the fill grows across.\n        background-color: transparent;\n\n        &::after {\n          position: absolute;\n          inset-block: 0;\n          inset-inline-start: 0;\n          inline-size: 0;\n          content: \"\";\n          background-color: var(--carousel-indicator-progress-bg);\n          animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n        }\n      }\n    }\n  }\n\n  // Overlay layout\n  //\n  // Overlays the prev/next controls, play/pause button, and indicators on top of\n  // the slides (the classic carousel look) instead of stacking them in the flow.\n\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n\n    .carousel-overlay-controls {\n      position: absolute;\n      inset-block-end: 1rem;\n      inset-inline: 1rem;\n      z-index: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n  }\n}\n","// stylelint-disable selector-max-attribute, property-disallowed-list, selector-no-qualifying-type -- VCP uses extensive data attributes and requires direct border-radius properties for range selection\n\n@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$datepicker-tokens: () !default;\n\n// scss-docs-start datepicker-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$datepicker-tokens: defaults(\n  (\n    --datepicker-padding: 1rem,\n    --datepicker-bg: var(--bg-body),\n    --datepicker-color: var(--fg-body),\n    --datepicker-border-color: var(--border-color-translucent),\n    --datepicker-border-width: var(--border-width),\n    --datepicker-border-radius: var(--radius-7),\n    --datepicker-box-shadow: var(--box-shadow),\n    --datepicker-font-size: var(--font-size-sm),\n    --datepicker-min-width: 280px,\n    --datepicker-zindex: #{$zindex-menu},\n    --datepicker-header-font-weight: 600,\n    --datepicker-weekday-color: var(--fg-3),\n    --datepicker-day-hover-bg: var(--bg-1),\n    --datepicker-day-selected-bg: var(--primary-bg),\n    --datepicker-day-selected-color: var(--primary-contrast),\n    --datepicker-day-today-bg: var(--bg-2),\n    --datepicker-day-today-color: var(--fg-1),\n    --datepicker-day-disabled-color: var(--fg-4),\n  ),\n  $datepicker-tokens\n);\n// scss-docs-end datepicker-tokens\n\n@layer components {\n  [data-vc=\"calendar\"] {\n    @include tokens($datepicker-tokens);\n\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    @include border-radius(var(--datepicker-border-radius));\n\n    // Respond to Bootstrap's color mode system\n    &[data-bs-theme=\"light\"] {\n      color-scheme: light;\n    }\n\n    &[data-bs-theme=\"dark\"] {\n      color-scheme: dark;\n    }\n\n    // Catch-all for focus styles\n    button:focus-visible {\n      position: relative;\n      z-index: 1;\n      @include focus-ring();\n    }\n  }\n\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n\n  // Inline calendars\n  //\n  // Remove popover styling for more neutral styling\n  [data-vc=\"calendar\"]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n\n  [data-vc-position=\"bottom\"] {\n    margin-block-start: .25rem;\n  }\n\n  [data-vc-position=\"top\"] {\n    margin-block-end: -.25rem;\n  }\n\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-color: var(--datepicker-color);\n      @include mask-icon(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\"), $size: null);\n    }\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc-arrow=\"prev\"]::before {\n    transform: rotate(90deg);\n  }\n\n  [data-vc-arrow=\"next\"]::before {\n    transform: rotate(-90deg);\n  }\n\n  // Grid layout\n  [data-vc=\"controls\"] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n\n  [data-vc=\"grid\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n\n  [data-vc=\"column\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n\n  //\n  // Header\n  //\n\n  [data-vc=\"header\"] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: .75rem;\n  }\n\n  // Month and year\n  [data-vc-header=\"content\"] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n\n  [data-vc=\"month\"],\n  [data-vc=\"year\"] {\n    padding: .25rem .5rem;\n    margin-inline: -.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    // cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc=\"content\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n\n  // Month/Year grids\n  [data-vc=\"months\"],\n  [data-vc=\"years\"] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: .25rem;\n    align-items: center;\n  }\n\n  [data-vc=\"years\"] {\n    --vc-columns: 5;\n  }\n\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: .25rem;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n\n    &[data-vc-months-month-selected],\n    &[data-vc-years-year-selected] {\n      color: var(--datepicker-day-selected-color);\n      background-color: var(--datepicker-day-selected-bg);\n\n      &:hover {\n        color: var(--datepicker-day-selected-color);\n        background-color: var(--datepicker-day-selected-bg);\n      }\n    }\n  }\n\n  // Week days header\n  [data-vc=\"week\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: .5rem;\n  }\n\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n\n  // Dates grid\n  [data-vc=\"dates\"] {\n    pointer-events: none;\n  }\n\n  [data-vc-dates=\"row\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: .125rem;\n    padding-bottom: .125rem;\n    pointer-events: auto;\n\n    &:not(:has([data-vc-date-btn])),\n    &[data-vc-date-disabled],\n    &[data-vc-date-disabled] [data-vc-date-btn] {\n      pointer-events: none;\n    }\n  }\n\n  // Date button\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: .75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  // Today\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n\n  // Outside month\n  [data-vc-date-month=\"next\"] [data-vc-date-btn],\n  [data-vc-date-month=\"prev\"] [data-vc-date-btn] {\n    opacity: .5;\n  }\n\n  // Disabled\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n\n  // Range selection styles\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n\n  [data-vc-date-hover=\"first\"] [data-vc-date-btn] {\n    border-start-start-radius: var(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"middle\"] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: .8;\n  }\n\n  // Selected\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n\n  }\n\n  [data-vc-date-selected=\"first\"] [data-vc-date-btn] {\n    border-top-left-radius: var(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// Native <dialog> component\n// Uses the browser's native dialog element with showModal()/show()/close() APIs\n// Leverages native [open] attribute and ::backdrop pseudo-element\n\n// stylelint-disable custom-property-no-missing-var-function\n$dialog-tokens: () !default;\n\n// scss-docs-start dialog-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-tokens: defaults(\n  (\n    --dialog-padding: 1rem,\n    --dialog-width: 500px,\n    --dialog-margin: 1.75rem,\n    --dialog-color: var(--fg-body),\n    --dialog-bg: var(--bg-body),\n    --dialog-border-color: var(--border-color-translucent),\n    --dialog-border-width: var(--border-width),\n    --dialog-border-radius: var(--radius-7),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-transition-duration: .3s,\n    --dialog-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --dialog-backdrop-bg: light-dark(rgb(0 0 0 / 50%), rgb(0 0 0 / 65%)),\n    --dialog-backdrop-blur: 8px,\n    --dialog-header-padding: 1rem,\n    --dialog-header-border-color: var(--border-color-translucent),\n    --dialog-header-border-width: var(--border-width),\n    --dialog-footer-padding: 1rem,\n    --dialog-footer-border-color: var(--border-color-translucent),\n    --dialog-footer-border-width: var(--border-width),\n    --dialog-footer-gap: .5rem,\n  ),\n  $dialog-tokens\n);\n// scss-docs-end dialog-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start dialog-sizes\n$dialog-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-sizes: defaults(\n  (\n    sm: 280px,\n    lg: 800px,\n    xl: 1140px,\n  ),\n  $dialog-sizes\n);\n// scss-docs-end dialog-sizes\n\n@layer components {\n  // Prevent page scroll when a dialog is open. Applied to the root element so\n  // `overflow: hidden` sits on the same element as `scrollbar-gutter: stable`\n  // (see _root.scss): the gutter stays reserved while the scrollbar is hidden,\n  // so the page doesn't shift when a dialog opens.\n  :root.dialog-open {\n    overflow: hidden;\n  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Override UA display:none so visibility controls the hidden state,\n    // enabling reliable cross-browser exit animations after close().\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    @include border-radius(var(--dialog-border-radius));\n    @include box-shadow(var(--dialog-box-shadow));\n\n    // Animated variant (default) — transitions, opacity fade, slide transforms.\n    // Adding .dialog-instant skips all animations (instant show/hide).\n    &:not(.dialog-instant) {\n      // Exit state: faded out\n      opacity: 0;\n\n      // Exit transition: opacity and transform animate out, then visibility\n      // flips hidden after the animation completes (via the delay).\n      @include transition(\n        opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n        transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n        visibility 0s var(--dialog-transition-duration)\n      );\n\n      // Slide-down variant: enters from above sliding down, exits by reversing\n      // back up. Base value is the entry-from / exit-to position so the\n      // animation works on every open (not just the first, which is the only\n      // time @starting-style applies for a persistent <dialog> element).\n      &.dialog-slide-down {\n        transform: translateY(-3rem);\n      }\n\n      // Slide-up variant: enters from below sliding up, exits by reversing\n      // back down. See note above re: base value choice.\n      &.dialog-slide-up {\n        transform: translateY(3rem);\n      }\n\n      // Open state: visible and faded in.\n      // Entry transition: visibility flips visible immediately (0s, no delay),\n      // then opacity and transform animate in.\n      // The :not(.hiding) qualifier lets the exit transition fall back to the\n      // base \"exit\" state above while [open] is still present (the JS keeps\n      // the dialog in the top layer during the exit so the ::backdrop and\n      // the browser's modal centering remain intact).\n      &[open]:not(.hiding) {\n        overflow: visible;\n        visibility: visible;\n        opacity: 1;\n        @include transition(\n          opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n          transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n          visibility 0s\n        );\n        transform: none;\n      }\n\n      // Static backdrop \"bounce\" animation (modal dialogs only). Qualified\n      // with [open] (to outrank the open-state `transform: none` selector\n      // which now also includes `:not(.hiding)`) and `:not(.hiding)` (so\n      // a backdrop click while the dialog is mid-exit doesn't fight the\n      // slide-out transform).\n      &[open].dialog-static:not(.hiding) {\n        transform: scale(1.02);\n      }\n\n      // Native backdrop styling with transitions\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n        @include backdrop-transitions(var(--dialog-transition-duration), var(--dialog-transition-timing));\n      }\n\n      // Exit: fade the native backdrop out alongside the dialog. The dialog\n      // is kept in the top layer (and thus the ::backdrop is still rendered)\n      // for the duration of the exit transition.\n      &.hiding::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n\n    // Instant variant — no transitions, just snap visibility\n    &.dialog-instant {\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n      }\n    }\n\n    // Open state base (always applies, regardless of animation mode).\n    // Excluded while .hiding is present so the animated exit (above) can\n    // fall through to the base \"exit\" state — for instant dialogs, .hiding\n    // is removed synchronously after close() so this still applies normally.\n    &[open]:not(.hiding) {\n      overflow: visible;\n      visibility: visible;\n      opacity: 1;\n      transform: none;\n    }\n\n    // Non-modal dialog positioning\n    // show() doesn't use the top layer, so we need explicit positioning and z-index\n    &.dialog-nonmodal {\n      position: fixed;\n      inset-block-start: 50%;\n      inset-inline-start: 50%;\n      z-index: $zindex-dialog;\n      margin-inline: 0;\n      transform: translate(-50%, -50%);\n    }\n\n    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Entry animation for ::backdrop via @starting-style. The backdrop only\n  // exists while the dialog is in the top layer, so its starting state can't\n  // be expressed on the base selector.\n  // Default dialog (fade only) and the slide variants do NOT need\n  // @starting-style — the base opacity: 0 (and base transform for slides)\n  // serves as the entry-from state with the visibility trick.\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n\n    // Swap entry: when this dialog is opened as the target of a swap, the\n    // outgoing dialog's ::backdrop is being removed synchronously in the same\n    // JS tick. To avoid any flicker (either a dip from a fade-in over nothing,\n    // or double-darkening from two stacked backdrops), start this backdrop\n    // already-opaque so it takes over from the outgoing one seamlessly.\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n  }\n\n  // Dialog sizes\n  @each $size, $value in $dialog-sizes {\n    .dialog-#{$size} { --dialog-width: #{$value}; }\n  }\n\n  // Fullscreen dialog\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n\n  // Responsive fullscreen dialogs\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @if $prefix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .#{css-escape-ident($breakpoint)}-down\\:dialog-fullscreen {\n          --dialog-width: 100vw;\n          --dialog-margin: 0;\n          --dialog-border-radius: 0;\n\n          width: 100%;\n          max-width: none;\n          height: 100%;\n          max-height: none;\n        }\n      }\n    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    @include dialog-header(var(--dialog-header-padding));\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n\n    .btn-close {\n      margin-inline-start: auto;\n    }\n  }\n\n  // Dialog title\n  .dialog-title {\n    @include dialog-title();\n    font-size: var(--font-size-md);\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    @include dialog-body(var(--dialog-padding));\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    @include dialog-footer(var(--dialog-footer-padding), var(--dialog-footer-gap), var(--dialog-footer-border-width), var(--dialog-footer-border-color));\n  }\n}\n","// Shared mixins for Dialog and Drawer sub-components.\n// Both components use identical header/footer/body/title patterns\n// with different token namespaces.\n\n@use \"transition\" as *;\n\n// Header: flex row with close button alignment\n@mixin dialog-header($padding) {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  padding: $padding;\n}\n\n// Footer: flex row with end-aligned actions\n@mixin dialog-footer($padding, $gap, $border-width, $border-color) {\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  gap: $gap;\n  align-items: center;\n  justify-content: flex-end;\n  padding: $padding;\n  border-block-start: $border-width solid $border-color;\n}\n\n// Body: flexible scrollable content area\n@mixin dialog-body($padding) {\n  flex: 1 1 auto;\n  padding: $padding;\n}\n\n// Title: reset margin, set line-height\n@mixin dialog-title($line-height: 1.5) {\n  margin-bottom: 0;\n  line-height: $line-height;\n}\n\n// Backdrop transitions for ::backdrop pseudo-element.\n// Both Dialog and Drawer use identical allow-discrete transitions\n// on display and overlay to keep ::backdrop in the top layer.\n@mixin backdrop-transitions($duration, $timing) {\n  @include transition(\n    background-color $duration $timing,\n    backdrop-filter $duration $timing,\n    display $duration allow-discrete,\n    overlay $duration allow-discrete\n  );\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// stylelint-disable scss/dollar-variable-default, custom-property-no-missing-var-function\n$menu-tokens: () !default;\n\n// scss-docs-start menu-tokens\n$menu-tokens: defaults(\n  (\n    --menu-zindex: #{$zindex-menu},\n    --menu-gap: .125rem,\n    --menu-min-width: 10rem,\n    --menu-padding-x: .25rem,\n    --menu-padding-y: .25rem,\n    --menu-spacer: .125rem,\n    --menu-font-size: var(--font-size-sm),\n    --menu-color: var(--fg-body),\n    --menu-bg: var(--bg-body),\n    // --menu-border-color: var(--border-color-translucent),\n    // --menu-border-radius: var(--radius-7),\n    // --menu-border-width: var(--border-width),\n    --menu-box-shadow: var(--box-shadow),\n    // --menu-max-height: none,\n    --menu-divider-bg: var(--border-color-translucent),\n    --menu-divider-margin-y: .125rem,\n    --menu-divider-margin-x: .25rem,\n    --menu-item-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-bg: var(--bg-1),\n    --menu-item-active-color: var(--primary-contrast),\n    --menu-item-active-bg: var(--primary-bg),\n    --menu-item-disabled-color: var(--fg-3),\n    --menu-item-gap: .5rem,\n    --menu-item-padding-x: .75rem,\n    --menu-item-padding-y: .25rem,\n    --menu-item-border-radius: var(--radius-5),\n    --menu-icon-size: 1rem,\n    --menu-description-font-size: var(--font-size-xs),\n    --menu-check-color: currentcolor,\n    --menu-header-color: var(--fg-3),\n    --menu-header-padding-x: .75rem,\n    --menu-header-padding-y: .25rem,\n    --menu-transition-duration: .15s,\n    --menu-transition-timing: cubic-bezier(.22, 1, .36, 1),\n  ),\n  $menu-tokens\n);\n// scss-docs-end menu-tokens\n\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n@layer components {\n  .menu {\n    @include tokens($menu-tokens);\n\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style-type: \"\";\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    @include border-radius(var(--menu-border-radius, var(--radius-7)));\n    @include box-shadow(var(--menu-box-shadow));\n    opacity: 0;\n    transform: scale(.95);\n    transform-origin: top start;\n\n    &[data-bs-placement^=\"top\"] {\n      transform-origin: bottom start;\n    }\n\n    &[data-bs-placement=\"bottom-end\"] {\n      transform-origin: top end;\n    }\n\n    &[data-bs-placement=\"top-end\"] {\n      transform-origin: bottom end;\n    }\n\n    &[data-bs-placement^=\"left\"] {\n      transform-origin: top end;\n    }\n\n    @include transition(\n      opacity var(--menu-transition-duration) var(--menu-transition-timing),\n      transform var(--menu-transition-duration) var(--menu-transition-timing),\n      display var(--menu-transition-duration) allow-discrete\n    );\n\n    &.show {\n      display: flex;\n      opacity: 1;\n      transform: none;\n    }\n  }\n\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(.95);\n    }\n  }\n\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-fg, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    @include border-radius(var(--menu-item-border-radius, 0));\n\n    &:hover,\n    &:focus {\n      color: var(--theme-fg-emphasis, var(--menu-item-hover-color));\n      background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n      // @include gradient-bg(var(--theme-bg-subtle, var(--menu-item-hover-bg)));\n    }\n\n    &.active,\n    &:active {\n      color: var(--theme-contrast, var(--menu-item-active-color));\n      background-color: var(--theme-bg, var(--menu-item-active-bg));\n      // @include gradient-bg(var(--theme-bg, var(--menu-item-active-bg)));\n\n      .menu-item-icon {\n        color: inherit !important; // stylelint-disable-line declaration-no-important\n      }\n    }\n\n    &.selected {\n      font-weight: $font-weight-semibold;\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--menu-item-disabled-color);\n      pointer-events: none;\n      background-color: transparent;\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n    }\n  }\n\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: .125rem;\n  }\n\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: .125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n\n    .selected > & {\n      visibility: visible;\n    }\n  }\n\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n\n  // scss-docs-start submenu\n  .submenu {\n    position: relative;\n\n    > .menu-item {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .menu-item::after {\n      display: inline-block;\n      flex-shrink: 0;\n      width: .375em;\n      height: .375em;\n      margin-inline-start: auto;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0 .125em .125em 0;\n      transform: rotate(-45deg);\n\n      [dir=\"rtl\"] & {\n        transform: rotate(135deg);\n      }\n    }\n\n    > .menu {\n      top: 0;\n      margin-top: calc(-1 * var(--menu-padding-y));\n    }\n\n    &:hover > .menu-item,\n    &:focus-within > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n\n    &.show > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n  }\n  // scss-docs-end submenu\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n$list-group-tokens: () !default;\n\n// scss-docs-start list-group-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$list-group-tokens: defaults(\n  (\n    --list-group-color: var(--fg-body),\n    --list-group-bg: var(--bg-body),\n    --list-group-border-color: var(--border-color),\n    --list-group-border-width: var(--border-width),\n    --list-group-border-radius: var(--radius-5),\n    --list-group-item-padding-x: var(--spacer),\n    --list-group-item-padding-y: var(--spacer-2),\n    --list-group-action-color: var(--fg-2),\n    --list-group-action-hover-color: var(--fg-1),\n    --list-group-action-hover-bg: var(--bg-1),\n    --list-group-action-active-color: var(--fg-body),\n    --list-group-action-active-bg: var(--bg-2),\n    --list-group-disabled-color: var(--fg-3),\n    --list-group-disabled-bg: var(--bg-body),\n    --list-group-active-color: var(--primary-contrast),\n    --list-group-active-bg: var(--primary-bg),\n    --list-group-active-border-color: var(--primary-bg),\n  ),\n  $list-group-tokens\n);\n// scss-docs-end list-group-tokens\n\n@layer components {\n  .list-group {\n    @include tokens($list-group-tokens);\n\n    display: flex;\n    flex-direction: column;\n\n    // No need to set list-style-type: \"\"; since .list-group-item is block level\n    padding-inline-start: 0; // reset padding because ul and ol\n    margin-bottom: 0;\n    @include border-radius(var(--list-group-border-radius));\n  }\n\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n\n    > .list-group-item::before {\n      // Increments only this instance of the section counter\n      content: counters(section, \".\") \". \";\n      counter-increment: section;\n    }\n  }\n\n  // Individual list items\n  //\n  // Use on `li`s or `div`s within the `.list-group` parent.\n\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-fg, var(--list-group-color));\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    text-decoration: if(sass($link-decoration == none): null);\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n\n    &:first-child {\n      @include border-top-radius(inherit);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(inherit);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--list-group-disabled-color);\n      pointer-events: none;\n      background-color: var(--list-group-disabled-bg);\n    }\n\n    // Include both here for `<a>`s and `<button>`s\n    &.active {\n      z-index: 2; // Place active items above their siblings for proper border styling\n      color: var(--list-group-active-color);\n      background-color: var(--list-group-active-bg);\n      border-color: var(--list-group-active-border-color);\n    }\n\n    // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector\n    & + .list-group-item {\n      border-block-start-width: 0;\n\n      &.active {\n        margin-top: calc(-1 * var(--list-group-border-width));\n        border-block-start-width: var(--list-group-border-width);\n      }\n    }\n  }\n\n  // Interactive list items\n  //\n  // Use anchor or button elements instead of `li`s or `div`s to create interactive\n  // list items. Includes an extra `.active` modifier class for selected items.\n\n  .list-group-item-action {\n    width: 100%; // For `<button>`s (anchors become 100% by default though)\n    color: var(--theme-fg, var(--list-group-action-color));\n    text-align: inherit; // For `<button>`s (anchors inherit)\n    text-decoration: none;\n\n    &:not(.active) {\n      // Hover state\n      &:hover,\n      &:focus {\n        z-index: 1; // Place hover/focus items above their siblings for proper border styling\n        color: var(--theme-fg-emphasis, var(--list-group-action-hover-color));\n        text-decoration: none;\n        background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n      }\n\n      &:active {\n        color: var(--theme-fg-emphasis, var(--list-group-action-active-color));\n        background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n      }\n    }\n  }\n\n  // Horizontal\n  //\n  // Change the layout of list group items from vertical (default) to horizontal.\n  // The responsive variants use container queries, so wrap the list group in a\n  // query container (e.g., the `.contains-inline` utility) for them to take effect.\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}list-group-horizontal {\n      @include container-breakpoint-up($breakpoint) {\n        flex-direction: row;\n\n        > .list-group-item {\n          &:first-child:not(:last-child) {\n            @include border-bottom-start-radius(var(--list-group-border-radius));\n            @include border-top-end-radius(0);\n          }\n\n          &:last-child:not(:first-child) {\n            @include border-top-end-radius(var(--list-group-border-radius));\n            @include border-bottom-start-radius(0);\n          }\n\n          &.active {\n            margin-top: 0;\n          }\n\n          + .list-group-item {\n            border-block-start-width: var(--list-group-border-width);\n            border-inline-start-width: 0;\n\n            &.active {\n              margin-inline-start: calc(-1 * var(--list-group-border-width));\n              border-inline-start-width: var(--list-group-border-width);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Flush list items\n  //\n  // Remove borders and border-radius to keep list group items edge-to-edge. Most\n  // useful within other components (e.g., cards).\n\n  .list-group-flush {\n    @include border-radius(0);\n\n    > .list-group-item {\n      border-width: 0 0 var(--list-group-border-width);\n\n      &:last-child {\n        border-block-end-width: 0;\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n$nav-tokens: () !default;\n\n// scss-docs-start nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tokens: defaults(\n  (\n    --nav-gap: .125rem,\n    --nav-link-gap: .5rem,\n    --nav-link-align: center,\n    --nav-link-justify: center,\n    --nav-link-padding-x: .75rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--fg-2),\n    --nav-link-hover-color: var(--fg-1),\n    --nav-link-hover-bg: var(--bg-1),\n    --nav-link-active-color: var(--fg-body),\n    --nav-link-active-bg: var(--bg-2),\n    --nav-link-disabled-color: var(--fg-4),\n    --nav-link-border-width: var(--border-width),\n    --nav-link-transition-property: \"color, background-color, border-color\",\n    --nav-link-transition-timing: .15s ease-in-out,\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing),\n  ),\n  $nav-tokens\n);\n// scss-docs-end nav-tokens\n\n$nav-tabs-tokens: () !default;\n\n// scss-docs-start nav-tabs-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tabs-tokens: defaults(\n  (\n    --nav-tabs-border-width: var(--border-width),\n    --nav-tabs-border-color: var(--border-color),\n    --nav-tabs-border-radius: var(--radius-5),\n    --nav-tabs-link-hover-border-color: var(--border-subtle),\n    --nav-tabs-link-active-color: var(--fg-color),\n    --nav-tabs-link-active-bg: var(--bg-body),\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body),\n  ),\n  $nav-tabs-tokens\n);\n// scss-docs-end nav-tabs-tokens\n\n$nav-pills-tokens: () !default;\n\n// scss-docs-start nav-pills-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-pills-tokens: defaults(\n  (\n    --nav-pills-bg: var(--bg-1),\n    --nav-pills-padding: .25rem,\n    --nav-pills-border-radius: var(--radius-9),\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n    --nav-pills-link-border-radius: var(--radius-9),\n  ),\n  $nav-pills-tokens\n);\n// scss-docs-end nav-pills-tokens\n\n$nav-underline-tokens: () !default;\n\n// scss-docs-start nav-underline-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-underline-tokens: defaults(\n  (\n    --nav-gap: 1rem,\n    --nav-link-active-bg: transparent,\n    --nav-underline-border-width: .125rem,\n    --nav-underline-link-active-color: var(--fg-color),\n  ),\n  $nav-underline-tokens\n);\n// scss-docs-end nav-underline-tokens\n\n// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n@layer components {\n  .nav {\n    @include tokens($nav-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n\n  .nav-item {\n    display: flex;\n  }\n\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    @include border-radius(var(--radius-5));\n    @include transition(var(--nav-link-transition));\n\n    &:hover,\n    &:focus {\n      color: var(--nav-link-hover-color);\n      background-color: var(--nav-link-hover-bg);\n    }\n\n    &:focus-visible {\n      --focus-ring-offset: 1px;\n      color: var(--nav-link-hover-color);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    &:active {\n      color: var(--nav-link-active-color);\n      background-color: var(--nav-link-active-bg);\n    }\n\n    // Disabled state lightens text\n    &.disabled,\n    &:disabled {\n      color: var(--nav-link-disabled-color);\n      pointer-events: none;\n      cursor: default;\n    }\n  }\n\n  //\n  // Tabs\n  //\n\n  .nav-tabs {\n    // scss-docs-start nav-tabs-css-vars\n    @include tokens($nav-tabs-tokens);\n    // scss-docs-end nav-tabs-css-vars\n\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n\n    .nav-link {\n      border: var(--nav-tabs-border-width) solid transparent;\n      border-bottom-color: var(--nav-tabs-border-color);\n      @include border-bottom-radius(0);\n\n      &:hover {\n        // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n        isolation: isolate;\n        border-color: var(--nav-tabs-link-hover-border-color);\n        border-bottom-color: var(--nav-tabs-border-color);\n      }\n    }\n\n    .nav-link.active,\n    .nav-item.show .nav-link {\n      color: var(--nav-tabs-link-active-color);\n      background-color: var(--nav-tabs-link-active-bg);\n      border-color: var(--nav-tabs-link-active-border-color);\n      border-bottom-color: var(--nav-tabs-link-active-bg);\n    }\n\n    .menu {\n      margin-top: calc(-1 * var(--nav-tabs-border-width));\n      @include border-top-radius(0);\n    }\n  }\n\n  //\n  // Pills\n  //\n\n  .nav-pills {\n    @include tokens($nav-pills-tokens);\n\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    @include border-radius(var(--nav-pills-border-radius));\n\n    .nav-link {\n      @include border-radius(var(--nav-pills-link-border-radius));\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      color: var(--nav-pills-link-active-color);\n      @include gradient-bg(var(--nav-pills-link-active-bg));\n    }\n  }\n\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n\n    .nav-item,\n    .nav-link {\n      width: 100%;\n    }\n  }\n\n  //\n  // Underline\n  //\n\n  .nav-underline {\n    // scss-docs-start nav-underline-css-vars\n    @include tokens($nav-underline-tokens);\n    // scss-docs-end nav-underline-css-vars\n\n    .nav-link {\n      padding-inline: 0;\n      border: 0;\n      border-block-end: var(--nav-underline-border-width) solid transparent;\n      @include border-radius(0);\n\n      &:hover,\n      &:focus {\n        border-block-end-color: currentcolor;\n      }\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      font-weight: $font-weight-bold;\n      color: var(--nav-underline-link-active-color);\n      border-block-end-color: currentcolor;\n    }\n  }\n\n  //\n  // Justified variants\n  //\n\n  .nav-fill {\n    > .nav-link,\n    .nav-item {\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n\n  .nav-justified {\n    > .nav-link,\n    .nav-item {\n      flex-grow: 1;\n      flex-basis: 0;\n      text-align: center;\n    }\n  }\n\n  .nav-fill,\n  .nav-justified {\n    .nav-item .nav-link {\n      width: 100%; // Make sure button will grow\n    }\n  }\n\n  // Tabbable tabs\n  //\n  // Hide tabbable panes to start, show them when `.active`\n\n  .tab-content {\n    > .tab-pane {\n      display: none;\n    }\n    > .active {\n      display: block;\n    }\n  }\n}\n","// Nav Overflow (Priority+ Pattern)\n//\n// A responsive navigation pattern that automatically moves items\n// to an overflow menu when space is limited.\n\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0; // Allow flex child to shrink below content width\n  }\n\n  // Pills use inline-flex by default; override so the nav fills its container\n  // and the ResizeObserver can detect width changes.\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n\n  // Inside a navbar the nav is a flex child that sizes to content by default;\n  // grow it so it fills remaining space and shrinks with the container.\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\n  }\n\n  // Container item for overflow\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n\n  // Hide items that have been moved to overflow\n  .nav-overflow [data-bs-nav-overflow=\"true\"] {\n    display: none;\n  }\n\n  // Preserve items that should never overflow\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// mdo-do: fix nav-link-height and navbar-brand-height, which we previously calculated with font-size, line-height, and block padding\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start navbar-breakpoints\n$navbar-breakpoints: $breakpoints !default;\n// scss-docs-end navbar-breakpoints\n\n$navbar-tokens: () !default;\n$navbar-dark-tokens: () !default;\n$navbar-nav-tokens: () !default;\n\n// scss-docs-start navbar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-tokens: defaults(\n  (\n    --navbar-padding-x: 0,\n    --navbar-padding-y: .5rem,\n    --navbar-color: var(--fg-2),\n    --navbar-hover-color: var(--fg-1),\n    --navbar-disabled-color: var(--fg-3),\n    --navbar-active-color: var(--fg-body),\n    --navbar-brand-padding-y: .75rem,\n    --navbar-brand-margin-end: 1rem,\n    --navbar-brand-font-size: var(--font-size-md),\n    --navbar-brand-font-weight: var(--font-weight-medium),\n    --navbar-brand-color: var(--fg-body),\n    --navbar-brand-hover-color: var(--fg-body),\n    --navbar-nav-link-padding-x: .75rem,\n    --navbar-toggler-width: 2rem,\n    --navbar-toggler-padding-y: .25rem,\n    --navbar-toggler-padding-x: .75rem,\n    --navbar-toggler-font-size: var(--font-size-lg),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    --navbar-toggler-border-radius: var(--radius-5),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n    --navbar-toggler-icon-size: 1.25rem,\n    --navbar-toggler-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/></svg>\"))},\n  ),\n  $navbar-tokens\n);\n// scss-docs-end navbar-tokens\n\n// scss-docs-start navbar-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-dark-tokens: defaults(\n  (\n    --navbar-color: color-mix(in oklch, var(--white) .55, transparent),\n    --navbar-hover-color: color-mix(in oklch, var(--white) .75, transparent),\n    --navbar-disabled-color: color-mix(in oklch, var(--white) .25, transparent),\n    --navbar-active-color: var(--white),\n    --navbar-brand-color: var(--white),\n    --navbar-brand-hover-color: var(--white),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) .1, transparent),\n  ),\n  $navbar-dark-tokens\n);\n// scss-docs-end navbar-dark-tokens\n\n// scss-docs-start navbar-nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-nav-tokens: defaults(\n  (\n    --nav-gap: .25rem,\n    --nav-link-gap: .5rem,\n    --nav-link-padding-x: .5rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--navbar-color),\n    --nav-link-border-width: var(--border-width),\n    //--nav-link-border-color: var(--border-color),\n    --nav-link-hover-color: var(--navbar-hover-color),\n    --nav-link-hover-bg: transparent,\n    --nav-link-active-color: var(--navbar-active-color),\n    --nav-link-active-bg: transparent,\n    --nav-link-disabled-color: var(--navbar-disabled-color),\n  ),\n  $navbar-nav-tokens\n);\n// scss-docs-end navbar-nav-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  // Base navbar\n  .navbar {\n    @include tokens($navbar-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    @include set-container();\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n    // @include gradient-bg(var(--navbar-bg, var(--bg-body)));\n\n    // Container properties for nested containers\n    %container-flex-properties {\n      display: flex;\n      flex-wrap: inherit;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .container,\n    > .container-fluid {\n      @extend %container-flex-properties;\n    }\n\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      > .#{breakpoint-prefix($breakpoint, $container-max-widths)}container {\n        @extend %container-flex-properties;\n      }\n    }\n  }\n\n  // Navbar brand\n  //\n  // Used for brand, project, or site names.\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n\n    &:hover,\n    &:focus {\n      color: var(--navbar-brand-hover-color);\n    }\n  }\n\n  // Navigation within navbars. Sets all nav-link CSS variables needed for\n  // proper styling.\n  //\n  // Relies on `.nav` base class.\n  .navbar-nav {\n    @include tokens($navbar-nav-tokens);\n\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n\n    .nav-link {\n      &.active,\n      &.show {\n        color: var(--navbar-active-color);\n        border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n      }\n    }\n  }\n\n  // Navbar text\n  //\n  // For adding text or inline elements to the navbar\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n\n    a,\n    a:hover,\n    a:focus {\n      color: var(--navbar-active-color);\n    }\n  }\n\n  // Button for toggling the navbar when in its collapsed state\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n\n  // Hamburger icon, rendered via CSS mask so it inherits the navbar color\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    @include mask-icon(var(--navbar-toggler-icon));\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of responsive `.navbar-expand` classes for configuring\n  // where your navbar collapses and expands. Uses container queries so the\n  // navbar responds to its own width, not the viewport width.\n\n  // Mixin for expanded state styles (applied to descendants)\n  @mixin navbar-expanded {\n    // Style the inner container since we can't style .navbar itself with container queries\n    > .container,\n    > .container-fluid,\n    %navbar-expand-container {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n\n    .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n\n    .navbar-toggler {\n      display: none !important; // stylelint-disable-line declaration-no-important\n    }\n\n    [class*=\"drawer\"] {\n      // stylelint-disable declaration-no-important\n      // Reset native <dialog> UA styles and below-breakpoint drawer styles.\n      // Must use !important to override both UA <dialog> defaults and the\n      // responsive drawer styles from media-breakpoint-down().\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      @include box-shadow(none);\n      @include transition(none);\n      // stylelint-enable declaration-no-important\n\n      .drawer-header {\n        display: none !important; // stylelint-disable-line declaration-no-important\n      }\n\n      .drawer-body {\n        display: flex;\n        flex-grow: 1;\n        flex-direction: row;\n        align-items: center;\n        padding: 0;\n        overflow-y: visible;\n      }\n    }\n  }\n\n  // Always expanded (no responsive behavior)\n  .navbar-expand {\n    @include navbar-expanded();\n\n    // Also set on navbar itself for non-responsive case\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n\n  // Responsive navbar expand classes using container queries\n  @include loop-breakpoints-down($navbar-breakpoints) using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}navbar-expand {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  // Prevent drawer flash on breakpoint crossing.\n  // When the navbar crosses from expanded (inline) to collapsed (drawer),\n  // the drawer transitions from visibility:visible to visibility:hidden.\n  // Without this override, the slide transition plays — briefly showing the\n  // panel sliding away. Disabling transitions when not [open] ensures only\n  // intentional show/hide actions animate.\n  // stylelint-disable-next-line no-duplicate-selectors\n  .navbar {\n    [class*=\"drawer\"]:not([open], .hiding) {\n      @include transition(none !important);\n    }\n  }\n\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n\n    &::before {\n      position: absolute;\n      inset: 0;\n      z-index: -1;\n      content: \"\";\n      background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n      background-image: none;\n      backdrop-filter: blur(5px) saturate(180%);\n    }\n  }\n\n  .navbar[data-bs-theme=\"dark\"] {\n    @include tokens($navbar-dark-tokens);\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$drawer-tokens: () !default;\n\n// scss-docs-start drawer-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-tokens: defaults(\n  (\n    --drawer-inset: var(--spacer),\n    --drawer-zindex: #{$zindex-drawer},\n    --drawer-width: 400px,\n    --drawer-height: 30vh,\n    --drawer-padding-x: var(--spacer),\n    --drawer-padding-y: var(--spacer),\n    --drawer-color: var(--fg-body),\n    --drawer-bg: var(--bg-body),\n    --drawer-border-width: var(--border-width),\n    --drawer-border-color: var(--border-color-translucent),\n    --drawer-border-radius: var(--radius-7),\n    --drawer-box-shadow: var(--box-shadow-lg),\n    --drawer-transition-duration: .3s,\n    --drawer-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --drawer-title-line-height: 1.5,\n    --drawer-backdrop-bg: color-mix(in oklch, var(--bg-body) 25%, transparent),\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-tokens\n);\n// scss-docs-end drawer-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$drawer-backdrop-tokens: () !default;\n\n// scss-docs-start drawer-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-backdrop-tokens: defaults(\n  (\n    --drawer-backdrop-bg: var(--bg-body),\n    --drawer-backdrop-opacity: 25%,\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-backdrop-tokens\n);\n// scss-docs-end drawer-backdrop-tokens\n\n%drawer-css-vars {\n  @include tokens($drawer-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all drawer responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @extend %drawer-css-vars;\n    }\n  }\n\n  // Responsive drawer styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @include media-breakpoint-down($next) {\n        // Reset native <dialog> UA defaults (fit-content sizing, inset, margins)\n        // and override display:none so visibility controls the hidden state.\n        position: fixed;\n        inset: auto;\n        z-index: var(--drawer-zindex);\n        display: flex;\n        flex-direction: column;\n        width: auto;\n        max-width: calc(100% - var(--drawer-inset) * 2);\n        height: auto;\n        max-height: calc(100% - var(--drawer-inset) * 2);\n        padding: 0;\n        margin: 0;\n        color: var(--drawer-color);\n        visibility: hidden;\n        background-color: var(--drawer-bg);\n        background-clip: padding-box;\n        border: var(--drawer-border-width) solid var(--drawer-border-color);\n        outline: 0;\n\n        @include border-radius(var(--drawer-border-radius));\n        @include box-shadow(var(--drawer-box-shadow));\n\n        // Placement positioning and sizing — always applied regardless of animation mode.\n        &:where(.drawer-start) {\n          inset-block: var(--drawer-inset);\n          inset-inline-start: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-end) {\n          inset-block: var(--drawer-inset);\n          inset-inline-end: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-top) {\n          inset: var(--drawer-inset) var(--drawer-inset) auto;\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-bottom) {\n          inset: auto var(--drawer-inset) var(--drawer-inset);\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-fullscreen) {\n          inset: var(--drawer-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n        }\n\n        // Animated variant (default) — transitions + off-screen transforms.\n        // Adding .drawer-instant skips all animations.\n        &:not(.drawer-instant) {\n          @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration));\n\n          // Off-screen transforms per placement\n          &:where(.drawer-start) {\n            transform: translateX(calc(-100% - var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(100% + var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-end) {\n            transform: translateX(calc(100% + var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(-100% - var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-top) {\n            transform: translateY(calc(-100% - var(--drawer-inset)));\n          }\n\n          &:where(.drawer-bottom) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          &:where(.drawer-fullscreen) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          // Open state: slide in with transition\n          &[open] {\n            visibility: visible;\n            @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s);\n            transform: none;\n          }\n        }\n\n        // Open state base (always applies, regardless of animation mode)\n        &[open] {\n          visibility: visible;\n          transform: none;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive drawer)\n      // Above breakpoint - show content inline (for responsive drawer).\n      // Must fully reset all drawer styles so the element behaves as an\n      // inline flex container within its parent (e.g., a navbar).\n      @if not ($prefix == \"\") {\n        @include media-breakpoint-up($next) {\n          // stylelint-disable declaration-no-important\n          --drawer-height: auto;\n          --drawer-border-width: 0;\n          // Reset native <dialog> UA styles\n          position: static !important;\n          inset: auto;\n          z-index: auto;\n          display: flex !important;\n          flex-grow: 1;\n          width: auto !important;\n          max-width: none;\n          height: auto !important;\n          max-height: none;\n          padding: 0;\n          margin: 0;\n          visibility: visible !important;\n          background-color: transparent !important;\n          border: 0 !important;\n          transform: none !important;\n          @include transition(none !important);\n          // stylelint-enable declaration-no-important\n\n          .drawer-header {\n            display: none;\n          }\n\n          .drawer-body {\n            display: flex;\n            flex-grow: 0;\n            flex-direction: row;\n            width: 100%;\n            padding: 0;\n            overflow-y: visible;\n            // stylelint-disable-next-line declaration-no-important\n            background-color: transparent !important;\n          }\n          @include border-radius(0);\n          @include box-shadow(none);\n        }\n      }\n    }\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer::backdrop {\n      background-color: var(--drawer-backdrop-bg);\n      backdrop-filter: blur(var(--drawer-backdrop-blur));\n      @include backdrop-transitions(var(--drawer-transition-duration), var(--drawer-transition-timing));\n    }\n  }\n\n  // Backdrop entry animation — ::backdrop can safely use @starting-style\n  // since it only exists when the dialog is in the top layer (no responsive issue).\n  @starting-style {\n    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n      .#{$prefix}drawer::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n  }\n\n  // Static backdrop transition (\"bounce\")\n  .drawer-static {\n    transform: scale(1.02);\n  }\n\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  // Sheet variant: flush-to-edge panel with no inset, border-radius, or shadow.\n  // Overrides tokens so placement transforms (which use calc() with --drawer-inset)\n  // automatically position the drawer at the viewport edge.\n  .drawer-sheet {\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100vw;\n    margin-inline: auto;\n    margin-bottom: calc(-1 * var(--drawer-border-width));\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n\n    @include media-breakpoint-up(lg) {\n      max-width: var(--drawer-sheet-width, 760px);\n    }\n  }\n\n  // Header with close button\n  .drawer-header {\n    @include dialog-header(var(--drawer-padding-y) var(--drawer-padding-x));\n\n    .btn-close {\n      margin-block: calc(-.5 * var(--drawer-padding-y));\n      margin-inline-start: auto;\n    }\n  }\n\n  // Title\n  .drawer-title {\n    @include dialog-title(var(--drawer-title-line-height));\n  }\n\n  // Scrollable body\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    @include dialog-body(var(--drawer-padding-y) var(--drawer-padding-x));\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .drawer-footer {\n    @include dialog-footer(var(--drawer-padding-y) var(--drawer-padding-x), .5rem, var(--drawer-border-width), var(--drawer-border-color));\n  }\n\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/lists\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// mdo-do: Update pagination to support variant themes\n\n// stylelint-disable custom-property-no-missing-var-function\n$pagination-tokens: () !default;\n\n// scss-docs-start pagination-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-tokens: defaults(\n  (\n    --pagination-min-height: var(--btn-input-min-height),\n    --pagination-padding-x: var(--btn-input-padding-x),\n    --pagination-padding-y: var(--btn-input-padding-y),\n    --pagination-font-size: var(--btn-input-font-size),\n    --pagination-color: var(--link-color),\n    --pagination-bg: var(--bg-body),\n    --pagination-border-width: var(--border-width),\n    --pagination-border-color: var(--border-color),\n    --pagination-border-radius: var(--btn-input-border-radius),\n    --pagination-hover-color: var(--link-hover-color),\n    --pagination-hover-bg: var(--bg-1),\n    --pagination-hover-border-color: var(--border-color),\n    --pagination-focus-color: var(--link-hover-color),\n    --pagination-focus-bg: var(--bg-2),\n    --pagination-active-color: var(--primary-contrast),\n    --pagination-active-bg: var(--primary-bg),\n    --pagination-active-border-color: var(--primary-bg),\n    --pagination-disabled-color: var(--fg-3),\n    --pagination-disabled-bg: var(--bg-2),\n    --pagination-disabled-border-color: var(--border-color),\n  ),\n  $pagination-tokens\n);\n// scss-docs-end pagination-tokens\n\n// scss-docs-start pagination-sizes\n$pagination-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $pagination-sizes\n);\n// scss-docs-end pagination-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .pagination {\n    @include tokens($pagination-tokens);\n\n    display: flex;\n    @include list-unstyled();\n  }\n\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    @include transition(color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--pagination-hover-color);\n      background-color: var(--pagination-hover-bg);\n      border-color: var(--pagination-hover-border-color);\n    }\n\n    &:focus-visible {\n      z-index: 3;\n      color: var(--pagination-focus-color);\n      background-color: var(--pagination-focus-bg);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    .active > & {\n      z-index: 3;\n      color: var(--pagination-active-color);\n      @include gradient-bg(var(--pagination-active-bg));\n      border-color: var(--pagination-active-border-color);\n    }\n\n    &.disabled,\n    .disabled > & {\n      color: var(--pagination-disabled-color);\n      pointer-events: none;\n      background-color: var(--pagination-disabled-bg);\n      border-color: var(--pagination-disabled-border-color);\n    }\n  }\n\n  .page-item {\n    &:not(:first-child) .page-link {\n      margin-inline-start: calc(-1 * var(--pagination-border-width));\n    }\n\n    &:first-child {\n      .page-link {\n        @include border-start-radius(var(--pagination-border-radius));\n      }\n    }\n\n    &:last-child {\n      .page-link {\n        @include border-end-radius(var(--pagination-border-radius));\n      }\n    }\n  }\n\n  //\n  // Sizing\n  //\n\n  // scss-docs-start pagination-sizes-loop\n  @each $size, $_ in $pagination-sizes {\n    .pagination-#{$size} {\n      --pagination-min-height: var(--bs-btn-input-#{$size}-min-height);\n      --pagination-padding-y: var(--btn-input-#{$size}-padding-y);\n      --pagination-padding-x: var(--btn-input-#{$size}-padding-x);\n      --pagination-font-size: var(--btn-input-#{$size}-font-size);\n      --pagination-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end pagination-sizes-loop\n}\n","@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n$placeholder-tokens: () !default;\n\n// scss-docs-start placeholder-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$placeholder-tokens: defaults(\n  (\n    --placeholder-opacity-max: .5,\n    --placeholder-opacity-min: .2,\n  ),\n  $placeholder-tokens\n);\n// scss-docs-end placeholder-tokens\n\n@layer components {\n  .placeholder {\n    @include tokens($placeholder-tokens);\n\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n\n    &.btn::before {\n      display: inline-block;\n      content: \"\";\n    }\n  }\n\n  // Sizing\n  .placeholder-xs {\n    min-height: .6em;\n  }\n\n  .placeholder-sm {\n    min-height: .8em;\n  }\n\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n\n  // Animation\n  .placeholder-glow {\n    .placeholder {\n      animation: placeholder-glow 2s ease-in-out infinite;\n    }\n  }\n\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, $black 55%, rgb(0 0 0 / calc(1 - var(--placeholder-opacity-min))) 75%, $black 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$popover-tokens: () !default;\n\n// scss-docs-start popover-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$popover-tokens: defaults(\n  (\n    --popover-zindex: #{$zindex-popover},\n    --popover-max-width: 280px,\n    --popover-font-size: var(--font-size-sm),\n    --popover-bg: var(--bg-body),\n    --popover-border-width: var(--border-width),\n    --popover-border-color: var(--border-color-translucent),\n    --popover-border-radius: var(--radius-7),\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: var(--spacer),\n    --popover-header-padding-y: var(--spacer-3),\n    --popover-header-font-size: var(--font-size-sm),\n    --popover-header-color: #{$headings-color},\n    --popover-header-bg: var(--bg-1),\n    --popover-body-padding-x: var(--spacer),\n    --popover-body-padding-y: var(--spacer-3),\n    --popover-body-color: var(--fg-body),\n    --popover-arrow-width: 1rem,\n    --popover-arrow-height: .5rem,\n    --popover-arrow-border: var(--popover-border-color),\n  ),\n  $popover-tokens\n);\n// scss-docs-end popover-tokens\n\n@layer components {\n  .popover {\n    // scss-docs-start popover-css-vars\n    @include tokens($popover-tokens);\n    // scss-docs-end popover-css-vars\n\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--popover-font-size);\n    // Allow breaking very long words so they don't overflow the popover's bounds\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-radius(var(--popover-border-radius));\n    @include box-shadow(var(--popover-box-shadow));\n\n    .popover-arrow {\n      display: block;\n      width: var(--popover-arrow-width);\n      height: var(--popover-arrow-height);\n\n      &::before,\n      &::after {\n        position: absolute;\n        display: block;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n        border-width: 0;\n      }\n    }\n  }\n\n  .bs-popover-top {\n    > .popover-arrow {\n      bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        bottom: 0;\n        border-block-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        bottom: var(--popover-border-width);\n        border-block-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-end {\n    > .popover-arrow {\n      left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        left: 0;\n        border-inline-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        left: var(--popover-border-width);\n        border-inline-end-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-bottom {\n    > .popover-arrow {\n      top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        top: 0;\n        border-block-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        top: var(--popover-border-width);\n        border-block-end-color: var(--popover-bg);\n      }\n\n      // When the popover has a header, the bottom arrow points into the header,\n      // so its fill should match the header background, not the body background.\n      &:has(+ .popover-header)::after {\n        border-block-end-color: var(--popover-header-bg);\n      }\n    }\n\n    // This will remove the popover-header's border just below the arrow\n    .popover-header::before {\n      position: absolute;\n      top: 0;\n      left: 50%;\n      display: block;\n      width: var(--popover-arrow-width);\n      margin-inline-start: calc(-.5 * var(--popover-arrow-width));\n      content: \"\";\n      border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n    }\n  }\n\n  .bs-popover-start {\n    > .popover-arrow {\n      right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        right: 0;\n        border-inline-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        right: var(--popover-border-width);\n        border-inline-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-popover-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-popover-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-popover-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-popover-start;\n    }\n  }\n\n  // Offset the popover to account for the popover arrow\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0; // Reset the default from Reboot\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-top-radius(var(--popover-inner-border-radius));\n\n    &:empty {\n      display: none;\n    }\n  }\n\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n","@mixin reset-text {\n  font-family: var(--body-font-family);\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: var(--body-font-weight);\n  line-height: var(--body-line-height);\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  white-space: normal;\n  word-spacing: normal;\n  line-break: auto;\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n\n$progress-tokens: () !default;\n\n// scss-docs-start progress-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$progress-tokens: defaults(\n  (\n    --progress-height: 1rem,\n    --progress-font-size: var(--font-size-sm),\n    --progress-bg: var(--bg-2),\n    --progress-border-radius: var(--radius-5),\n    --progress-box-shadow: var(--box-shadow-inset),\n    --progress-bar-color: var(--white),\n    --progress-bar-bg: var(--primary-bg),\n    --progress-bar-transition: width .6s ease,\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite,\n  ),\n  $progress-tokens\n);\n// scss-docs-end progress-tokens\n\n// Disable animation if transitions are disabled\n\n@layer components {\n  // scss-docs-start progress-keyframes\n  @if $enable-transitions {\n    @keyframes progress-bar-stripes {\n      0% { background-position-x: var(--progress-height); }\n    }\n  }\n  // scss-docs-end progress-keyframes\n\n  .progress,\n  .progress-stacked {\n    @include tokens($progress-tokens);\n\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    @include border-radius(var(--progress-border-radius));\n    @include box-shadow(var(--progress-box-shadow));\n  }\n\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    @include transition(var(--progress-bar-transition));\n  }\n\n  .progress-bar-striped {\n    @include gradient-striped();\n    background-size: var(--progress-height) var(--progress-height);\n  }\n\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n\n  @if $enable-transitions {\n    .progress-bar-animated {\n      animation: var(--progress-bar-animation);\n\n      @if $enable-reduced-motion {\n        @media (prefers-reduced-motion: reduce) {\n          animation: none;\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$spinner-border-tokens: () !default;\n\n// scss-docs-start spinner-border-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-border-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-border-width: .25em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-border,\n  ),\n  $spinner-border-tokens\n);\n// scss-docs-end spinner-border-tokens\n\n$spinner-grow-tokens: () !default;\n\n// scss-docs-start spinner-grow-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-grow-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-grow,\n  ),\n  $spinner-grow-tokens\n);\n// scss-docs-end spinner-grow-tokens\n\n// stylelint-enable custom-property-no-missing-var-function\n\n//\n// Rotating border\n//\n\n@layer components {\n  // mdo-do: Refactor this to assume flex parent and remove `vertical-align`\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n\n  // scss-docs-start spinner-border-keyframes\n  @keyframes spinner-border {\n    to { transform: rotate(360deg); }\n  }\n  // scss-docs-end spinner-border-keyframes\n\n  .spinner-border {\n    @include tokens($spinner-border-tokens);\n\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n\n  .spinner-border-sm {\n    // scss-docs-start spinner-border-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n    // scss-docs-end spinner-border-sm-css-vars\n  }\n\n  //\n  // Growing circle\n  //\n\n  // scss-docs-start spinner-grow-keyframes\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  // scss-docs-end spinner-grow-keyframes\n\n  .spinner-grow {\n    @include tokens($spinner-grow-tokens);\n\n    background-color: currentcolor;\n    opacity: 0;\n  }\n\n  .spinner-grow-sm {\n    // scss-docs-start spinner-grow-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    // scss-docs-end spinner-grow-sm-css-vars\n  }\n\n  @if $enable-reduced-motion {\n    @media (prefers-reduced-motion: reduce) {\n      .spinner-border,\n      .spinner-grow {\n        --spinner-animation-speed: 1.5s;\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$stepper-tokens: () !default;\n\n// scss-docs-start stepper-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$stepper-tokens: defaults(\n  (\n    --stepper-size: 2rem,\n    --stepper-gap: 1rem,\n    --stepper-font-size: var(--font-size-sm),\n    --stepper-text-gap: .5rem,\n    --stepper-track-size: .125rem,\n    --stepper-bg: var(--bg-2),\n    --stepper-active-color: var(--primary-contrast),\n    --stepper-active-bg: var(--primary-bg),\n  ),\n  $stepper-tokens\n);\n// scss-docs-end stepper-tokens\n\n// scss-docs-start stepper-horizontal-mixin\n@mixin stepper-horizontal() {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n\n  .stepper-item {\n    grid-template-rows: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n\n    &::after {\n      inset-block-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 100%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n@layer components {\n  .stepper {\n    @include tokens($stepper-tokens);\n\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\n  }\n\n  .stepper-item {\n    position: relative;\n    display: grid;\n    grid-template-rows: auto;\n    grid-template-columns: var(--stepper-size) auto;\n    gap: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, center);\n    text-decoration: none;\n\n    // The counter\n    &::before {\n      position: relative;\n      z-index: 1;\n      display: flex;\n      flex-shrink: 0;\n      align-items: center;\n      justify-content: center;\n      width: var(--stepper-size);\n      height: var(--stepper-size);\n      padding: .5rem;\n      font-size: var(--stepper-font-size);\n      font-weight: 600;\n      line-height: 1;\n      text-align: center;\n      content: counter(stepper);\n      counter-increment: stepper;\n      background-color: var(--stepper-bg);\n      @include border-radius(50%);\n    }\n\n    // Connecting lines\n    &::after {\n      position: absolute;\n      inset-block-start: 50%;\n      inset-block-end: 100%;\n      inset-inline-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      width: var(--stepper-track-size);\n      height: calc(100% + var(--stepper-gap));\n      content: \"\";\n      background-color: var(--stepper-bg);\n    }\n\n    // Avoid sibling selector for easier CSS overrides\n    &:last-child::after {\n      display: none;\n    }\n\n    &.active {\n      &::before,\n      &::after {\n        color: var(--theme-contrast, var(--stepper-active-color));\n        background-color: var(--theme-bg, var(--stepper-active-bg));\n      }\n    }\n  }\n\n  // Targets the last .active element from a sequence of active elements\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n\n  .stepper-horizontal {\n    @include stepper-horizontal();\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}stepper-horizontal {\n        @include container-breakpoint-up($next) {\n          @include stepper-horizontal();\n        }\n      }\n    }\n  }\n\n  // scss-docs-start stepper-overflow\n  .stepper-overflow {\n    container-type: inline-size;\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n\n    > .stepper {\n      width: max-content;\n      min-width: 100%;\n    }\n  }\n  // scss-docs-end stepper-overflow\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$toast-tokens: () !default;\n\n// scss-docs-start toast-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$toast-tokens: defaults(\n  (\n    --toast-zindex: #{$zindex-toast},\n    --toast-padding-x: 1rem,\n    --toast-padding-y: .75rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: var(--font-size-sm),\n    --toast-color: null,\n    --toast-bg: var(--bg-body),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: null,\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: var(--bg-1),\n    --toast-header-border-color: var(--border-color-translucent),\n  ),\n  $toast-tokens\n);\n// stylelint-enable custom-property-no-missing-var-function\n// scss-docs-end toast-tokens\n\n@layer components {\n  .toast {\n    @include tokens($toast-tokens);\n\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius, var(--radius-7)));\n\n    &.showing {\n      opacity: 0;\n    }\n\n    &:not(.show) {\n      display: none;\n    }\n  }\n\n  .toast-container {\n    --toast-zindex: #{$zindex-toast};\n\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n\n    > :not(:last-child) {\n      margin-bottom: var(--toast-spacing);\n    }\n  }\n\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    // background-clip: padding-box;\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n\n    .btn-close {\n      margin-inline-start: calc(.5 * var(--toast-padding-x));\n      margin-inline-end: calc(-.25 * var(--toast-padding-x));\n      color: inherit;\n    }\n  }\n\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$tooltip-tokens: () !default;\n\n// scss-docs-start tooltip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$tooltip-tokens: defaults(\n  (\n    --tooltip-zindex: #{$zindex-tooltip},\n    --tooltip-max-width: 200px,\n    --tooltip-padding-x: var(--spacer-3),\n    --tooltip-padding-y: calc(var(--spacer) * .375),\n    --tooltip-font-size: var(--font-size-sm),\n    --tooltip-color: var(--bg-body),\n    --tooltip-bg: var(--fg-body),\n    --tooltip-border-radius: var(--radius-5),\n    --tooltip-opacity: .95,\n    --tooltip-arrow-width: .8rem,\n    --tooltip-arrow-height: .4rem,\n  ),\n  $tooltip-tokens\n);\n// scss-docs-end tooltip-tokens\n\n@layer components {\n  .tooltip {\n    @include tokens($tooltip-tokens);\n\n    z-index: var(--tooltip-zindex);\n    display: block;\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--tooltip-font-size);\n    // Allow breaking very long words so they don't overflow the tooltip's bounds\n    word-wrap: break-word;\n    opacity: 0;\n\n    &.show { opacity: var(--tooltip-opacity); }\n\n    .tooltip-arrow {\n      display: block;\n      width: var(--tooltip-arrow-width);\n      height: var(--tooltip-arrow-height);\n\n      &::before {\n        position: absolute;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n      }\n    }\n  }\n\n  .bs-tooltip-top .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      top: -1px;\n      border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-block-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-end .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      right: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-inline-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-bottom .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-block-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-start .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      left: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-inline-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-tooltip-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-tooltip-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-tooltip-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-tooltip-start;\n    }\n  }\n\n  // Wrapper for the tooltip content\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    @include border-radius(var(--tooltip-border-radius));\n  }\n}\n","@use \"config\" as *;\n@use \"mixins/transition\" as *;\n\n.fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","@layer helpers {\n  .focus-ring:focus-visible {\n    // outline: var(--focus-ring);\n    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}sticky-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .#{$prefix}sticky-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}vstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .#{$prefix}hstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Themes map sub-keys\n//\n// Return var() references to root tokens instead of raw values.\n// Ex: theme-color-refs(\"bg\") => (primary: var(--primary-bg), accent: var(--accent-bg), ...)\n@function theme-color-refs($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: var(--#{$color-name}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Theme token to root tokens\n//\n// Returns the global :root token reference for a given a given token map, prefix, and key.\n// Ex: theme-token-refs($theme-bgs, \"bg\") => (body: var(--bg-body), 1: var(--bg-1), ...)\n// Skips `inherit` since it's a CSS-wide keyword that can't be stored in a custom property.\n@function theme-token-refs($map, $prefix) {\n  $result: ();\n\n  @each $key, $value in $map {\n    @if $value != inherit {\n      $result: map.merge($result, ($key: var(--#{$prefix}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"fg\": light-dark(var(--blue-600), var(--blue-400)),\n    \"fg-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"fg\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"fg-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"fg\": light-dark(var(--green-600), var(--green-400)),\n    \"fg-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"fg\": light-dark(var(--red-600), var(--red-400)),\n    \"fg-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"fg\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"fg-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"fg\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"fg-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"fg\": light-dark(var(--gray-900), var(--gray-200)),\n    \"fg-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"fg\": light-dark(var(--gray-600), var(--gray-400)),\n    \"fg-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"fg\": var(--fg-body),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"bg\": var(--bg-body),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus, :focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus, :focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../config\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  @include generate-utilities-loop($utilities, $breakpoints);\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../layout/breakpoints\" as bp;\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can target children via `child-selector`, wrapped in :where() for zero specificity\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to emit CSS custom properties from a utility's `variables` key.\n// When variables is a map, the provided static values are used on each class.\n// When variables is a list or single identifier, each variable receives the current utility value.\n@mixin generate-variables($utility, $value) {\n  @if map.has-key($utility, variables) {\n    $variables: map.get($utility, variables);\n    @if meta.type-of($variables) == \"map\" {\n      @each $var-key, $var-value in $variables {\n        --#{$var-key}: #{$var-value};\n      }\n    } @else {\n      // Treat as a list (or single identifier) — each variable gets the utility value\n      @each $var-name in $variables {\n        --#{$var-name}: #{$value};\n      }\n    }\n  }\n}\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $property-map, $properties, $value) {\n  @if $property-map != null {\n    // Property-Value Mapping approach\n    @each $property, $default-value in $property-map {\n      // If value is a map, check if it has a key for this property.\n      // Otherwise, use default-value (or $value if default-value is null).\n      $actual-value: $default-value;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actual-value: map.get($value, $property);\n      } @else if $default-value == null {\n        $actual-value: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actual-value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actual-value;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $prefix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, dark, important, state, variables, child-selector, enabled;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Validate boolean keys\n  @each $bool-key in (responsive, print, dark, important, enabled) {\n    @if map.has-key($utility, $bool-key) {\n      $val: map.get($utility, $bool-key);\n      @if $val != true and $val != false {\n        @error \"Utility key `#{$bool-key}` should be a boolean (true or false), got: #{$val}\";\n      }\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selector-type: \"class\";\n  @if map.has-key($utility, selector) {\n    $selector-type: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selector-type) {\n      @error \"Invalid `selector` value `#{$selector-type}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in an attribute selector (e.g., [class^=\"class\"])\n  $selector-class: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selector-type != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selector-type}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $property-map: null;\n    $custom-class: \"\";\n\n    // Check if property is a map (Property-Value Mapping approach)\n    @if meta.type-of($properties) == \"map\" {\n      $property-map: $properties;\n      @if map.has-key($utility, class) {\n        $custom-class: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $custom-class: map.get($utility, class);\n      } @else {\n        $custom-class: list.nth($properties, 1);\n      }\n      @if $custom-class == null {\n        $custom-class: \"\";\n      }\n    }\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // Don't add a dash before value key if value key is null (e.g. with shadow class)\n    $custom-class-modifier: \"\";\n    @if $key {\n      @if $custom-class == \"\" {\n        $custom-class-modifier: $key;\n      } @else {\n        $custom-class-modifier: \"-\" + $key;\n      }\n    }\n\n    // Build the class name fragment (without prefix or dot) for reuse in state variants\n    $class-name: \"\";\n    @if $selector-type == \"class\" {\n      @if $custom-class != \"\" {\n        $class-name: $custom-class + $custom-class-modifier;\n      } @else if $selector-class != null and $selector-class != \"\" {\n        $class-name: $selector-class + $custom-class-modifier;\n      } @else {\n        $class-name: $custom-class-modifier;\n      }\n    }\n\n    $selector: \"\";\n    @if $selector-type == \"class\" {\n      $selector: \".#{$prefix + $class-name}\";\n    } @else if $selector-type == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selector-class}\\\"]\";\n    } @else if $selector-type == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selector-class}\\\"]\";\n    }\n\n    // Apply child-selector wrapping if present (wraps in :where() for zero specificity)\n    $child-sel: null;\n    @if map.has-key($utility, child-selector) {\n      $child-sel: map.get($utility, child-selector);\n    }\n\n    $final-selector: $selector;\n    @if $child-sel {\n      $final-selector: \":where(#{$selector} #{$child-sel})\";\n    }\n\n    #{$final-selector} {\n      @include generate-variables($utility, $value);\n      @include generate-properties($utility, $property-map, $properties, $value);\n    }\n\n    // Generate state variants (e.g., hover:link-10 instead of link-10-hover)\n    @if $state != () {\n      @each $state-variant in $state {\n        $state-selector: \".#{$prefix}#{$state-variant}\\\\:#{$class-name}:#{$state-variant}\";\n        @if $child-sel {\n          $state-selector: \":where(#{$state-selector} #{$child-sel})\";\n        }\n\n        #{$state-selector} {\n          @include generate-variables($utility, $value);\n          @include generate-properties($utility, $property-map, $properties, $value);\n        }\n      }\n    }\n  }\n}\n\n// Generates all utility classes: base, responsive, print, and dark.\n// Extracted so that tests can call this mixin directly with a custom $utilities map\n// rather than having to mirror the loop conditions inline.\n@mixin generate-utilities-loop($utilities, $breakpoints) {\n  // Base + responsive (one pass per breakpoint)\n  @each $breakpoint in map.keys($breakpoints) {\n    @include bp.media-breakpoint-up($breakpoint, $breakpoints) {\n      $prefix: bp.breakpoint-prefix($breakpoint, $breakpoints);\n\n      @each $key, $utility in $utilities {\n        @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and (map.get($utility, responsive) or $prefix == \"\") {\n          @include generate-utility($utility, $prefix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, print) == true {\n        @include generate-utility($utility, \"print\\\\:\");\n      }\n    }\n  }\n\n  // Dark utilities\n  @media (prefers-color-scheme: dark) {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, dark) == true {\n        @include generate-utility($utility, \"dark\\\\:\");\n      }\n    }\n  }\n}\n"]}
\ No newline at end of file
+{"version":3,"sources":["bootstrap.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_config.scss","../../scss/mixins/_border-radius.scss","../../scss/content/_type.scss","../../scss/mixins/_lists.scss","../../scss/content/_tables.scss","../../scss/layout/_breakpoints.scss","../../scss/content/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_box-shadow.scss","../../scss/content/_prose.scss","../../scss/mixins/_transition.scss","../../scss/layout/_containers.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_focus-ring.scss","../../scss/forms/_check.scss","../../scss/mixins/_mask-icon.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/forms/_strength.scss","../../scss/forms/_otp-input.scss","../../scss/forms/_form-adorn.scss","../../scss/forms/_chip-input.scss","../../scss/forms/_combobox.scss","../../scss/forms/_form-field.scss","../../scss/forms/_validation.scss","../../scss/mixins/_form-validation.scss","../../scss/buttons/_button.scss","../../scss/buttons/_button-group.scss","../../scss/buttons/_close.scss","../../scss/_accordion.scss","../../scss/_alert.scss","../../scss/_avatar.scss","../../scss/_badge.scss","../../scss/_breadcrumb.scss","../../scss/_chip.scss","../../scss/_card.scss","../../scss/_carousel.scss","../../scss/_datepicker.scss","../../scss/_dialog.scss","../../scss/mixins/_dialog-shared.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_drawer.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/mixins/_reset-text.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_tooltip.scss","../../scss/_transitions.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"names":[],"mappings":"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6EQ;IACE,wBAAA;EnBm6EV;EmBp6EQ;IACE,wBAAA;EnBs6EV;EmBv6EQ;IACE,wBAAA;EnBy6EV;EmB16EQ;IACE,wBAAA;EnB46EV;EmB76EQ;IACE,wBAAA;EnB+6EV;EmBh7EQ;IACE,wBAAA;EnBk7EV;EmBn7EQ;IACE,yBAAA;EnBq7EV;EmBt7EQ;IACE,yBAAA;EnBw7EV;EmBz7EQ;IACE,yBAAA;EnB27EV;EmBp7EQ;IACE,oBAFS;EnBw7EnB;EmBv7EQ;IACE,oBAFS;EnB27EnB;EmB17EQ;IACE,oBAFS;EnB87EnB;EmB77EQ;IACE,oBAFS;EnBi8EnB;EmBh8EQ;IACE,oBAFS;EnBo8EnB;EmBn8EQ;IACE,oBAFS;EnBu8EnB;EmBt8EQ;IACE,oBAFS;EnB08EnB;EmBz8EQ;IACE,oBAFS;EnB68EnB;EmB58EQ;IACE,oBAFS;EnBg9EnB;EmB/8EQ;IACE,qBAFS;EnBm9EnB;EmBl9EQ;IACE,qBAFS;EnBs9EnB;EW1+EE;IQaM;MACE,wBAAA;InBg+ER;ImBj+EM;MACE,wBAAA;InBm+ER;ImBp+EM;MACE,wBAAA;InBs+ER;ImBv+EM;MACE,wBAAA;InBy+ER;ImB1+EM;MACE,wBAAA;InB4+ER;ImB7+EM;MACE,wBAAA;InB++ER;ImBh/EM;MACE,wBAAA;InBk/ER;ImBn/EM;MACE,wBAAA;InBq/ER;ImBt/EM;MACE,wBAAA;InBw/ER;ImBz/EM;MACE,yBAAA;InB2/ER;ImB5/EM;MACE,yBAAA;InB8/ER;ImB//EM;MACE,yBAAA;InBigFR;ImB1/EM;MACE,oBAFS;InB8/EjB;ImB7/EM;MACE,oBAFS;InBigFjB;ImBhgFM;MACE,oBAFS;InBogFjB;ImBngFM;MACE,oBAFS;InBugFjB;ImBtgFM;MACE,oBAFS;InB0gFjB;ImBzgFM;MACE,oBAFS;InB6gFjB;ImB5gFM;MACE,oBAFS;InBghFjB;ImB/gFM;MACE,oBAFS;InBmhFjB;ImBlhFM;MACE,oBAFS;InBshFjB;ImBrhFM;MACE,qBAFS;InByhFjB;ImBxhFM;MACE,qBAFS;InB4hFjB;EACF;EWjjFE;IQaM;MACE,wBAAA;InBuiFR;ImBxiFM;MACE,wBAAA;InB0iFR;ImB3iFM;MACE,wBAAA;InB6iFR;ImB9iFM;MACE,wBAAA;InBgjFR;ImBjjFM;MACE,wBAAA;InBmjFR;ImBpjFM;MACE,wBAAA;InBsjFR;ImBvjFM;MACE,wBAAA;InByjFR;ImB1jFM;MACE,wBAAA;InB4jFR;ImB7jFM;MACE,wBAAA;InB+jFR;ImBhkFM;MACE,yBAAA;InBkkFR;ImBnkFM;MACE,yBAAA;InBqkFR;ImBtkFM;MACE,yBAAA;InBwkFR;ImBjkFM;MACE,oBAFS;InBqkFjB;ImBpkFM;MACE,oBAFS;InBwkFjB;ImBvkFM;MACE,oBAFS;InB2kFjB;ImB1kFM;MACE,oBAFS;InB8kFjB;ImB7kFM;MACE,oBAFS;InBilFjB;ImBhlFM;MACE,oBAFS;InBolFjB;ImBnlFM;MACE,oBAFS;InBulFjB;ImBtlFM;MACE,oBAFS;InB0lFjB;ImBzlFM;MACE,oBAFS;InB6lFjB;ImB5lFM;MACE,qBAFS;InBgmFjB;ImB/lFM;MACE,qBAFS;InBmmFjB;EACF;EWxnFE;IQaM;MACE,wBAAA;InB8mFR;ImB/mFM;MACE,wBAAA;InBinFR;ImBlnFM;MACE,wBAAA;InBonFR;ImBrnFM;MACE,wBAAA;InBunFR;ImBxnFM;MACE,wBAAA;InB0nFR;ImB3nFM;MACE,wBAAA;InB6nFR;ImB9nFM;MACE,wBAAA;InBgoFR;ImBjoFM;MACE,wBAAA;InBmoFR;ImBpoFM;MACE,wBAAA;InBsoFR;ImBvoFM;MACE,yBAAA;InByoFR;ImB1oFM;MACE,yBAAA;InB4oFR;ImB7oFM;MACE,yBAAA;InB+oFR;ImBxoFM;MACE,oBAFS;InB4oFjB;ImB3oFM;MACE,oBAFS;InB+oFjB;ImB9oFM;MACE,oBAFS;InBkpFjB;ImBjpFM;MACE,oBAFS;InBqpFjB;ImBppFM;MACE,oBAFS;InBwpFjB;ImBvpFM;MACE,oBAFS;InB2pFjB;ImB1pFM;MACE,oBAFS;InB8pFjB;ImB7pFM;MACE,oBAFS;InBiqFjB;ImBhqFM;MACE,oBAFS;InBoqFjB;ImBnqFM;MACE,qBAFS;InBuqFjB;ImBtqFM;MACE,qBAFS;InB0qFjB;EACF;EW/rFE;IQaM;MACE,wBAAA;InBqrFR;ImBtrFM;MACE,wBAAA;InBwrFR;ImBzrFM;MACE,wBAAA;InB2rFR;ImB5rFM;MACE,wBAAA;InB8rFR;ImB/rFM;MACE,wBAAA;InBisFR;ImBlsFM;MACE,wBAAA;InBosFR;ImBrsFM;MACE,wBAAA;InBusFR;ImBxsFM;MACE,wBAAA;InB0sFR;ImB3sFM;MACE,wBAAA;InB6sFR;ImB9sFM;MACE,yBAAA;InBgtFR;ImBjtFM;MACE,yBAAA;InBmtFR;ImBptFM;MACE,yBAAA;InBstFR;ImB/sFM;MACE,oBAFS;InBmtFjB;ImBltFM;MACE,oBAFS;InBstFjB;ImBrtFM;MACE,oBAFS;InBytFjB;ImBxtFM;MACE,oBAFS;InB4tFjB;ImB3tFM;MACE,oBAFS;InB+tFjB;ImB9tFM;MACE,oBAFS;InBkuFjB;ImBjuFM;MACE,oBAFS;InBquFjB;ImBpuFM;MACE,oBAFS;InBwuFjB;ImBvuFM;MACE,oBAFS;InB2uFjB;ImB1uFM;MACE,qBAFS;InB8uFjB;ImB7uFM;MACE,qBAFS;InBivFjB;EACF;EWtwFE;IQaM;MACE,wBAAA;InB4vFR;ImB7vFM;MACE,wBAAA;InB+vFR;ImBhwFM;MACE,wBAAA;InBkwFR;ImBnwFM;MACE,wBAAA;InBqwFR;ImBtwFM;MACE,wBAAA;InBwwFR;ImBzwFM;MACE,wBAAA;InB2wFR;ImB5wFM;MACE,wBAAA;InB8wFR;ImB/wFM;MACE,wBAAA;InBixFR;ImBlxFM;MACE,wBAAA;InBoxFR;ImBrxFM;MACE,yBAAA;InBuxFR;ImBxxFM;MACE,yBAAA;InB0xFR;ImB3xFM;MACE,yBAAA;InB6xFR;ImBtxFM;MACE,oBAFS;InB0xFjB;ImBzxFM;MACE,oBAFS;InB6xFjB;ImB5xFM;MACE,oBAFS;InBgyFjB;ImB/xFM;MACE,oBAFS;InBmyFjB;ImBlyFM;MACE,oBAFS;InBsyFjB;ImBryFM;MACE,oBAFS;In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A;E3DktQR;E2D7sQM;I3C3GF,iJ2C4GI;E3D+sQR;EgBvzQI;I2CuGE;M3CtGA,gBAAA;IhB0zQJ;EACF;E2DjtQQ;IACE,2DAAA;E3DmtQV;E2DjtQU;IACE,0DAAA;E3DmtQZ;E2D/sQQ;IACE,0DAAA;E3DitQV;E2D/sQU;IACE,2DAAA;E3DitQZ;E2D7sQQ;IACE,2DAAA;E3D+sQV;E2D5sQQ;IACE,0DAAA;E3D8sQV;E2D3sQQ;IACE,0DAAA;E3D6sQV;E2DzsQQ;IACE,mBAAA;I3C7IN,4G2C8IM;E3D2sQV;EgBr1QI;I2CwII;M3CvIF,gBAAA;IhBw1QJ;EACF;E2DltQQ;IAGE,eAAA;E3DktQV;E2D7sQM;IACE,mBAAA;IACA,eAAA;E3D+sQR;E2DzpQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErDm1QA;EgBt2QI;I2CwMF;M3CvMI,gBAAA;IhBy2QJ;EACF;E2DnqQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErD61QA;EgBh3QI;I2CwMF;M3CvMI,gBAAA;IhBm3QJ;EACF;E2D7qQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErDu2QA;EgB13QI;I2CwMF;M3CvMI,gBAAA;IhB63QJ;EACF;E2DvrQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErDi3QA;EgBp4QI;I2CwMF;M3CvMI,gBAAA;IhBu4QJ;EACF;E2DjsQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErD23QA;EgB94QI;I2CwMF;M3CvMI,gBAAA;IhBi5QJ;EACF;E2D3sQE;IACE,8CAAA;IACA,qDAAA;I3C9MA,uTqCuBJ;ErDq4QA;EgBx5QI;I2CwMF;M3CvMI,gBAAA;IhB25QJ;EACF;E2D5sQA;IAEI;MACE,6BAAA;MACA,wBAAA;I3D6sQJ;I2D/sQE;MACE,6BAAA;MACA,wBAAA;I3DitQJ;I2DntQE;MACE,6BAAA;MACA,wBAAA;I3DqtQJ;I2DvtQE;MACE,6BAAA;MACA,wBAAA;I3DytQJ;I2D3tQE;MACE,6BAAA;MACA,wBAAA;I3D6tQJ;I2D/tQE;MACE,6BAAA;MACA,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G;EnF6hTT;EmFr8SE;IA5II,kBAoDG;EnFgiTT;EmFx8SE;IA5II,mBAoDG;EnFmiTT;EmF38SE;IA5II,iBAoDG;EnFsiTT;EmF98SE;IA5II,WAoDG;EnFyiTT;EmFj9SE;IA5II,mBAoDG;EnF4iTT;EmFp9SE;IA5II,iBAoDG;EnF+iTT;EmFv9SE;IA5II,gBAoDG;EnFkjTT;EmF19SE;IA5II,sBAoDG;EnFqjTT;EmF79SE;IA5II,gBAoDG;EnFwjTT;EmFh+SE;IA5II,UAoDG;EnF2jTT;EmFn+SE;IA5II,aAoDG;EnF8jTT;EmFt+SE;IA5II,YAoDG;EnFikTT;EmFz+SE;IA5II,aAoDG;EnFokTT;EmF5+SE;IA5II,UAoDG;EnFukTT;EmF/+SE;IA5II,cAyDO;EnFqkTb;EmFl/SE;IA5II,gBAyDO;EnFwkTb;EmFr/SE;IA5II,iBAyDO;EnF2kTb;EmFx/SE;IA5II,gBAyDO;EnF8kTb;EmF3/SE;IA5II,gBAyDO;EnFilTb;EmF9/SE;IA5II,kBAyDO;EnFolTb;EmFjgTE;IA5II,mBAyDO;EnFulTb;EmFpgTE;IA5II,kBAyDO;EnF0lTb;EmFvgTE;IA5II,gBAyDO;EnF6lTb;EmF1gTE;IA5II,kBAyDO;EnFgmTb;EmF7gTE;IA5II,mBAyDO;EnFmmTb;EmFhhTE;IA5II,kBAyDO;EnFsmTb;EmFnhTE;IA5II,2BAoDG;EnF8mTT;EmFthTE;IA5II,oBAoDG;EnFinTT;EmFzhTE;IA5II,eAyDO;EnF+mTb;EmF5hTE;IA5II,qBAyDO;EnFknTb;EmF/hTE;IA5II,cAyDO;EnFqnTb;EmFliTE;IA5II,aAyDO;EnFwnTb;EmFriTE;IA5II,oBAyDO;EnF2nTb;EmFxiTE;IA5II,cAyDO;EnF8nTb;EmF3iTE;IA5II,kBAyDO;EnFioTb;EmF9iTE;IA5II,mBAyDO;EnFooTb;EmFjjTE;IA5II,aAyDO;EnFuoTb;EmFpjTE;IA5II,oBAyDO;EnF0oTb;EmFvjTE;IA5II,iBAyDO;EnF6oTb;EmF1jTE;IA5II,kBAyDO;EnFgpTb;EmF7jTE;IA5II,aAyDO;EnFmpTb;EmFhkTE;IA5II,gCAoDG;EnF2pTT;EmFnkTE;IA5II,mCAoDG;EnF8pTT;EmFtkTE;IA5II,mCAoDG;EnFiqTT;EmFzkTE;IA5II,mCAoDG;EnFoqTT;EmF5kTE;IA5II,gBAoDG;EnFuqTT;EmF/kTE;IA5II,gBAyDO;EnFqqTb;EmFllTE;IA5II,kBAyDO;EnFwqTb;EmFrlTE;IA5II,kBAyDO;EnF2qTb;EmFxlTE;IA5II,eAyDO;EnF8qTb;EmF3lTE;IA5II,gBAyDO;EnFirTb;EmF9lTE;IA5II,MAoDG;EnFyrTT;EmFjmTE;IA5II,QAoDG;EnF4rTT;EmFpmTE;IA5II,SAoDG;EnF+rTT;EmFvmTE;IA5II,SAoDG;EnFksTT;EmF1mTE;IA5II,WAoDG;EnFqsTT;EmF7mTE;IA5II,YAoDG;EnFwsTT;EmFhnTE;IA5II,qBAoDG;EnF2sTT;EmFnnTE;IA5II,uBAoDG;EnF8sTT;EmFtnTE;IA5II,wBAoDG;EnFitTT;EmFznTE;IA5II,mBAoDG;EnFotTT;EmF5nTE;IA5II,qBAoDG;EnFutTT;EmF/nTE;IA5II,sBAoDG;EnF0tTT;EmFloTE;IA5II,gCAoDG;EnF6tTT;EmFroTE;IA5II,2BAoDG;EnFguTT;EmFxoTE;IA5II,2BAoDG;EnFmuTT;EmF3oTE;IA5II,4EAoDG;EnFsuTT;EmF9oTE;IA5II,SAoDG;EnFyuTT;EmFjpTE;IA5II,wFAoDG;EnF4uTT;EmFppTE;IA5II,qBAoDG;EnF+uTT;EmFvpTE;IA5II,uFAoDG;EnFkvTT;EmF1pTE;IA5II,oBAoDG;EnFqvTT;EmF7pTE;IA5II,sFAoDG;EnFwvTT;EmFhqTE;IA5II,mBAoDG;EnF2vTT;EmFnqTE;IA5II,yFAoDG;EnF8vTT;EmFtqTE;IA5II,sBAoDG;EnFiwTT;EmFzqTE;IA5II,kFAoDG;EnFowTT;EmF5qTE;IA5II,eAoDG;EnFuwTT;EmF/qTE;IA5II,mFAoDG;EnF0wTT;EmFlrTE;IA5II,gBAoDG;EnF6wTT;EmFrrTE;IArJI,uCA6DG;IA7DH,oCA2ES;EnFmwTf;EmFzrTE;IArJI,sCA6DG;IA7DH,oCA2ES;EnFuwTf;EmF7rTE;IArJI,uCA6DG;IA7DH,oCA2ES;EnF2wTf;EmFjsTE;IArJI,sCA6DG;IA7DH,oCA2ES;EnF+wTf;EmFrsTE;IArJI,uCA6DG;IA7DH,oCA2ES;EnFmxTf;EmFzsTE;IArJI,oCA6DG;IA7DH,oCA2ES;EnFuxTf;EmF7sTE;IArJI,uCA6DG;IA7DH,oCA2ES;EnF2xTf;EmFjtTE;IArJI,yCA6DG;IA7DH,oCA2ES;EnF+xTf;EmFrtTE;IArJI,sCA6DG;IA7DH,oCA2ES;EnFmyTf;EmFztTE;IArJI,wCA6DG;IA7DH,oCA2ES;EnFuyTf;EmF7tTE;IArJI,yCA6DG;IA7DH,oCA2ES;EnF2yTf;EmFjuTE;IArJI,0CA6DG;IA7DH,oCA2ES;EnF+yTf;EmFruTE;IArJI,8CA6DG;IA7DH,oCA2ES;EnFmzTf;EmFzuTE;IArJI,yCA6DG;IA7DH,oCA2ES;EnFuzTf;EmF7uTE;IArJI,yCA6DG;IA7DH,oCA2ES;EnF2zTf;EmFjvTE;IArJI,2CA6DG;IA7DH,oCA2ES;EnF+zTf;EmFrvTE;IArJI,0CA6DG;IA7DH,oCA2ES;EnFm0Tf;EmFzvTE;IArJI,2CA6DG;IA7DH,oCA2ES;EnFu0Tf;EmF7vTE;IArJI,0CA6DG;IA7DH,oCA2ES;EnF20Tf;EmFjwTE;IArJI,2CA6DG;IA7DH,oCA2ES;EnF+0Tf;EmFrwTE;IArJI,wCA6DG;IA7DH,oCA2ES;EnFm1Tf;EmFzwTE;IArJI,2CA6DG;IA7DH,oCA2ES;EnFu1Tf;EmF7wTE;IArJI,6CA6DG;IA7DH,oCA2ES;EnF21Tf;EmFjxTE;IA5II,iBAoDG;EnF42TT;EmFpxTE;IA5II,iBAoDG;EnF+2TT;EmFvxTE;IA5II,iBAoDG;EnFk3TT;EmF1xTE;IA5II,iBAoDG;EnFq3TT;EmF7xTE;IA5II,iBAoDG;EnFw3TT;EmFhyTE;IA5II,0EAoDG;EnF23TT;EmFnyTE;IA5II,0EAoDG;EnF83TT;EmFtyTE;IA5II,0EAoDG;EnFi4TT;EmFzyTE;IA5II,0EAoDG;EnFo4TT;EmF5yTE;IA5II,0EAoDG;EnFu4TT;EmF/yTE;IA5II,0EAoDG;EnF04TT;EmFlzTE;IA5II,0EAoDG;EnF64TT;EmFrzTE;IA5II,0EAoDG;EnFg5TT;EmFxzTE;IA5II,0EAoDG;EnFm5TT;EmF3zTE;IA5II,oCAoDG;EnFs5TT;EmF9zTE;IA5II,WAoDG;EnFy5TT;EmFj0TE;IA5II,WAoDG;EnF45TT;EmFp0TE;IA5II,WAoDG;EnF+5TT;EmFv0TE;IA5II,WAoDG;EnFk6TT;EmF10TE;IA5II,WAoDG;EnFq6TT;EmF70TE;IA5II,WAoDG;EnFw6TT;EmFh1TE;IA5II,WAoDG;EnF26TT;EmFn1TE;IA5II,WAoDG;EnF86TT;EmFt1TE;IA5II,WAoDG;EnFi7TT;EmFz1TE;IA5II,YAoDG;EnFo7TT;EmF51TE;IA5II,YAoDG;EnFu7TT;EmF/1TE;IA5II,YAoDG;EnF07TT;EmFl2TE;IA5II,UAoDG;EnF67TT;EmFr2TE;IA5II,UAoDG;EnFg8TT;EmFx2TE;IA5II,UAoDG;EnFm8TT;EmF32TE;IA5II,WAoDG;EnFs8TT;EmF92TE;IA5II,WAoDG;EnFy8TT;EmFj3TE;IA5II,kBAoDG;EnF48TT;EmFp3TE;IA5II,kBAoDG;EnF+8TT;EmFv3TE;IA5II,uBAoDG;IApDH,kBAoDG;EnFk9TT;EmF13TE;IA5II,eAoDG;EnFq9TT;EmF73TE;IA5II,YAoDG;EnFw9TT;EmFh4TE;IA5II,eAoDG;EnF29TT;EmFn4TE;IA5II,YAoDG;EnF89TT;EmFt4TE;IA5II,gBAoDG;EnFi+TT;EmFz4TE;IA5II,WAoDG;EnFo+TT;EmF54TE;IA5II,WAoDG;EnFu+TT;EmF/4TE;IA5II,WAoDG;EnF0+TT;EmFl5TE;IA5II,YAoDG;EnF6+TT;EmFr5TE;IA5II,YAoDG;EnFg/TT;EmFx5TE;IA5II,mBAoDG;EnFm/TT;EmF35TE;IA5II,mBAoDG;EnFs/TT;EmF95TE;IA5II,wBAoDG;IApDH,mBAoDG;EnFy/TT;EmFj6TE;IA5II,gBAoDG;EnF4/TT;EmFp6TE;IA5II,aAoDG;EnF+/TT;EmFv6TE;IA5II,gBAoDG;EnFkgUT;EmF16TE;IA5II,aAoDG;EnFqgUT;EmF76TE;IA5II,iBAoDG;EnFwgUT;EmFh7TE;IA5II,cAoDG;EnF2gUT;EmFn7TE;IA5II,mBAyDO;EnFygUb;EmFt7TE;IA5II,sBAyDO;EnF4gUb;EmFz7TE;IA5II,2BAyDO;EnF+gUb;EmF57TE;IA5II,8BAyDO;EnFkhUb;EmF/7TE;IA5II,YAoDG;EnF0hUT;EmFl8TE;IA5II,YAoDG;EnF6hUT;EmFr8TE;IA5II,cAoDG;EnFgiUT;EmFx8TE;IA5II,cAoDG;EnFmiUT;EmF38TE;IA5II,eAyDO;EnFiiUb;EmF98TE;IA5II,iBAyDO;EnFoiUb;EmFj9TE;IA5II,uBAyDO;EnFuiUb;EmFp9TE;IA5II,2BAoDG;EnF+iUT;EmFv9TE;IA5II,yBAoDG;EnFkjUT;EmF19TE;IA5II,uBAoDG;EnFqjUT;EmF79TE;IA5II,8BAoDG;EnFwjUT;EmFh+TE;IA5II,6BAoDG;EnF2jUT;EmFn+TE;IA5II,6BAoDG;EnF8jUT;EmFt+TE;IA5II,oBAoDG;EnFikUT;EmFz+TE;IA5II,kBAoDG;EnFokUT;EmF5+TE;IA5II,qBAoDG;EnFukUT;EmF/+TE;IA5II,sBAoDG;EnF0kUT;EmFl/TE;IA5II,mBAoDG;EnF6kUT;EmFr/TE;IA5II,iBAoDG;EnFglUT;EmFx/TE;IA5II,oBAoDG;EnFmlUT;EmF3/TE;IA5II,uBAoDG;EnFslUT;EmF9/TE;IA5II,qBAoDG;EnFylUT;EmFjgUE;IA5II,mBAoDG;EnF4lUT;EmFpgUE;IA5II,qBAoDG;EnF+lUT;EmFvgUE;IA5II,oBAoDG;EnFkmUT;EmF1gUE;IA5II,yBAoDG;EnFqmUT;EmF7gUE;IA5II,uBAoDG;EnFwmUT;EmFhhUE;IA5II,qBAoDG;EnF2mUT;EmFnhUE;IA5II,4BAoDG;EnF8mUT;EmFthUE;IA5II,2BAoDG;EnFinUT;EmFzhUE;IA5II,sBAoDG;EnFonUT;EmF5hUE;IA5II,gBAoDG;EnFunUT;EmF/hUE;IA5II,sBAoDG;EnF0nUT;EmFliUE;IA5II,oBAoDG;EnF6nUT;EmFriUE;IA5II,kBAoDG;EnFgoUT;EmFxiUE;IA5II,oBAoDG;EnFmoUT;EmF3iUE;IA5II,mBAoDG;EnFsoUT;EmF9iUE;IA5II,kBAoDG;EnFyoUT;EmFjjUE;IA5II,gBAoDG;EnF4oUT;EmFpjUE;IA5II,mBAoDG;EnF+oUT;EmFvjUE;IA5II,oBAoDG;EnFkpUT;EmF1jUE;IA5II,0BAoDG;EnFqpUT;EmF7jUE;IA5II,qCAoDG;EnFwpUT;EmFhkUE;IA5II,qCAoDG;EnF2pUT;EmFnkUE;IA5II,qCAoDG;EnF8pUT;EmFtkUE;IA5II,qCAoDG;EnFiqUT;EmFzkUE;IA5II,mBAoDG;EnFoqUT;EmF5kUE;IA5II,mBAyDO;EnFkqUb;EmF/kUE;IA5II,sBAyDO;EnFqqUb;EmFllUE;IA5II,qBAyDO;EnFwqUb;EmFrlUE;IA5II,SAoDG;EnFgrUT;EmFxlUE;IA5II,QAoDG;EnFmrUT;EmF3lUE;IA5II,QAoDG;EnFsrUT;EmF9lUE;IA5II,QAoDG;EnFyrUT;EmFjmUE;IA5II,QAoDG;EnF4rUT;EmFpmUE;IA5II,QAoDG;EnF+rUT;EmFvmUE;IA5II,QAoDG;EnFksUT;EmF1mUE;IA5II,QAoDG;EnFqsUT;EmF7mUE;IA5II,SAoDG;EnFwsUT;EmFhnUE;IA5II,eAoDG;EnF2sUT;EmFnnUE;IA5II,cAoDG;EnF8sUT;EmFtnUE;IA5II,eAoDG;EnFitUT;EmFznUE;IA5II,YAoDG;EnFotUT;EmF5nUE;IA5II,eAoDG;EnFutUT;EmF/nUE;IA5II,cAoDG;EnF0tUT;EmFloUE;IA5II,YAoDG;EnF6tUT;EmFroUE;IA5II,cAoDG;EnFguUT;EmFxoUE;IA5II,YAoDG;EnFmuUT;EmF3oUE;IA5II,YAoDG;EnFsuUT;EmF9oUE;IA5II,gBAoDG;EnFyuUT;EmFjpUE;IA5II,sBAoDG;EnF4uUT;EmFppUE;IA5II,qBAoDG;EnF+uUT;EmFvpUE;IA5II,sBAoDG;EnFkvUT;EmF1pUE;IA5II,mBAoDG;EnFqvUT;EmF7pUE;IA5II,sBAoDG;EnFwvUT;EmFhqUE;IA5II,qBAoDG;EnF2vUT;EmFnqUE;IA5II,mBAoDG;EnF8vUT;EmFtqUE;IA5II,qBAoDG;EnFiwUT;EmFzqUE;IA5II,mBAoDG;EnFowUT;EmF5qUE;IA5II,mBAoDG;EnFuwUT;EmF/qUE;IA5II,eAoDG;EnF0wUT;EmFlrUE;IA5II,qBAoDG;EnF6wUT;EmFrrUE;IA5II,oBAoDG;EnFgxUT;EmFxrUE;IA5II,qBAoDG;EnFmxUT;EmF3rUE;IA5II,kBAoDG;EnFsxUT;EmF9rUE;IA5II,qBAoDG;EnFyxUT;EmFjsUE;IA5II,oBAoDG;EnF4xUT;EmFpsUE;IA5II,kBAoDG;EnF+xUT;EmFvsUE;IA5II,oBAoDG;EnFkyUT;EmF1sUE;IA5II,kBAoDG;EnFqyUT;EmF7sUE;IA5II,kBAoDG;EnFwyUT;EmFhtUE;IA5II,qBAoDG;EnF2yUT;EmFntUE;IA5II,2BAoDG;EnF8yUT;EmFttUE;IA5II,0BAoDG;EnFizUT;EmFztUE;IA5II,2BAoDG;EnFozUT;EmF5tUE;IA5II,wBAoDG;EnFuzUT;EmF/tUE;IA5II,2BAoDG;EnF0zUT;EmFluUE;IA5II,0BAoDG;EnF6zUT;EmFruUE;IA5II,wBAoDG;EnFg0UT;EmFxuUE;IA5II,0BAoDG;EnFm0UT;EmF3uUE;IA5II,wBAoDG;EnFs0UT;EmF9uUE;IA5II,wBAoDG;EnFy0UT;EmFjvUE;IA5II,oBAoDG;EnF40UT;EmFpvUE;IA5II,0BAoDG;EnF+0UT;EmFvvUE;IA5II,yBAoDG;EnFk1UT;EmF1vUE;IA5II,0BAoDG;EnFq1UT;EmF7vUE;IA5II,uBAoDG;EnFw1UT;EmFhwUE;IA5II,0BAoDG;EnF21UT;EmFnwUE;IA5II,yBAoDG;EnF81UT;EmFtwUE;IA5II,uBAoDG;EnFi2UT;EmFzwUE;IA5II,yBAoDG;EnFo2UT;EmF5wUE;IA5II,uBAoDG;EnFu2UT;EmF/wUE;IA5II,2BAoDG;EnF02UT;EmFlxUE;IA5II,0BAoDG;EnF62UT;EmFrxUE;IA5II,uBAoDG;EnFg3UT;EmFxxUE;IA5II,mBAoDG;EnFm3UT;EmF3xUE;IA5II,yBAoDG;EnFs3UT;EmF9xUE;IA5II,wBAoDG;EnFy3UT;EmFjyUE;IA5II,yBAoDG;EnF43UT;EmFpyUE;IA5II,sBAoDG;EnF+3UT;EmFvyUE;IA5II,yBAoDG;EnFk4UT;EmF1yUE;IA5II,wBAoDG;EnFq4UT;EmF7yUE;IA5II,sBAoDG;EnFw4UT;EmFhzUE;IA5II,wBAoDG;EnF24UT;EmFnzUE;IA5II,sBAoDG;EnF84UT;EmFtzUE;IA5II,sBAoDG;EnFi5UT;EmFzzUE;IA5II,sBAoDG;EnFo5UT;EmF5zUE;IA5II,4BAoDG;EnFu5UT;EmF/zUE;IA5II,2BAoDG;EnF05UT;EmFl0UE;IA5II,4BAoDG;EnF65UT;EmFr0UE;IA5II,yBAoDG;EnFg6UT;EmFx0UE;IA5II,4BAoDG;EnFm6UT;EmF30UE;IA5II,2BAoDG;EnFs6UT;EmF90UE;IA5II,yBAoDG;EnFy6UT;EmFj1UE;IA5II,2BAoDG;EnF46UT;EmFp1UE;IA5II,yBAoDG;EnF+6UT;EmFv1UE;IA5II,6BAoDG;EnFk7UT;EmF11UE;IA5II,4BAoDG;EnFq7UT;EmF71UE;IA5II,yBAoDG;EnFw7UT;EmFh2UE;IA5II,UAoDG;EnF27UT;EmFn2UE;IA5II,gBAoDG;EnF87UT;EmFt2UE;IA5II,eAoDG;EnFi8UT;EmFz2UE;IA5II,gBAoDG;EnFo8UT;EmF52UE;IA5II,aAoDG;EnFu8UT;EmF/2UE;IA5II,gBAoDG;EnF08UT;EmFl3UE;IA5II,eAoDG;EnF68UT;EmFr3UE;IA5II,aAoDG;EnFg9UT;EmFx3UE;IA5II,eAoDG;EnFm9UT;EmF33UE;IA5II,aAoDG;EnFs9UT;EmF93UE;IA5II,iBAoDG;EnFy9UT;EmFj4UE;IA5II,uBAoDG;EnF49UT;EmFp4UE;IA5II,sBAoDG;EnF+9UT;EmFv4UE;IA5II,uBAoDG;EnFk+UT;EmF14UE;IA5II,oBAoDG;EnFq+UT;EmF74UE;IA5II,uBAoDG;EnFw+UT;EmFh5UE;IA5II,sBAoDG;EnF2+UT;EmFn5UE;IA5II,oBAoDG;EnF8+UT;EmFt5UE;IA5II,sBAoDG;EnFi/UT;EmFz5UE;IA5II,oBAoDG;EnFo/UT;EmF55UE;IA5II,gBAoDG;EnFu/UT;EmF/5UE;IA5II,sBAoDG;EnF0/UT;EmFl6UE;IA5II,qBAoDG;EnF6/UT;EmFr6UE;IA5II,sBAoDG;EnFggVT;EmFx6UE;IA5II,mBAoDG;EnFmgVT;EmF36UE;IA5II,sBAoDG;EnFsgVT;EmF96UE;IA5II,qBAoDG;EnFygVT;EmFj7UE;IA5II,mBAoDG;EnF4gVT;EmFp7UE;IA5II,qBAoDG;EnF+gVT;EmFv7UE;IA5II,mBAoDG;EnFkhVT;EmF17UE;IA5II,sBAoDG;EnFqhVT;EmF77UE;IA5II,4BAoDG;EnFwhVT;EmFh8UE;IA5II,2BAoDG;EnF2hVT;EmFn8UE;IA5II,4BAoDG;EnF8hVT;EmFt8UE;IA5II,yBAoDG;EnFiiVT;EmFz8UE;IA5II,4BAoDG;EnFoiVT;EmF58UE;IA5II,2BAoDG;EnFuiVT;EmF/8UE;IA5II,yBAoDG;EnF0iVT;EmFl9UE;IA5II,2BAoDG;EnF6iVT;EmFr9UE;IA5II,yBAoDG;EnFgjVT;EmFx9UE;IA5II,qBAoDG;EnFmjVT;EmF39UE;IA5II,2BAoDG;EnFsjVT;EmF99UE;IA5II,0BAoDG;EnFyjVT;EmFj+UE;IA5II,2BAoDG;EnF4jVT;EmFp+UE;IA5II,wBAoDG;EnF+jVT;EmFv+UE;IA5II,2BAoDG;EnFkkVT;EmF1+UE;IA5II,0BAoDG;EnFqkVT;EmF7+UE;IA5II,wBAoDG;EnFwkVT;EmFh/UE;IA5II,0BAoDG;EnF2kVT;EmFn/UE;IA5II,wBAoDG;EnF8kVT;EmFt/UE;IA5II,oBAoDG;EnFilVT;EmFz/UE;IA5II,0BAoDG;EnFolVT;EmF5/UE;IA5II,yBAoDG;EnFulVT;EmF//UE;IA5II,0BAoDG;EnF0lVT;EmFlgVE;IA5II,uBAoDG;EnF6lVT;EmFrgVE;IA5II,0BAoDG;EnFgmVT;EmFxgVE;IA5II,yBAoDG;EnFmmVT;EmF3gVE;IA5II,uBAoDG;EnFsmVT;EmF9gVE;IA5II,yBAoDG;EnFymVT;EmFjhVE;IA5II,uBAoDG;EnF4mVT;EmFphVE;IA5II,uBAoDG;EnF+mVT;EmFvhVE;IA5II,6BAoDG;EnFknVT;EmF1hVE;IA5II,4BAoDG;EnFqnVT;EmF7hVE;IA5II,6BAoDG;EnFwnVT;EmFhiVE;IA5II,0BAoDG;EnF2nVT;EmFniVE;IA5II,6BAoDG;EnF8nVT;EmFtiVE;IA5II,4BAoDG;EnFioVT;EmFziVE;IA5II,0BAoDG;EnFooVT;EmF5iVE;IA5II,4BAoDG;EnFuoVT;EmF/iVE;IA5II,0BAoDG;EnF0oVT;EmFljVE;IA5II,MAoDG;EnF6oVT;EmFrjVE;IA5II,YAoDG;EnFgpVT;EmFxjVE;IA5II,WAoDG;EnFmpVT;EmF3jVE;IA5II,YAoDG;EnFspVT;EmF9jVE;IA5II,SAoDG;EnFypVT;EmFjkVE;IA5II,YAoDG;EnF4pVT;EmFpkVE;IA5II,WAoDG;EnF+pVT;EmFvkVE;IA5II,SAoDG;EnFkqVT;EmF1kVE;IA5II,WAoDG;EnFqqVT;EmF7kVE;IA5II,SAoDG;EnFwqVT;EmFhlVE;IA5II,UAoDG;EnF2qVT;EmFnlVE;IA5II,gBAoDG;EnF8qVT;EmFtlVE;IA5II,eAoDG;EnFirVT;EmFzlVE;IA5II,gBAoDG;EnForVT;EmF5lVE;IA5II,aAoDG;EnFurVT;EmF/lVE;IA5II,gBAoDG;EnF0rVT;EmFlmVE;IA5II,eAoDG;EnF6rVT;EmFrmVE;IA5II,aAoDG;EnFgsVT;EmFxmVE;IA5II,eAoDG;EnFmsVT;EmF3mVE;IA5II,aAoDG;EnFssVT;EmF9mVE;IA5II,aAoDG;EnFysVT;EmFjnVE;IA5II,mBAoDG;EnF4sVT;EmFpnVE;IA5II,kBAoDG;EnF+sVT;EmFvnVE;IA5II,mBAoDG;EnFktVT;EmF1nVE;IA5II,gBAoDG;EnFqtVT;EmF7nVE;IA5II,mBAoDG;EnFwtVT;EmFhoVE;IA5II,kBAoDG;EnF2tVT;EmFnoVE;IA5II,gBAoDG;EnF8tVT;EmFtoVE;IA5II,kBAoDG;EnFiuVT;EmFzoVE;IA5II,gBAoDG;EnFouVT;EmF5oVE;IA5II,oBAoDG;EnFuuVT;EmF/oVE;IA5II,0BAoDG;EnF0uVT;EmFlpVE;IA5II,yBAoDG;EnF6uVT;EmFrpVE;IA5II,0BAoDG;EnFgvVT;EmFxpVE;IA5II,uBAoDG;EnFmvVT;EmF3pVE;IA5II,0BAoDG;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FrgWE;IA5II,yDAoDG;EnFgmWT;EmFxgWE;IA5II,yDAoDG;EnFmmWT;EmF3gWE;IA5II,yDAoDG;EnFsmWT;EmF9gWE;IA5II,yDAoDG;EnFymWT;EmFjhWE;IA5II,mBAoDG;EnF4mWT;EmFphWE;IA5II,iEAoDG;EnF+mWT;EmF1gWM;IAzJA,iEAoDG;EnFknWT;EmF1hWE;IA5II,iEAoDG;EnFqnWT;EmFhhWM;IAzJA,iEAoDG;EnFwnWT;EmFhiWE;IA5II,iEAoDG;EnF2nWT;EmFthWM;IAzJA,iEAoDG;EnF8nWT;EmFtiWE;IA5II,iEAoDG;EnFioWT;EmF5hWM;IAzJA,iEAoDG;EnFooWT;EmF5iWE;IA5II,iEAoDG;EnFuoWT;EmFliWM;IAzJA,iEAoDG;EnF0oWT;EmFljWE;IA5II,iEAoDG;EnF6oWT;EmFxiWM;IAzJA,iEAoDG;EnFgpWT;EmFxjWE;IA5II,iEAoDG;EnFmpWT;EmF9iWM;IAzJA,iEAoDG;EnFspWT;EmF9jWE;IA5II,iEAoDG;EnFypWT;EmFpjWM;IAzJA,iEAoDG;EnF4pWT;EmFpkWE;IA5II,iEAoDG;EnF+pWT;EmF1jWM;IAzJA,iEAoDG;EnFkqWT;EmF1kWE;IA5II,2BAoDG;EnFqqWT;EmFhkWM;IAzJA,2BAoDG;EnFwqWT;EmFhlWE;IA5II,8BAoDG;EnF2qWT;EmFtkWM;IAzJA,8BAoDG;EnF8qWT;EmFtlWE;IA5II,6BAoDG;EnFirWT;EmF5kWM;IAzJA,6BAoDG;EnForWT;EmF5lWE;IA5II,8BAoDG;EnFurWT;EmFllWM;IAzJA,8BAoDG;EnF0rWT;EmFlmWE;IA5II,yEAoDG;EnF6rWT;EmFrmWE;IA5II,wHAoDG;EnFgsWT;EmFxmWE;IA5II,2EAoDG;EnFmsWT;EmF3mWE;IA5II,uEAoDG;EnFssWT;EmF9mWE;IA5II,6EAoDG;EnFysWT;EmFjnWE;IA5II,yEAoDG;EnF4sWT;EmFpnWE;IA5II,yEAoDG;EnF+sWT;EmFvnWE;IA5II,yEAoDG;EnFktWT;EmF1nWE;IA5II,iFAoDG;EnFqtWT;EmFhnWM;IAzJA,iFAoDG;EnFwtWT;EmFhoWE;IA5II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IA5II,mBAoDG;EnFgyXT;EmFxsXE;IA5II,kBAoDG;EnFmyXT;EmF3sXE;IA5II,WAoDG;EnFsyXT;EmF9sXE;IA5II,UAoDG;EnFyyXT;EmFjtXE;IA5II,UAoDG;EnF4yXT;EmFptXE;IA5II,UAoDG;EnF+yXT;EmFvtXE;IA5II,UAoDG;EnFkzXT;EWt0XE;IwE4GA;MA5II,mBAoDG;InFszXP;ImF9tXA;MA5II,iBAoDG;InFyzXP;ImFjuXA;MA5II,WAoDG;InF4zXP;ImFpuXA;MA5II,mBAoDG;InF+zXP;ImFvuXA;MA5II,iBAoDG;InFk0XP;ImF1uXA;MA5II,gBAoDG;InFq0XP;ImF7uXA;MA5II,sBAoDG;InFw0XP;ImFhvXA;MA5II,gBAoDG;InF20XP;ImFnvXA;MA5II,eAyDO;InFy0XX;ImFtvXA;MA5II,qBAyDO;InF40XX;ImFzvXA;MA5II,cAyDO;InF+0XX;ImF5vXA;MA5II,aAyDO;InFk1XX;ImF/vXA;MA5II,oBAyDO;InFq1XX;ImFlwXA;MA5II,cAyDO;InFw1XX;ImFrwXA;MA5II,kBAyDO;InF21XX;ImFxwXA;MA5II,mBAyDO;InF81XX;ImF3wXA;MA5II,aAyDO;InFi2XX;ImF9wXA;MA5II,oBAyDO;InFo2XX;ImFjxXA;MA5II,iBAyDO;InFu2XX;ImFpxXA;MA5II,kBAyDO;InF02XX;ImFvxXA;MA5II,aAyDO;InF62XX;ImF1xXA;MA5II,cAoDG;InFq3XP;ImF7xXA;MA5II,mBAyDO;InFm3XX;ImFhyXA;MA5II,sBAyDO;InFs3XX;ImFnyXA;MA5II,2BAyDO;InFy3XX;ImFtyXA;MA5II,8BAyDO;InF43XX;ImFzyXA;MA5II,YAoDG;InFo4XP;ImF5yXA;MA5II,YAoDG;InFu4XP;ImF/yXA;MA5II,cAoDG;InF04XP;ImFlzXA;MA5II,cAoDG;InF64XP;ImFrzXA;MA5II,eAyDO;InF24XX;ImFxzXA;MA5II,iBAyDO;InF84XX;ImF3zXA;MA5II,uBAyDO;InFi5XX;ImF9zXA;MA5II,2BAoDG;InFy5XP;ImFj0XA;MA5II,yBAoDG;InF45XP;ImFp0XA;MA5II,uBAoDG;InF+5XP;ImFv0XA;MA5II,8BAoDG;InFk6XP;ImF10XA;MA5II,6BAoDG;InFq6XP;ImF70XA;MA5II,6BAoDG;InFw6XP;ImFh1XA;MA5II,oBAoDG;InF26XP;ImFn1XA;MA5II,kBAoDG;InF86XP;ImFt1XA;MA5II,qBAoDG;InFi7XP;ImFz1XA;MA5II,sBAoDG;InFo7XP;ImF51XA;MA5II,mBAoDG;InFu7XP;ImF/1XA;MA5II,iBAoDG;InF07XP;ImFl2XA;MA5II,oBAoDG;InF67XP;ImFr2XA;MA5II,uBAoDG;InFg8XP;ImFx2XA;MA5II,qBAoDG;InFm8XP;ImF32XA;MA5II,mBAoDG;InFs8XP;ImF92XA;MA5II,qBAoDG;InFy8XP;ImFj3XA;MA5II,oBAoDG;InF48XP;ImFp3XA;MA5II,yBAoDG;InF+8XP;ImFv3XA;MA5II,uBAoDG;InFk9XP;ImF13XA;MA5II,qBAoDG;InFq9XP;ImF73XA;MA5II,4BAoDG;InFw9XP;ImFh4XA;MA5II,2BAoDG;InF29XP;ImFn4XA;MA5II,sBAoDG;InF89XP;ImFt4XA;MA5II,gBAoDG;InFi+XP;ImFz4XA;MA5II,sBAoDG;InFo+XP;ImF54XA;MA5II,oBAoDG;InFu+XP;ImF/4XA;MA5II,kBAoDG;InF0+XP;ImFl5XA;MA5II,oBAoDG;InF6+XP;ImFr5XA;MA5II,mBAoDG;InFg/XP;ImFx5XA;MA5II,kBAoDG;InFm/XP;ImF35XA;MA5II,gBAoDG;InFs/XP;ImF95XA;MA5II,mBAoDG;InFy/XP;ImFj6XA;MA5II,oBAoDG;InF4/XP;ImFp6XA;MA5II,0BAoDG;InF+/XP;ImFv6XA;MA5II,qCAoDG;InFkgYP;ImF16XA;MA5II,qCAoDG;InFqgYP;ImF76XA;MA5II,qCAoDG;InFwgYP;ImFh7XA;MA5II,qCAoDG;InF2gYP;ImFn7XA;MA5II,mBAoDG;InF8gYP;ImFt7XA;MA5II,mBAyDO;InF4gYX;ImFz7XA;MA5II,sBAyDO;InF+gYX;ImF57XA;MA5II,qBAyDO;InFkhYX;ImF/7XA;MA5II,SAoDG;InF0hYP;ImFl8XA;MA5II,QAoDG;InF6hYP;ImFr8XA;MA5II,QAoDG;InFgiYP;ImFx8XA;MA5II,QAoDG;InFmiYP;ImF38XA;MA5II,QAoDG;InFsiYP;ImF98XA;MA5II,QAoDG;InFyiYP;ImFj9XA;MA5II,QAoDG;InF4iYP;ImFp9XA;MA5II,QAoDG;InF+iYP;ImFv9XA;MA5II,SAoDG;InFkjYP;ImF19XA;MA5II,eAoDG;InFqjYP;ImF79XA;MA5II,cAoDG;InFwjYP;ImFh+XA;MA5II,eAoDG;InF2jYP;ImFn+XA;MA5II,YAoDG;InF8jYP;ImFt+XA;MA5II,eAoDG;InFikYP;ImFz+XA;MA5II,cAoDG;InFokYP;ImF5+XA;MA5II,YAoDG;InFukYP;ImF/+XA;MA5II,cAoDG;InF0kYP;ImFl/XA;MA5II,YAoDG;InF6kYP;ImFr/XA;MA5II,YAoDG;InFglYP;ImFx/XA;MA5II,gBAoDG;InFmlYP;ImF3/XA;MA5II,sBAoDG;InFslYP;ImF9/XA;MA5II,qBAoDG;InFylYP;ImFjgYA;MA5II,sBAoDG;InF4lYP;ImFpgYA;MA5II,mBAoDG;InF+lYP;ImFvgYA;MA5II,sBAoDG;InFkmYP;ImF1gYA;MA5II,qBAoDG;InFqmYP;ImF7gYA;MA5II,mBAoDG;InFwmYP;ImFhhYA;MA5II,qBAoDG;InF2mYP;ImFnhYA;MA5II,mBAoDG;InF8mYP;ImFthYA;MA5II,mBAoDG;InFinYP;ImFzhYA;MA5II,eAoDG;InFonYP;ImF5hYA;MA5II,qBAoDG;InFunYP;ImF/hYA;MA5II,oBAoDG;InF0nYP;ImFliYA;MA5II,qBAoDG;InF6nYP;ImFriYA;MA5II,kBAoDG;InFgoYP;ImFxiYA;MA5II,qBAoDG;InFmoYP;ImF3iYA;MA5II,oBAoDG;InFsoYP;ImF9iYA;MA5II,kBAoDG;InFyoYP;ImFjjYA;MA5II,oBAoDG;InF4oYP;ImFpjYA;MA5II,kBAoDG;InF+oYP;ImFvjYA;MA5II,kBAoDG;InFkpYP;ImF1jYA;MA5II,qBAoDG;InFqpYP;ImF7jYA;MA5II,2BAoDG;InFwpYP;ImFhkYA;MA5II,0BAoDG;InF2pYP;ImFnkYA;MA5II,2BAoDG;InF8pYP;ImFtkYA;MA5II,wBAoDG;InFiqYP;ImFzkYA;MA5II,2BAoDG;InFoqYP;ImF5kYA;MA5II,0BAoDG;InFuqYP;ImF/kYA;MA5II,wBAoDG;InF0qYP;ImFllYA;MA5II,0BAoDG;InF6qYP;ImFrlYA;MA5II,wBAoDG;InFgrYP;ImFxlYA;MA5II,wBAoDG;InFmrYP;ImF3lYA;MA5II,oBAoDG;InFsrYP;ImF9lYA;MA5II,0BAoDG;InFyrYP;ImFjmYA;MA5II,yBAoDG;InF4rYP;ImFpmYA;MA5II,0BAoDG;InF+rYP;ImFvmYA;MA5II,uBAoDG;InFksYP;ImF1mYA;MA5II,0BAoDG;InFqsYP;ImF7mYA;MA5II,yBAoDG;InFwsYP;ImFhnYA;MA5II,uBAoDG;InF2sYP;ImFnnYA;MA5II,yBAoDG;InF8sYP;ImFtnYA;MA5II,uBAoDG;InFitYP;ImFznYA;MA5II,2BAoDG;InFotYP;ImF5nYA;MA5II,0BAoDG;InFutYP;ImF/nYA;MA5II,uBAoDG;InF0tYP;ImFloYA;MA5II,mBAoDG;InF6tYP;ImFroYA;MA5II,yBAoDG;InFguYP;ImFxoYA;MA5II,wBAoDG;InFmuYP;ImF3oYA;MA5II,yBAoDG;InFsuYP;ImF9oYA;MA5II,sBAoDG;InFyuYP;ImFjpYA;MA5II,yBAoDG;InF4uYP;ImFppYA;MA5II,wBAoDG;InF+uYP;ImFvpYA;MA5II,sBAoDG;InFkvYP;ImF1pYA;MA5II,wBAoDG;InFqvYP;ImF7pYA;MA5II,sBAoDG;InFwvYP;ImFhqYA;MA5II,sBAoDG;InF2vYP;ImFnqYA;MA5II,sBAoDG;InF8vYP;ImFtqYA;MA5II,4BAoDG;InFiwYP;ImFzqYA;MA5II,2BAoDG;InFowYP;ImF5qYA;MA5II,4BAoDG;InFuwYP;ImF/qYA;MA5II,yBAoDG;InF0wYP;ImFlrYA;MA5II,4BAoDG;InF6wYP;ImFrrYA;MA5II,2BAoDG;InFgxYP;ImFxrYA;MA5II,yBAoDG;InFmxYP;ImF3rYA;MA5II,2BAoDG;InFsxYP;ImF9rYA;MA5II,yBAoDG;InFyxYP;ImFjsYA;MA5II,6BAoDG;InF4xYP;ImFpsYA;MA5II,4BAoDG;InF+xYP;ImFvsYA;MA5II,yBAoDG;InFkyYP;ImF1sYA;MA5II,UAoDG;InFqyYP;ImF7sYA;MA5II,gBAoDG;InFwyYP;ImFhtYA;MA5II,eAoDG;InF2yYP;ImFntYA;MA5II,gBAoDG;InF8yYP;ImFttYA;MA5II,aAoDG;InFizYP;ImFztYA;MA5II,gBAoDG;InFozYP;ImF5tYA;MA5II,eAoDG;InFuzYP;ImF/tYA;MA5II,aAoDG;InF0zYP;ImFluYA;MA5II,eAoDG;InF6zYP;ImFruYA;MA5II,aAoDG;InFg0YP;ImFxuYA;MA5II,iBAoDG;InFm0YP;ImF3uYA;MA5II,uBAoDG;InFs0YP;ImF9uYA;MA5II,sBAoDG;InFy0YP;ImFjvYA;MA5II,uBAoDG;InF40YP;ImFpvYA;MA5II,oBAoDG;InF+0YP;ImFvvYA;MA5II,uBAoDG;InFk1YP;ImF1vYA;MA5II,sBAoDG;InFq1YP;ImF7vYA;MA5II,oBAoDG;InFw1YP;ImFhwYA;MA5II,sBAoDG;InF21YP;ImFnwYA;MA5II,oBAoDG;InF81YP;ImFtwYA;MA5II,gBAoDG;InFi2YP;ImFzwYA;MA5II,sBAoDG;InFo2YP;ImF5wYA;MA5II,qBAoDG;InFu2YP;ImF/wYA;MA5II,sBAoDG;InF02YP;ImFlxYA;MA5II,mBAoDG;InF62YP;ImFrxYA;MA5II,sBAoDG;InFg3YP;ImFxxYA;MA5II,qBAoDG;InFm3YP;ImF3xYA;MA5II,mBAoDG;InFs3YP;ImF9xYA;MA5II,qBAoDG;InFy3YP;ImFjyYA;MA5II,mBAoDG;InF43YP;ImFpyYA;MA5II,sBAoDG;InF+3YP;ImFvyYA;MA5II,4BAoDG;InFk4YP;ImF1yYA;MA5II,2BAoDG;InFq4YP;ImF7yYA;MA5II,4BAoDG;InFw4YP;ImFhzYA;MA5II,yBAoDG;InF24YP;ImFnzYA;MA5II,4BAoDG;InF84YP;ImFtzYA;MA5II,2BAoDG;InFi5YP;ImFzzYA;MA5II,yBAoDG;InFo5YP;ImF5zYA;MA5II,2BAoDG;InFu5YP;ImF/zYA;MA5II,yBAoDG;InF05YP;ImFl0YA;MA5II,qBAoDG;InF65YP;ImFr0YA;MA5II,2BAoDG;InFg6YP;ImFx0YA;MA5II,0BAoDG;InFm6YP;ImF30YA;MA5II,2BAoDG;InFs6YP;ImF90YA;MA5II,wBAoDG;InFy6YP;ImFj1YA;MA5II,2BAoDG;InF46YP;ImFp1YA;MA5II,0BAoDG;InF+6YP;ImFv1YA;MA5II,wBAoDG;InFk7YP;ImF11YA;MA5II,0BAoDG;InFq7YP;ImF71YA;MA5II,wBAoDG;InFw7YP;ImFh2YA;MA5II,oBAoDG;InF27YP;ImFn2YA;MA5II,0BAoDG;InF87YP;ImFt2YA;MA5II,yBAoDG;InFi8YP;ImFz2YA;MA5II,0BAoDG;InFo8YP;ImF52YA;MA5II,uBAoDG;InFu8YP;ImF/2YA;MA5II,0BAoDG;InF08YP;ImFl3YA;MA5II,yBAoDG;InF68YP;ImFr3YA;MA5II,uBAoDG;InFg9YP;ImFx3YA;MA5II,yBAoDG;InFm9YP;ImF33YA;MA5II,uBAoDG;InFs9YP;ImF93YA;MA5II,uBAoDG;InFy9YP;ImFj4YA;MA5II,6BAoDG;InF49YP;ImFp4YA;MA5II,4BAoDG;InF+9YP;ImFv4YA;MA5II,6BAoDG;InFk+YP;ImF14YA;MA5II,0BAoDG;InFq+YP;ImF74YA;MA5II,6BAoDG;InFw+YP;ImFh5YA;MA5II,4BAoDG;InF2+YP;ImFn5YA;MA5II,0BAoDG;InF8+YP;ImFt5YA;MA5II,4BAoDG;InFi/YP;ImFz5YA;MA5II,0BAoDG;InFo/YP;ImF55YA;MA5II,MAoDG;InFu/YP;ImF/5YA;MA5II,YAoDG;InF0/YP;ImFl6YA;MA5II,WAoDG;InF6/YP;ImFr6YA;MA5II,YAoDG;InFggZP;ImFx6YA;MA5II,SAoDG;InFmgZP;ImF36YA;MA5II,YAoDG;InFsgZP;ImF96YA;MA5II,WAoDG;InFygZP;ImFj7YA;MA5II,SAoDG;InF4gZP;ImFp7YA;MA5II,WAoDG;InF+gZP;ImFv7YA;MA5II,SAoDG;InFkhZP;ImF17YA;MA5II,UAoDG;InFqhZP;ImF77YA;MA5II,gBAoDG;InFwhZP;ImFh8YA;MA5II,eAoDG;InF2hZP;ImFn8YA;MA5II,gBAoDG;InF8hZP;ImFt8YA;MA5II,aAoDG;InFiiZP;ImFz8YA;MA5II,gBAoDG;InFoiZP;ImF58YA;MA5II,eAoDG;InFuiZP;ImF/8YA;MA5II,aAoDG;InF0iZP;ImFl9YA;MA5II,eAoDG;InF6iZP;ImFr9YA;MA5II,aAoDG;InFgjZP;ImFx9YA;MA5II,aAoDG;InFmjZP;ImF39YA;MA5II,mBAoDG;InFsjZP;ImF99YA;MA5II,kBAoDG;InFyjZP;ImFj+YA;MA5II,mBAoDG;InF4jZP;ImFp+YA;MA5II,gBAoDG;InF+jZP;ImFv+YA;MA5II,mBAoDG;InFkkZP;ImF1+YA;MA5II,kBAoDG;InFqkZP;ImF7+YA;MA5II,gBAoDG;InFwkZP;ImFh/YA;MA5II,kBAoDG;InF2kZP;ImFn/YA;MA5II,gBAoDG;InF8kZP;ImFt/YA;MA5II,oBAoDG;InFilZP;ImFz/YA;MA5II,0BAoDG;InFolZP;ImF5/YA;MA5II,yBAoDG;InFulZP;ImF//YA;MA5II,0BAoDG;InF0lZP;ImFlgZA;MA5II,uBAoDG;InF6lZP;ImFrgZA;MA5II,0BAoDG;InFgmZP;ImFxgZA;MA5II,yBAoDG;InFmmZP;ImF3gZA;MA5II,uBAoDG;InFsmZP;ImF9gZA;MA5II,yBAoDG;InFymZP;ImFjhZA;MA5II,uBAoDG;InF4mZP;ImFphZA;MA5II,mBAoDG;InF+mZP;ImFvhZA;MA5II,yBAoDG;InFknZP;ImF1hZA;MA5II,wBAoDG;InFqnZP;ImF7hZA;MA5II,yBAoDG;InFwnZP;ImFhiZA;MA5II,sBAoDG;InF2nZP;ImFniZA;MA5II,yBAoDG;InF8nZP;ImFtiZA;MA5II,wBAoDG;InFioZP;ImFziZA;MA5II,sBAoDG;InFooZP;ImF5iZA;MA5II,wBAoDG;InFuoZP;ImF/iZA;MA5II,sBAoDG;InF0oZP;ImFljZA;MA5II,yFAoDG;InF6oZP;ImFrjZA;MA5II,sBAoDG;InFgpZP;ImFxjZA;MA5II,wFAoDG;InFmpZP;ImF3jZA;MA5II,qBAoDG;InFspZP;ImF9jZA;MA5II,iBAoDG;InFypZP;ImFjkZA;MA5II,eAoDG;InF4pZP;ImFpkZA;MA5II,kBAoDG;InF+pZP;EACF;EWprZE;IwE4GA;MA5II,mBAoDG;InFoqZP;ImF5kZA;MA5II,iBAoDG;InFuqZP;ImF/kZA;MA5II,WAoDG;InF0qZP;ImFllZA;MA5II,mBAoDG;InF6qZP;ImFrlZA;MA5II,iBAoDG;InFgrZP;ImFxlZA;MA5II,gBAoDG;InFmrZP;ImF3lZA;MA5II,sBAoDG;InFsrZP;ImF9lZA;MA5II,gBAoDG;InFyrZP;ImFjmZA;MA5II,eAyDO;InFurZX;ImFpmZA;MA5II,qBAyDO;InF0rZX;ImFvmZA;MA5II,cAyDO;InF6rZX;ImF1mZA;MA5II,aAyDO;InFgsZX;ImF7mZA;MA5II,oBAyDO;InFmsZX;ImFhnZA;MA5II,cAyDO;InFssZX;ImFnnZA;MA5II,kBAyDO;InFysZX;ImFtnZA;MA5II,mBAyDO;InF4sZX;ImFznZA;MA5II,aAyDO;InF+sZX;ImF5nZA;MA5II,oBAyDO;InFktZX;ImF/nZA;MA5II,iBAyDO;InFqtZX;ImFloZA;MA5II,kBAyDO;InFwtZX;ImFroZA;MA5II,aAyDO;InF2tZX;ImFxoZA;MA5II,cAoDG;InFmuZP;ImF3oZA;MA5II,mBAyDO;InFiuZX;ImF9oZA;MA5II,sBAyDO;InFouZX;ImFjpZA;MA5II,2BAyDO;InFuuZX;ImFppZA;MA5II,8BAyDO;InF0uZX;ImFvpZA;MA5II,YAoDG;InFkvZP;ImF1pZA;MA5II,YAoDG;InFqvZP;ImF7pZA;MA5II,cAoDG;InFwvZP;ImFhqZA;MA5II,cAoDG;InF2vZP;ImFnqZA;MA5II,eAyDO;InFyvZX;ImFtqZA;MA5II,iBAyDO;InF4vZX;ImFzqZA;MA5II,uBAyDO;InF+vZX;ImF5qZA;MA5II,2BAoDG;InFuwZP;ImF/qZA;MA5II,yBAoDG;InF0wZP;ImFlrZA;MA5II,uBAoDG;InF6wZP;ImFrrZA;MA5II,8BAoDG;InFgxZP;ImFxrZA;MA5II,6BAoDG;InFmxZP;ImF3rZA;MA5II,6BAoDG;InFsxZP;ImF9rZA;MA5II,oBAoDG;InFyxZP;ImFjsZA;MA5II,kBAoDG;InF4xZP;ImFpsZA;MA5II,qBAoDG;InF+xZP;ImFvsZA;MA5II,sBAoDG;InFkyZP;ImF1sZA;MA5II,mBAoDG;InFqyZP;ImF7sZA;MA5II,iBAoDG;InFwyZP;ImFhtZA;MA5II,oBAoDG;InF2yZP;ImFntZA;MA5II,uBAoDG;InF8yZP;ImFttZA;MA5II,qBAoDG;InFizZP;ImFztZA;MA5II,mBAoDG;InFozZP;ImF5tZA;MA5II,qBAoDG;InFuzZP;ImF/tZA;MA5II,oBAoDG;InF0zZP;ImFluZA;MA5II,yBAoDG;InF6zZP;ImFruZA;MA5II,uBAoDG;InFg0ZP;ImFxuZA;MA5II,qBAoDG;InFm0ZP;ImF3uZA;MA5II,4BAoDG;InFs0ZP;ImF9uZA;MA5II,2BAoDG;InFy0ZP;ImFjvZA;MA5II,sBAoDG;InF40ZP;ImFpvZA;MA5II,gBAoDG;InF+0ZP;ImFvvZA;MA5II,sBAoDG;InFk1ZP;ImF1vZA;MA5II,oBAoDG;InFq1ZP;ImF7vZA;MA5II,kBAoDG;InFw1ZP;ImFhwZA;MA5II,oBAoDG;InF21ZP;ImFnwZA;MA5II,mBAoDG;InF81ZP;ImFtwZA;MA5II,kBAoDG;InFi2ZP;ImFzwZA;MA5II,gBAoDG;InFo2ZP;ImF5wZA;MA5II,mBAoDG;InFu2ZP;ImF/wZA;MA5II,oBAoDG;InF02ZP;ImFlxZA;MA5II,0BAoDG;InF62ZP;ImFrxZA;MA5II,qCAoDG;InFg3ZP;ImFxxZA;MA5II,qCAoDG;InFm3ZP;ImF3xZA;MA5II,qCAoDG;InFs3ZP;ImF9xZA;MA5II,qCAoDG;InFy3ZP;ImFjyZA;MA5II,mBAoDG;InF43ZP;ImFpyZA;MA5II,mBAyDO;InF03ZX;ImFvyZA;MA5II,sBAyDO;InF63ZX;ImF1yZA;MA5II,qBAyDO;InFg4ZX;ImF7yZA;MA5II,SAoDG;InFw4ZP;ImFhzZA;MA5II,QAoDG;InF24ZP;ImFnzZA;MA5II,QAoDG;InF84ZP;ImFtzZA;MA5II,QAoDG;InFi5ZP;ImFzzZA;MA5II,QAoDG;InFo5ZP;ImF5zZA;MA5II,QAoDG;InFu5ZP;ImF/zZA;MA5II,QAoDG;InF05ZP;ImFl0ZA;MA5II,QAoDG;InF65ZP;ImFr0ZA;MA5II,SAoDG;InFg6ZP;ImFx0ZA;MA5II,eAoDG;InFm6ZP;ImF30ZA;MA5II,cAoDG;InFs6ZP;ImF90ZA;MA5II,eAoDG;InFy6ZP;ImFj1ZA;MA5II,YAoDG;InF46ZP;ImFp1ZA;MA5II,eAoDG;InF+6ZP;ImFv1ZA;MA5II,cAoDG;InFk7ZP;ImF11ZA;MA5II,YAoDG;InFq7ZP;ImF71ZA;MA5II,cAoDG;InFw7ZP;ImFh2ZA;MA5II,YAoDG;InF27ZP;ImFn2ZA;MA5II,YAoDG;InF87ZP;ImFt2ZA;MA5II,gBAoDG;InFi8ZP;ImFz2ZA;MA5II,sBAoDG;InFo8ZP;ImF52ZA;MA5II,qBAoDG;InFu8ZP;ImF/2ZA;MA5II,sBAoDG;InF08ZP;ImFl3ZA;MA5II,mBAoDG;InF68ZP;ImFr3ZA;MA5II,sBAoDG;InFg9ZP;ImFx3ZA;MA5II,qBAoDG;InFm9ZP;ImF33ZA;MA5II,mBAoDG;InFs9ZP;ImF93ZA;MA5II,qBAoDG;InFy9ZP;ImFj4ZA;MA5II,mBAoDG;InF49ZP;ImFp4ZA;MA5II,mBAoDG;InF+9ZP;ImFv4ZA;MA5II,eAoDG;InFk+ZP;ImF14ZA;MA5II,qBAoDG;InFq+ZP;ImF74ZA;MA5II,oBAoDG;InFw+ZP;ImFh5ZA;MA5II,qBAoDG;InF2+ZP;ImFn5ZA;MA5II,kBAoDG;InF8+ZP;ImFt5ZA;MA5II,qBAoDG;InFi/ZP;ImFz5ZA;MA5II,oBAoDG;InFo/ZP;ImF55ZA;MA5II,kBAoDG;InFu/ZP;ImF/5ZA;MA5II,oBAoDG;InF0/ZP;ImFl6ZA;MA5II,kBAoDG;InF6/ZP;ImFr6ZA;MA5II,kBAoDG;InFggaP;ImFx6ZA;MA5II,qBAoDG;InFmgaP;ImF36ZA;MA5II,2BAoDG;InFsgaP;ImF96ZA;MA5II,0BAoDG;InFygaP;ImFj7ZA;MA5II,2BAoDG;InF4gaP;ImFp7ZA;MA5II,wBAoDG;InF+gaP;ImFv7ZA;MA5II,2BAoDG;InFkhaP;ImF17ZA;MA5II,0BAoDG;InFqhaP;ImF77ZA;MA5II,wBAoDG;InFwhaP;ImFh8ZA;MA5II,0BAoDG;InF2haP;ImFn8ZA;MA5II,wBAoDG;InF8haP;ImFt8ZA;MA5II,wBAoDG;InFiiaP;ImFz8ZA;MA5II,oBAoDG;InFoiaP;ImF58ZA;MA5II,0BAoDG;InFuiaP;ImF/8ZA;MA5II,yBAoDG;InF0iaP;ImFl9ZA;MA5II,0BAoDG;InF6iaP;ImFr9ZA;MA5II,uBAoDG;InFgjaP;ImFx9ZA;MA5II,0BAoDG;InFmjaP;ImF39ZA;MA5II,yBAoDG;InFsjaP;ImF99ZA;MA5II,uBAoDG;InFyjaP;ImFj+ZA;MA5II,yBAoDG;InF4jaP;ImFp+ZA;MA5II,uBAoDG;InF+jaP;ImFv+ZA;MA5II,2BAoDG;InFkkaP;ImF1+ZA;MA5II,0BAoDG;InFqkaP;ImF7+ZA;MA5II,uBAoDG;InFwkaP;ImFh/ZA;MA5II,mBAoDG;InF2kaP;ImFn/ZA;MA5II,yBAoDG;InF8kaP;ImFt/ZA;MA5II,wBAoDG;InFilaP;ImFz/ZA;MA5II,yBAoDG;InFolaP;ImF5/ZA;MA5II,sBAoDG;InFulaP;ImF//ZA;MA5II,yBAoDG;InF0laP;ImFlgaA;MA5II,wBAoDG;InF6laP;ImFrgaA;MA5II,sBAoDG;InFgmaP;ImFxgaA;MA5II,wBAoDG;InFmmaP;ImF3gaA;MA5II,sBAoDG;InFsmaP;ImF9gaA;MA5II,sBAoDG;InFymaP;ImFjhaA;MA5II,sBAoDG;InF4maP;ImFphaA;MA5II,4BAoDG;InF+maP;ImFvhaA;MA5II,2BAoDG;InFknaP;ImF1haA;MA5II,4BAoDG;InFqnaP;ImF7haA;MA5II,yBAoDG;InFwnaP;ImFhiaA;MA5II,4BAoDG;InF2naP;ImFniaA;MA5II,2BAoDG;InF8naP;ImFtiaA;MA5II,yBAoDG;InFioaP;ImFziaA;MA5II,2BAoDG;InFooaP;ImF5iaA;MA5II,yBAoDG;InFuoaP;ImF/iaA;MA5II,6BAoDG;InF0oaP;ImFljaA;MA5II,4BAoDG;InF6oaP;ImFrjaA;MA5II,yBAoDG;InFgpaP;ImFxjaA;MA5II,UAoDG;InFmpaP;ImF3jaA;MA5II,gBAoDG;InFspaP;ImF9jaA;MA5II,eAoDG;InFypaP;ImFjkaA;MA5II,gBAoDG;InF4paP;ImFpkaA;MA5II,aAoDG;InF+paP;ImFvkaA;MA5II,gBAoDG;InFkqaP;ImF1kaA;MA5II,eAoDG;InFqqaP;ImF7kaA;MA5II,aAoDG;InFwqaP;ImFhlaA;MA5II,eAoDG;InF2qaP;ImFnlaA;MA5II,aAoDG;InF8qaP;ImFtlaA;MA5II,iBAoDG;InFiraP;ImFzlaA;MA5II,uBAoDG;InForaP;ImF5laA;MA5II,sBAoDG;InFuraP;ImF/laA;MA5II,uBAoDG;InF0raP;ImFlmaA;MA5II,oBAoDG;InF6raP;ImFrmaA;MA5II,uBAoDG;InFgsaP;ImFxmaA;MA5II,sBAoDG;InFmsaP;ImF3maA;MA5II,oBAoDG;InFssaP;ImF9maA;MA5II,sBAoDG;InFysaP;ImFjnaA;MA5II,oBAoDG;InF4saP;ImFpnaA;MA5II,gBAoDG;InF+saP;ImFvnaA;MA5II,sBAoDG;InFktaP;ImF1naA;MA5II,qBAoDG;InFqtaP;ImF7naA;MA5II,sBAoDG;InFwtaP;ImFhoaA;MA5II,mBAoDG;InF2taP;ImFnoaA;MA5II,sBAoDG;InF8taP;ImFtoaA;MA5II,qBAoDG;InFiuaP;ImFzoaA;MA5II,mBAoDG;InFouaP;ImF5oaA;MA5II,qBAoDG;InFuuaP;ImF/oaA;MA5II,mBAoDG;InF0uaP;ImFlpaA;MA5II,sBAoDG;InF6uaP;ImFrpaA;MA5II,4BAoDG;InFgvaP;ImFxpaA;MA5II,2BAoDG;InFmvaP;ImF3paA;MA5II,4BAoDG;InFsvaP;ImF9paA;MA5II,yBAoDG;InFyvaP;ImFjqaA;MA5II,4BAoDG;InF4vaP;ImFpqaA;MA5II,2BAoDG;InF+vaP;ImFvqaA;MA5II,yBAoDG;InFkwaP;ImF1qaA;MA5II,2BAoDG;InFqwaP;ImF7qaA;MA5II,yBAoDG;InFwwaP;ImFhraA;MA5II,qBAoDG;InF2waP;ImFnraA;MA5II,2BAoDG;InF8waP;ImFtraA;MA5II,0BAoDG;InFixaP;ImFzraA;MA5II,2BAoDG;InFoxaP;ImF5raA;MA5II,wBAoDG;InFuxaP;ImF/raA;MA5II,2BAoDG;InF0xaP;ImFlsaA;MA5II,0BAoDG;InF6xaP;ImFrsaA;MA5II,wBAoDG;InFgyaP;ImFxsaA;MA5II,0BAoDG;InFmyaP;ImF3saA;MA5II,wBAoDG;InFsyaP;ImF9saA;MA5II,oBAoDG;InFyyaP;ImFjtaA;MA5II,0BAoDG;InF4yaP;ImFptaA;MA5II,yBAoDG;InF+yaP;ImFvtaA;MA5II,0BAoDG;InFkzaP;ImF1taA;MA5II,uBAoDG;InFqzaP;ImF7taA;MA5II,0BAoDG;InFwzaP;ImFhuaA;MA5II,yBAoDG;InF2zaP;ImFnuaA;MA5II,uBAoDG;InF8zaP;ImFtuaA;MA5II,yBAoDG;InFi0aP;ImFzuaA;MA5II,uBAoDG;InFo0aP;ImF5uaA;MA5II,uBAoDG;InFu0aP;ImF/uaA;MA5II,6BAoDG;InF00aP;ImFlvaA;MA5II,4BAoDG;InF60aP;ImFrvaA;MA5II,6BAoDG;InFg1aP;ImFxvaA;MA5II,0BAoDG;InFm1aP;ImF3vaA;MA5II,6BAoDG;InFs1aP;ImF9vaA;MA5II,4BAoDG;InFy1aP;ImFjwaA;MA5II,0BAoDG;InF41aP;ImFpwaA;MA5II,4BAoDG;InF+1aP;ImFvwaA;MA5II,0BAoDG;InFk2aP;ImF1waA;MA5II,MAoDG;InFq2aP;ImF7waA;MA5II,YAoDG;InFw2aP;ImFhxaA;MA5II,WAoDG;InF22aP;ImFnxaA;MA5II,YAoDG;InF82aP;ImFtxaA;MA5II,SAoDG;InFi3aP;ImFzxaA;MA5II,YAoDG;InFo3aP;ImF5xaA;MA5II,WAoDG;InFu3aP;ImF/xaA;MA5II,SAoDG;InF03aP;ImFlyaA;MA5II,WAoDG;InF63aP;ImFryaA;MA5II,SAoDG;InFg4aP;ImFxyaA;MA5II,UAoDG;InFm4aP;ImF3yaA;MA5II,gBAoDG;InFs4aP;ImF9yaA;MA5II,eAoDG;InFy4aP;ImFjzaA;MA5II,gBAoDG;InF44aP;ImFpzaA;MA5II,aAoDG;InF+4aP;ImFvzaA;MA5II,gBAoDG;InFk5aP;ImF1zaA;MA5II,eAoDG;InFq5aP;ImF7zaA;MA5II,aAoDG;InFw5aP;ImFh0aA;MA5II,eAoDG;InF25aP;ImFn0aA;MA5II,aAoDG;InF85aP;ImFt0aA;MA5II,aAoDG;InFi6aP;ImFz0aA;MA5II,mBAoDG;InFo6aP;ImF50aA;MA5II,kBAoDG;InFu6aP;ImF/0aA;MA5II,mBAoDG;InF06aP;ImFl1aA;MA5II,gBAoDG;InF66aP;ImFr1aA;MA5II,mBAoDG;InFg7aP;ImFx1aA;MA5II,kBAoDG;InFm7aP;ImF31aA;MA5II,gBAoDG;InFs7aP;ImF91aA;MA5II,kBAoDG;InFy7aP;ImFj2aA;MA5II,gBAoDG;InF47aP;ImFp2aA;MA5II,oBAoDG;InF+7aP;ImFv2aA;MA5II,0BAoDG;InFk8aP;ImF12aA;MA5II,yBAoDG;InFq8aP;ImF72aA;MA5II,0BAoDG;InFw8aP;ImFh3aA;MA5II,uBAoDG;InF28aP;ImFn3aA;MA5II,0BAoDG;InF88aP;ImFt3aA;MA5II,yBAoDG;InFi9aP;ImFz3aA;MA5II,uBAoDG;InFo9aP;ImF53aA;MA5II,yBAoDG;InFu9aP;ImF/3aA;MA5II,uBAoDG;InF09aP;ImFl4aA;MA5II,mBAoDG;InF69aP;ImFr4aA;MA5II,yBAoDG;InFg+aP;ImFx4aA;MA5II,wBAoDG;InFm+aP;ImF34aA;MA5II,yBAoDG;InFs+aP;ImF94aA;MA5II,sBAoDG;InFy+aP;ImFj5aA;MA5II,yBAoDG;InF4+aP;ImFp5aA;MA5II,wBAoDG;InF++aP;ImFv5aA;MA5II,sBAoDG;InFk/aP;ImF15aA;MA5II,wBAoDG;InFq/aP;ImF75aA;MA5II,sBAoDG;InFw/aP;ImFh6aA;MA5II,yFAoDG;InF2/aP;ImFn6aA;MA5II,sBAoDG;InF8/aP;ImFt6aA;MA5II,wFAoDG;InFigbP;ImFz6aA;MA5II,qBAoDG;InFogbP;ImF56aA;MA5II,iBAoDG;InFugbP;ImF/6aA;MA5II,eAoDG;InF0gbP;ImFl7aA;MA5II,kBAoDG;InF6gbP;EACF;EWlibE;IwE4GA;MA5II,mBAoDG;InFkhbP;ImF17aA;MA5II,iBAoDG;InFqhbP;ImF77aA;MA5II,WAoDG;InFwhbP;ImFh8aA;MA5II,mBAoDG;InF2hbP;ImFn8aA;MA5II,iBAoDG;InF8hbP;ImFt8aA;MA5II,gBAoDG;InFiibP;ImFz8aA;MA5II,sBAoDG;InFoibP;ImF58aA;MA5II,gBAoDG;InFuibP;ImF/8aA;MA5II,eAyDO;InFqibX;ImFl9aA;MA5II,qBAyDO;InFwibX;ImFr9aA;MA5II,cAyDO;InF2ibX;ImFx9aA;MA5II,aAyDO;InF8ibX;ImF39aA;MA5II,oBAyDO;InFijbX;ImF99aA;MA5II,cAyDO;InFojbX;ImFj+aA;MA5II,kBAyDO;InFujbX;ImFp+aA;MA5II,mBAyDO;InF0jbX;ImFv+aA;MA5II,aAyDO;InF6jbX;ImF1+aA;MA5II,oBAyDO;InFgkbX;ImF7+aA;MA5II,iBAyDO;InFmkbX;ImFh/aA;MA5II,kBAyDO;InFskbX;ImFn/aA;MA5II,aAyDO;InFykbX;ImFt/aA;MA5II,cAoDG;InFilbP;ImFz/aA;MA5II,mBAyDO;InF+kbX;ImF5/aA;MA5II,sBAyDO;InFklbX;ImF//aA;MA5II,2BAyDO;InFqlbX;ImFlgbA;MA5II,8BAyDO;InFwlbX;ImFrgbA;MA5II,YAoDG;InFgmbP;ImFxgbA;MA5II,YAoDG;InFmmbP;ImF3gbA;MA5II,cAoDG;InFsmbP;ImF9gbA;MA5II,cAoDG;InFymbP;ImFjhbA;MA5II,eAyDO;InFumbX;ImFphbA;MA5II,iBAyDO;InF0mbX;ImFvhbA;MA5II,uBAyDO;InF6mbX;ImF1hbA;MA5II,2BAoDG;InFqnbP;ImF7hbA;MA5II,yBAoDG;InFwnbP;ImFhibA;MA5II,uBAoDG;InF2nbP;ImFnibA;MA5II,8BAoDG;InF8nbP;ImFtibA;MA5II,6BAoDG;InFiobP;ImFzibA;MA5II,6BAoDG;InFoobP;ImF5ibA;MA5II,oBAoDG;InFuobP;ImF/ibA;MA5II,kBAoDG;InF0obP;ImFljbA;MA5II,qBAoDG;InF6obP;ImFrjbA;MA5II,sBAoDG;InFgpbP;ImFxjbA;MA5II,mBAoDG;InFmpbP;ImF3jbA;MA5II,iBAoDG;InFspbP;ImF9jbA;MA5II,oBAoDG;InFypbP;ImFjkbA;MA5II,uBAoDG;InF4pbP;ImFpkbA;MA5II,qBAoDG;InF+pbP;ImFvkbA;MA5II,mBAoDG;InFkqbP;ImF1kbA;MA5II,qBAoDG;InFqqbP;ImF7kbA;MA5II,oBAoDG;InFwqbP;ImFhlbA;MA5II,yBAoDG;InF2qbP;ImFnlbA;MA5II,uBAoDG;InF8qbP;ImFtlbA;MA5II,qBAoDG;InFirbP;ImFzlbA;MA5II,4BAoDG;InForbP;ImF5lbA;MA5II,2BAoDG;InFurbP;ImF/lbA;MA5II,sBAoDG;InF0rbP;ImFlmbA;MA5II,gBAoDG;InF6rbP;ImFrmbA;MA5II,sBAoDG;InFgsbP;ImFxmbA;MA5II,oBAoDG;InFmsbP;ImF3mbA;MA5II,kBAoDG;InFssbP;ImF9mbA;MA5II,oBAoDG;InFysbP;ImFjnbA;MA5II,mBAoDG;InF4sbP;ImFpnbA;MA5II,kBAoDG;InF+sbP;ImFvnbA;MA5II,gBAoDG;InFktbP;ImF1nbA;MA5II,mBAoDG;InFqtbP;ImF7nbA;MA5II,oBAoDG;InFwtbP;ImFhobA;MA5II,0BAoDG;InF2tbP;ImFnobA;MA5II,qCAoDG;InF8tbP;ImFtobA;MA5II,qCAoDG;InFiubP;ImFzobA;MA5II,qCAoDG;InFoubP;ImF5obA;MA5II,qCAoDG;InFuubP;ImF/obA;MA5II,mBAoDG;InF0ubP;ImFlpbA;MA5II,mBAyDO;InFwubX;ImFrpbA;MA5II,sBAyDO;InF2ubX;ImFxpbA;MA5II,qBAyDO;InF8ubX;ImF3pbA;MA5II,SAoDG;InFsvbP;ImF9pbA;MA5II,QAoDG;InFyvbP;ImFjqbA;MA5II,QAoDG;InF4vbP;ImFpqbA;MA5II,QAoDG;InF+vbP;ImFvqbA;MA5II,QAoDG;InFkwbP;ImF1qbA;MA5II,QAoDG;InFqwbP;ImF7qbA;MA5II,QAoDG;InFwwbP;ImFhrbA;MA5II,QAoDG;InF2wbP;ImFnrbA;MA5II,SAoDG;InF8wbP;ImFtrbA;MA5II,eAoDG;InFixbP;ImFzrbA;MA5II,cAoDG;InFoxbP;ImF5rbA;MA5II,eAoDG;InFuxbP;ImF/rbA;MA5II,YAoDG;InF0xbP;ImFlsbA;MA5II,eAoDG;InF6xbP;ImFrsbA;MA5II,cAoDG;InFgybP;ImFxsbA;MA5II,YAoDG;InFmybP;ImF3sbA;MA5II,cAoDG;InFsybP;ImF9sbA;MA5II,YAoDG;InFyybP;ImFjtbA;MA5II,YAoDG;InF4ybP;ImFptbA;MA5II,gBAoDG;InF+ybP;ImFvtbA;MA5II,sBAoDG;InFkzbP;ImF1tbA;MA5II,qBAoDG;InFqzbP;ImF7tbA;MA5II,sBAoDG;InFwzbP;ImFhubA;MA5II,mBAoDG;InF2zbP;ImFnubA;MA5II,sBAoDG;InF8zbP;ImFtubA;MA5II,qBAoDG;InFi0bP;ImFzubA;MA5II,mBAoDG;InFo0bP;ImF5ubA;MA5II,qBAoDG;InFu0bP;ImF/ubA;MA5II,mBAoDG;InF00bP;ImFlvbA;MA5II,mBAoDG;InF60bP;ImFrvbA;MA5II,eAoDG;InFg1bP;ImFxvbA;MA5II,qBAoDG;InFm1bP;ImF3vbA;MA5II,oBAoDG;InFs1bP;ImF9vbA;MA5II,qBAoDG;InFy1bP;ImFjwbA;MA5II,kBAoDG;InF41bP;ImFpwbA;MA5II,qBAoDG;InF+1bP;ImFvwbA;MA5II,oBAoDG;InFk2bP;ImF1wbA;MA5II,kBAoDG;InFq2bP;ImF7wbA;MA5II,oBAoDG;InFw2bP;ImFhxbA;MA5II,kBAoDG;InF22bP;ImFnxbA;MA5II,kBAoDG;InF82bP;ImFtxbA;MA5II,qBAoDG;InFi3bP;ImFzxbA;MA5II,2BAoDG;InFo3bP;ImF5xbA;MA5II,0BAoDG;InFu3bP;ImF/xbA;MA5II,2BAoDG;InF03bP;ImFlybA;MA5II,wBAoDG;InF63bP;ImFrybA;MA5II,2BAoDG;InFg4bP;ImFxybA;MA5II,0BAoDG;InFm4bP;ImF3ybA;MA5II,wBAoDG;InFs4bP;ImF9ybA;MA5II,0BAoDG;InFy4bP;ImFjzbA;MA5II,wBAoDG;InF44bP;ImFpzbA;MA5II,wBAoDG;InF+4bP;ImFvzbA;MA5II,oBAoDG;InFk5bP;ImF1zbA;MA5II,0BAoDG;InFq5bP;ImF7zbA;MA5II,yBAoDG;InFw5bP;ImFh0bA;MA5II,0BAoDG;InF25bP;ImFn0bA;MA5II,uBAoDG;InF85bP;ImFt0bA;MA5II,0BAoDG;InFi6bP;ImFz0bA;MA5II,yBAoDG;InFo6bP;ImF50bA;MA5II,uBAoDG;InFu6bP;ImF/0bA;MA5II,yBAoDG;InF06bP;ImFl1bA;MA5II,uBAoDG;InF66bP;ImFr1bA;MA5II,2BAoDG;InFg7bP;ImFx1bA;MA5II,0BAoDG;InFm7bP;ImF31bA;MA5II,uBAoDG;InFs7bP;ImF91bA;MA5II,mBAoDG;InFy7bP;ImFj2bA;MA5II,yBAoDG;InF47bP;ImFp2bA;MA5II,wBAoDG;InF+7bP;ImFv2bA;MA5II,yBAoDG;InFk8bP;ImF12bA;MA5II,sBAoDG;InFq8bP;ImF72bA;MA5II,yBAoDG;InFw8bP;ImFh3bA;MA5II,wBAoDG;InF28bP;ImFn3bA;MA5II,sBAoDG;InF88bP;ImFt3bA;MA5II,wBAoDG;InFi9bP;ImFz3bA;MA5II,sBAoDG;InFo9bP;ImF53bA;MA5II,sBAoDG;InFu9bP;ImF/3bA;MA5II,sBAoDG;InF09bP;ImFl4bA;MA5II,4BAoDG;InF69bP;ImFr4bA;MA5II,2BAoDG;InFg+bP;ImFx4bA;MA5II,4BAoDG;InFm+bP;ImF34bA;MA5II,yBAoDG;InFs+bP;ImF94bA;MA5II,4BAoDG;InFy+bP;ImFj5bA;MA5II,2BAoDG;InF4+bP;ImFp5bA;MA5II,yBAoDG;InF++bP;ImFv5bA;MA5II,2BAoDG;InFk/bP;ImF15bA;MA5II,yBAoDG;InFq/bP;ImF75bA;MA5II,6BAoDG;InFw/bP;ImFh6bA;MA5II,4BAoDG;InF2/bP;ImFn6bA;MA5II,yBAoDG;InF8/bP;ImFt6bA;MA5II,UAoDG;InFigcP;ImFz6bA;MA5II,gBAoDG;InFogcP;ImF56bA;MA5II,eAoDG;InFugcP;ImF/6bA;MA5II,gBAoDG;InF0gcP;ImFl7bA;MA5II,aAoDG;InF6gcP;ImFr7bA;MA5II,gBAoDG;InFghcP;ImFx7bA;MA5II,eAoDG;InFmhcP;ImF37bA;MA5II,aAoDG;InFshcP;ImF97bA;MA5II,eAoDG;InFyhcP;ImFj8bA;MA5II,aAoDG;InF4hcP;ImFp8bA;MA5II,iBAoDG;InF+hcP;ImFv8bA;MA5II,uBAoDG;InFkicP;ImF18bA;MA5II,sBAoDG;InFqicP;ImF78bA;MA5II,uBAoDG;InFwicP;ImFh9bA;MA5II,oBAoDG;InF2icP;ImFn9bA;MA5II,uBAoDG;InF8icP;ImFt9bA;MA5II,sBAoDG;InFijcP;ImFz9bA;MA5II,oBAoDG;InFojcP;ImF59bA;MA5II,sBAoDG;InFujcP;ImF/9bA;MA5II,oBAoDG;InF0jcP;ImFl+bA;MA5II,gBAoDG;InF6jcP;ImFr+bA;MA5II,sBAoDG;InFgkcP;ImFx+bA;MA5II,qBAoDG;InFmkcP;ImF3+bA;MA5II,sBAoDG;InFskcP;ImF9+bA;MA5II,mBAoDG;InFykcP;ImFj/bA;MA5II,sBAoDG;InF4kcP;ImFp/bA;MA5II,qBAoDG;InF+kcP;ImFv/bA;MA5II,mBAoDG;InFklcP;ImF1/bA;MA5II,qBAoDG;InFqlcP;ImF7/bA;MA5II,mBAoDG;InFwlcP;ImFhgcA;MA5II,sBAoDG;InF2lcP;ImFngcA;MA5II,4BAoDG;InF8lcP;ImFtgcA;MA5II,2BAoDG;InFimcP;ImFzgcA;MA5II,4BAoDG;InFomcP;ImF5gcA;MA5II,yBAoDG;InFumcP;ImF/gcA;MA5II,4BAoDG;InF0mcP;ImFlhcA;MA5II,2BAoDG;InF6mcP;ImFrhcA;MA5II,yBAoDG;InFgncP;ImFxhcA;MA5II,2BAoDG;InFmncP;ImF3hcA;MA5II,yBAoDG;InFsncP;ImF9hcA;MA5II,qBAoDG;InFyncP;ImFjicA;MA5II,2BAoDG;InF4ncP;ImFpicA;MA5II,0BAoDG;InF+ncP;ImFvicA;MA5II,2BAoDG;InFkocP;ImF1icA;MA5II,wBAoDG;InFqocP;ImF7icA;MA5II,2BAoDG;InFwocP;ImFhjcA;MA5II,0BAoDG;InF2ocP;ImFnjcA;MA5II,wBAoDG;InF8ocP;ImFtjcA;MA5II,0BAoDG;InFipcP;ImFzjcA;MA5II,wBAoDG;InFopcP;ImF5jcA;MA5II,oBAoDG;InFupcP;ImF/jcA;MA5II,0BAoDG;InF0pcP;ImFlkcA;MA5II,yBAoDG;InF6pcP;ImFrkcA;MA5II,0BAoDG;InFgqcP;ImFxkcA;MA5II,uBAoDG;InFmqcP;ImF3kcA;MA5II,0BAoDG;InFsqcP;ImF9kcA;MA5II,yBAoDG;InFyqcP;ImFjlcA;MA5II,uBAoDG;InF4qcP;ImFplcA;MA5II,yBAoDG;InF+qcP;ImFvlcA;MA5II,uBAoDG;InFkrcP;ImF1lcA;MA5II,uBAoDG;InFqrcP;ImF7lcA;MA5II,6BAoDG;InFwrcP;ImFhmcA;MA5II,4BAoDG;InF2rcP;ImFnmcA;MA5II,6BAoDG;InF8rcP;ImFtmcA;MA5II,0BAoDG;InFiscP;ImFzmcA;MA5II,6BAoDG;InFoscP;ImF5mcA;MA5II,4BAoDG;InFuscP;ImF/mcA;MA5II,0BAoDG;InF0scP;ImFlncA;MA5II,4BAoDG;InF6scP;ImFrncA;MA5II,0BAoDG;InFgtcP;ImFxncA;MA5II,MAoDG;InFmtcP;ImF3ncA;MA5II,YAoDG;InFstcP;ImF9ncA;MA5II,WAoDG;InFytcP;ImFjocA;MA5II,YAoDG;InF4tcP;ImFpocA;MA5II,SAoDG;InF+tcP;ImFvocA;MA5II,YAoDG;InFkucP;ImF1ocA;MA5II,WAoDG;InFqucP;ImF7ocA;MA5II,SAoDG;InFwucP;ImFhpcA;MA5II,WAoDG;InF2ucP;ImFnpcA;MA5II,SAoDG;InF8ucP;ImFtpcA;MA5II,UAoDG;InFivcP;ImFzpcA;MA5II,gBAoDG;InFovcP;ImF5pcA;MA5II,eAoDG;InFuvcP;ImF/pcA;MA5II,gBAoDG;InF0vcP;ImFlqcA;MA5II,aAoDG;InF6vcP;ImFrqcA;MA5II,gBAoDG;InFgwcP;ImFxqcA;MA5II,eAoDG;InFmwcP;ImF3qcA;MA5II,aAoDG;InFswcP;ImF9qcA;MA5II,eAoDG;InFywcP;ImFjrcA;MA5II,aAoDG;InF4wcP;ImFprcA;MA5II,aAoDG;InF+wcP;ImFvrcA;MA5II,mBAoDG;InFkxcP;ImF1rcA;MA5II,kBAoDG;InFqxcP;ImF7rcA;MA5II,mBAoDG;InFwxcP;ImFhscA;MA5II,gBAoDG;InF2xcP;ImFnscA;MA5II,mBAoDG;InF8xcP;ImFtscA;MA5II,kBAoDG;InFiycP;ImFzscA;MA5II,gBAoDG;InFoycP;ImF5scA;MA5II,kBAoDG;InFuycP;ImF/scA;MA5II,gBAoDG;InF0ycP;ImFltcA;MA5II,oBAoDG;InF6ycP;ImFrtcA;MA5II,0BAoDG;InFgzcP;ImFxtcA;MA5II,yBAoDG;InFmzcP;ImF3tcA;MA5II,0BAoDG;InFszcP;ImF9tcA;MA5II,uBAoDG;InFyzcP;ImFjucA;MA5II,0BAoDG;InF4zcP;ImFpucA;MA5II,yBAoDG;InF+zcP;ImFvucA;MA5II,uBAoDG;InFk0cP;ImF1ucA;MA5II,yBAoDG;InFq0cP;ImF7ucA;MA5II,uBAoDG;InFw0cP;ImFhvcA;MA5II,mBAoDG;InF20cP;ImFnvcA;MA5II,yBAoDG;InF80cP;ImFtvcA;MA5II,wBAoDG;InFi1cP;ImFzvcA;MA5II,yBAoDG;InFo1cP;ImF5vcA;MA5II,sBAoDG;InFu1cP;ImF/vcA;MA5II,yBAoDG;InF01cP;ImFlwcA;MA5II,wBAoDG;InF61cP;ImFrwcA;MA5II,sBAoDG;InFg2cP;ImFxwcA;MA5II,wBAoDG;InFm2cP;ImF3wcA;MA5II,sBAoDG;InFs2cP;ImF9wcA;MA5II,yFAoDG;InFy2cP;ImFjxcA;MA5II,sBAoDG;InF42cP;ImFpxcA;MA5II,wFAoDG;InF+2cP;ImFvxcA;MA5II,qBAoDG;InFk3cP;ImF1xcA;MA5II,iBAoDG;InFq3cP;ImF7xcA;MA5II,eAoDG;InFw3cP;ImFhycA;MA5II,kBAoDG;InF23cP;EACF;EWh5cE;IwE4GA;MA5II,mBAoDG;InFg4cP;ImFxycA;MA5II,iBAoDG;InFm4cP;ImF3ycA;MA5II,WAoDG;InFs4cP;ImF9ycA;MA5II,mBAoDG;InFy4cP;ImFjzcA;MA5II,iBAoDG;InF44cP;ImFpzcA;MA5II,gBAoDG;InF+4cP;ImFvzcA;MA5II,sBAoDG;InFk5cP;ImF1zcA;MA5II,gBAoDG;InFq5cP;ImF7zcA;MA5II,eAyDO;InFm5cX;ImFh0cA;MA5II,qBAyDO;InFs5cX;ImFn0cA;MA5II,cAyDO;InFy5cX;ImFt0cA;MA5II,aAyDO;InF45cX;ImFz0cA;MA5II,oBAyDO;InF+5cX;ImF50cA;MA5II,cAyDO;InFk6cX;ImF/0cA;MA5II,kBAyDO;InFq6cX;ImFl1cA;MA5II,mBAyDO;InFw6cX;ImFr1cA;MA5II,aAyDO;InF26cX;ImFx1cA;MA5II,oBAyDO;InF86cX;ImF31cA;MA5II,iBAyDO;InFi7cX;ImF91cA;MA5II,kBAyDO;InFo7cX;ImFj2cA;MA5II,aAyDO;InFu7cX;ImFp2cA;MA5II,cAoDG;InF+7cP;ImFv2cA;MA5II,mBAyDO;InF67cX;ImF12cA;MA5II,sBAyDO;InFg8cX;ImF72cA;MA5II,2BAyDO;InFm8cX;ImFh3cA;MA5II,8BAyDO;InFs8cX;ImFn3cA;MA5II,YAoDG;InF88cP;ImFt3cA;MA5II,YAoDG;InFi9cP;ImFz3cA;MA5II,cAoDG;InFo9cP;ImF53cA;MA5II,cAoDG;InFu9cP;ImF/3cA;MA5II,eAyDO;InFq9cX;ImFl4cA;MA5II,iBAyDO;InFw9cX;ImFr4cA;MA5II,uBAyDO;InF29cX;ImFx4cA;MA5II,2BAoDG;InFm+cP;ImF34cA;MA5II,yBAoDG;InFs+cP;ImF94cA;MA5II,uBAoDG;InFy+cP;ImFj5cA;MA5II,8BAoDG;InF4+cP;ImFp5cA;MA5II,6BAoDG;InF++cP;ImFv5cA;MA5II,6BAoDG;InFk/cP;ImF15cA;MA5II,oBAoDG;InFq/cP;ImF75cA;MA5II,kBAoDG;InFw/cP;ImFh6cA;MA5II,qBAoDG;InF2/cP;ImFn6cA;MA5II,sBAoDG;InF8/cP;ImFt6cA;MA5II,mBAoDG;InFigdP;ImFz6cA;MA5II,iBAoDG;InFogdP;ImF56cA;MA5II,oBAoDG;InFugdP;ImF/6cA;MA5II,uBAoDG;InF0gdP;ImFl7cA;MA5II,qBAoDG;InF6gdP;ImFr7cA;MA5II,mBAoDG;InFghdP;ImFx7cA;MA5II,qBAoDG;InFmhdP;ImF37cA;MA5II,oBAoDG;InFshdP;ImF97cA;MA5II,yBAoDG;InFyhdP;ImFj8cA;MA5II,uBAoDG;InF4hdP;ImFp8cA;MA5II,qBAoDG;InF+hdP;ImFv8cA;MA5II,4BAoDG;InFkidP;ImF18cA;MA5II,2BAoDG;InFqidP;ImF78cA;MA5II,sBAoDG;InFwidP;ImFh9cA;MA5II,gBAoDG;InF2idP;ImFn9cA;MA5II,sBAoDG;InF8idP;ImFt9cA;MA5II,oBAoDG;InFijdP;ImFz9cA;MA5II,kBAoDG;InFojdP;ImF59cA;MA5II,oBAoDG;InFujdP;ImF/9cA;MA5II,mBAoDG;InF0jdP;ImFl+cA;MA5II,kBAoDG;InF6jdP;ImFr+cA;MA5II,gBAoDG;InFgkdP;ImFx+cA;MA5II,mBAoDG;InFmkdP;ImF3+cA;MA5II,oBAoDG;InFskdP;ImF9+cA;MA5II,0BAoDG;InFykdP;ImFj/cA;MA5II,qCAoDG;InF4kdP;ImFp/cA;MA5II,qCAoDG;InF+kdP;ImFv/cA;MA5II,qCAoDG;InFkldP;ImF1/cA;MA5II,qCAoDG;InFqldP;ImF7/cA;MA5II,mBAoDG;InFwldP;ImFhgdA;MA5II,mBAyDO;InFsldX;ImFngdA;MA5II,sBAyDO;InFyldX;ImFtgdA;MA5II,qBAyDO;InF4ldX;ImFzgdA;MA5II,SAoDG;InFomdP;ImF5gdA;MA5II,QAoDG;InFumdP;ImF/gdA;MA5II,QAoDG;InF0mdP;ImFlhdA;MA5II,QAoDG;InF6mdP;ImFrhdA;MA5II,QAoDG;InFgndP;ImFxhdA;MA5II,QAoDG;InFmndP;ImF3hdA;MA5II,QAoDG;InFsndP;ImF9hdA;MA5II,QAoDG;InFyndP;ImFjidA;MA5II,SAoDG;InF4ndP;ImFpidA;MA5II,eAoDG;InF+ndP;ImFvidA;MA5II,cAoDG;InFkodP;ImF1idA;MA5II,eAoDG;InFqodP;ImF7idA;MA5II,YAoDG;InFwodP;ImFhjdA;MA5II,eAoDG;InF2odP;ImFnjdA;MA5II,cAoDG;InF8odP;ImFtjdA;MA5II,YAoDG;InFipdP;ImFzjdA;MA5II,cAoDG;InFopdP;ImF5jdA;MA5II,YAoDG;InFupdP;ImF/jdA;MA5II,YAoDG;InF0pdP;ImFlkdA;MA5II,gBAoDG;InF6pdP;ImFrkdA;MA5II,sBAoDG;InFgqdP;ImFxkdA;MA5II,qBAoDG;InFmqdP;ImF3kdA;MA5II,sBAoDG;InFsqdP;ImF9kdA;MA5II,mBAoDG;InFyqdP;ImFjldA;MA5II,sBAoDG;InF4qdP;ImFpldA;MA5II,qBAoDG;InF+qdP;ImFvldA;MA5II,mBAoDG;InFkrdP;ImF1ldA;MA5II,qBAoDG;InFqrdP;ImF7ldA;MA5II,mBAoDG;InFwrdP;ImFhmdA;MA5II,mBAoDG;InF2rdP;ImFnmdA;MA5II,eAoDG;InF8rdP;ImFtmdA;MA5II,qBAoDG;InFisdP;ImFzmdA;MA5II,oBAoDG;InFosdP;ImF5mdA;MA5II,qBAoDG;InFusdP;ImF/mdA;MA5II,kBAoDG;InF0sdP;ImFlndA;MA5II,qBAoDG;InF6sdP;ImFrndA;MA5II,oBAoDG;InFgtdP;ImFxndA;MA5II,kBAoDG;InFmtdP;ImF3ndA;MA5II,oBAoDG;InFstdP;ImF9ndA;MA5II,kBAoDG;InFytdP;ImFjodA;MA5II,kBAoDG;InF4tdP;ImFpodA;MA5II,qBAoDG;InF+tdP;ImFvodA;MA5II,2BAoDG;InFkudP;ImF1odA;MA5II,0BAoDG;InFqudP;ImF7odA;MA5II,2BAoDG;InFwudP;ImFhpdA;MA5II,wBAoDG;InF2udP;ImFnpdA;MA5II,2BAoDG;InF8udP;ImFtpdA;MA5II,0BAoDG;InFivdP;ImFzpdA;MA5II,wBAoDG;InFovdP;ImF5pdA;MA5II,0BAoDG;InFuvdP;ImF/pdA;MA5II,wBAoDG;InF0vdP;ImFlqdA;MA5II,wBAoDG;InF6vdP;ImFrqdA;MA5II,oBAoDG;InFgwdP;ImFxqdA;MA5II,0BAoDG;InFmwdP;ImF3qdA;MA5II,yBAoDG;InFswdP;ImF9qdA;MA5II,0BAoDG;InFywdP;ImFjrdA;MA5II,uBAoDG;InF4wdP;ImFprdA;MA5II,0BAoDG;InF+wdP;ImFvrdA;MA5II,yBAoDG;InFkxdP;ImF1rdA;MA5II,uBAoDG;InFqxdP;ImF7rdA;MA5II,yBAoDG;InFwxdP;ImFhsdA;MA5II,uBAoDG;InF2xdP;ImFnsdA;MA5II,2BAoDG;InF8xdP;ImFtsdA;MA5II,0BAoDG;InFiydP;ImFzsdA;MA5II,uBAoDG;InFoydP;ImF5sdA;MA5II,mBAoDG;InFuydP;ImF/sdA;MA5II,yBAoDG;InF0ydP;ImFltdA;MA5II,wBAoDG;InF6ydP;ImFrtdA;MA5II,yBAoDG;InFgzdP;ImFxtdA;MA5II,sBAoDG;InFmzdP;ImF3tdA;MA5II,yBAoDG;InFszdP;ImF9tdA;MA5II,wBAoDG;InFyzdP;ImFjudA;MA5II,sBAoDG;InF4zdP;ImFpudA;MA5II,wBAoDG;InF+zdP;ImFvudA;MA5II,sBAoDG;InFk0dP;ImF1udA;MA5II,sBAoDG;InFq0dP;ImF7udA;MA5II,sBAoDG;InFw0dP;ImFhvdA;MA5II,4BAoDG;InF20dP;ImFnvdA;MA5II,2BAoDG;InF80dP;ImFtvdA;MA5II,4BAoDG;InFi1dP;ImFzvdA;MA5II,yBAoDG;InFo1dP;ImF5vdA;MA5II,4BAoDG;InFu1dP;ImF/vdA;MA5II,2BAoDG;InF01dP;ImFlwdA;MA5II,yBAoDG;InF61dP;ImFrwdA;MA5II,2BAoDG;InFg2dP;ImFxwdA;MA5II,yBAoDG;InFm2dP;ImF3wdA;MA5II,6BAoDG;InFs2dP;ImF9wdA;MA5II,4BAoDG;InFy2dP;ImFjxdA;MA5II,yBAoDG;InF42dP;ImFpxdA;MA5II,UAoDG;InF+2dP;ImFvxdA;MA5II,gBAoDG;InFk3dP;ImF1xdA;MA5II,eAoDG;InFq3dP;ImF7xdA;MA5II,gBAoDG;InFw3dP;ImFhydA;MA5II,aAoDG;InF23dP;ImFnydA;MA5II,gBAoDG;InF83dP;ImFtydA;MA5II,eAoDG;InFi4dP;ImFzydA;MA5II,aAoDG;InFo4dP;ImF5ydA;MA5II,eAoDG;InFu4dP;ImF/ydA;MA5II,aAoDG;InF04dP;ImFlzdA;MA5II,iBAoDG;InF64dP;ImFrzdA;MA5II,uBAoDG;InFg5dP;ImFxzdA;MA5II,sBAoDG;InFm5dP;ImF3zdA;MA5II,uBAoDG;InFs5dP;ImF9zdA;MA5II,oBAoDG;InFy5dP;ImFj0dA;MA5II,uBAoDG;InF45dP;ImFp0dA;MA5II,sBAoDG;InF+5dP;ImFv0dA;MA5II,oBAoDG;InFk6dP;ImF10dA;MA5II,sBAoDG;InFq6dP;ImF70dA;MA5II,oBAoDG;InFw6dP;ImFh1dA;MA5II,gBAoDG;InF26dP;ImFn1dA;MA5II,sBAoDG;InF86dP;ImFt1dA;MA5II,qBAoDG;InFi7dP;ImFz1dA;MA5II,sBAoDG;InFo7dP;ImF51dA;MA5II,mBAoDG;InFu7dP;ImF/1dA;MA5II,sBAoDG;InF07dP;ImFl2dA;MA5II,qBAoDG;InF67dP;ImFr2dA;MA5II,mBAoDG;InFg8dP;ImFx2dA;MA5II,qBAoDG;InFm8dP;ImF32dA;MA5II,mBAoDG;InFs8dP;ImF92dA;MA5II,sBAoDG;InFy8dP;ImFj3dA;MA5II,4BAoDG;InF48dP;ImFp3dA;MA5II,2BAoDG;InF+8dP;ImFv3dA;MA5II,4BAoDG;InFk9dP;ImF13dA;MA5II,yBAoDG;InFq9dP;ImF73dA;MA5II,4BAoDG;InFw9dP;ImFh4dA;MA5II,2BAoDG;InF29dP;ImFn4dA;MA5II,yBAoDG;InF89dP;ImFt4dA;MA5II,2BAoDG;InFi+dP;ImFz4dA;MA5II,yBAoDG;InFo+dP;ImF54dA;MA5II,qBAoDG;InFu+dP;ImF/4dA;MA5II,2BAoDG;InF0+dP;ImFl5dA;MA5II,0BAoDG;InF6+dP;ImFr5dA;MA5II,2BAoDG;InFg/dP;ImFx5dA;MA5II,wBAoDG;InFm/dP;ImF35dA;MA5II,2BAoDG;InFs/dP;ImF95dA;MA5II,0BAoDG;InFy/dP;ImFj6dA;MA5II,wBAoDG;InF4/dP;ImFp6dA;MA5II,0BAoDG;InF+/dP;ImFv6dA;MA5II,wBAoDG;InFkgeP;ImF16dA;MA5II,oBAoDG;InFqgeP;ImF76dA;MA5II,0BAoDG;InFwgeP;ImFh7dA;MA5II,yBAoDG;InF2geP;ImFn7dA;MA5II,0BAoDG;InF8geP;ImFt7dA;MA5II,uBAoDG;InFiheP;ImFz7dA;MA5II,0BAoDG;InFoheP;ImF57dA;MA5II,yBAoDG;InFuheP;ImF/7dA;MA5II,uBAoDG;InF0heP;ImFl8dA;MA5II,yBAoDG;InF6heP;ImFr8dA;MA5II,uBAoDG;InFgieP;ImFx8dA;MA5II,uBAoDG;InFmieP;ImF38dA;MA5II,6BAoDG;InFsieP;ImF98dA;MA5II,4BAoDG;InFyieP;ImFj9dA;MA5II,6BAoDG;InF4ieP;ImFp9dA;MA5II,0BAoDG;InF+ieP;ImFv9dA;MA5II,6BAoDG;InFkjeP;ImF19dA;MA5II,4BAoDG;InFqjeP;ImF79dA;MA5II,0BAoDG;InFwjeP;ImFh+dA;MA5II,4BAoDG;InF2jeP;ImFn+dA;MA5II,0BAoDG;InF8jeP;ImFt+dA;MA5II,MAoDG;InFikeP;ImFz+dA;MA5II,YAoDG;InFokeP;ImF5+dA;MA5II,WAoDG;InFukeP;ImF/+dA;MA5II,YAoDG;InF0keP;ImFl/dA;MA5II,SAoDG;InF6keP;ImFr/dA;MA5II,YAoDG;InFgleP;ImFx/dA;MA5II,WAoDG;InFmleP;ImF3/dA;MA5II,SAoDG;InFsleP;ImF9/dA;MA5II,WAoDG;InFyleP;ImFjgeA;MA5II,SAoDG;InF4leP;ImFpgeA;MA5II,UAoDG;InF+leP;ImFvgeA;MA5II,gBAoDG;InFkmeP;ImF1geA;MA5II,eAoDG;InFqmeP;ImF7geA;MA5II,gBAoDG;InFwmeP;ImFhheA;MA5II,aAoDG;InF2meP;ImFnheA;MA5II,gBAoDG;InF8meP;ImFtheA;MA5II,eAoDG;InFineP;ImFzheA;MA5II,aAoDG;InFoneP;ImF5heA;MA5II,eAoDG;InFuneP;ImF/heA;MA5II,aAoDG;InF0neP;ImFlieA;MA5II,aAoDG;InF6neP;ImFrieA;MA5II,mBAoDG;InFgoeP;ImFxieA;MA5II,kBAoDG;InFmoeP;ImF3ieA;MA5II,mBAoDG;InFsoeP;ImF9ieA;MA5II,gBAoDG;InFyoeP;ImFjjeA;MA5II,mBAoDG;InF4oeP;ImFpjeA;MA5II,kBAoDG;InF+oeP;ImFvjeA;MA5II,gBAoDG;InFkpeP;ImF1jeA;MA5II,kBAoDG;InFqpeP;ImF7jeA;MA5II,gBAoDG;InFwpeP;ImFhkeA;MA5II,oBAoDG;InF2peP;ImFnkeA;MA5II,0BAoDG;InF8peP;ImFtkeA;MA5II,yBAoDG;InFiqeP;ImFzkeA;MA5II,0BAoDG;InFoqeP;ImF5keA;MA5II,uBAoDG;InFuqeP;ImF/keA;MA5II,0BAoDG;InF0qeP;ImFlleA;MA5II,yBAoDG;InF6qeP;ImFrleA;MA5II,uBAoDG;InFgreP;ImFxleA;MA5II,yBAoDG;InFmreP;ImF3leA;MA5II,uBAoDG;InFsreP;ImF9leA;MA5II,mBAoDG;InFyreP;ImFjmeA;MA5II,yBAoDG;InF4reP;ImFpmeA;MA5II,wBAoDG;InF+reP;ImFvmeA;MA5II,yBAoDG;InFkseP;ImF1meA;MA5II,sBAoDG;InFqseP;ImF7meA;MA5II,yBAoDG;InFwseP;ImFhneA;MA5II,wBAoDG;InF2seP;ImFnneA;MA5II,sBAoDG;InF8seP;ImFtneA;MA5II,wBAoDG;InFiteP;ImFzneA;MA5II,sBAoDG;InFoteP;ImF5neA;MA5II,yFAoDG;InFuteP;ImF/neA;MA5II,sBAoDG;InF0teP;ImFloeA;MA5II,wFAoDG;InF6teP;ImFroeA;MA5II,qBAoDG;InFgueP;ImFxoeA;MA5II,iBAoDG;InFmueP;ImF3oeA;MA5II,eAoDG;InFsueP;ImF9oeA;MA5II,kBAoDG;InFyueP;EACF;EW9veE;IwE4GA;MA5II,mBAoDG;InF8ueP;ImFtpeA;MA5II,iBAoDG;InFiveP;ImFzpeA;MA5II,WAoDG;InFoveP;ImF5peA;MA5II,mBAoDG;InFuveP;ImF/peA;MA5II,iBAoDG;InF0veP;ImFlqeA;MA5II,gBAoDG;InF6veP;ImFrqeA;MA5II,sBAoDG;InFgweP;ImFxqeA;MA5II,gBAoDG;InFmweP;ImF3qeA;MA5II,eAyDO;InFiweX;ImF9qeA;MA5II,qBAyDO;InFoweX;ImFjreA;MA5II,cAyDO;InFuweX;ImFpreA;MA5II,aAyDO;InF0weX;ImFvreA;MA5II,oBAyDO;InF6weX;ImF1reA;MA5II,cAyDO;InFgxeX;ImF7reA;MA5II,kBAyDO;InFmxeX;ImFhseA;MA5II,mBAyDO;InFsxeX;ImFnseA;MA5II,aAyDO;InFyxeX;ImFtseA;MA5II,oBAyDO;InF4xeX;ImFzseA;MA5II,iBAyDO;InF+xeX;ImF5seA;MA5II,kBAyDO;InFkyeX;ImF/seA;MA5II,aAyDO;InFqyeX;ImFlteA;MA5II,cAoDG;InF6yeP;ImFrteA;MA5II,mBAyDO;InF2yeX;ImFxteA;MA5II,sBAyDO;InF8yeX;ImF3teA;MA5II,2BAyDO;InFizeX;ImF9teA;MA5II,8BAyDO;InFozeX;ImFjueA;MA5II,YAoDG;InF4zeP;ImFpueA;MA5II,YAoDG;InF+zeP;ImFvueA;MA5II,cAoDG;InFk0eP;ImF1ueA;MA5II,cAoDG;InFq0eP;ImF7ueA;MA5II,eAyDO;InFm0eX;ImFhveA;MA5II,iBAyDO;InFs0eX;ImFnveA;MA5II,uBAyDO;InFy0eX;ImFtveA;MA5II,2BAoDG;InFi1eP;ImFzveA;MA5II,yBAoDG;InFo1eP;ImF5veA;MA5II,uBAoDG;InFu1eP;ImF/veA;MA5II,8BAoDG;InF01eP;ImFlweA;MA5II,6BAoDG;InF61eP;ImFrweA;MA5II,6BAoDG;InFg2eP;ImFxweA;MA5II,oBAoDG;InFm2eP;ImF3weA;MA5II,kBAoDG;InFs2eP;ImF9weA;MA5II,qBAoDG;InFy2eP;ImFjxeA;MA5II,sBAoDG;InF42eP;ImFpxeA;MA5II,mBAoDG;InF+2eP;ImFvxeA;MA5II,iBAoDG;InFk3eP;ImF1xeA;MA5II,oBAoDG;InFq3eP;ImF7xeA;MA5II,uBAoDG;InFw3eP;ImFhyeA;MA5II,qBAoDG;InF23eP;ImFnyeA;MA5II,mBAoDG;InF83eP;ImFtyeA;MA5II,qBAoDG;InFi4eP;ImFzyeA;MA5II,oBAoDG;InFo4eP;ImF5yeA;MA5II,yBAoDG;InFu4eP;ImF/yeA;MA5II,uBAoDG;InF04eP;ImFlzeA;MA5II,qBAoDG;InF64eP;ImFrzeA;MA5II,4BAoDG;InFg5eP;ImFxzeA;MA5II,2BAoDG;InFm5eP;ImF3zeA;MA5II,sBAoDG;InFs5eP;ImF9zeA;MA5II,gBAoDG;InFy5eP;ImFj0eA;MA5II,sBAoDG;InF45eP;ImFp0eA;MA5II,oBAoDG;InF+5eP;ImFv0eA;MA5II,kBAoDG;InFk6eP;ImF10eA;MA5II,oBAoDG;InFq6eP;ImF70eA;MA5II,mBAoDG;InFw6eP;ImFh1eA;MA5II,kBAoDG;InF26eP;ImFn1eA;MA5II,gBAoDG;InF86eP;ImFt1eA;MA5II,mBAoDG;InFi7eP;ImFz1eA;MA5II,oBAoDG;InFo7eP;ImF51eA;MA5II,0BAoDG;InFu7eP;ImF/1eA;MA5II,qCAoDG;InF07eP;ImFl2eA;MA5II,qCAoDG;InF67eP;ImFr2eA;MA5II,qCAoDG;InFg8eP;ImFx2eA;MA5II,qCAoDG;InFm8eP;ImF32eA;MA5II,mBAoDG;InFs8eP;ImF92eA;MA5II,mBAyDO;InFo8eX;ImFj3eA;MA5II,sBAyDO;InFu8eX;ImFp3eA;MA5II,qBAyDO;InF08eX;ImFv3eA;MA5II,SAoDG;InFk9eP;ImF13eA;MA5II,QAoDG;InFq9eP;ImF73eA;MA5II,QAoDG;InFw9eP;ImFh4eA;MA5II,QAoDG;InF29eP;ImFn4eA;MA5II,QAoDG;InF89eP;ImFt4eA;MA5II,QAoDG;InFi+eP;ImFz4eA;MA5II,QAoDG;InFo+eP;ImF54eA;MA5II,QAoDG;InFu+eP;ImF/4eA;MA5II,SAoDG;InF0+eP;ImFl5eA;MA5II,eAoDG;InF6+eP;ImFr5eA;MA5II,cAoDG;InFg/eP;ImFx5eA;MA5II,eAoDG;InFm/eP;ImF35eA;MA5II,YAoDG;InFs/eP;ImF95eA;MA5II,eAoDG;InFy/eP;ImFj6eA;MA5II,cAoDG;InF4/eP;ImFp6eA;MA5II,YAoDG;InF+/eP;ImFv6eA;MA5II,cAoDG;InFkgfP;ImF16eA;MA5II,YAoDG;InFqgfP;ImF76eA;MA5II,YAoDG;InFwgfP;ImFh7eA;MA5II,gBAoDG;InF2gfP;ImFn7eA;MA5II,sBAoDG;InF8gfP;ImFt7eA;MA5II,qBAoDG;InFihfP;ImFz7eA;MA5II,sBAoDG;InFohfP;ImF57eA;MA5II,mBAoDG;InFuhfP;ImF/7eA;MA5II,sBAoDG;InF0hfP;ImFl8eA;MA5II,qBAoDG;InF6hfP;ImFr8eA;MA5II,mBAoDG;InFgifP;ImFx8eA;MA5II,qBAoDG;InFmifP;ImF38eA;MA5II,mBAoDG;InFsifP;ImF98eA;MA5II,mBAoDG;InFyifP;ImFj9eA;MA5II,eAoDG;InF4ifP;ImFp9eA;MA5II,qBAoDG;InF+ifP;ImFv9eA;MA5II,oBAoDG;InFkjfP;ImF19eA;MA5II,qBAoDG;InFqjfP;ImF79eA;MA5II,kBAoDG;InFwjfP;ImFh+eA;MA5II,qBAoDG;InF2jfP;ImFn+eA;MA5II,oBAoDG;InF8jfP;ImFt+eA;MA5II,kBAoDG;InFikfP;ImFz+eA;MA5II,oBAoDG;InFokfP;ImF5+eA;MA5II,kBAoDG;InFukfP;ImF/+eA;MA5II,kBAoDG;InF0kfP;ImFl/eA;MA5II,qBAoDG;InF6kfP;ImFr/eA;MA5II,2BAoDG;InFglfP;ImFx/eA;MA5II,0BAoDG;InFmlfP;ImF3/eA;MA5II,2BAoDG;InFslfP;ImF9/eA;MA5II,wBAoDG;InFylfP;ImFjgfA;MA5II,2BAoDG;InF4lfP;ImFpgfA;MA5II,0BAoDG;InF+lfP;ImFvgfA;MA5II,wBAoDG;InFkmfP;ImF1gfA;MA5II,0BAoDG;InFqmfP;ImF7gfA;MA5II,wBAoDG;InFwmfP;ImFhhfA;MA5II,wBAoDG;InF2mfP;ImFnhfA;MA5II,oBAoDG;InF8mfP;ImFthfA;MA5II,0BAoDG;InFinfP;ImFzhfA;MA5II,yBAoDG;InFonfP;ImF5hfA;MA5II,0BAoDG;InFunfP;ImF/hfA;MA5II,uBAoDG;InF0nfP;ImFlifA;MA5II,0BAoDG;InF6nfP;ImFrifA;MA5II,yBAoDG;InFgofP;ImFxifA;MA5II,uBAoDG;InFmofP;ImF3ifA;MA5II,yBAoDG;InFsofP;ImF9ifA;MA5II,uBAoDG;InFyofP;ImFjjfA;MA5II,2BAoDG;InF4ofP;ImFpjfA;MA5II,0BAoDG;InF+ofP;ImFvjfA;MA5II,uBAoDG;InFkpfP;ImF1jfA;MA5II,mBAoDG;InFqpfP;ImF7jfA;MA5II,yBAoDG;InFwpfP;ImFhkfA;MA5II,wBAoDG;InF2pfP;ImFnkfA;MA5II,yBAoDG;InF8pfP;ImFtkfA;MA5II,sBAoDG;InFiqfP;ImFzkfA;MA5II,yBAoDG;InFoqfP;ImF5kfA;MA5II,wBAoDG;InFuqfP;ImF/kfA;MA5II,sBAoDG;InF0qfP;ImFllfA;MA5II,wBAoDG;InF6qfP;ImFrlfA;MA5II,sBAoDG;InFgrfP;ImFxlfA;MA5II,sBAoDG;InFmrfP;ImF3lfA;MA5II,sBAoDG;InFsrfP;ImF9lfA;MA5II,4BAoDG;InFyrfP;ImFjmfA;MA5II,2BAoDG;InF4rfP;ImFpmfA;MA5II,4BAoDG;InF+rfP;ImFvmfA;MA5II,yBAoDG;InFksfP;ImF1mfA;MA5II,4BAoDG;InFqsfP;ImF7mfA;MA5II,2BAoDG;InFwsfP;ImFhnfA;MA5II,yBAoDG;InF2sfP;ImFnnfA;MA5II,2BAoDG;InF8sfP;ImFtnfA;MA5II,yBAoDG;InFitfP;ImFznfA;MA5II,6BAoDG;InFotfP;ImF5nfA;MA5II,4BAoDG;InFutfP;ImF/nfA;MA5II,yBAoDG;InF0tfP;ImFlofA;MA5II,UAoDG;InF6tfP;ImFrofA;MA5II,gBAoDG;InFgufP;ImFxofA;MA5II,eAoDG;InFmufP;ImF3ofA;MA5II,gBAoDG;InFsufP;ImF9ofA;MA5II,aAoDG;InFyufP;ImFjpfA;MA5II,gBAoDG;InF4ufP;ImFppfA;MA5II,eAoDG;InF+ufP;ImFvpfA;MA5II,aAoDG;InFkvfP;ImF1pfA;MA5II,eAoDG;InFqvfP;ImF7pfA;MA5II,aAoDG;InFwvfP;ImFhqfA;MA5II,iBAoDG;InF2vfP;ImFnqfA;MA5II,uBAoDG;InF8vfP;ImFtqfA;MA5II,sBAoDG;InFiwfP;ImFzqfA;MA5II,uBAoDG;InFowfP;ImF5qfA;MA5II,oBAoDG;InFuwfP;ImF/qfA;MA5II,uBAoDG;InF0wfP;ImFlrfA;MA5II,sBAoDG;InF6wfP;ImFrrfA;MA5II,oBAoDG;InFgxfP;ImFxrfA;MA5II,sBAoDG;InFmxfP;ImF3rfA;MA5II,oBAoDG;InFsxfP;ImF9rfA;MA5II,gBAoDG;InFyxfP;ImFjsfA;MA5II,sBAoDG;InF4xfP;ImFpsfA;MA5II,qBAoDG;InF+xfP;ImFvsfA;MA5II,sBAoDG;InFkyfP;ImF1sfA;MA5II,mBAoDG;InFqyfP;ImF7sfA;MA5II,sBAoDG;InFwyfP;ImFhtfA;MA5II,qBAoDG;InF2yfP;ImFntfA;MA5II,mBAoDG;InF8yfP;ImFttfA;MA5II,qBAoDG;InFizfP;ImFztfA;MA5II,mBAoDG;InFozfP;ImF5tfA;MA5II,sBAoDG;InFuzfP;ImF/tfA;MA5II,4BAoDG;InF0zfP;ImFlufA;MA5II,2BAoDG;InF6zfP;ImFrufA;MA5II,4BAoDG;InFg0fP;ImFxufA;MA5II,yBAoDG;InFm0fP;ImF3ufA;MA5II,4BAoDG;InFs0fP;ImF9ufA;MA5II,2BAoDG;InFy0fP;ImFjvfA;MA5II,yBAoDG;InF40fP;ImFpvfA;MA5II,2BAoDG;InF+0fP;ImFvvfA;MA5II,yBAoDG;InFk1fP;ImF1vfA;MA5II,qBAoDG;InFq1fP;ImF7vfA;MA5II,2BAoDG;InFw1fP;ImFhwfA;MA5II,0BAoDG;InF21fP;ImFnwfA;MA5II,2BAoDG;InF81fP;ImFtwfA;MA5II,wBAoDG;InFi2fP;ImFzwfA;MA5II,2BAoDG;InFo2fP;ImF5wfA;MA5II,0BAoDG;InFu2fP;ImF/wfA;MA5II,wBAoDG;InF02fP;ImFlxfA;MA5II,0BAoDG;InF62fP;ImFrxfA;MA5II,wBAoDG;InFg3fP;ImFxxfA;MA5II,oBAoDG;InFm3fP;ImF3xfA;MA5II,0BAoDG;InFs3fP;ImF9xfA;MA5II,yBAoDG;InFy3fP;ImFjyfA;MA5II,0BAoDG;InF43fP;ImFpyfA;MA5II,uBAoDG;InF+3fP;ImFvyfA;MA5II,0BAoDG;InFk4fP;ImF1yfA;MA5II,yBAoDG;InFq4fP;ImF7yfA;MA5II,uBAoDG;InFw4fP;ImFhzfA;MA5II,yBAoDG;InF24fP;ImFnzfA;MA5II,uBAoDG;InF84fP;ImFtzfA;MA5II,uBAoDG;InFi5fP;ImFzzfA;MA5II,6BAoDG;InFo5fP;ImF5zfA;MA5II,4BAoDG;InFu5fP;ImF/zfA;MA5II,6BAoDG;InF05fP;ImFl0fA;MA5II,0BAoDG;InF65fP;ImFr0fA;MA5II,6BAoDG;InFg6fP;ImFx0fA;MA5II,4BAoDG;InFm6fP;ImF30fA;MA5II,0BAoDG;InFs6fP;ImF90fA;MA5II,4BAoDG;InFy6fP;ImFj1fA;MA5II,0BAoDG;InF46fP;ImFp1fA;MA5II,MAoDG;InF+6fP;ImFv1fA;MA5II,YAoDG;InFk7fP;ImF11fA;MA5II,WAoDG;InFq7fP;ImF71fA;MA5II,YAoDG;InFw7fP;ImFh2fA;MA5II,SAoDG;InF27fP;ImFn2fA;MA5II,YAoDG;InF87fP;ImFt2fA;MA5II,WAoDG;InFi8fP;ImFz2fA;MA5II,SAoDG;InFo8fP;ImF52fA;MA5II,WAoDG;InFu8fP;ImF/2fA;MA5II,SAoDG;InF08fP;ImFl3fA;MA5II,UAoDG;InF68fP;ImFr3fA;MA5II,gBAoDG;InFg9fP;ImFx3fA;MA5II,eAoDG;InFm9fP;ImF33fA;MA5II,gBAoDG;InFs9fP;ImF93fA;MA5II,aAoDG;InFy9fP;ImFj4fA;MA5II,gBAoDG;InF49fP;ImFp4fA;MA5II,eAoDG;InF+9fP;ImFv4fA;MA5II,aAoDG;InFk+fP;ImF14fA;MA5II,eAoDG;InFq+fP;ImF74fA;MA5II,aAoDG;InFw+fP;ImFh5fA;MA5II,aAoDG;InF2+fP;ImFn5fA;MA5II,mBAoDG;InF8+fP;ImFt5fA;MA5II,kBAoDG;InFi/fP;ImFz5fA;MA5II,mBAoDG;InFo/fP;ImF55fA;MA5II,gBAoDG;InFu/fP;ImF/5fA;MA5II,mBAoDG;InF0/fP;ImFl6fA;MA5II,kBAoDG;InF6/fP;ImFr6fA;MA5II,gBAoDG;InFgggBP;ImFx6fA;MA5II,kBAoDG;InFmggBP;ImF36fA;MA5II,gBAoDG;InFsggBP;ImF96fA;MA5II,oBAoDG;InFyggBP;ImFj7fA;MA5II,0BAoDG;InF4ggBP;ImFp7fA;MA5II,yBAoDG;InF+ggBP;ImFv7fA;MA5II,0BAoDG;InFkhgBP;ImF17fA;MA5II,uBAoDG;InFqhgBP;ImF77fA;MA5II,0BAoDG;InFwhgBP;ImFh8fA;MA5II,yBAoDG;InF2hgBP;ImFn8fA;MA5II,uBAoDG;InF8hgBP;ImFt8fA;MA5II,yBAoDG;InFiigBP;ImFz8fA;MA5II,uBAoDG;InFoigBP;ImF58fA;MA5II,mBAoDG;InFuigBP;ImF/8fA;MA5II,yBAoDG;InF0igBP;ImFl9fA;MA5II,wBAoDG;InF6igBP;ImFr9fA;MA5II,yBAoDG;InFgjgBP;ImFx9fA;MA5II,sBAoDG;InFmjgBP;ImF39fA;MA5II,yBAoDG;InFsjgBP;ImF99fA;MA5II,wBAoDG;InFyjgBP;ImFj+fA;MA5II,sBAoDG;InF4jgBP;ImFp+fA;MA5II,wBAoDG;InF+jgBP;ImFv+fA;MA5II,sBAoDG;InFkkgBP;ImF1+fA;MA5II,yFAoDG;InFqkgBP;ImF7+fA;MA5II,sBAoDG;InFwkgBP;ImFh/fA;MA5II,wFAoDG;InF2kgBP;ImFn/fA;MA5II,qBAoDG;InF8kgBP;ImFt/fA;MA5II,iBAoDG;InFilgBP;ImFz/fA;MA5II,eAoDG;InFolgBP;ImF5/fA;MA5II,kBAoDG;InFulgBP;EACF;AACF","file":"bootstrap.css","sourcesContent":["@charset \"UTF-8\";\n/*!\n  * Bootstrap  v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-fg));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', monospace;;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(var(--gray-200), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --box-shadow-xs: 0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.075);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--radius-5);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--radius-5);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--radius-5);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--radius-7);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-fg: light-dark(var(--blue-600), var(--blue-400));\n  --primary-fg-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-fg-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-fg: light-dark(var(--green-600), var(--green-400));\n  --success-fg-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-fg: light-dark(var(--red-600), var(--red-400));\n  --danger-fg-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-fg: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-fg-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-fg: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-fg-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-fg: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-fg-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-fg: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-fg-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-fg: var(--fg-body);\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-bg: var(--bg-body);\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  --spacer-0: 0;\n  --spacer-1: 0.25rem;\n  --spacer-2: 0.5rem;\n  --spacer-3: 0.75rem;\n  --spacer-4: 1rem;\n  --spacer-5: 1.25rem;\n  --spacer-6: 1.5rem;\n  --spacer-7: 2rem;\n  --spacer-8: 2.5rem;\n  --spacer-9: 3rem;\n  --radius-0: 0;\n  --radius-1: 0.125rem;\n  --radius-2: 0.1875rem;\n  --radius-3: 0.25rem;\n  --radius-4: 0.375rem;\n  --radius-5: 0.5rem;\n  --radius-6: 0.625rem;\n  --radius-7: 0.75rem;\n  --radius-8: 1rem;\n  --radius-9: 1.5rem;\n  --radius-pill: 50rem;\n  color-scheme: light dark;\n  scrollbar-gutter: stable;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  iframe {\n    color-scheme: light dark;\n    border: 0;\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: transparent;\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: var(--spacer-2);\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-fg-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href], [class]), a:not([href], [class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--radius-5);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date], [type=datetime-local], [type=month], [type=week], [type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-meridiem-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button,\n  ::-webkit-outer-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n@layer content {\n  .list-unstyled {\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .list-inline-item {\n    display: inline-block;\n  }\n  .list-inline-item:not(:last-child) {\n    margin-inline-end: var(--list-inline-padding, var(--spacer)/2);\n  }\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n  .blockquote {\n    --blockquote-gap: calc(var(--spacer) / 2);\n    --blockquote-padding-x: var(--spacer);\n    --blockquote-margin-y: 1rem;\n    --blockquote-font-size: var(--font-size-md);\n    --blockquote-border-width: 0.25rem;\n    --blockquote-border-color: var(--border-color);\n    --blockquote-footer-font-size: var(--font-size-sm);\n    --blockquote-footer-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n  }\n  .blockquote > * {\n    margin-bottom: 0;\n  }\n  figure.blockquote blockquote {\n    margin-bottom: 0;\n  }\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n  }\n  .blockquote-footer::before {\n    content: \"— \";\n  }\n}\n@layer content {\n  .table {\n    --table-cell-padding-y: 0.5rem;\n    --table-cell-padding-x: 0.5rem;\n    --table-cell-vertical-align: top;\n    --table-color: var(--fg-body);\n    --table-bg: var(--bg-body);\n    --table-accent-bg: transparent;\n    --table-border-width: var(--border-width);\n    --table-border-color: var(--border-color);\n    --table-group-separator-color: currentcolor;\n    --table-striped-color: var(--table-color);\n    --table-striped-bg-factor: 5%;\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent);\n    --table-active-color: var(--table-color);\n    --table-active-bg-factor: 10%;\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent);\n    --table-hover-color: var(--table-color);\n    --table-hover-bg-factor: 7.5%;\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent);\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    width: 100%;\n    margin-bottom: var(--spacer);\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n  }\n  .table > :not(caption) > * > * {\n    padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n    color: var(--table-color-state, var(--table-color-type, var(--theme-fg, var(--table-color))));\n    background-color: var(--theme-bg-subtle, var(--table-bg));\n    border-block-end-width: var(--table-border-width);\n    box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n  }\n  .table > tbody {\n    vertical-align: inherit;\n  }\n  .table > thead {\n    vertical-align: bottom;\n  }\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n  .caption-top {\n    caption-side: top;\n  }\n  .table-sm > :not(caption) > * > * {\n    --table-cell-padding-y: .25rem;\n    --table-cell-padding-x: .25rem;\n  }\n  .table-bordered > :not(caption) > * {\n    border-width: var(--table-border-width) 0;\n  }\n  .table-bordered > :not(caption) > * > * {\n    border-width: 0 var(--table-border-width);\n  }\n  .table-borderless > :not(caption) > * > * {\n    border-block-end-width: 0;\n  }\n  .table-borderless > :not(:first-child) {\n    border-block-start-width: 0;\n  }\n  .table-striped > tbody > tr:nth-of-type(odd) > * {\n    --table-color-type: var(--theme-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-striped-columns > :not(caption) > tr > :nth-child(even) {\n    --table-color-type: var(--theme-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-fg, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    container-type: inline-size;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .sm\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 576px) {\n    .sm\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .md\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 768px) {\n    .md\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .lg\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1024px) {\n    .lg\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1280px) {\n    .xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .\\32 xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .table-stacked > thead {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n  }\n  .table-stacked > tbody > tr {\n    display: block;\n    padding-block: var(--table-cell-padding-y);\n  }\n  .table-stacked > tbody > tr + tr {\n    border-block-start: var(--table-border-width) solid var(--table-border-color);\n  }\n  .table-stacked > tbody > tr > td {\n    display: block;\n    padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n    border: 0;\n  }\n  .table-stacked > tbody > tr > td:first-child {\n    font-weight: var(--font-weight-bold);\n  }\n  .table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n    display: block;\n    font-weight: var(--font-weight-semibold);\n    content: attr(data-cell);\n  }\n  .table-stacked > tbody > tr > td:not(:first-child) + td::before {\n    margin-block-start: 0.25rem;\n  }\n  @container (width < 576px) {\n    .sm\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .sm\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .sm\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .sm\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .sm\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 768px) {\n    .md\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .md\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .md\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .md\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .md\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1024px) {\n    .lg\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .lg\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .lg\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .lg\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .lg\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1280px) {\n    .xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1536px) {\n    .\\32 xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n}\n@layer content {\n  .img-fluid {\n    max-width: 100%;\n    height: auto;\n  }\n  .img-thumbnail {\n    --thumbnail-padding: 0.25rem;\n    --thumbnail-bg: var(--bg-body);\n    --thumbnail-border-width: var(--border-width);\n    --thumbnail-border-color: var(--border-color);\n    --thumbnail-border-radius: var(--radius-5);\n    --thumbnail-box-shadow: var(--box-shadow-sm);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    border-radius: var(--thumbnail-border-radius);\n    box-shadow: var(--thumbnail-box-shadow);\n    max-width: 100%;\n    height: auto;\n  }\n  .figure {\n    --figure-gap: calc(var(--spacer) * 0.5);\n    --figure-caption-font-size: var(--font-size-sm);\n    --figure-caption-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n@layer content {\n  .prose {\n    --content-font-size: 1rem;\n    --content-line-height: 1.5;\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height));\n    --heading-color: light-dark(var(--gray-900), var(--white));\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: var(--content-line-height);\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n    }\n  }\n  .prose :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n    margin-block: 0;\n  }\n  .prose :where(ul, ol):not([class], :where(.not-prose, .not-prose *)) li:not(:last-child) {\n    margin-bottom: calc(var(--content-gap) / 4);\n  }\n  .prose :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) / 4);\n  }\n  .prose :where(hr):not(:where(.not-prose, .not-prose *)) {\n    margin: calc(var(--content-gap) * 1.5) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) {\n    margin-top: 0;\n    margin-bottom: calc(var(--content-gap) / -2);\n    font-weight: 500;\n    line-height: 1.25;\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child, :where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.75);\n  }\n  .prose :where(h3, h4, h5, h6):not(:first-child, :where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.5);\n  }\n  .prose :where(h1):not(:where(.not-prose, .not-prose *)) {\n    font-size: 2.25em;\n    line-height: 1.1;\n  }\n  .prose :where(h2):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.75em;\n  }\n  .prose :where(h3):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.5em;\n  }\n  .prose :where(h4):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.25em;\n  }\n  .prose :where(h5):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.125em;\n  }\n  .prose :where(h6):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1em;\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n    color: var(--link-color);\n    text-decoration: underline;\n    text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n    text-underline-offset: 4px;\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      transition: none;\n    }\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)):hover {\n    text-decoration-color: var(--link-hover-color);\n  }\n  .prose :where(img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n  .prose :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n    padding-inline-start: calc(var(--content-gap) / 2);\n    margin: 0;\n    border-inline-start: 4px solid var(--border-color);\n  }\n  .prose :where(table):not(:where(.not-prose, .not-prose *)) {\n    width: 100%;\n    border-spacing: 0;\n    border-collapse: collapse;\n  }\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) td,\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) th {\n    padding: 6px 12px;\n    text-align: inherit;\n    border: 1px solid var(--border-color);\n  }\n  .prose :where(dt):not(:where(.not-prose, .not-prose *)) {\n    font-weight: 500;\n  }\n  .prose :where(video, img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n}\n@layer layout {\n  .container,\n  .container-fluid,\n  .\\32 xl\\:container,\n  .xl\\:container,\n  .lg\\:container,\n  .md\\:container,\n  .sm\\:container {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .sm\\:container, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:container, .sm\\:container, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:container, .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 0.75rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 0.75rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 1.25rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 1.25rem;\n  }\n  .g-6,\n  .gx-6 {\n    --gutter-x: 1.5rem;\n  }\n  .g-6,\n  .gy-6 {\n    --gutter-y: 1.5rem;\n  }\n  .g-7,\n  .gx-7 {\n    --gutter-x: 2rem;\n  }\n  .g-7,\n  .gy-7 {\n    --gutter-y: 2rem;\n  }\n  .g-8,\n  .gx-8 {\n    --gutter-x: 2.5rem;\n  }\n  .g-8,\n  .gy-8 {\n    --gutter-y: 2.5rem;\n  }\n  .g-9,\n  .gx-9 {\n    --gutter-x: 3rem;\n  }\n  .g-9,\n  .gy-9 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .sm\\:col {\n      flex: 1 0 0;\n    }\n    .sm\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .sm\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .sm\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .sm\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .sm\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .sm\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .sm\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .sm\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .sm\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .sm\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .sm\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .sm\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .sm\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .sm\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .sm\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .sm\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .sm\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .sm\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .sm\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .sm\\:g-0,\n    .sm\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .sm\\:g-0,\n    .sm\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .sm\\:g-1,\n    .sm\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .sm\\:g-1,\n    .sm\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:col {\n      flex: 1 0 0;\n    }\n    .md\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .md\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .md\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .md\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .md\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .md\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .md\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .md\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .md\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .md\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .md\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .md\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .md\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .md\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .md\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .md\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .md\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .md\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .md\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .md\\:g-0,\n    .md\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .md\\:g-0,\n    .md\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .md\\:g-1,\n    .md\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .md\\:g-1,\n    .md\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .md\\:g-2,\n    .md\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .md\\:g-2,\n    .md\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .md\\:g-3,\n    .md\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .md\\:g-3,\n    .md\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .md\\:g-4,\n    .md\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .md\\:g-4,\n    .md\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .md\\:g-5,\n    .md\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .md\\:g-5,\n    .md\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .md\\:g-6,\n    .md\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .md\\:g-6,\n    .md\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .md\\:g-7,\n    .md\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .md\\:g-7,\n    .md\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .md\\:g-8,\n    .md\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .md\\:g-8,\n    .md\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .md\\:g-9,\n    .md\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .md\\:g-9,\n    .md\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:col {\n      flex: 1 0 0;\n    }\n    .lg\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .lg\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .lg\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .lg\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .lg\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .lg\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .lg\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .lg\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .lg\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .lg\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .lg\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .lg\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .lg\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .lg\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .lg\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .lg\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .lg\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .lg\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .lg\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .lg\\:g-0,\n    .lg\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .lg\\:g-0,\n    .lg\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .lg\\:g-1,\n    .lg\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .lg\\:g-1,\n    .lg\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:col {\n      flex: 1 0 0;\n    }\n    .xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .xl\\:g-0,\n    .xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .xl\\:g-0,\n    .xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .xl\\:g-1,\n    .xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .xl\\:g-1,\n    .xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:col {\n      flex: 1 0 0;\n    }\n    .\\32 xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .\\32 xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .\\32 xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .\\32 xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .\\32 xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .\\32 xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .\\32 xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .\\32 xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .\\32 xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .\\32 xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .\\32 xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .\\32 xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .\\32 xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .\\32 xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .\\32 xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .\\32 xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .\\32 xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .\\32 xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .\\32 xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .sm\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .sm\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .sm\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .sm\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .sm\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .sm\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .sm\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .sm\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .sm\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .sm\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .sm\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .sm\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .sm\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .sm\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .sm\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .sm\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .sm\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .sm\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .sm\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .sm\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .sm\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .sm\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .sm\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .md\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .md\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .md\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .md\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .md\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .md\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .md\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .md\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .md\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .md\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .md\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .md\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .md\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .md\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .md\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .md\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .md\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .md\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .md\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .md\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .md\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .md\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .lg\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .lg\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .lg\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .lg\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .lg\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .lg\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .lg\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .lg\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .lg\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .lg\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .lg\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .lg\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .lg\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .lg\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .lg\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .lg\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .lg\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .lg\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .lg\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .lg\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .lg\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .lg\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .\\32 xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .\\32 xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .\\32 xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .\\32 xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .\\32 xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .\\32 xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .\\32 xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .\\32 xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .\\32 xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .\\32 xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .\\32 xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .\\32 xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .\\32 xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .\\32 xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .\\32 xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .\\32 xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .\\32 xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .\\32 xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .\\32 xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .\\32 xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .\\32 xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .\\32 xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\n    color: var(--label-color, var(--fg-body));\n  }\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0;\n  }\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n@layer forms {\n  .form-text {\n    --form-text-margin-top: 0.25rem;\n    --form-text-font-size: var(--font-size-sm);\n    --form-text-color: var(--fg-2);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n@layer forms {\n  .form-control {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n    box-shadow: var(--control-box-shadow);\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control {\n      transition: none;\n    }\n  }\n  .form-control:focus-visible {\n    --focus-ring-offset: -1px;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-control::placeholder {\n    color: var(--control-placeholder-color);\n    opacity: 1;\n  }\n  .form-control:disabled {\n    color: var(--control-disabled-color);\n    background-color: var(--control-disabled-bg);\n    border-color: var(--control-disabled-border-color);\n    opacity: 1;\n  }\n  .form-control::-webkit-datetime-edit {\n    display: block;\n    height: 1.5rem;\n    padding: 0;\n    margin-bottom: -0.125rem;\n  }\n  .form-control::-webkit-datetime-edit-fields-wrapper {\n    height: 1.5rem;\n  }\n  .form-control[type=file] {\n    overflow: hidden;\n  }\n  .form-control[type=file]:not(:disabled, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control::file-selector-button {\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n    margin-inline-end: var(--control-padding-x);\n    color: var(--control-fg);\n    pointer-events: none;\n    background-color: var(--control-action-bg);\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: var(--control-border-width);\n    border-radius: 0;\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control::file-selector-button {\n      transition: none;\n    }\n  }\n  .form-control:hover:not(:disabled, [readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0;\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n  }\n  .form-control-plaintext:focus {\n    outline: 0;\n  }\n  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n    padding-inline: 0;\n  }\n  select.form-control,\n  .form-control-caret {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n  }\n  select.form-control[multiple], select.form-control[size]:not([size=\"1\"]),\n  .form-control-caret[multiple],\n  .form-control-caret[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  [data-bs-theme=dark] select.form-control,\n  [data-bs-theme=dark] .form-control-caret {\n    background-image: var(--control-select-bg-dark);\n  }\n  .form-control-sm {\n    --control-min-height: var(--btn-input-sm-min-height);\n    --control-padding-y: var(--btn-input-sm-padding-y);\n    --control-padding-x: var(--btn-input-sm-padding-x);\n    --control-font-size: var(--btn-input-sm-font-size);\n    --control-line-height: var(--btn-input-sm-line-height);\n    --control-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .form-control-lg {\n    --control-min-height: var(--btn-input-lg-min-height);\n    --control-padding-y: var(--btn-input-lg-padding-y);\n    --control-padding-x: var(--btn-input-lg-padding-x);\n    --control-font-size: var(--btn-input-lg-font-size);\n    --control-line-height: var(--btn-input-lg-line-height);\n    --control-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n  }\n  .form-control-color:not(:disabled, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n  }\n  .form-ghost:focus {\n    outline: 0;\n  }\n  .form-ghost::placeholder {\n    color: var(--fg-3);\n    opacity: 1;\n  }\n  .form-ghost:disabled {\n    color: var(--fg-4);\n    cursor: not-allowed;\n  }\n}\n@layer forms {\n  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: var(--bg-body);\n    --check-border-color: var(--border-color);\n    --check-border-radius: var(--radius-5);\n    --check-icon-checked: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e\");\n    --check-icon-indeterminate: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e\");\n    --check-checked-bg: var(--control-checked-bg);\n    --check-checked-border-color: var(--control-checked-border-color);\n    --check-indeterminate-bg: var(--control-checked-bg);\n    --check-indeterminate-border-color: var(--control-checked-border-color);\n    --check-active-bg: var(--control-active-bg);\n    --check-active-border-color: var(--control-active-border-color);\n    --check-disabled-bg: var(--control-disabled-bg);\n    --check-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    border-radius: 33%;\n  }\n  .check:checked, .check:indeterminate {\n    background-color: var(--theme-bg, var(--check-checked-bg));\n    border-color: var(--theme-bg, var(--check-checked-border-color));\n  }\n  .check:checked::before, .check:indeterminate::before {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    content: \"\";\n    background-color: var(--theme-contrast, var(--primary-contrast));\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .check:checked::before {\n    mask-image: var(--check-icon-checked);\n  }\n  .check:indeterminate::before {\n    mask-image: var(--check-icon-indeterminate);\n  }\n  .check:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: -1px;\n  }\n  .check:disabled {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:disabled ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:disabled:checked {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n  }\n  .check-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: var(--bg-body);\n    --radio-border-color: var(--border-color);\n    --radio-checked-bg: var(--control-checked-bg);\n    --radio-checked-border-color: var(--control-checked-border-color);\n    --radio-disabled-bg: var(--control-disabled-bg);\n    --radio-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    border-radius: 50%;\n  }\n  .radio:checked {\n    color: var(--theme-contrast, var(--primary-contrast));\n    background-color: var(--theme-bg, var(--radio-checked-bg));\n    border-color: var(--theme-bg, var(--radio-checked-border-color));\n  }\n  .radio:checked::before {\n    position: absolute;\n    inset: calc(var(--radio-size) * 0.25);\n    content: \"\";\n    background-color: currentcolor;\n    border-radius: 50%;\n  }\n  .radio:disabled {\n    --radio-bg: var(--radio-disabled-bg);\n  }\n  .radio:disabled ~ label {\n    color: var(--secondary-fg);\n    cursor: default;\n  }\n  .radio:disabled:checked {\n    opacity: var(--radio-disabled-opacity);\n  }\n  .radio:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n  }\n  .radio-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.75);\n    --switch-padding: 0.0625rem;\n    --switch-margin-block: 0.125rem;\n    --switch-bg: var(--bg-3);\n    --switch-border-width: var(--border-width);\n    --switch-border-color: var(--border-color);\n    --switch-indicator-bg: var(--white);\n    --switch-indicator-width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-indicator-height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-checked-bg: var(--control-checked-bg);\n    --switch-checked-border-color: var(--switch-checked-bg);\n    --switch-checked-indicator-bg: var(--white);\n    --switch-disabled-bg: var(--control-disabled-bg);\n    --switch-disabled-indicator-bg: var(--fg-3);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);\n    transition: background-color 0.15s ease-in-out;\n  }\n  .switch::before {\n    position: absolute;\n    inset-block: var(--switch-padding);\n    inset-inline-start: var(--switch-padding);\n    width: var(--switch-indicator-width);\n    height: var(--switch-indicator-height);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 10rem;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    transition: inset-inline-start 0.15s ease-in-out;\n  }\n  .switch input {\n    position: absolute;\n    inset: 0;\n    appearance: none;\n    background-color: transparent;\n    outline: 0;\n  }\n  .switch:focus-within {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .switch:has(input:disabled:not(:checked)) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled:not(:checked))::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled:not(:checked)) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch:has(input:checked) {\n    background-color: var(--theme-bg, var(--switch-checked-bg));\n    border-color: var(--theme-bg, var(--switch-checked-border-color));\n  }\n  .switch:has(input:checked)::before {\n    inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n  }\n  .switch:has(input:checked:disabled) {\n    opacity: 0.65;\n  }\n  .switch:has(input:checked:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n  }\n  .switch-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .form-range {\n    --range-track-width: 100%;\n    --range-track-height: 0.5rem;\n    --range-track-cursor: pointer;\n    --range-track-bg: var(--bg-3);\n    --range-track-border-radius: 1rem;\n    --range-track-fill-bg: var(--primary-base);\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3));\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color);\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%);\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body));\n    --range-thumb-disabled-bg: var(--fg-3);\n    --range-thumb-transition-property: background-color, border-color, box-shadow;\n    --range-thumb-transition-timing: 0.15s ease-in-out;\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing);\n    --range-tick-width: var(--border-width);\n    --range-tick-height: 0.5rem;\n    --range-tick-bg: var(--border-color);\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n  .form-range-input {\n    display: block;\n    width: 100%;\n    height: calc(var(--range-thumb-height) + var(--focus-ring-width) * 2);\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n  }\n  .form-range-input:hover::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:hover::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:focus-visible {\n    outline: 0;\n  }\n  .form-range-input:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range-input::-webkit-slider-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    background-image: var(--gradient);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range-input::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range-input::-moz-range-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    background-image: var(--gradient);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range-input::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-runnable-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input::-moz-range-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input:disabled {\n    pointer-events: none;\n  }\n  .form-range-input:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-webkit-slider-runnable-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc(var(--range-thumb-width) * 0.5 + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n  }\n  .form-range-bubble .tooltip-arrow {\n    position: absolute;\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n    left: 50%;\n    transform: translateX(-50%);\n  }\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * 0.25);\n  }\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    width: 0;\n  }\n  .form-range-tick::before {\n    width: var(--range-tick-width);\n    height: var(--range-tick-height);\n    content: \"\";\n    background-color: var(--range-tick-bg);\n  }\n  .form-range-tick:first-child {\n    align-items: flex-start;\n  }\n  .form-range-tick:last-child {\n    align-items: flex-end;\n  }\n  .form-range-tick-label {\n    margin-top: 0.125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.75rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25);\n    --form-floating-padding-y: 1rem;\n    --form-floating-input-padding-t: 1.625rem;\n    --form-floating-input-padding-b: 0.625rem;\n    --form-floating-label-height: 1.5em;\n    --form-floating-label-bg: var(--btn-input-bg);\n    --form-floating-label-disabled-bg: var(--bg-2);\n    --form-floating-label-opacity: 0.65;\n    --form-floating-label-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n    --form-floating-label-disabled-color: var(--fg-3);\n    --form-floating-transition-property: opacity, transform;\n    --form-floating-transition-timing: 0.1s ease-in-out;\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing);\n    position: relative;\n  }\n  .form-floating > label {\n    position: absolute;\n    inset-block-start: 0;\n    inset-inline-start: 0;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    height: 100%;\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    overflow: hidden;\n    color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n    text-align: start;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    pointer-events: none;\n    border: var(--border-width) solid transparent;\n    transform-origin: 0 0;\n    transition: var(--form-floating-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-floating > label {\n      transition: none;\n    }\n  }\n  .form-floating > label:has(~ textarea) {\n    align-items: flex-start;\n  }\n  .form-floating > .form-control,\n  .form-floating > .form-control-plaintext {\n    height: var(--form-floating-height);\n    min-height: var(--form-floating-height);\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    line-height: var(--form-floating-line-height);\n  }\n  .form-floating > .form-control::placeholder,\n  .form-floating > .form-control-plaintext::placeholder {\n    color: transparent;\n  }\n  .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n  .form-floating > .form-control-plaintext:focus,\n  .form-floating > .form-control-plaintext:not(:placeholder-shown) {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:-webkit-autofill,\n  .form-floating > .form-control-plaintext:-webkit-autofill {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > label:has(~ .form-control:focus),\n  .form-floating > label:has(~ .form-control:not(:placeholder-shown)),\n  .form-floating > label:has(~ .form-control-plaintext) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ .form-control:-webkit-autofill) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ textarea:focus)::after,\n  .form-floating > label:has(~ textarea:not(:placeholder-shown))::after {\n    position: absolute;\n    inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * 0.5);\n    z-index: -1;\n    height: var(--form-floating-label-height);\n    content: \"\";\n    background-color: var(--form-floating-label-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > label:has(~ textarea:disabled)::after {\n    background-color: var(--form-floating-label-disabled-bg);\n  }\n  .form-floating > label:has(~ .form-control-plaintext) {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > label:has(~ :disabled),\n  .form-floating > label:has(~ .form-control:disabled) {\n    color: var(--form-floating-label-disabled-color);\n  }\n}\n@layer components {\n  .input-group {\n    --input-group-addon-padding-y: var(--btn-input-padding-y);\n    --input-group-addon-padding-x: var(--btn-input-padding-x);\n    --input-group-addon-font-size: var(--btn-input-font-size);\n    --input-group-addon-line-height: var(--btn-input-line-height);\n    --input-group-addon-color: var(--fg-body);\n    --input-group-addon-bg: var(--bg-2);\n    --input-group-addon-border-color: var(--border-color);\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    width: 100%;\n  }\n  .input-group > .form-control,\n  .input-group > .form-floating {\n    position: relative;\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0;\n  }\n  .input-group > .form-control:focus,\n  .input-group > .form-floating:focus-within {\n    z-index: 5;\n  }\n  .input-group > .input-group-btn {\n    position: relative;\n    z-index: 2;\n  }\n  .input-group > .input-group-btn:focus {\n    z-index: 5;\n  }\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size);\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .input-group-sm > .form-control,\n  .input-group-sm > .input-group-text,\n  .input-group-sm > .btn {\n    min-height: var(--btn-input-sm-min-height);\n    padding: var(--btn-input-sm-padding-y) var(--btn-input-sm-padding-x);\n    font-size: var(--btn-input-sm-font-size);\n    border-radius: var(--btn-input-sm-border-radius);\n  }\n  .input-group-lg > .form-control,\n  .input-group-lg > .input-group-text,\n  .input-group-lg > .btn {\n    min-height: var(--btn-input-lg-min-height);\n    padding: var(--btn-input-lg-padding-y) var(--btn-input-lg-padding-x);\n    font-size: var(--btn-input-lg-font-size);\n    border-radius: var(--btn-input-lg-border-radius);\n  }\n  .input-group > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n  .input-group > .menu-toggle-split:nth-last-child(n+3),\n  .input-group > .form-floating:not(:last-child) > .form-control,\n  .input-group > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child, .menu, .input-group-ignore) {\n    margin-inline-start: calc(-1 * var(--border-width));\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .input-group > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n    border-start-start-radius: var(--btn-input-border-radius);\n    border-end-start-radius: var(--btn-input-border-radius);\n  }\n  .input-group > .form-floating:not(:first-child) > .form-control,\n  .input-group > .form-floating:not(:first-child) > .form-select {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n}\n@layer forms {\n  .strength {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-segment {\n      transition: none;\n    }\n  }\n  .strength-segment.active {\n    background-color: var(--strength-color);\n  }\n  .strength[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n  }\n  .strength[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n  }\n  .strength[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n  }\n  .strength[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n  }\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    transition: color 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-text {\n      transition: none;\n    }\n  }\n  .strength-text:empty {\n    display: none;\n  }\n  .strength-bar {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    --strength-color: transparent;\n    --strength-width: 0%;\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n  }\n  .strength-bar::after {\n    display: block;\n    width: var(--strength-width);\n    height: 100%;\n    content: \"\";\n    background-color: var(--strength-color);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-bar::after {\n      transition: none;\n    }\n  }\n  .strength-bar[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n    --strength-width: 25%;\n  }\n  .strength-bar[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n    --strength-width: 50%;\n  }\n  .strength-bar[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n    --strength-width: 75%;\n  }\n  .strength-bar[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n    --strength-width: 100%;\n  }\n}\n@layer components {\n  .otp {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-font-size);\n    --otp-gap: 0.5rem;\n    --otp-slot-fg: var(--btn-input-fg);\n    --otp-slot-bg: var(--btn-input-bg);\n    --otp-slot-border-width: var(--border-width);\n    --otp-slot-border-color: var(--border-color);\n    --otp-slot-border-radius: var(--radius-5);\n    position: relative;\n    display: flex;\n  }\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    pointer-events: auto;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n  }\n  .otp-rendered .otp-input::selection {\n    color: transparent;\n    background-color: transparent;\n  }\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none;\n  }\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    user-select: none;\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    border-radius: var(--otp-slot-border-radius);\n    box-shadow: var(--box-shadow-inset);\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .otp-slot {\n      transition: none;\n    }\n  }\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .otp-slot-active:not(.otp-slot-filled)::after {\n    width: 1px;\n    height: 50%;\n    content: \"\";\n    background-color: var(--otp-slot-fg);\n    animation: otp-caret-blink 1s step-end infinite;\n  }\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0;\n  }\n  .otp-connected .otp-slot:not(:first-child) {\n    margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n  }\n  .otp-connected .otp-slot:first-child {\n    border-start-start-radius: var(--otp-slot-border-radius);\n    border-end-start-radius: var(--otp-slot-border-radius);\n  }\n  .otp-connected .otp-slot:last-child {\n    border-start-end-radius: var(--otp-slot-border-radius);\n    border-end-end-radius: var(--otp-slot-border-radius);\n  }\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n  .otp-sm {\n    --otp-size: var(--btn-input-sm-min-height);\n    --otp-font-size: var(--btn-input-sm-font-size);\n  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n  }\n}\n@keyframes otp-caret-blink {\n  0%, 100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\n  }\n}\n@layer forms {\n  .form-adorn {\n    --form-adorn-gap: 0.375rem;\n    --form-adorn-icon-size: 1rem;\n    --form-adorn-icon-color: var(--fg-2);\n    gap: var(--form-adorn-gap);\n    align-items: center;\n  }\n  .form-adorn:focus-visible {\n    outline: 0;\n  }\n  .form-adorn:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-adorn > .form-ghost {\n    flex: 1;\n    min-width: 0;\n  }\n  .form-adorn.form-adorn-end > .form-ghost {\n    order: -1;\n  }\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n  }\n  .form-adorn-icon > svg {\n    width: var(--form-adorn-icon-size);\n    height: var(--form-adorn-icon-size);\n  }\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n@layer forms {\n  .chip-input {\n    --chip-input-padding-y: 0.75rem;\n    --chip-input-padding-x: 0.75rem;\n    --chip-input-gap: 0.375rem;\n    --chip-input-ghost-min-width: 5rem;\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n  }\n  .chip-input:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .chip-input > .form-ghost {\n    flex: 1 1 0;\n    min-width: var(--chip-input-ghost-min-width);\n    min-height: 1.75rem;\n  }\n  .chip-input.disabled, .chip-input:has(.form-ghost:disabled) {\n    cursor: not-allowed;\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled:focus-within, .chip-input:has(.form-ghost:disabled):focus-within {\n    border-color: var(--control-border-color);\n    outline: 0;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    pointer-events: none;\n    opacity: var(--control-disabled-opacity);\n  }\n}\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n  }\n  .combobox-toggle.show {\n    background-color: var(--bg-1);\n  }\n  .combobox-toggle:disabled, .combobox-toggle.disabled {\n    cursor: not-allowed;\n    opacity: 0.65;\n  }\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: 0.5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .combobox-caret {\n    flex-shrink: 0;\n    transition: transform 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .combobox-caret {\n      transition: none;\n    }\n  }\n  .show > .combobox-caret {\n    transform: rotate(180deg);\n  }\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, 0.25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n  .combobox-search-input {\n    width: 100%;\n  }\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-field > label,\n  .form-field > .form-label {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n  .form-field:has(> .check, > .radio, > .switch) {\n    grid-template-columns: auto 1fr;\n    column-gap: 0.5rem;\n    align-items: start;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .check,\n  .form-field:has(> .check, > .radio, > .switch) > .radio,\n  .form-field:has(> .check, > .radio, > .switch) > .switch {\n    grid-column: 1;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > :not(.check, .radio, .switch) {\n    grid-column: 2;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .form-label {\n    grid-column: 1/-1;\n  }\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * 0.75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    border-radius: var(--radius-7);\n  }\n  .form-field-card:hover {\n    background-color: var(--bg-1);\n  }\n  .form-field-card:has(:checked) {\n    background-color: var(--bg-1);\n    border-color: var(--border-color);\n  }\n  .form-field-card label::before {\n    position: absolute;\n    inset: 0;\n    content: \"\";\n  }\n  .form-group {\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-group > label,\n  .form-group > .form-label,\n  .form-group > legend {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--success-fg);\n  }\n  .tooltip.valid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    color: var(--success-contrast);\n    text-align: center;\n    background-color: var(--success-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] :user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] :user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-control.is-valid {\n    --control-border-color: var(--success-border);\n  }\n  .form-control.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid {\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  .check.is-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  .check.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .check:user-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .check:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.check.is-valid) .valid-feedback,\n  .form-field:has(.check.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .radio.is-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  .radio.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .radio:user-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .radio:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.radio.is-valid) .valid-feedback,\n  .form-field:has(.radio.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  .switch:has(input.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.switch input.is-valid) .valid-feedback,\n  .form-field:has(.switch input.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-valid) ~ .valid-feedback,\n  .form-range:has(.form-range-input.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-valid) .valid-feedback,\n  .form-field:has(.input-group .form-control.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  [data-bs-validate~=valid] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-valid {\n    z-index: 3;\n  }\n  .otp.is-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  .otp.is-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--danger-fg);\n  }\n  .tooltip.invalid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    color: var(--danger-contrast);\n    text-align: center;\n    background-color: var(--danger-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] :user-invalid ~ .invalid-feedback,\n  [data-bs-validate] :user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-control.is-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  .form-control.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  .check.is-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  .check.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .check:user-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .check:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.check.is-invalid) .invalid-feedback,\n  .form-field:has(.check.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .radio.is-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  .radio.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .radio:user-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .radio:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.radio.is-invalid) .invalid-feedback,\n  .form-field:has(.radio.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  .switch:has(input.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.switch input.is-invalid) .invalid-feedback,\n  .form-field:has(.switch input.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-feedback,\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n  [data-bs-validate] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-invalid {\n    z-index: 4;\n  }\n  .otp.is-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  .otp.is-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n@layer components {\n  .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n    --btn-min-height: var(--btn-input-min-height);\n    --btn-padding-x: var(--btn-input-padding-x);\n    --btn-padding-y: var(--btn-input-padding-y);\n    --btn-font-size: var(--btn-input-font-size);\n    --btn-font-weight: var(--btn-input-font-weight);\n    --btn-line-height: var(--btn-input-line-height);\n    --btn-color: var(--fg-body);\n    --btn-white-space: nowrap;\n    --btn-border-width: var(--border-width);\n    --btn-border-color: transparent;\n    --btn-border-radius: var(--radius-5);\n    --btn-hover-border-color: transparent;\n    --btn-disabled-opacity: 0.65;\n    --btn-transition-timing: 0.15s ease-in-out;\n    --btn-transition-property: color, background-color, border-color, box-shadow;\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing);\n    display: inline-flex;\n    gap: var(--btn-gap, 0.25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    cursor: pointer;\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    border-radius: var(--btn-border-radius);\n    transition: var(--btn-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n      transition: none;\n    }\n  }\n  .btn:hover, .btn-link:hover, .btn-icon:hover, .btn-solid:hover, .btn-outline:hover, .btn-subtle:hover, .btn-text:hover {\n    color: var(--btn-hover-color);\n    background-color: var(--btn-hover-bg, var(--bg-3));\n    border-color: var(--btn-hover-border-color);\n  }\n  .btn:focus-visible, .btn-link:focus-visible, .btn-icon:focus-visible, .btn-solid:focus-visible, .btn-outline:focus-visible, .btn-subtle:focus-visible, .btn-text:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn.active, .btn.show, .btn-link.active, .btn-link.show, .btn-icon.active, .btn-icon.show, .btn-solid.active, .btn-solid.show, .btn-outline.active, .btn-outline.show, .btn-subtle.active, .btn-subtle.show, .btn-text.active, .btn-text.show {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n  }\n  .btn.active:focus-visible, .btn.show:focus-visible, .btn-link.active:focus-visible, .btn-link.show:focus-visible, .btn-icon.active:focus-visible, .btn-icon.show:focus-visible, .btn-solid.active:focus-visible, .btn-solid.show:focus-visible, .btn-outline.active:focus-visible, .btn-outline.show:focus-visible, .btn-subtle.active:focus-visible, .btn-subtle.show:focus-visible, .btn-text.active:focus-visible, .btn-text.show:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .btn:disabled, .btn.disabled, fieldset:disabled .btn, .btn-link:disabled, .btn-link.disabled, fieldset:disabled .btn-link, .btn-icon:disabled, .btn-icon.disabled, fieldset:disabled .btn-icon, .btn-solid:disabled, .btn-solid.disabled, fieldset:disabled .btn-solid, .btn-outline:disabled, .btn-outline.disabled, fieldset:disabled .btn-outline, .btn-subtle:disabled, .btn-subtle.disabled, fieldset:disabled .btn-subtle, .btn-text:disabled, .btn-text.disabled, fieldset:disabled .btn-text {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    background-image: none;\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n  }\n  .btn-solid {\n    --btn-bg: var(--theme-bg);\n    --btn-color: var(--theme-contrast);\n    --btn-border-color: var(--theme-bg);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-solid:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-solid:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-solid:active, .btn-solid.active, .btn-solid.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-solid:disabled, .btn-solid.disabled, .btn-solid.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-outline {\n    --btn-bg: transparent;\n    --btn-color: var(--theme-fg);\n    --btn-border-color: var(--theme-border);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-outline:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-outline:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-outline:active, .btn-outline.active, .btn-outline.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-outline:disabled, .btn-outline.disabled, .btn-outline.btn-check:has(input:disabled) {\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-fg);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-subtle:hover {\n    --btn-hover-bg: color-mix(in oklch, var(--theme-bg-muted) 50%, var(--theme-bg-subtle));\n    --btn-hover-color: oklch(from var(--theme-fg-emphasis) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-subtle:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-subtle:active, .btn-subtle.active, .btn-subtle.btn-check:has(input:checked) {\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-subtle:disabled, .btn-subtle.disabled, .btn-subtle.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-fg);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-fg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-text:active, .btn-text.active, .btn-text.btn-check:has(input:checked) {\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:disabled, .btn-text.disabled, .btn-text.btn-check:has(input:disabled) {\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-link {\n    --btn-font-weight: var(--font-weight-normal);\n    --btn-color: var(--link-color);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-hover-color: var(--link-hover-color);\n    --btn-hover-bg: transparent;\n    --btn-hover-border-color: transparent;\n    --btn-active-color: var(--link-hover-color);\n    --btn-active-bg: transparent;\n    --btn-active-border-color: transparent;\n    --btn-disabled-color: var(--fg-3);\n    --btn-disabled-border-color: transparent;\n    color: var(--theme-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n    background-image: none;\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-fg, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-fg-emphasis, var(--btn-hover-color));\n  }\n  .btn-xs,\n  .btn-group-xs > [class*=btn-] {\n    --btn-min-height: var(--btn-input-xs-min-height);\n    --btn-padding-y: var(--btn-input-xs-padding-y);\n    --btn-padding-x: var(--btn-input-xs-padding-x);\n    --btn-font-size: var(--btn-input-xs-font-size);\n    --btn-line-height: var(--btn-input-xs-line-height);\n    --btn-border-radius: var(--btn-input-xs-border-radius);\n  }\n  .btn-sm,\n  .btn-group-sm > [class*=btn-] {\n    --btn-min-height: var(--btn-input-sm-min-height);\n    --btn-padding-y: var(--btn-input-sm-padding-y);\n    --btn-padding-x: var(--btn-input-sm-padding-x);\n    --btn-font-size: var(--btn-input-sm-font-size);\n    --btn-line-height: var(--btn-input-sm-line-height);\n    --btn-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .btn-lg,\n  .btn-group-lg > [class*=btn-] {\n    --btn-min-height: var(--btn-input-lg-min-height);\n    --btn-padding-y: var(--btn-input-lg-padding-y);\n    --btn-padding-x: var(--btn-input-lg-padding-x);\n    --btn-font-size: var(--btn-input-lg-font-size);\n    --btn-line-height: var(--btn-input-lg-line-height);\n    --btn-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n  .btn-check > input {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none;\n  }\n  .btn-check:has(input:checked) {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    background-image: none;\n    border-color: var(--btn-active-border-color);\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-check:has(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn-check:has(input:disabled) {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    background-image: none;\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n    box-shadow: none;\n  }\n  .btn-styled {\n    --btn-gradient-start: rgba(255, 255, 255, 0.125);\n    --btn-gradient-end: rgba(0, 0, 0, 0.075);\n    --btn-border-mix-color: #000;\n    --btn-border-mix-amount: 10%;\n    --btn-border-hover-mix-amount: 12.5%;\n    --btn-border-active-mix-amount: 20%;\n    --btn-shadow: 0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%);\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n  }\n  .btn-styled:hover {\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n  }\n  .btn-styled:active, .btn-styled.active {\n    background-image: none;\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-styled:disabled, .btn-styled.disabled {\n    background-image: none;\n    box-shadow: none;\n  }\n}\n@layer components {\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle;\n  }\n  .btn-group > [class*=btn-],\n  .btn-group-vertical > [class*=btn-] {\n    position: relative;\n    flex: 1 1 auto;\n  }\n  .btn-group > [class*=btn-]:hover,\n  .btn-group-vertical > [class*=btn-]:hover {\n    z-index: 1;\n  }\n  .btn-group > .btn-check:has(input:checked),\n  .btn-group > [class*=btn-]:active,\n  .btn-group > [class*=btn-].active,\n  .btn-group-vertical > .btn-check:has(input:checked),\n  .btn-group-vertical > [class*=btn-]:active,\n  .btn-group-vertical > [class*=btn-].active {\n    z-index: 2;\n  }\n  .btn-group > .btn-check:has(input:focus),\n  .btn-group > [class*=btn-]:focus,\n  .btn-group-vertical > .btn-check:has(input:focus),\n  .btn-group-vertical > [class*=btn-]:focus {\n    z-index: 3;\n  }\n  .btn-group-divider > [class*=btn-] + [class*=btn-]::before {\n    position: absolute;\n    z-index: 3;\n    content: \"\";\n    background-color: var(--btn-color);\n    opacity: 0.25;\n  }\n  .btn-group:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: 25%;\n    bottom: 25%;\n    left: calc(var(--btn-border-width) * -1);\n    width: var(--btn-border-width);\n  }\n  .btn-group-vertical:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: calc(var(--btn-border-width) * -1);\n    right: var(--btn-padding-x);\n    left: var(--btn-padding-x);\n    height: var(--btn-border-width);\n  }\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    justify-content: flex-start;\n  }\n  .btn-toolbar .input-group {\n    width: auto;\n  }\n  .btn-group {\n    border-radius: var(--btn-border-radius);\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) {\n    margin-inline-start: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group > [class*=btn-]:not(:last-child, :has(+ .menu)),\n  .btn-group > .btn-group:not(:last-child) > [class*=btn-] {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n  }\n  .btn-group-vertical > [class*=btn-],\n  .btn-group-vertical > .btn-group {\n    width: 100%;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) {\n    margin-top: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group-vertical > [class*=btn-]:not(:last-child, :has(+ .menu)),\n  .btn-group-vertical > .btn-group:not(:last-child) > [class*=btn-] {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n}\n@layer components {\n  .btn-close {\n    --btn-close-size: 1.5rem;\n    --btn-close-color: inherit;\n    --btn-close-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e\");\n    --btn-close-opacity: 0.5;\n    --btn-close-hover-opacity: 0.75;\n    --btn-close-focus-opacity: 0.85;\n    --btn-close-disabled-opacity: 0.25;\n    box-sizing: content-box;\n    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0;\n    border-radius: var(--radius-5);\n    opacity: var(--btn-close-opacity);\n    mask-image: var(--btn-close-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .btn-close:hover {\n    color: var(--btn-close-color);\n    text-decoration: none;\n    opacity: var(--btn-close-hover-opacity);\n  }\n  .btn-close:focus-visible {\n    opacity: var(--btn-close-focus-opacity);\n    outline: var(--focus-ring);\n  }\n  .btn-close:disabled, .btn-close.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: var(--btn-close-disabled-opacity);\n  }\n}\n@layer components {\n  .accordion {\n    --accordion-padding-x: 1.25rem;\n    --accordion-padding-y: 1rem;\n    --accordion-color: var(--fg-body);\n    --accordion-bg: var(--bg-body);\n    --accordion-transition-property: color, background-color, border-radius;\n    --accordion-transition-timing: .15s ease-in-out;\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing);\n    --accordion-border-color: var(--border-color);\n    --accordion-border-width: var(--border-width);\n    --accordion-border-radius: var(--accordion-radius, var(--radius-7));\n    --accordion-btn-color: var(--fg-2);\n    --accordion-btn-bg: var(--bg-body);\n    --accordion-btn-icon-width: 1rem;\n    --accordion-btn-icon-transform: rotate(-180deg);\n    --accordion-btn-icon-transition: transform 0.2s ease-in-out;\n    --accordion-active-color: var(--fg);\n    --accordion-active-bg: var(--bg-2);\n  }\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none;\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    transition: var(--accordion-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header {\n      transition: none;\n    }\n  }\n  .accordion-header::-webkit-details-marker {\n    display: none;\n  }\n  .accordion-header .accordion-icon {\n    flex-shrink: 0;\n    width: var(--accordion-btn-icon-width);\n    height: var(--accordion-btn-icon-width);\n    margin-inline-start: auto;\n    color: currentcolor;\n    transition: var(--accordion-btn-icon-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header .accordion-icon {\n      transition: none;\n    }\n  }\n  .accordion-header:hover {\n    z-index: 2;\n  }\n  .accordion-header:focus-visible {\n    position: relative;\n    z-index: 3;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    outline-offset: -1px;\n  }\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .accordion-item {\n      interpolate-size: allow-keywords;\n    }\n  }\n  .accordion-item::details-content {\n    block-size: 0;\n    overflow-y: clip;\n    transition: content-visibility 0.2s allow-discrete, block-size 0.2s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-item::details-content {\n      transition: none;\n    }\n  }\n  .accordion-item:first-of-type {\n    border-start-start-radius: var(--accordion-border-radius);\n    border-start-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:first-of-type > .accordion-header {\n    border-start-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-start-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:not(:first-of-type) {\n    border-block-start: 0;\n  }\n  .accordion-item:last-of-type {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:last-of-type > .accordion-header {\n    border-end-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-end-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:last-of-type > .accordion-body {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item[open] {\n    border-color: var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open]::details-content {\n    block-size: auto;\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-fg, var(--accordion-active-color));\n    background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n    box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header .accordion-icon {\n    transform: var(--accordion-btn-icon-transform);\n  }\n  .accordion-item[open]:last-of-type > .accordion-header {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n  .accordion-flush > .accordion-item {\n    border-inline: 0;\n    border-radius: 0;\n  }\n  .accordion-flush > .accordion-item:first-child {\n    border-block-start: 0;\n  }\n  .accordion-flush > .accordion-item:last-child {\n    border-block-end: 0;\n  }\n  .accordion-flush > .accordion-item > .accordion-header,\n  .accordion-flush > .accordion-item > .accordion-body {\n    border-radius: 0;\n  }\n}\n@layer components {\n  .alert {\n    --alert-gap: var(--spacer-3);\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: var(--spacer);\n    --alert-padding-y: var(--spacer);\n    --alert-color: var(--theme-fg, inherit);\n    --alert-border-color: var(--theme-border, var(--border-color));\n    --alert-border: var(--border-width) solid var(--alert-border-color);\n    --alert-border-radius: var(--radius-5);\n    --alert-link-color: inherit;\n    --hr-border-color: var(--theme-border, var(--border-color));\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    border-radius: var(--alert-border-radius);\n  }\n  .alert > p {\n    margin-bottom: 0;\n  }\n  .alert-heading {\n    color: inherit;\n  }\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n@layer components {\n  .avatar {\n    --avatar-size: 2.5rem;\n    --avatar-border-radius: 50%;\n    --avatar-border-width: 2px;\n    --avatar-border-color: var(--bg-body);\n    --avatar-bg: var(--bg-2);\n    --avatar-color: var(--fg-body);\n    --avatar-status-size: 0.75rem;\n    --avatar-status-border-width: 2px;\n    --avatar-status-border-color: var(--bg-body);\n    --avatar-stack-spacing: -0.3;\n    --avatar-stack-transition: transform .2s ease-in-out;\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * 0.4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    border-radius: var(--avatar-border-radius);\n  }\n  .avatar > .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    border-radius: var(--avatar-border-radius, 50%);\n  }\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    border-radius: 50%;\n  }\n  .avatar-status.status-online {\n    background-color: var(--green-500);\n  }\n  .avatar-status.status-offline {\n    background-color: var(--gray-400);\n    border-radius: 20%;\n  }\n  .avatar-status.status-busy {\n    background-color: var(--red-500);\n    border-radius: 20%;\n  }\n  .avatar-status.status-away {\n    background-color: var(--yellow-500);\n  }\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n  }\n  .avatar-stack .avatar {\n    margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n    border: var(--avatar-border-width) solid var(--avatar-border-color);\n    mask-image: none;\n    transition: var(--avatar-stack-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .avatar-stack .avatar {\n      transition: none;\n    }\n  }\n  .avatar-stack .avatar:last-child {\n    margin-left: 0;\n  }\n  .avatar-stack .avatar:hover {\n    z-index: 1;\n    transform: translateY(-2px);\n  }\n  .avatar-xs,\n  .avatar-stack-xs > .avatar {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm > .avatar {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg > .avatar {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n    --avatar-border-width: 3px;\n  }\n  .avatar-xl,\n  .avatar-stack-xl > .avatar {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n    --avatar-border-width: 4px;\n  }\n}\n@layer components {\n  .badge {\n    --badge-padding-x: 0.625em;\n    --badge-padding-y: 0.25em;\n    --badge-font-size: clamp(12px, 0.75em, 0.75em);\n    --badge-font-weight: var(--font-weight-semibold);\n    --badge-color: inherit;\n    --badge-bg: var(--bg-2);\n    --badge-border-width: var(--border-width);\n    --badge-border-color: transparent;\n    --badge-border-radius: var(--radius-7);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    border-radius: var(--badge-border-radius);\n  }\n  .badge:empty {\n    display: none;\n  }\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n  .badge-subtle {\n    --badge-color: var(--theme-fg);\n    --badge-bg: var(--theme-bg-subtle);\n    --badge-border-color: transparent;\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n  .badge-outline {\n    --badge-color: var(--theme-fg);\n    --badge-bg: transparent;\n    --badge-border-color: var(--theme-border);\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n}\n@layer components {\n  .breadcrumb {\n    --breadcrumb-margin-bottom: 1rem;\n    --breadcrumb-font-size: inherit;\n    --breadcrumb-bg: transparent;\n    --breadcrumb-border-radius: var(--radius-5);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-divider-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e\");\n    --breadcrumb-divider-width: 0.375rem;\n    --breadcrumb-divider-height: 0.75rem;\n    --breadcrumb-link-padding-x: 0.75rem;\n    --breadcrumb-link-padding-y: 0.25rem;\n    --breadcrumb-link-color: var(--fg-3);\n    --breadcrumb-link-hover-color: var(--fg-2);\n    --breadcrumb-link-hover-bg: var(--bg-1);\n    --breadcrumb-link-active-color: var(--fg-1);\n    --breadcrumb-link-border-radius: var(--radius-7);\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style-type: \"\";\n    background-color: var(--breadcrumb-bg);\n    border-radius: var(--breadcrumb-border-radius);\n  }\n  .breadcrumb-item {\n    display: flex;\n  }\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n  .breadcrumb-divider:empty::before {\n    display: block;\n    width: var(--breadcrumb-divider-width);\n    height: var(--breadcrumb-divider-height);\n    content: \"\";\n    background-color: currentcolor;\n    mask-image: var(--breadcrumb-divider-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    border-radius: var(--breadcrumb-link-border-radius);\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .breadcrumb-link {\n      transition: none;\n    }\n  }\n  .breadcrumb-link:hover {\n    z-index: 2;\n    color: var(--breadcrumb-link-hover-color);\n    background-color: var(--breadcrumb-link-hover-bg);\n  }\n  .breadcrumb-link.active {\n    color: var(--breadcrumb-link-active-color);\n  }\n}\n@layer components {\n  .chip {\n    --chip-height: 1.75rem;\n    --chip-padding-x: 0.625rem;\n    --chip-gap: 0.3125rem;\n    --chip-border-radius: var(--radius-pill);\n    --chip-img-size: 1.25rem;\n    --chip-icon-size: 1rem;\n    --chip-dismiss-size: 1rem;\n    --chip-dismiss-opacity: 0.65;\n    --chip-dismiss-hover-opacity: 1;\n    --chip-color: var(--theme-fg, var(--fg-body));\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2));\n    --chip-border-color: transparent;\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast));\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg));\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg));\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    border-radius: var(--chip-border-radius);\n  }\n  .chip:hover {\n    --chip-bg: var(--theme-bg-muted, var(--bg-3));\n  }\n  .chip:focus-visible {\n    outline: 0;\n  }\n  .chip.active {\n    --chip-color: var(--chip-selected-color);\n    --chip-bg: var(--chip-selected-bg);\n    --chip-border-color: var(--chip-selected-border-color);\n  }\n  .chip.active:hover {\n    --chip-bg: var(--chip-selected-bg);\n    opacity: 0.9;\n  }\n  .chip.disabled, .chip:disabled {\n    pointer-events: none;\n    opacity: 0.65;\n  }\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    border-radius: 50%;\n  }\n  .chip-img:first-child {\n    margin-inline-start: -0.375rem;\n  }\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -0.25);\n  }\n  .chip-icon > svg {\n    display: block;\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n  }\n  .chip-icon > img {\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n    object-fit: cover;\n    border-radius: 50%;\n  }\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    margin-inline-end: calc(var(--chip-padding-x) * -0.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n  }\n  .chip-dismiss:hover {\n    opacity: var(--chip-dismiss-hover-opacity);\n  }\n  .chip-dismiss:focus-visible {\n    outline: 0;\n    opacity: 1;\n    outline: var(--focus-ring);\n  }\n  .chip-dismiss > svg {\n    display: block;\n    width: var(--chip-dismiss-size);\n    height: var(--chip-dismiss-size);\n  }\n}\n@layer components {\n  .card {\n    --card-spacer-y: var(--spacer-5);\n    --card-spacer-x: var(--spacer-5);\n    --card-subtitle-color: inherit;\n    --card-border-width: var(--border-width);\n    --card-border-color: var(--border-color-translucent);\n    --card-border-radius: var(--radius-7);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --card-cap-padding-y: var(--spacer-3);\n    --card-cap-padding-x: var(--spacer);\n    --card-cap-bg: var(--bg-1);\n    --card-cap-color: inherit;\n    --card-height: auto;\n    --card-color: inherit;\n    --card-bg: var(--bg-body);\n    --card-img-overlay-padding: var(--card-spacer-y);\n    --card-group-margin: 0.75rem;\n    --card-body-gap: calc(var(--card-spacer-y) * 0.5);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    border-radius: var(--card-border-radius);\n    box-shadow: var(--card-box-shadow);\n  }\n  .card > hr {\n    margin-inline: 0;\n  }\n  .card-body {\n    display: flex;\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body > * {\n    margin-block: 0;\n  }\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body:first-child,\n  .card-list:first-child {\n    border-start-start-radius: var(--card-border-radius);\n    border-start-end-radius: var(--card-border-radius);\n    border-top-width: var(--card-border-width);\n  }\n  .card-body:last-child,\n  .card-list:last-child {\n    border-end-start-radius: var(--card-border-radius);\n    border-end-end-radius: var(--card-border-radius);\n    border-bottom-width: var(--card-border-width);\n  }\n  .card-body:not(:first-child, :last-child),\n  .card-list:not(:first-child, :last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-body:has(+ .card-footer),\n  .card-list:has(+ .card-footer) {\n    border-block-end-width: 0;\n  }\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -0.5);\n  }\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0;\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-header:first-child {\n    border-radius: var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0;\n  }\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-footer:last-child {\n    border-radius: 0 0 var(--card-inner-border-radius) var(--card-inner-border-radius);\n  }\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .card-translucent .card-header,\n  .card-translucent .card-footer {\n    background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n  }\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-header {\n    color: var(--theme-fg-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-footer {\n    color: var(--theme-fg-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-body,\n  .card-subtle .card-list {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .nav.card-header-tabs {\n    margin-inline: calc(-0.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y) - var(--nav-tabs-border-width));\n    border-block-end: 0;\n  }\n  .nav.card-header-tabs .nav-link.active {\n    background-color: var(--card-bg);\n    border-block-end-color: var(--card-bg);\n  }\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    border-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%;\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n  .card-img,\n  .card-img-top {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-start-end-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-bottom {\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-row {\n    flex-direction: row;\n  }\n  .card-row .card-body,\n  .card-row .card-list {\n    border-width: var(--card-border-width) 0;\n    border-radius: 0;\n  }\n  .card-row .card-body:first-child,\n  .card-row .card-list:first-child {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-inline-start-width: var(--card-border-width);\n  }\n  .card-row .card-body:last-child,\n  .card-row .card-list:last-child {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-row .card-body:not(:first-child, :last-child),\n  .card-row .card-list:not(:first-child, :last-child) {\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-img-start {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n  }\n  .card-img-end {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-group > .card {\n    margin-bottom: var(--card-group-margin);\n  }\n  @container (width >= 576px) {\n    .card-group {\n      display: flex;\n      flex-flow: row wrap;\n    }\n    .card-group > .card {\n      flex: 1 0 0;\n      margin-bottom: 0;\n    }\n    .card-group > .card + .card {\n      margin-inline-start: calc(-1 * var(--card-border-width));\n    }\n    .card-group > .card:not(:last-child) {\n      border-start-end-radius: 0;\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-top,\n    .card-group > .card:not(:last-child) > .card-header,\n    .card-group > .card:not(:last-child) > .card-body {\n      border-start-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-bottom,\n    .card-group > .card:not(:last-child) > .card-footer,\n    .card-group > .card:not(:last-child) > .card-body {\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:first-child) {\n      border-start-start-radius: 0;\n      border-end-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-top,\n    .card-group > .card:not(:first-child) > .card-header,\n    .card-group > .card:not(:first-child) > .card-body {\n      border-start-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-bottom,\n    .card-group > .card:not(:first-child) > .card-footer,\n    .card-group > .card:not(:first-child) > .card-body {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    --carousel-gap: 0.75rem;\n    --carousel-indicator-bg: var(--fg-3);\n    --carousel-indicator-width: 0.75rem;\n    --carousel-indicator-height: 0.75rem;\n    --carousel-indicator-spacer: 0.25rem;\n    --carousel-indicator-transition: opacity .6s ease, width .3s ease;\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg);\n    --carousel-control-icon-width: 1rem;\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n    --carousel-control-next-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n    --carousel-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\");\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\");\n    --carousel-items: 1;\n    --carousel-items-gap: 0px;\n    --carousel-items-peek: 0px;\n    --carousel-fade-duration: 0.6s;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none;\n  }\n  .carousel-inner::-webkit-scrollbar {\n    display: none;\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n  .carousel-item {\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n  .carousel-center .carousel-item {\n    scroll-snap-align: center;\n  }\n  .carousel-auto .carousel-item {\n    flex-basis: auto;\n  }\n  .carousel-fade .carousel-inner {\n    display: grid;\n    overflow: hidden;\n    scroll-snap-type: none;\n  }\n  .carousel-fade .carousel-item {\n    grid-area: 1/1;\n    width: 100%;\n    visibility: hidden;\n    opacity: 0;\n    transition: opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-fade .carousel-item.active {\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--carousel-fade-duration) ease;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item.active {\n      transition: none;\n    }\n  }\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    mask-repeat: no-repeat;\n    mask-position: 50%;\n    mask-size: 100% 100%;\n  }\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n  [dir=rtl] .carousel-icon-prev,\n  [dir=rtl] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-pause {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-play {\n    display: inline-block;\n  }\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n  }\n  .carousel-indicators [data-bs-target] {\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    cursor: pointer;\n    background-color: transparent;\n    border: 1px solid var(--carousel-indicator-bg);\n    border-radius: var(--carousel-indicator-width);\n    transition: var(--carousel-indicator-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-indicators [data-bs-target] {\n      transition: none;\n    }\n  }\n  .carousel-indicators .active {\n    width: calc(var(--carousel-indicator-width) * 2.5);\n    background-color: var(--carousel-indicator-bg);\n    border-color: var(--carousel-indicator-bg);\n  }\n  @keyframes carousel-indicator-progress {\n    from {\n      inline-size: 0;\n    }\n    to {\n      inline-size: 100%;\n    }\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-playing .carousel-indicators .active {\n      position: relative;\n      overflow: hidden;\n      background-color: transparent;\n    }\n    .carousel-playing .carousel-indicators .active::after {\n      position: absolute;\n      inset-block: 0;\n      inset-inline-start: 0;\n      inline-size: 0;\n      content: \"\";\n      background-color: var(--carousel-indicator-progress-bg);\n      animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n    }\n  }\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n  }\n  .carousel-overlay .carousel-overlay-controls {\n    position: absolute;\n    inset-block-end: 1rem;\n    inset-inline: 1rem;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n}\n@layer components {\n  [data-vc=calendar] {\n    --datepicker-padding: 1rem;\n    --datepicker-bg: var(--bg-body);\n    --datepicker-color: var(--fg-body);\n    --datepicker-border-color: var(--border-color-translucent);\n    --datepicker-border-width: var(--border-width);\n    --datepicker-border-radius: var(--radius-7);\n    --datepicker-box-shadow: var(--box-shadow);\n    --datepicker-font-size: var(--font-size-sm);\n    --datepicker-min-width: 280px;\n    --datepicker-zindex: 1000;\n    --datepicker-header-font-weight: 600;\n    --datepicker-weekday-color: var(--fg-3);\n    --datepicker-day-hover-bg: var(--bg-1);\n    --datepicker-day-selected-bg: var(--primary-bg);\n    --datepicker-day-selected-color: var(--primary-contrast);\n    --datepicker-day-today-bg: var(--bg-2);\n    --datepicker-day-today-color: var(--fg-1);\n    --datepicker-day-disabled-color: var(--fg-4);\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    border-radius: var(--datepicker-border-radius);\n  }\n  [data-vc=calendar][data-bs-theme=light] {\n    color-scheme: light;\n  }\n  [data-vc=calendar][data-bs-theme=dark] {\n    color-scheme: dark;\n  }\n  [data-vc=calendar] button:focus-visible {\n    position: relative;\n    z-index: 1;\n    outline: var(--focus-ring);\n  }\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n  [data-vc=calendar]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n  [data-vc-position=bottom] {\n    margin-block-start: 0.25rem;\n  }\n  [data-vc-position=top] {\n    margin-block-end: -0.25rem;\n  }\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: var(--datepicker-color);\n    mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n    mask-repeat: no-repeat;\n    mask-position: center;\n  }\n  [data-vc-arrow]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-arrow=prev]::before {\n    transform: rotate(90deg);\n  }\n  [data-vc-arrow=next]::before {\n    transform: rotate(-90deg);\n  }\n  [data-vc=controls] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n  [data-vc=grid] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n  [data-vc=column] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n  [data-vc=header] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: 0.75rem;\n  }\n  [data-vc-header=content] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n  [data-vc=month],\n  [data-vc=year] {\n    padding: 0.25rem 0.5rem;\n    margin-inline: -0.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc=month]:disabled,\n  [data-vc=year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc=month]:hover:not(:disabled),\n  [data-vc=year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc=content] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n  [data-vc=months],\n  [data-vc=years] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: 0.25rem;\n    align-items: center;\n  }\n  [data-vc=years] {\n    --vc-columns: 5;\n  }\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: 0.25rem;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-months-month]:disabled,\n  [data-vc-years-year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc-months-month]:hover:not(:disabled),\n  [data-vc-years-year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected], [data-vc-months-month][data-vc-years-year-selected],\n  [data-vc-years-year][data-vc-months-month-selected],\n  [data-vc-years-year][data-vc-years-year-selected] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected]:hover, [data-vc-months-month][data-vc-years-year-selected]:hover,\n  [data-vc-years-year][data-vc-months-month-selected]:hover,\n  [data-vc-years-year][data-vc-years-year-selected]:hover {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc=week] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: 0.5rem;\n  }\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n  [data-vc=dates] {\n    pointer-events: none;\n  }\n  [data-vc-dates=row] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: 0.125rem;\n    padding-bottom: 0.125rem;\n    pointer-events: auto;\n  }\n  [data-vc-date]:not(:has([data-vc-date-btn])), [data-vc-date][data-vc-date-disabled], [data-vc-date][data-vc-date-disabled] [data-vc-date-btn] {\n    pointer-events: none;\n  }\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: 0.75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-date-btn]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n  [data-vc-date-month=next] [data-vc-date-btn],\n  [data-vc-date-month=prev] [data-vc-date-btn] {\n    opacity: 0.5;\n  }\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n  [data-vc-date-hover=first] [data-vc-date-btn] {\n    border-start-start-radius: var(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=middle] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: 0.8;\n  }\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-date-selected=first] [data-vc-date-btn] {\n    border-top-left-radius: var(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n@layer components {\n  :root.dialog-open {\n    overflow: hidden;\n  }\n  .dialog {\n    --dialog-padding: 1rem;\n    --dialog-width: 500px;\n    --dialog-margin: 1.75rem;\n    --dialog-color: var(--fg-body);\n    --dialog-bg: var(--bg-body);\n    --dialog-border-color: var(--border-color-translucent);\n    --dialog-border-width: var(--border-width);\n    --dialog-border-radius: var(--radius-7);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-transition-duration: 0.3s;\n    --dialog-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --dialog-backdrop-bg: light-dark(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.65));\n    --dialog-backdrop-blur: 8px;\n    --dialog-header-padding: 1rem;\n    --dialog-header-border-color: var(--border-color-translucent);\n    --dialog-header-border-width: var(--border-width);\n    --dialog-footer-padding: 1rem;\n    --dialog-footer-border-color: var(--border-color-translucent);\n    --dialog-footer-border-width: var(--border-width);\n    --dialog-footer-gap: 0.5rem;\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog:not(.dialog-instant) {\n    opacity: 0;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s var(--dialog-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).dialog-slide-down {\n    transform: translateY(-3rem);\n  }\n  .dialog:not(.dialog-instant).dialog-slide-up {\n    transform: translateY(3rem);\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)[open]:not(.hiding) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    transform: none;\n  }\n  .dialog:not(.dialog-instant)[open].dialog-static:not(.hiding) {\n    transform: scale(1.02);\n  }\n  .dialog:not(.dialog-instant)::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n    transition: background-color var(--dialog-transition-duration) var(--dialog-transition-timing), backdrop-filter var(--dialog-transition-duration) var(--dialog-transition-timing), display var(--dialog-transition-duration) allow-discrete, overlay var(--dialog-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)::backdrop {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).hiding::backdrop {\n    background-color: transparent;\n    backdrop-filter: blur(0);\n  }\n  .dialog.dialog-instant::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transform: none;\n  }\n  .dialog.dialog-nonmodal {\n    position: fixed;\n    inset-block-start: 50%;\n    inset-inline-start: 50%;\n    z-index: 1055;\n    margin-inline: 0;\n    transform: translate(-50%, -50%);\n  }\n  .dialog.dialog-scrollable[open] {\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n  }\n  .dialog-sm {\n    --dialog-width: 280px;\n  }\n  .dialog-lg {\n    --dialog-width: 800px;\n  }\n  .dialog-xl {\n    --dialog-width: 1140px;\n  }\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n  @media (width < 576px) {\n    .sm-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 768px) {\n    .md-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n  }\n  .dialog-header .btn-close {\n    margin-inline-start: auto;\n  }\n  .dialog-title {\n    margin-bottom: 0;\n    line-height: 1.5;\n    font-size: var(--font-size-md);\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n  }\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n@layer components {\n  .menu {\n    --menu-zindex: 1000;\n    --menu-gap: 0.125rem;\n    --menu-min-width: 10rem;\n    --menu-padding-x: 0.25rem;\n    --menu-padding-y: 0.25rem;\n    --menu-spacer: 0.125rem;\n    --menu-font-size: var(--font-size-sm);\n    --menu-color: var(--fg-body);\n    --menu-bg: var(--bg-body);\n    --menu-box-shadow: var(--box-shadow);\n    --menu-divider-bg: var(--border-color-translucent);\n    --menu-divider-margin-y: 0.125rem;\n    --menu-divider-margin-x: 0.25rem;\n    --menu-item-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-bg: var(--bg-1);\n    --menu-item-active-color: var(--primary-contrast);\n    --menu-item-active-bg: var(--primary-bg);\n    --menu-item-disabled-color: var(--fg-3);\n    --menu-item-gap: 0.5rem;\n    --menu-item-padding-x: 0.75rem;\n    --menu-item-padding-y: 0.25rem;\n    --menu-item-border-radius: var(--radius-5);\n    --menu-icon-size: 1rem;\n    --menu-description-font-size: var(--font-size-xs);\n    --menu-check-color: currentcolor;\n    --menu-header-color: var(--fg-3);\n    --menu-header-padding-x: 0.75rem;\n    --menu-header-padding-y: 0.25rem;\n    --menu-transition-duration: 0.15s;\n    --menu-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style-type: \"\";\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    border-radius: var(--menu-border-radius, var(--radius-7));\n    box-shadow: var(--menu-box-shadow);\n    opacity: 0;\n    transform: scale(0.95);\n    transform-origin: top start;\n  }\n  .menu[data-bs-placement^=top] {\n    transform-origin: bottom start;\n  }\n  .menu[data-bs-placement=bottom-end] {\n    transform-origin: top end;\n  }\n  .menu[data-bs-placement=top-end] {\n    transform-origin: bottom end;\n  }\n  .menu[data-bs-placement^=left] {\n    transform-origin: top end;\n  }\n  .menu {\n    transition: opacity var(--menu-transition-duration) var(--menu-transition-timing), transform var(--menu-transition-duration) var(--menu-transition-timing), display var(--menu-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .menu {\n      transition: none;\n    }\n  }\n  .menu.show {\n    display: flex;\n    opacity: 1;\n    transform: none;\n  }\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(0.95);\n    }\n  }\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-fg, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    border-radius: var(--menu-item-border-radius, 0);\n  }\n  .menu-item:hover, .menu-item:focus {\n    color: var(--theme-fg-emphasis, var(--menu-item-hover-color));\n    background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n  }\n  .menu-item.active, .menu-item:active {\n    color: var(--theme-contrast, var(--menu-item-active-color));\n    background-color: var(--theme-bg, var(--menu-item-active-bg));\n  }\n  .menu-item.active .menu-item-icon, .menu-item:active .menu-item-icon {\n    color: inherit !important;\n  }\n  .menu-item.selected {\n    font-weight: 600;\n  }\n  .menu-item.disabled, .menu-item:disabled {\n    color: var(--menu-item-disabled-color);\n    pointer-events: none;\n    background-color: transparent;\n    background-image: none;\n  }\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: 0.125rem;\n  }\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: 0.125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n  }\n  .selected > .menu-item-check {\n    visibility: visible;\n  }\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n  .submenu {\n    position: relative;\n  }\n  .submenu > .menu-item {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .submenu > .menu-item::after {\n    display: inline-block;\n    flex-shrink: 0;\n    width: 0.375em;\n    height: 0.375em;\n    margin-inline-start: auto;\n    content: \"\";\n    border-color: currentcolor;\n    border-style: solid;\n    border-width: 0 0.125em 0.125em 0;\n    transform: rotate(-45deg);\n  }\n  [dir=rtl] .submenu > .menu-item::after {\n    transform: rotate(135deg);\n  }\n  .submenu > .menu {\n    top: 0;\n    margin-top: calc(-1 * var(--menu-padding-y));\n  }\n  .submenu:hover > .menu-item, .submenu:focus-within > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n  .submenu.show > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n}\n@layer components {\n  .list-group {\n    --list-group-color: var(--fg-body);\n    --list-group-bg: var(--bg-body);\n    --list-group-border-color: var(--border-color);\n    --list-group-border-width: var(--border-width);\n    --list-group-border-radius: var(--radius-5);\n    --list-group-item-padding-x: var(--spacer);\n    --list-group-item-padding-y: var(--spacer-2);\n    --list-group-action-color: var(--fg-2);\n    --list-group-action-hover-color: var(--fg-1);\n    --list-group-action-hover-bg: var(--bg-1);\n    --list-group-action-active-color: var(--fg-body);\n    --list-group-action-active-bg: var(--bg-2);\n    --list-group-disabled-color: var(--fg-3);\n    --list-group-disabled-bg: var(--bg-body);\n    --list-group-active-color: var(--primary-contrast);\n    --list-group-active-bg: var(--primary-bg);\n    --list-group-active-border-color: var(--primary-bg);\n    display: flex;\n    flex-direction: column;\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    border-radius: var(--list-group-border-radius);\n  }\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n  }\n  .list-group-numbered > .list-group-item::before {\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-fg, var(--list-group-color));\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n  }\n  .list-group-item:first-child {\n    border-start-start-radius: inherit;\n    border-start-end-radius: inherit;\n  }\n  .list-group-item:last-child {\n    border-end-start-radius: inherit;\n    border-end-end-radius: inherit;\n  }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: var(--list-group-disabled-color);\n    pointer-events: none;\n    background-color: var(--list-group-disabled-bg);\n  }\n  .list-group-item.active {\n    z-index: 2;\n    color: var(--list-group-active-color);\n    background-color: var(--list-group-active-bg);\n    border-color: var(--list-group-active-border-color);\n  }\n  .list-group-item + .list-group-item {\n    border-block-start-width: 0;\n  }\n  .list-group-item + .list-group-item.active {\n    margin-top: calc(-1 * var(--list-group-border-width));\n    border-block-start-width: var(--list-group-border-width);\n  }\n  .list-group-item-action {\n    width: 100%;\n    color: var(--theme-fg, var(--list-group-action-color));\n    text-align: inherit;\n    text-decoration: none;\n  }\n  .list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {\n    z-index: 1;\n    color: var(--theme-fg-emphasis, var(--list-group-action-hover-color));\n    text-decoration: none;\n    background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n  }\n  .list-group-item-action:not(.active):active {\n    color: var(--theme-fg-emphasis, var(--list-group-action-active-color));\n    background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n  }\n  .list-group-horizontal {\n    flex-direction: row;\n  }\n  .list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n    border-end-start-radius: var(--list-group-border-radius);\n    border-start-end-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n    border-start-end-radius: var(--list-group-border-radius);\n    border-end-start-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item {\n    border-block-start-width: var(--list-group-border-width);\n    border-inline-start-width: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item.active {\n    margin-inline-start: calc(-1 * var(--list-group-border-width));\n    border-inline-start-width: var(--list-group-border-width);\n  }\n  @container (width >= 576px) {\n    .sm\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .sm\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .md\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .lg\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .xl\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  .list-group-flush {\n    border-radius: 0;\n  }\n  .list-group-flush > .list-group-item {\n    border-width: 0 0 var(--list-group-border-width);\n  }\n  .list-group-flush > .list-group-item:last-child {\n    border-block-end-width: 0;\n  }\n}\n@layer components {\n  .nav {\n    --nav-gap: 0.125rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-align: center;\n    --nav-link-justify: center;\n    --nav-link-padding-x: 0.75rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--fg-2);\n    --nav-link-hover-color: var(--fg-1);\n    --nav-link-hover-bg: var(--bg-1);\n    --nav-link-active-color: var(--fg-body);\n    --nav-link-active-bg: var(--bg-2);\n    --nav-link-disabled-color: var(--fg-4);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-transition-property: color, background-color, border-color;\n    --nav-link-transition-timing: 0.15s ease-in-out;\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n  .nav-item {\n    display: flex;\n  }\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    border-radius: var(--radius-5);\n    transition: var(--nav-link-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nav-link {\n      transition: none;\n    }\n  }\n  .nav-link:hover, .nav-link:focus {\n    color: var(--nav-link-hover-color);\n    background-color: var(--nav-link-hover-bg);\n  }\n  .nav-link:focus-visible {\n    --focus-ring-offset: 1px;\n    color: var(--nav-link-hover-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .nav-link.active, .nav-link:active {\n    color: var(--nav-link-active-color);\n    background-color: var(--nav-link-active-bg);\n  }\n  .nav-link.disabled, .nav-link:disabled {\n    color: var(--nav-link-disabled-color);\n    pointer-events: none;\n    cursor: default;\n  }\n  .nav-tabs {\n    --nav-tabs-border-width: var(--border-width);\n    --nav-tabs-border-color: var(--border-color);\n    --nav-tabs-border-radius: var(--radius-5);\n    --nav-tabs-link-hover-border-color: var(--border-subtle);\n    --nav-tabs-link-active-color: var(--fg-color);\n    --nav-tabs-link-active-bg: var(--bg-body);\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body);\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link {\n    border: var(--nav-tabs-border-width) solid transparent;\n    border-bottom-color: var(--nav-tabs-border-color);\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .nav-tabs .nav-link:hover {\n    isolation: isolate;\n    border-color: var(--nav-tabs-link-hover-border-color);\n    border-bottom-color: var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: var(--nav-tabs-link-active-color);\n    background-color: var(--nav-tabs-link-active-bg);\n    border-color: var(--nav-tabs-link-active-border-color);\n    border-bottom-color: var(--nav-tabs-link-active-bg);\n  }\n  .nav-tabs .menu {\n    margin-top: calc(-1 * var(--nav-tabs-border-width));\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .nav-pills {\n    --nav-pills-bg: var(--bg-1);\n    --nav-pills-padding: 0.25rem;\n    --nav-pills-border-radius: var(--radius-9);\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n    --nav-pills-link-border-radius: var(--radius-9);\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    border-radius: var(--nav-pills-border-radius);\n  }\n  .nav-pills .nav-link {\n    border-radius: var(--nav-pills-link-border-radius);\n  }\n  .nav-pills .nav-link.active,\n  .nav-pills .show > .nav-link {\n    color: var(--nav-pills-link-active-color);\n    background-color: var(--nav-pills-link-active-bg);\n    background-image: var(--gradient);\n  }\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n  }\n  .nav-pills-vertical .nav-item,\n  .nav-pills-vertical .nav-link {\n    width: 100%;\n  }\n  .nav-underline {\n    --nav-gap: 1rem;\n    --nav-link-active-bg: transparent;\n    --nav-underline-border-width: 0.125rem;\n    --nav-underline-link-active-color: var(--fg-color);\n  }\n  .nav-underline .nav-link {\n    padding-inline: 0;\n    border: 0;\n    border-block-end: var(--nav-underline-border-width) solid transparent;\n    border-radius: 0;\n  }\n  .nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n    border-block-end-color: currentcolor;\n  }\n  .nav-underline .nav-link.active,\n  .nav-underline .show > .nav-link {\n    font-weight: 700;\n    color: var(--nav-underline-link-active-color);\n    border-block-end-color: currentcolor;\n  }\n  .nav-fill > .nav-link,\n  .nav-fill .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n  .nav-justified > .nav-link,\n  .nav-justified .nav-item {\n    flex-grow: 1;\n    flex-basis: 0;\n    text-align: center;\n  }\n  .nav-fill .nav-item .nav-link,\n  .nav-justified .nav-item .nav-link {\n    width: 100%;\n  }\n  .tab-content > .tab-pane {\n    display: none;\n  }\n  .tab-content > .active {\n    display: block;\n  }\n}\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0;\n  }\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\n  }\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n  .nav-overflow [data-bs-nav-overflow=true] {\n    display: none;\n  }\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n@layer components {\n  .navbar {\n    --navbar-padding-x: 0;\n    --navbar-padding-y: 0.5rem;\n    --navbar-color: var(--fg-2);\n    --navbar-hover-color: var(--fg-1);\n    --navbar-disabled-color: var(--fg-3);\n    --navbar-active-color: var(--fg-body);\n    --navbar-brand-padding-y: 0.75rem;\n    --navbar-brand-margin-end: 1rem;\n    --navbar-brand-font-size: var(--font-size-md);\n    --navbar-brand-font-weight: var(--font-weight-medium);\n    --navbar-brand-color: var(--fg-body);\n    --navbar-brand-hover-color: var(--fg-body);\n    --navbar-nav-link-padding-x: 0.75rem;\n    --navbar-toggler-width: 2rem;\n    --navbar-toggler-padding-y: 0.25rem;\n    --navbar-toggler-padding-x: 0.75rem;\n    --navbar-toggler-font-size: var(--font-size-lg);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent);\n    --navbar-toggler-border-radius: var(--radius-5);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    --navbar-toggler-icon-size: 1.25rem;\n    --navbar-toggler-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e\");\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    container-type: inline-size;\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n  }\n  .navbar > .\\32 xl\\:container, .navbar > .xl\\:container, .navbar > .lg\\:container, .navbar > .md\\:container, .navbar > .sm\\:container, .navbar > .container,\n  .navbar > .container-fluid {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n  }\n  .navbar-brand:hover, .navbar-brand:focus {\n    color: var(--navbar-brand-hover-color);\n  }\n  .navbar-nav {\n    --nav-gap: 0.25rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-padding-x: 0.5rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n  .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n    color: var(--navbar-active-color);\n    border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n  }\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n  }\n  .navbar-text a,\n  .navbar-text a:hover,\n  .navbar-text a:focus {\n    color: var(--navbar-active-color);\n  }\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    mask-image: var(--navbar-toggler-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand .navbar-nav {\n    --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n    flex-direction: row;\n  }\n  .navbar-expand .navbar-toggler {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] {\n    position: static !important;\n    inset: auto !important;\n    z-index: auto;\n    display: flex !important;\n    flex-grow: 1;\n    width: auto !important;\n    max-width: none !important;\n    height: auto !important;\n    max-height: none !important;\n    padding: 0;\n    margin: 0;\n    visibility: visible !important;\n    background-color: transparent !important;\n    border: 0 !important;\n    transform: none !important;\n    box-shadow: none;\n    transition: none;\n  }\n  .navbar-expand [class*=drawer] .drawer-header {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] .drawer-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: row;\n    align-items: center;\n    padding: 0;\n    overflow-y: visible;\n  }\n  .navbar-expand {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  @container (width >= 576px) {\n    .sm\\:navbar-expand > .container,\n    .sm\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .sm\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .sm\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:navbar-expand > .container,\n    .md\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .md\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .md\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:navbar-expand > .container,\n    .lg\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .lg\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .lg\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:navbar-expand > .container,\n    .xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:navbar-expand > .container,\n    .\\32 xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .\\32 xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar [class*=drawer]:not([open], .hiding) {\n    transition: none !important;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .navbar [class*=drawer]:not([open], .hiding) {\n      transition: none;\n    }\n  }\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n  }\n  .navbar-translucent::before {\n    position: absolute;\n    inset: 0;\n    z-index: -1;\n    content: \"\";\n    background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n    background-image: none;\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .navbar[data-bs-theme=dark] {\n    --navbar-color: color-mix(in oklch, var(--white) 0.55, transparent);\n    --navbar-hover-color: color-mix(in oklch, var(--white) 0.75, transparent);\n    --navbar-disabled-color: color-mix(in oklch, var(--white) 0.25, transparent);\n    --navbar-active-color: var(--white);\n    --navbar-brand-color: var(--white);\n    --navbar-brand-hover-color: var(--white);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) 0.1, transparent);\n  }\n}\n.drawer, .\\32 xl\\:drawer, .xl\\:drawer, .lg\\:drawer, .md\\:drawer, .sm\\:drawer {\n  --drawer-inset: var(--spacer);\n  --drawer-zindex: 1045;\n  --drawer-width: 400px;\n  --drawer-height: 30vh;\n  --drawer-padding-x: var(--spacer);\n  --drawer-padding-y: var(--spacer);\n  --drawer-color: var(--fg-body);\n  --drawer-bg: var(--bg-body);\n  --drawer-border-width: var(--border-width);\n  --drawer-border-color: var(--border-color-translucent);\n  --drawer-border-radius: var(--radius-7);\n  --drawer-box-shadow: var(--box-shadow-lg);\n  --drawer-transition-duration: 0.3s;\n  --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n  --drawer-title-line-height: 1.5;\n  --drawer-backdrop-bg: color-mix(in oklch, var(--bg-body) 25%, transparent);\n  --drawer-backdrop-blur: 8px;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .sm\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .sm\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer .drawer-header {\n      display: none;\n    }\n    .sm\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .md\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .md\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer .drawer-header {\n      display: none;\n    }\n    .md\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .lg\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer .drawer-header {\n      display: none;\n    }\n    .lg\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .\\32 xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .\\32 xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .drawer {\n    position: fixed;\n    inset: auto;\n    z-index: var(--drawer-zindex);\n    display: flex;\n    flex-direction: column;\n    width: auto;\n    max-width: calc(100% - var(--drawer-inset) * 2);\n    height: auto;\n    max-height: calc(100% - var(--drawer-inset) * 2);\n    padding: 0;\n    margin: 0;\n    color: var(--drawer-color);\n    visibility: hidden;\n    background-color: var(--drawer-bg);\n    background-clip: padding-box;\n    border: var(--drawer-border-width) solid var(--drawer-border-color);\n    outline: 0;\n    border-radius: var(--drawer-border-radius);\n    box-shadow: var(--drawer-box-shadow);\n  }\n  .drawer:where(.drawer-start) {\n    inset-block: var(--drawer-inset);\n    inset-inline-start: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-end) {\n    inset-block: var(--drawer-inset);\n    inset-inline-end: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-top) {\n    inset: var(--drawer-inset) var(--drawer-inset) auto;\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-bottom) {\n    inset: auto var(--drawer-inset) var(--drawer-inset);\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-fullscreen) {\n    inset: var(--drawer-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n  }\n  .drawer:not(.drawer-instant) {\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-top) {\n    transform: translateY(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-bottom) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant)[open] {\n    visibility: visible;\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant)[open] {\n    transform: none;\n  }\n  .drawer[open] {\n    visibility: visible;\n    transform: none;\n  }\n  .sm\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .sm\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .md\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .md\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .lg\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .lg\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .xl\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .\\32 xl\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer::backdrop {\n      transition: none;\n    }\n  }\n  @starting-style {\n    .sm\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .md\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .lg\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .\\32 xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n  }\n  .drawer-static {\n    transform: scale(1.02);\n  }\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .drawer-sheet {\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100vw;\n    margin-inline: auto;\n    margin-bottom: calc(-1 * var(--drawer-border-width));\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  @media (width >= 1024px) {\n    .drawer-sheet {\n      max-width: var(--drawer-sheet-width, 760px);\n    }\n  }\n  .drawer-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n  }\n  .drawer-header .btn-close {\n    margin-block: calc(-0.5 * var(--drawer-padding-y));\n    margin-inline-start: auto;\n  }\n  .drawer-title {\n    margin-bottom: 0;\n    line-height: var(--drawer-title-line-height);\n  }\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    flex: 1 1 auto;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    overflow-y: auto;\n  }\n  .drawer-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    border-block-start: var(--drawer-border-width) solid var(--drawer-border-color);\n  }\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\n}\n@layer components {\n  .pagination {\n    --pagination-min-height: var(--btn-input-min-height);\n    --pagination-padding-x: var(--btn-input-padding-x);\n    --pagination-padding-y: var(--btn-input-padding-y);\n    --pagination-font-size: var(--btn-input-font-size);\n    --pagination-color: var(--link-color);\n    --pagination-bg: var(--bg-body);\n    --pagination-border-width: var(--border-width);\n    --pagination-border-color: var(--border-color);\n    --pagination-border-radius: var(--btn-input-border-radius);\n    --pagination-hover-color: var(--link-hover-color);\n    --pagination-hover-bg: var(--bg-1);\n    --pagination-hover-border-color: var(--border-color);\n    --pagination-focus-color: var(--link-hover-color);\n    --pagination-focus-bg: var(--bg-2);\n    --pagination-active-color: var(--primary-contrast);\n    --pagination-active-bg: var(--primary-bg);\n    --pagination-active-border-color: var(--primary-bg);\n    --pagination-disabled-color: var(--fg-3);\n    --pagination-disabled-bg: var(--bg-2);\n    --pagination-disabled-border-color: var(--border-color);\n    display: flex;\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .page-link {\n      transition: none;\n    }\n  }\n  .page-link:hover {\n    z-index: 2;\n    color: var(--pagination-hover-color);\n    background-color: var(--pagination-hover-bg);\n    border-color: var(--pagination-hover-border-color);\n  }\n  .page-link:focus-visible {\n    z-index: 3;\n    color: var(--pagination-focus-color);\n    background-color: var(--pagination-focus-bg);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .page-link.active, .active > .page-link {\n    z-index: 3;\n    color: var(--pagination-active-color);\n    background-color: var(--pagination-active-bg);\n    background-image: var(--gradient);\n    border-color: var(--pagination-active-border-color);\n  }\n  .page-link.disabled, .disabled > .page-link {\n    color: var(--pagination-disabled-color);\n    pointer-events: none;\n    background-color: var(--pagination-disabled-bg);\n    border-color: var(--pagination-disabled-border-color);\n  }\n  .page-item:not(:first-child) .page-link {\n    margin-inline-start: calc(-1 * var(--pagination-border-width));\n  }\n  .page-item:first-child .page-link {\n    border-start-start-radius: var(--pagination-border-radius);\n    border-end-start-radius: var(--pagination-border-radius);\n  }\n  .page-item:last-child .page-link {\n    border-start-end-radius: var(--pagination-border-radius);\n    border-end-end-radius: var(--pagination-border-radius);\n  }\n  .pagination-sm {\n    --pagination-min-height: var(--bs-btn-input-sm-min-height);\n    --pagination-padding-y: var(--btn-input-sm-padding-y);\n    --pagination-padding-x: var(--btn-input-sm-padding-x);\n    --pagination-font-size: var(--btn-input-sm-font-size);\n    --pagination-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .pagination-lg {\n    --pagination-min-height: var(--bs-btn-input-lg-min-height);\n    --pagination-padding-y: var(--btn-input-lg-padding-y);\n    --pagination-padding-x: var(--btn-input-lg-padding-x);\n    --pagination-font-size: var(--btn-input-lg-font-size);\n    --pagination-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer components {\n  .placeholder {\n    --placeholder-opacity-max: 0.5;\n    --placeholder-opacity-min: 0.2;\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n  }\n  .placeholder.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n  .placeholder-xs {\n    min-height: 0.6em;\n  }\n  .placeholder-sm {\n    min-height: 0.8em;\n  }\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n  .placeholder-glow .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, #000 55%, rgb(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, #000 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n@layer components {\n  .popover {\n    --popover-zindex: 1070;\n    --popover-max-width: 280px;\n    --popover-font-size: var(--font-size-sm);\n    --popover-bg: var(--bg-body);\n    --popover-border-width: var(--border-width);\n    --popover-border-color: var(--border-color-translucent);\n    --popover-border-radius: var(--radius-7);\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: var(--spacer);\n    --popover-header-padding-y: var(--spacer-3);\n    --popover-header-font-size: var(--font-size-sm);\n    --popover-header-color: inherit;\n    --popover-header-bg: var(--bg-1);\n    --popover-body-padding-x: var(--spacer);\n    --popover-body-padding-y: var(--spacer-3);\n    --popover-body-color: var(--fg-body);\n    --popover-arrow-width: 1rem;\n    --popover-arrow-height: 0.5rem;\n    --popover-arrow-border: var(--popover-border-color);\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--popover-font-size);\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    border-radius: var(--popover-border-radius);\n    box-shadow: var(--popover-box-shadow);\n  }\n  .popover .popover-arrow {\n    display: block;\n    width: var(--popover-arrow-width);\n    height: var(--popover-arrow-height);\n  }\n  .popover .popover-arrow::before, .popover .popover-arrow::after {\n    position: absolute;\n    display: block;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n    border-width: 0;\n  }\n  .bs-popover-top > .popover-arrow, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow {\n    bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before {\n    bottom: 0;\n    border-block-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    bottom: var(--popover-border-width);\n    border-block-start-color: var(--popover-bg);\n  }\n  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow {\n    left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before {\n    left: 0;\n    border-inline-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    left: var(--popover-border-width);\n    border-inline-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow {\n    top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    border-width: 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before {\n    top: 0;\n    border-block-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    top: var(--popover-border-width);\n    border-block-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow:has(+ .popover-header)::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow:has(+ .popover-header)::after {\n    border-block-end-color: var(--popover-header-bg);\n  }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[data-bs-placement^=bottom] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: var(--popover-arrow-width);\n    margin-inline-start: calc(-0.5 * var(--popover-arrow-width));\n    content: \"\";\n    border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n  }\n  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow {\n    right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before {\n    right: 0;\n    border-inline-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    right: var(--popover-border-width);\n    border-inline-start-color: var(--popover-bg);\n  }\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    border-start-start-radius: var(--popover-inner-border-radius);\n    border-start-end-radius: var(--popover-inner-border-radius);\n  }\n  .popover-header:empty {\n    display: none;\n  }\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n@layer components {\n  @keyframes progress-bar-stripes {\n    0% {\n      background-position-x: var(--progress-height);\n    }\n  }\n  .progress,\n  .progress-stacked {\n    --progress-height: 1rem;\n    --progress-font-size: var(--font-size-sm);\n    --progress-bg: var(--bg-2);\n    --progress-border-radius: var(--radius-5);\n    --progress-box-shadow: var(--box-shadow-inset);\n    --progress-bar-color: var(--white);\n    --progress-bar-bg: var(--primary-bg);\n    --progress-bar-transition: width 0.6s ease;\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite;\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    border-radius: var(--progress-border-radius);\n    box-shadow: var(--progress-box-shadow);\n  }\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    transition: var(--progress-bar-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      transition: none;\n    }\n  }\n  .progress-bar-striped {\n    background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n    background-size: var(--progress-height) var(--progress-height);\n  }\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n  .progress-bar-animated {\n    animation: var(--progress-bar-animation);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar-animated {\n      animation: none;\n    }\n  }\n}\n@layer components {\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n  @keyframes spinner-border {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n  .spinner-border {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-border-width: 0.25em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-border;\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n  .spinner-border-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n  }\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  .spinner-grow {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-grow;\n    background-color: currentcolor;\n    opacity: 0;\n  }\n  .spinner-grow-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      --spinner-animation-speed: 1.5s;\n    }\n  }\n}\n@layer components {\n  .stepper {\n    --stepper-size: 2rem;\n    --stepper-gap: 1rem;\n    --stepper-font-size: var(--font-size-sm);\n    --stepper-text-gap: 0.5rem;\n    --stepper-track-size: 0.125rem;\n    --stepper-bg: var(--bg-2);\n    --stepper-active-color: var(--primary-contrast);\n    --stepper-active-bg: var(--primary-bg);\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\n  }\n  .stepper-item {\n    position: relative;\n    display: grid;\n    grid-template-rows: auto;\n    grid-template-columns: var(--stepper-size) auto;\n    gap: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, center);\n    text-decoration: none;\n  }\n  .stepper-item::before {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--stepper-size);\n    height: var(--stepper-size);\n    padding: 0.5rem;\n    font-size: var(--stepper-font-size);\n    font-weight: 600;\n    line-height: 1;\n    text-align: center;\n    content: counter(stepper);\n    counter-increment: stepper;\n    background-color: var(--stepper-bg);\n    border-radius: 50%;\n  }\n  .stepper-item::after {\n    position: absolute;\n    inset-block-start: 50%;\n    inset-block-end: 100%;\n    inset-inline-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    width: var(--stepper-track-size);\n    height: calc(100% + var(--stepper-gap));\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n  .stepper-item:last-child::after {\n    display: none;\n  }\n  .stepper-item.active::before, .stepper-item.active::after {\n    color: var(--theme-contrast, var(--stepper-active-color));\n    background-color: var(--theme-bg, var(--stepper-active-bg));\n  }\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n  .stepper-horizontal {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal .stepper-item {\n    grid-template-rows: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n  }\n  .stepper-horizontal .stepper-item::after {\n    inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    inset-block-end: auto;\n    inset-inline-start: 50%;\n    inset-inline-end: 100%;\n    width: calc(100% + var(--stepper-gap));\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal .stepper-item:last-child::after {\n    right: 100%;\n  }\n  @container (width >= 576px) {\n    .sm\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .sm\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .sm\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .sm\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .md\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .md\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .md\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .lg\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .lg\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .lg\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  .stepper-overflow {\n    container-type: inline-size;\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n  }\n  .stepper-overflow > .stepper {\n    width: max-content;\n    min-width: 100%;\n  }\n}\n@layer components {\n  .toast {\n    --toast-zindex: 1090;\n    --toast-padding-x: 1rem;\n    --toast-padding-y: 0.75rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: var(--font-size-sm);\n    --toast-bg: var(--bg-body);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: var(--bg-1);\n    --toast-header-border-color: var(--border-color-translucent);\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius, var(--radius-7));\n  }\n  .toast.showing {\n    opacity: 0;\n  }\n  .toast:not(.show) {\n    display: none;\n  }\n  .toast-container {\n    --toast-zindex: 1090;\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n  }\n  .toast-container > :not(:last-child) {\n    margin-bottom: var(--toast-spacing);\n  }\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: calc(0.5 * var(--toast-padding-x));\n    margin-inline-end: calc(-0.25 * var(--toast-padding-x));\n    color: inherit;\n  }\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: var(--spacer-3);\n    --tooltip-padding-y: calc(var(--spacer) * 0.375);\n    --tooltip-font-size: var(--font-size-sm);\n    --tooltip-color: var(--bg-body);\n    --tooltip-bg: var(--fg-body);\n    --tooltip-border-radius: var(--radius-5);\n    --tooltip-opacity: 0.95;\n    --tooltip-arrow-width: 0.8rem;\n    --tooltip-arrow-height: 0.4rem;\n    z-index: var(--tooltip-zindex);\n    display: block;\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--tooltip-font-size);\n    word-wrap: break-word;\n    opacity: 0;\n  }\n  .tooltip.show {\n    opacity: var(--tooltip-opacity);\n  }\n  .tooltip .tooltip-arrow {\n    display: block;\n    width: var(--tooltip-arrow-width);\n    height: var(--tooltip-arrow-height);\n  }\n  .tooltip .tooltip-arrow::before {\n    position: absolute;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n  }\n  .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow::before {\n    top: -1px;\n    border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-block-start-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow::before {\n    right: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-inline-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow::before {\n    bottom: -1px;\n    border-width: 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-block-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow::before {\n    left: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-inline-start-color: var(--tooltip-bg);\n  }\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n}\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sm\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sm\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .md\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .lg\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .\\32 xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .sm\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .sm\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-fg: var(--primary-fg);\n    --theme-fg-emphasis: var(--primary-fg-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-fg: var(--accent-fg);\n    --theme-fg-emphasis: var(--accent-fg-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-fg: var(--success-fg);\n    --theme-fg-emphasis: var(--success-fg-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-fg: var(--danger-fg);\n    --theme-fg-emphasis: var(--danger-fg-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-fg: var(--warning-fg);\n    --theme-fg-emphasis: var(--warning-fg-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-fg: var(--info-fg);\n    --theme-fg-emphasis: var(--info-fg-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-fg: var(--inverse-fg);\n    --theme-fg-emphasis: var(--inverse-fg-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-fg: var(--secondary-fg);\n    --theme-fg-emphasis: var(--secondary-fg-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus, :focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus, :focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus, :focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .contains-inline {\n    container-type: inline-size;\n  }\n  .contains-size {\n    container-type: size;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-xs {\n    box-shadow: var(--box-shadow-xs);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    inset-inline-start: 0;\n  }\n  .start-50 {\n    inset-inline-start: 50%;\n  }\n  .start-100 {\n    inset-inline-start: 100%;\n  }\n  .end-0 {\n    inset-inline-end: 0;\n  }\n  .end-50 {\n    inset-inline-end: 50%;\n  }\n  .end-100 {\n    inset-inline-end: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-y {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-y-0 {\n    border-block: 0;\n  }\n  .border-x {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-x-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--primary-bg);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--accent-bg);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--success-bg);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--danger-bg);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--warning-bg);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--info-bg);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: var(--inverse-bg);\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: var(--secondary-bg);\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--border-bg);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: var(--border-body);\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: var(--border-muted);\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: var(--border-subtle);\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: var(--border-emphasized);\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--border-white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--border-black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: var(--primary-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: var(--accent-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: var(--success-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: var(--danger-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: var(--warning-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: var(--info-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: var(--inverse-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: var(--secondary-border);\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: start;\n  }\n  .justify-self-end {\n    justify-self: end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-1 {\n    grid-template-columns: 1fr;\n  }\n  .grid-cols-2 {\n    grid-template-columns: repeat(2, 1fr);\n  }\n  .grid-cols-3 {\n    grid-template-columns: repeat(3, 1fr);\n  }\n  .grid-cols-4 {\n    grid-template-columns: repeat(4, 1fr);\n  }\n  .grid-cols-6 {\n    grid-template-columns: repeat(6, 1fr);\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 0.75rem;\n  }\n  .m-4 {\n    margin: 1rem;\n  }\n  .m-5 {\n    margin: 1.25rem;\n  }\n  .m-6 {\n    margin: 1.5rem;\n  }\n  .m-7 {\n    margin: 2rem;\n  }\n  .m-8 {\n    margin: 2.5rem;\n  }\n  .m-9 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 0.75rem;\n  }\n  .mx-4 {\n    margin-inline: 1rem;\n  }\n  .mx-5 {\n    margin-inline: 1.25rem;\n  }\n  .mx-6 {\n    margin-inline: 1.5rem;\n  }\n  .mx-7 {\n    margin-inline: 2rem;\n  }\n  .mx-8 {\n    margin-inline: 2.5rem;\n  }\n  .mx-9 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 0.75rem;\n  }\n  .my-4 {\n    margin-block: 1rem;\n  }\n  .my-5 {\n    margin-block: 1.25rem;\n  }\n  .my-6 {\n    margin-block: 1.5rem;\n  }\n  .my-7 {\n    margin-block: 2rem;\n  }\n  .my-8 {\n    margin-block: 2.5rem;\n  }\n  .my-9 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 0.75rem;\n  }\n  .mt-4 {\n    margin-block-start: 1rem;\n  }\n  .mt-5 {\n    margin-block-start: 1.25rem;\n  }\n  .mt-6 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-7 {\n    margin-block-start: 2rem;\n  }\n  .mt-8 {\n    margin-block-start: 2.5rem;\n  }\n  .mt-9 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 0.75rem;\n  }\n  .me-4 {\n    margin-inline-end: 1rem;\n  }\n  .me-5 {\n    margin-inline-end: 1.25rem;\n  }\n  .me-6 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-7 {\n    margin-inline-end: 2rem;\n  }\n  .me-8 {\n    margin-inline-end: 2.5rem;\n  }\n  .me-9 {\n    margin-inline-end: 3rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 0.75rem;\n  }\n  .mb-4 {\n    margin-block-end: 1rem;\n  }\n  .mb-5 {\n    margin-block-end: 1.25rem;\n  }\n  .mb-6 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-7 {\n    margin-block-end: 2rem;\n  }\n  .mb-8 {\n    margin-block-end: 2.5rem;\n  }\n  .mb-9 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 0.75rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1rem;\n  }\n  .ms-5 {\n    margin-inline-start: 1.25rem;\n  }\n  .ms-6 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-7 {\n    margin-inline-start: 2rem;\n  }\n  .ms-8 {\n    margin-inline-start: 2.5rem;\n  }\n  .ms-9 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 0.75rem;\n  }\n  .p-4 {\n    padding: 1rem;\n  }\n  .p-5 {\n    padding: 1.25rem;\n  }\n  .p-6 {\n    padding: 1.5rem;\n  }\n  .p-7 {\n    padding: 2rem;\n  }\n  .p-8 {\n    padding: 2.5rem;\n  }\n  .p-9 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 0.75rem;\n  }\n  .px-4 {\n    padding-inline: 1rem;\n  }\n  .px-5 {\n    padding-inline: 1.25rem;\n  }\n  .px-6 {\n    padding-inline: 1.5rem;\n  }\n  .px-7 {\n    padding-inline: 2rem;\n  }\n  .px-8 {\n    padding-inline: 2.5rem;\n  }\n  .px-9 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 0.75rem;\n  }\n  .py-4 {\n    padding-block: 1rem;\n  }\n  .py-5 {\n    padding-block: 1.25rem;\n  }\n  .py-6 {\n    padding-block: 1.5rem;\n  }\n  .py-7 {\n    padding-block: 2rem;\n  }\n  .py-8 {\n    padding-block: 2.5rem;\n  }\n  .py-9 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 0.75rem;\n  }\n  .pt-4 {\n    padding-block-start: 1rem;\n  }\n  .pt-5 {\n    padding-block-start: 1.25rem;\n  }\n  .pt-6 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-7 {\n    padding-block-start: 2rem;\n  }\n  .pt-8 {\n    padding-block-start: 2.5rem;\n  }\n  .pt-9 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 0.75rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1rem;\n  }\n  .pe-5 {\n    padding-inline-end: 1.25rem;\n  }\n  .pe-6 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-7 {\n    padding-inline-end: 2rem;\n  }\n  .pe-8 {\n    padding-inline-end: 2.5rem;\n  }\n  .pe-9 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 0.75rem;\n  }\n  .pb-4 {\n    padding-block-end: 1rem;\n  }\n  .pb-5 {\n    padding-block-end: 1.25rem;\n  }\n  .pb-6 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-7 {\n    padding-block-end: 2rem;\n  }\n  .pb-8 {\n    padding-block-end: 2.5rem;\n  }\n  .pb-9 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 0.75rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1rem;\n  }\n  .ps-5 {\n    padding-inline-start: 1.25rem;\n  }\n  .ps-6 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-7 {\n    padding-inline-start: 2rem;\n  }\n  .ps-8 {\n    padding-inline-start: 2.5rem;\n  }\n  .ps-9 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 0.75rem;\n  }\n  .gap-4 {\n    gap: 1rem;\n  }\n  .gap-5 {\n    gap: 1.25rem;\n  }\n  .gap-6 {\n    gap: 1.5rem;\n  }\n  .gap-7 {\n    gap: 2rem;\n  }\n  .gap-8 {\n    gap: 2.5rem;\n  }\n  .gap-9 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 0.75rem;\n  }\n  .row-gap-4 {\n    row-gap: 1rem;\n  }\n  .row-gap-5 {\n    row-gap: 1.25rem;\n  }\n  .row-gap-6 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-7 {\n    row-gap: 2rem;\n  }\n  .row-gap-8 {\n    row-gap: 2.5rem;\n  }\n  .row-gap-9 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 0.75rem;\n  }\n  .column-gap-4 {\n    column-gap: 1rem;\n  }\n  .column-gap-5 {\n    column-gap: 1.25rem;\n  }\n  .column-gap-6 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-7 {\n    column-gap: 2rem;\n  }\n  .column-gap-8 {\n    column-gap: 2.5rem;\n  }\n  .column-gap-9 {\n    column-gap: 3rem;\n  }\n  :where(.space-x-0 > :not(:last-child)) {\n    margin-inline-end: 0;\n  }\n  :where(.space-x-1 > :not(:last-child)) {\n    margin-inline-end: 0.25rem;\n  }\n  :where(.space-x-2 > :not(:last-child)) {\n    margin-inline-end: 0.5rem;\n  }\n  :where(.space-x-3 > :not(:last-child)) {\n    margin-inline-end: 0.75rem;\n  }\n  :where(.space-x-4 > :not(:last-child)) {\n    margin-inline-end: 1rem;\n  }\n  :where(.space-x-5 > :not(:last-child)) {\n    margin-inline-end: 1.25rem;\n  }\n  :where(.space-x-6 > :not(:last-child)) {\n    margin-inline-end: 1.5rem;\n  }\n  :where(.space-x-7 > :not(:last-child)) {\n    margin-inline-end: 2rem;\n  }\n  :where(.space-x-8 > :not(:last-child)) {\n    margin-inline-end: 2.5rem;\n  }\n  :where(.space-x-9 > :not(:last-child)) {\n    margin-inline-end: 3rem;\n  }\n  :where(.space-y-0 > :not(:last-child)) {\n    margin-block-end: 0;\n  }\n  :where(.space-y-1 > :not(:last-child)) {\n    margin-block-end: 0.25rem;\n  }\n  :where(.space-y-2 > :not(:last-child)) {\n    margin-block-end: 0.5rem;\n  }\n  :where(.space-y-3 > :not(:last-child)) {\n    margin-block-end: 0.75rem;\n  }\n  :where(.space-y-4 > :not(:last-child)) {\n    margin-block-end: 1rem;\n  }\n  :where(.space-y-5 > :not(:last-child)) {\n    margin-block-end: 1.25rem;\n  }\n  :where(.space-y-6 > :not(:last-child)) {\n    margin-block-end: 1.5rem;\n  }\n  :where(.space-y-7 > :not(:last-child)) {\n    margin-block-end: 2rem;\n  }\n  :where(.space-y-8 > :not(:last-child)) {\n    margin-block-end: 2.5rem;\n  }\n  :where(.space-y-9 > :not(:last-child)) {\n    margin-block-end: 3rem;\n  }\n  :where(.divide-x > :not(:first-child)) {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-x-0 > :not(:first-child)) {\n    border-inline-start: 0;\n  }\n  :where(.divide-y > :not(:first-child)) {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-y-0 > :not(:first-child)) {\n    border-block-start: 0;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: 0.75rem;\n  }\n  .fs-sm {\n    font-size: 0.875rem;\n  }\n  .fs-md {\n    font-size: 1rem;\n  }\n  .fs-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  }\n  .fs-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  }\n  .fs-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  }\n  .fs-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  }\n  .fs-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  }\n  .fs-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n  }\n  .fs-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  }\n  .text-xs {\n    font-size: 0.75rem;\n    line-height: 1.25;\n  }\n  .text-sm {\n    font-size: 0.875rem;\n    line-height: 1.5;\n  }\n  .text-md {\n    font-size: 1rem;\n    line-height: 1.5;\n  }\n  .text-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n    line-height: 1.5;\n  }\n  .text-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n    line-height: 1.4285714286;\n  }\n  .text-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n    line-height: 1.3333333333;\n  }\n  .text-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n    line-height: 1.2;\n  }\n  .text-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n    line-height: 1.1;\n  }\n  .text-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n    line-height: 1.1;\n  }\n  .text-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n    line-height: 1;\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    text-wrap: wrap;\n  }\n  .text-nowrap {\n    text-wrap: nowrap;\n  }\n  .text-balance {\n    text-wrap: balance;\n  }\n  .text-pretty {\n    text-wrap: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: var(--primary-fg);\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: var(--accent-fg);\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: var(--success-fg);\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: var(--danger-fg);\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: var(--warning-fg);\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: var(--info-fg);\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: var(--inverse-fg);\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: var(--secondary-fg);\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: var(--fg-body);\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: var(--fg-1);\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: var(--fg-2);\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: var(--fg-3);\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: var(--fg-4);\n    color: var(--fg);\n  }\n  .fg-bg {\n    --fg: var(--fg-bg);\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--fg-white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--fg-black);\n    color: var(--fg);\n  }\n  .fg-reset {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: var(--primary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: var(--accent-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: var(--success-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: var(--danger-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: var(--warning-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: var(--info-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: var(--inverse-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: var(--secondary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--primary-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--accent-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--success-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--danger-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--warning-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--info-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: var(--inverse-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: var(--secondary-contrast);\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .hover\\:link-10:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .hover\\:link-20:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .hover\\:link-30:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .hover\\:link-40:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .hover\\:link-50:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .hover\\:link-60:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .hover\\:link-70:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .hover\\:link-80:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .hover\\:link-90:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .hover\\:link-100:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .hover\\:underline-offset-1:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .hover\\:underline-offset-2:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .hover\\:underline-offset-3:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .hover\\:underline-10:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .hover\\:underline-20:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .hover\\:underline-30:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .hover\\:underline-40:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .hover\\:underline-50:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .hover\\:underline-60:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .hover\\:underline-70:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .hover\\:underline-80:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .hover\\:underline-90:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .hover\\:underline-100:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .hover\\:underline-thickness-1:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .hover\\:underline-thickness-2:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .hover\\:underline-thickness-3:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .hover\\:underline-thickness-4:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .hover\\:underline-thickness-5:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--primary-bg);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--accent-bg);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--success-bg);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--danger-bg);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--warning-bg);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--info-bg);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: var(--inverse-bg);\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: var(--secondary-bg);\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: var(--bg-body);\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: var(--bg-1);\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: var(--bg-2);\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: var(--bg-3);\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: var(--bg-4);\n    background-color: var(--bg);\n  }\n  .bg-fg {\n    --bg: var(--bg-fg);\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--bg-white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--bg-black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: var(--bg-transparent);\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: var(--primary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: var(--accent-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: var(--success-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: var(--danger-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: var(--warning-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: var(--info-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: var(--inverse-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: var(--secondary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: var(--primary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: var(--accent-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: var(--success-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: var(--danger-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: var(--warning-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: var(--info-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: var(--inverse-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: var(--secondary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-fg);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-fg-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-text {\n    user-select: text;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded-0 {\n    --rounded-size: 0;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-1 {\n    --rounded-size: 0.125rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-2 {\n    --rounded-size: 0.1875rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-3 {\n    --rounded-size: 0.25rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-4 {\n    --rounded-size: 0.375rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-5 {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-6 {\n    --rounded-size: 0.625rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-7 {\n    --rounded-size: 0.75rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-8 {\n    --rounded-size: 1rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-9 {\n    --rounded-size: 1.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-circle {\n    --rounded-size: 50%;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-pill {\n    --rounded-size: var(--radius-pill);\n    border-radius: var(--rounded-size);\n  }\n  .rounded-size-0 {\n    --rounded-size: 0;\n  }\n  .rounded-size-1 {\n    --rounded-size: 0.125rem;\n  }\n  .rounded-size-2 {\n    --rounded-size: 0.1875rem;\n  }\n  .rounded-size-3 {\n    --rounded-size: 0.25rem;\n  }\n  .rounded-size-4 {\n    --rounded-size: 0.375rem;\n  }\n  .rounded-size-5 {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-6 {\n    --rounded-size: 0.625rem;\n  }\n  .rounded-size-7 {\n    --rounded-size: 0.75rem;\n  }\n  .rounded-size-8 {\n    --rounded-size: 1rem;\n  }\n  .rounded-size-9 {\n    --rounded-size: 1.5rem;\n  }\n  .rounded-size {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-circle {\n    --rounded-size: 50%;\n  }\n  .rounded-size-pill {\n    --rounded-size: var(--radius-pill);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: 0.125rem;\n    border-start-end-radius: 0.125rem;\n  }\n  .rounded-top-2 {\n    border-start-start-radius: 0.1875rem;\n    border-start-end-radius: 0.1875rem;\n  }\n  .rounded-top-3 {\n    border-start-start-radius: 0.25rem;\n    border-start-end-radius: 0.25rem;\n  }\n  .rounded-top-4 {\n    border-start-start-radius: 0.375rem;\n    border-start-end-radius: 0.375rem;\n  }\n  .rounded-top-5 {\n    border-start-start-radius: 0.5rem;\n    border-start-end-radius: 0.5rem;\n  }\n  .rounded-top-6 {\n    border-start-start-radius: 0.625rem;\n    border-start-end-radius: 0.625rem;\n  }\n  .rounded-top-7 {\n    border-start-start-radius: 0.75rem;\n    border-start-end-radius: 0.75rem;\n  }\n  .rounded-top-8 {\n    border-start-start-radius: 1rem;\n    border-start-end-radius: 1rem;\n  }\n  .rounded-top-9 {\n    border-start-start-radius: 1.5rem;\n    border-start-end-radius: 1.5rem;\n  }\n  .rounded-top {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-start-end-radius: var(--radius-pill);\n  }\n  .rounded-end-0 {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-end-1 {\n    border-start-end-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-end-2 {\n    border-start-end-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-end-3 {\n    border-start-end-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-end-4 {\n    border-start-end-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-end-5 {\n    border-start-end-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-end-6 {\n    border-start-end-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-end-7 {\n    border-start-end-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-end-8 {\n    border-start-end-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-end-9 {\n    border-start-end-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-end {\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-end-circle {\n    border-start-end-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-start-end-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-bottom-0 {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-start-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-bottom-2 {\n    border-end-start-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-bottom-3 {\n    border-end-start-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-bottom-4 {\n    border-end-start-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-bottom-5 {\n    border-end-start-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-bottom-6 {\n    border-end-start-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-bottom-7 {\n    border-end-start-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-bottom-8 {\n    border-end-start-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-bottom-9 {\n    border-end-start-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-bottom {\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-bottom-circle {\n    border-end-start-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-start-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: 0.125rem;\n    border-end-start-radius: 0.125rem;\n  }\n  .rounded-start-2 {\n    border-start-start-radius: 0.1875rem;\n    border-end-start-radius: 0.1875rem;\n  }\n  .rounded-start-3 {\n    border-start-start-radius: 0.25rem;\n    border-end-start-radius: 0.25rem;\n  }\n  .rounded-start-4 {\n    border-start-start-radius: 0.375rem;\n    border-end-start-radius: 0.375rem;\n  }\n  .rounded-start-5 {\n    border-start-start-radius: 0.5rem;\n    border-end-start-radius: 0.5rem;\n  }\n  .rounded-start-6 {\n    border-start-start-radius: 0.625rem;\n    border-end-start-radius: 0.625rem;\n  }\n  .rounded-start-7 {\n    border-start-start-radius: 0.75rem;\n    border-end-start-radius: 0.75rem;\n  }\n  .rounded-start-8 {\n    border-start-start-radius: 1rem;\n    border-end-start-radius: 1rem;\n  }\n  .rounded-start-9 {\n    border-start-start-radius: 1.5rem;\n    border-end-start-radius: 1.5rem;\n  }\n  .rounded-start {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-end-start-radius: var(--radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .sm\\:float-start {\n      float: inline-start;\n    }\n    .sm\\:float-end {\n      float: inline-end;\n    }\n    .sm\\:float-none {\n      float: none;\n    }\n    .sm\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .sm\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .sm\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .sm\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .sm\\:object-fit-none {\n      object-fit: none;\n    }\n    .sm\\:d-inline {\n      display: inline;\n    }\n    .sm\\:d-inline-block {\n      display: inline-block;\n    }\n    .sm\\:d-block {\n      display: block;\n    }\n    .sm\\:d-grid {\n      display: grid;\n    }\n    .sm\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .sm\\:d-table {\n      display: table;\n    }\n    .sm\\:d-table-row {\n      display: table-row;\n    }\n    .sm\\:d-table-cell {\n      display: table-cell;\n    }\n    .sm\\:d-flex {\n      display: flex;\n    }\n    .sm\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .sm\\:d-contents {\n      display: contents;\n    }\n    .sm\\:d-flow-root {\n      display: flow-root;\n    }\n    .sm\\:d-none {\n      display: none;\n    }\n    .sm\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .sm\\:flex-row {\n      flex-direction: row;\n    }\n    .sm\\:flex-column {\n      flex-direction: column;\n    }\n    .sm\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .sm\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .sm\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .sm\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .sm\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .sm\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .sm\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .sm\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .sm\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .sm\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .sm\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .sm\\:justify-content-center {\n      justify-content: center;\n    }\n    .sm\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .sm\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .sm\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .sm\\:justify-items-start {\n      justify-items: start;\n    }\n    .sm\\:justify-items-end {\n      justify-items: end;\n    }\n    .sm\\:justify-items-center {\n      justify-items: center;\n    }\n    .sm\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .sm\\:justify-self-start {\n      justify-self: start;\n    }\n    .sm\\:justify-self-end {\n      justify-self: end;\n    }\n    .sm\\:justify-self-center {\n      justify-self: center;\n    }\n    .sm\\:align-items-start {\n      align-items: flex-start;\n    }\n    .sm\\:align-items-end {\n      align-items: flex-end;\n    }\n    .sm\\:align-items-center {\n      align-items: center;\n    }\n    .sm\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .sm\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .sm\\:align-content-start {\n      align-content: flex-start;\n    }\n    .sm\\:align-content-end {\n      align-content: flex-end;\n    }\n    .sm\\:align-content-center {\n      align-content: center;\n    }\n    .sm\\:align-content-between {\n      align-content: space-between;\n    }\n    .sm\\:align-content-around {\n      align-content: space-around;\n    }\n    .sm\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .sm\\:align-self-auto {\n      align-self: auto;\n    }\n    .sm\\:align-self-start {\n      align-self: flex-start;\n    }\n    .sm\\:align-self-end {\n      align-self: flex-end;\n    }\n    .sm\\:align-self-center {\n      align-self: center;\n    }\n    .sm\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .sm\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .sm\\:place-items-start {\n      place-items: start;\n    }\n    .sm\\:place-items-end {\n      place-items: end;\n    }\n    .sm\\:place-items-center {\n      place-items: center;\n    }\n    .sm\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .sm\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .sm\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .sm\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .sm\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .sm\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .sm\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .sm\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .sm\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .sm\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .sm\\:order-first {\n      order: -1;\n    }\n    .sm\\:order-0 {\n      order: 0;\n    }\n    .sm\\:order-1 {\n      order: 1;\n    }\n    .sm\\:order-2 {\n      order: 2;\n    }\n    .sm\\:order-3 {\n      order: 3;\n    }\n    .sm\\:order-4 {\n      order: 4;\n    }\n    .sm\\:order-5 {\n      order: 5;\n    }\n    .sm\\:order-last {\n      order: 6;\n    }\n    .sm\\:m-0 {\n      margin: 0;\n    }\n    .sm\\:m-1 {\n      margin: 0.25rem;\n    }\n    .sm\\:m-2 {\n      margin: 0.5rem;\n    }\n    .sm\\:m-3 {\n      margin: 0.75rem;\n    }\n    .sm\\:m-4 {\n      margin: 1rem;\n    }\n    .sm\\:m-5 {\n      margin: 1.25rem;\n    }\n    .sm\\:m-6 {\n      margin: 1.5rem;\n    }\n    .sm\\:m-7 {\n      margin: 2rem;\n    }\n    .sm\\:m-8 {\n      margin: 2.5rem;\n    }\n    .sm\\:m-9 {\n      margin: 3rem;\n    }\n    .sm\\:m-auto {\n      margin: auto;\n    }\n    .sm\\:mx-0 {\n      margin-inline: 0;\n    }\n    .sm\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .sm\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .sm\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .sm\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .sm\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .sm\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .sm\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .sm\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .sm\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .sm\\:mx-auto {\n      margin-inline: auto;\n    }\n    .sm\\:my-0 {\n      margin-block: 0;\n    }\n    .sm\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .sm\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .sm\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .sm\\:my-4 {\n      margin-block: 1rem;\n    }\n    .sm\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .sm\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .sm\\:my-7 {\n      margin-block: 2rem;\n    }\n    .sm\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .sm\\:my-9 {\n      margin-block: 3rem;\n    }\n    .sm\\:my-auto {\n      margin-block: auto;\n    }\n    .sm\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .sm\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .sm\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .sm\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .sm\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .sm\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .sm\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .sm\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .sm\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .sm\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .sm\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .sm\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .sm\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .sm\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .sm\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .sm\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .sm\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .sm\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .sm\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .sm\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .sm\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .sm\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .sm\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .sm\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .sm\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .sm\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .sm\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .sm\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .sm\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .sm\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .sm\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .sm\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .sm\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .sm\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .sm\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .sm\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .sm\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .sm\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .sm\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .sm\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .sm\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .sm\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .sm\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .sm\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .sm\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .sm\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .sm\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .sm\\:p-0 {\n      padding: 0;\n    }\n    .sm\\:p-1 {\n      padding: 0.25rem;\n    }\n    .sm\\:p-2 {\n      padding: 0.5rem;\n    }\n    .sm\\:p-3 {\n      padding: 0.75rem;\n    }\n    .sm\\:p-4 {\n      padding: 1rem;\n    }\n    .sm\\:p-5 {\n      padding: 1.25rem;\n    }\n    .sm\\:p-6 {\n      padding: 1.5rem;\n    }\n    .sm\\:p-7 {\n      padding: 2rem;\n    }\n    .sm\\:p-8 {\n      padding: 2.5rem;\n    }\n    .sm\\:p-9 {\n      padding: 3rem;\n    }\n    .sm\\:px-0 {\n      padding-inline: 0;\n    }\n    .sm\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .sm\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .sm\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .sm\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .sm\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .sm\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .sm\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .sm\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .sm\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .sm\\:py-0 {\n      padding-block: 0;\n    }\n    .sm\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .sm\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .sm\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .sm\\:py-4 {\n      padding-block: 1rem;\n    }\n    .sm\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .sm\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .sm\\:py-7 {\n      padding-block: 2rem;\n    }\n    .sm\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .sm\\:py-9 {\n      padding-block: 3rem;\n    }\n    .sm\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .sm\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .sm\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .sm\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .sm\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .sm\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .sm\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .sm\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .sm\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .sm\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .sm\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .sm\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .sm\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .sm\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .sm\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .sm\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .sm\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .sm\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .sm\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .sm\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .sm\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .sm\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .sm\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .sm\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .sm\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .sm\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .sm\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .sm\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .sm\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .sm\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .sm\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .sm\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .sm\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .sm\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .sm\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .sm\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .sm\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .sm\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .sm\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .sm\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .sm\\:gap-0 {\n      gap: 0;\n    }\n    .sm\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .sm\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .sm\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .sm\\:gap-4 {\n      gap: 1rem;\n    }\n    .sm\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .sm\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .sm\\:gap-7 {\n      gap: 2rem;\n    }\n    .sm\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .sm\\:gap-9 {\n      gap: 3rem;\n    }\n    .sm\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .sm\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .sm\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .sm\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .sm\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .sm\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .sm\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .sm\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .sm\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .sm\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .sm\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .sm\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .sm\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .sm\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .sm\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .sm\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .sm\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .sm\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .sm\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .sm\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.sm\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.sm\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.sm\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.sm\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.sm\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.sm\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.sm\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.sm\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.sm\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.sm\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.sm\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.sm\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.sm\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.sm\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.sm\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.sm\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.sm\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.sm\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.sm\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.sm\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.sm\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.sm\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .sm\\:text-start {\n      text-align: start;\n    }\n    .sm\\:text-end {\n      text-align: end;\n    }\n    .sm\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:float-start {\n      float: inline-start;\n    }\n    .md\\:float-end {\n      float: inline-end;\n    }\n    .md\\:float-none {\n      float: none;\n    }\n    .md\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .md\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .md\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .md\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .md\\:object-fit-none {\n      object-fit: none;\n    }\n    .md\\:d-inline {\n      display: inline;\n    }\n    .md\\:d-inline-block {\n      display: inline-block;\n    }\n    .md\\:d-block {\n      display: block;\n    }\n    .md\\:d-grid {\n      display: grid;\n    }\n    .md\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .md\\:d-table {\n      display: table;\n    }\n    .md\\:d-table-row {\n      display: table-row;\n    }\n    .md\\:d-table-cell {\n      display: table-cell;\n    }\n    .md\\:d-flex {\n      display: flex;\n    }\n    .md\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .md\\:d-contents {\n      display: contents;\n    }\n    .md\\:d-flow-root {\n      display: flow-root;\n    }\n    .md\\:d-none {\n      display: none;\n    }\n    .md\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .md\\:flex-row {\n      flex-direction: row;\n    }\n    .md\\:flex-column {\n      flex-direction: column;\n    }\n    .md\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .md\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .md\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .md\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .md\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .md\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .md\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .md\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .md\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .md\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .md\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .md\\:justify-content-center {\n      justify-content: center;\n    }\n    .md\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .md\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .md\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .md\\:justify-items-start {\n      justify-items: start;\n    }\n    .md\\:justify-items-end {\n      justify-items: end;\n    }\n    .md\\:justify-items-center {\n      justify-items: center;\n    }\n    .md\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .md\\:justify-self-start {\n      justify-self: start;\n    }\n    .md\\:justify-self-end {\n      justify-self: end;\n    }\n    .md\\:justify-self-center {\n      justify-self: center;\n    }\n    .md\\:align-items-start {\n      align-items: flex-start;\n    }\n    .md\\:align-items-end {\n      align-items: flex-end;\n    }\n    .md\\:align-items-center {\n      align-items: center;\n    }\n    .md\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .md\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .md\\:align-content-start {\n      align-content: flex-start;\n    }\n    .md\\:align-content-end {\n      align-content: flex-end;\n    }\n    .md\\:align-content-center {\n      align-content: center;\n    }\n    .md\\:align-content-between {\n      align-content: space-between;\n    }\n    .md\\:align-content-around {\n      align-content: space-around;\n    }\n    .md\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .md\\:align-self-auto {\n      align-self: auto;\n    }\n    .md\\:align-self-start {\n      align-self: flex-start;\n    }\n    .md\\:align-self-end {\n      align-self: flex-end;\n    }\n    .md\\:align-self-center {\n      align-self: center;\n    }\n    .md\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .md\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .md\\:place-items-start {\n      place-items: start;\n    }\n    .md\\:place-items-end {\n      place-items: end;\n    }\n    .md\\:place-items-center {\n      place-items: center;\n    }\n    .md\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .md\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .md\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .md\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .md\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .md\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .md\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .md\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .md\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .md\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .md\\:order-first {\n      order: -1;\n    }\n    .md\\:order-0 {\n      order: 0;\n    }\n    .md\\:order-1 {\n      order: 1;\n    }\n    .md\\:order-2 {\n      order: 2;\n    }\n    .md\\:order-3 {\n      order: 3;\n    }\n    .md\\:order-4 {\n      order: 4;\n    }\n    .md\\:order-5 {\n      order: 5;\n    }\n    .md\\:order-last {\n      order: 6;\n    }\n    .md\\:m-0 {\n      margin: 0;\n    }\n    .md\\:m-1 {\n      margin: 0.25rem;\n    }\n    .md\\:m-2 {\n      margin: 0.5rem;\n    }\n    .md\\:m-3 {\n      margin: 0.75rem;\n    }\n    .md\\:m-4 {\n      margin: 1rem;\n    }\n    .md\\:m-5 {\n      margin: 1.25rem;\n    }\n    .md\\:m-6 {\n      margin: 1.5rem;\n    }\n    .md\\:m-7 {\n      margin: 2rem;\n    }\n    .md\\:m-8 {\n      margin: 2.5rem;\n    }\n    .md\\:m-9 {\n      margin: 3rem;\n    }\n    .md\\:m-auto {\n      margin: auto;\n    }\n    .md\\:mx-0 {\n      margin-inline: 0;\n    }\n    .md\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .md\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .md\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .md\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .md\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .md\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .md\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .md\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .md\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .md\\:mx-auto {\n      margin-inline: auto;\n    }\n    .md\\:my-0 {\n      margin-block: 0;\n    }\n    .md\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .md\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .md\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .md\\:my-4 {\n      margin-block: 1rem;\n    }\n    .md\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .md\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .md\\:my-7 {\n      margin-block: 2rem;\n    }\n    .md\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .md\\:my-9 {\n      margin-block: 3rem;\n    }\n    .md\\:my-auto {\n      margin-block: auto;\n    }\n    .md\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .md\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .md\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .md\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .md\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .md\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .md\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .md\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .md\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .md\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .md\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .md\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .md\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .md\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .md\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .md\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .md\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .md\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .md\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .md\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .md\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .md\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .md\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .md\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .md\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .md\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .md\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .md\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .md\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .md\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .md\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .md\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .md\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .md\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .md\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .md\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .md\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .md\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .md\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .md\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .md\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .md\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .md\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .md\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .md\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .md\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .md\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .md\\:p-0 {\n      padding: 0;\n    }\n    .md\\:p-1 {\n      padding: 0.25rem;\n    }\n    .md\\:p-2 {\n      padding: 0.5rem;\n    }\n    .md\\:p-3 {\n      padding: 0.75rem;\n    }\n    .md\\:p-4 {\n      padding: 1rem;\n    }\n    .md\\:p-5 {\n      padding: 1.25rem;\n    }\n    .md\\:p-6 {\n      padding: 1.5rem;\n    }\n    .md\\:p-7 {\n      padding: 2rem;\n    }\n    .md\\:p-8 {\n      padding: 2.5rem;\n    }\n    .md\\:p-9 {\n      padding: 3rem;\n    }\n    .md\\:px-0 {\n      padding-inline: 0;\n    }\n    .md\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .md\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .md\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .md\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .md\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .md\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .md\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .md\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .md\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .md\\:py-0 {\n      padding-block: 0;\n    }\n    .md\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .md\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .md\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .md\\:py-4 {\n      padding-block: 1rem;\n    }\n    .md\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .md\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .md\\:py-7 {\n      padding-block: 2rem;\n    }\n    .md\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .md\\:py-9 {\n      padding-block: 3rem;\n    }\n    .md\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .md\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .md\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .md\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .md\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .md\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .md\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .md\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .md\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .md\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .md\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .md\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .md\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .md\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .md\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .md\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .md\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .md\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .md\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .md\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .md\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .md\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .md\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .md\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .md\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .md\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .md\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .md\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .md\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .md\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .md\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .md\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .md\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .md\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .md\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .md\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .md\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .md\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .md\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .md\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .md\\:gap-0 {\n      gap: 0;\n    }\n    .md\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .md\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .md\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .md\\:gap-4 {\n      gap: 1rem;\n    }\n    .md\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .md\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .md\\:gap-7 {\n      gap: 2rem;\n    }\n    .md\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .md\\:gap-9 {\n      gap: 3rem;\n    }\n    .md\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .md\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .md\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .md\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .md\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .md\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .md\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .md\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .md\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .md\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .md\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .md\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .md\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .md\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .md\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .md\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .md\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .md\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .md\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .md\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.md\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.md\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.md\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.md\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.md\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.md\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.md\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.md\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.md\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.md\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.md\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.md\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.md\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.md\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.md\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.md\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.md\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.md\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.md\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.md\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.md\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.md\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .md\\:text-start {\n      text-align: start;\n    }\n    .md\\:text-end {\n      text-align: end;\n    }\n    .md\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:float-start {\n      float: inline-start;\n    }\n    .lg\\:float-end {\n      float: inline-end;\n    }\n    .lg\\:float-none {\n      float: none;\n    }\n    .lg\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .lg\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .lg\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .lg\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .lg\\:object-fit-none {\n      object-fit: none;\n    }\n    .lg\\:d-inline {\n      display: inline;\n    }\n    .lg\\:d-inline-block {\n      display: inline-block;\n    }\n    .lg\\:d-block {\n      display: block;\n    }\n    .lg\\:d-grid {\n      display: grid;\n    }\n    .lg\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .lg\\:d-table {\n      display: table;\n    }\n    .lg\\:d-table-row {\n      display: table-row;\n    }\n    .lg\\:d-table-cell {\n      display: table-cell;\n    }\n    .lg\\:d-flex {\n      display: flex;\n    }\n    .lg\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .lg\\:d-contents {\n      display: contents;\n    }\n    .lg\\:d-flow-root {\n      display: flow-root;\n    }\n    .lg\\:d-none {\n      display: none;\n    }\n    .lg\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .lg\\:flex-row {\n      flex-direction: row;\n    }\n    .lg\\:flex-column {\n      flex-direction: column;\n    }\n    .lg\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .lg\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .lg\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .lg\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .lg\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .lg\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .lg\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .lg\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .lg\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .lg\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .lg\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .lg\\:justify-content-center {\n      justify-content: center;\n    }\n    .lg\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .lg\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .lg\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .lg\\:justify-items-start {\n      justify-items: start;\n    }\n    .lg\\:justify-items-end {\n      justify-items: end;\n    }\n    .lg\\:justify-items-center {\n      justify-items: center;\n    }\n    .lg\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .lg\\:justify-self-start {\n      justify-self: start;\n    }\n    .lg\\:justify-self-end {\n      justify-self: end;\n    }\n    .lg\\:justify-self-center {\n      justify-self: center;\n    }\n    .lg\\:align-items-start {\n      align-items: flex-start;\n    }\n    .lg\\:align-items-end {\n      align-items: flex-end;\n    }\n    .lg\\:align-items-center {\n      align-items: center;\n    }\n    .lg\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .lg\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .lg\\:align-content-start {\n      align-content: flex-start;\n    }\n    .lg\\:align-content-end {\n      align-content: flex-end;\n    }\n    .lg\\:align-content-center {\n      align-content: center;\n    }\n    .lg\\:align-content-between {\n      align-content: space-between;\n    }\n    .lg\\:align-content-around {\n      align-content: space-around;\n    }\n    .lg\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .lg\\:align-self-auto {\n      align-self: auto;\n    }\n    .lg\\:align-self-start {\n      align-self: flex-start;\n    }\n    .lg\\:align-self-end {\n      align-self: flex-end;\n    }\n    .lg\\:align-self-center {\n      align-self: center;\n    }\n    .lg\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .lg\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .lg\\:place-items-start {\n      place-items: start;\n    }\n    .lg\\:place-items-end {\n      place-items: end;\n    }\n    .lg\\:place-items-center {\n      place-items: center;\n    }\n    .lg\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .lg\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .lg\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .lg\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .lg\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .lg\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .lg\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .lg\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .lg\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .lg\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .lg\\:order-first {\n      order: -1;\n    }\n    .lg\\:order-0 {\n      order: 0;\n    }\n    .lg\\:order-1 {\n      order: 1;\n    }\n    .lg\\:order-2 {\n      order: 2;\n    }\n    .lg\\:order-3 {\n      order: 3;\n    }\n    .lg\\:order-4 {\n      order: 4;\n    }\n    .lg\\:order-5 {\n      order: 5;\n    }\n    .lg\\:order-last {\n      order: 6;\n    }\n    .lg\\:m-0 {\n      margin: 0;\n    }\n    .lg\\:m-1 {\n      margin: 0.25rem;\n    }\n    .lg\\:m-2 {\n      margin: 0.5rem;\n    }\n    .lg\\:m-3 {\n      margin: 0.75rem;\n    }\n    .lg\\:m-4 {\n      margin: 1rem;\n    }\n    .lg\\:m-5 {\n      margin: 1.25rem;\n    }\n    .lg\\:m-6 {\n      margin: 1.5rem;\n    }\n    .lg\\:m-7 {\n      margin: 2rem;\n    }\n    .lg\\:m-8 {\n      margin: 2.5rem;\n    }\n    .lg\\:m-9 {\n      margin: 3rem;\n    }\n    .lg\\:m-auto {\n      margin: auto;\n    }\n    .lg\\:mx-0 {\n      margin-inline: 0;\n    }\n    .lg\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .lg\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .lg\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .lg\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .lg\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .lg\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .lg\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .lg\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .lg\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .lg\\:mx-auto {\n      margin-inline: auto;\n    }\n    .lg\\:my-0 {\n      margin-block: 0;\n    }\n    .lg\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .lg\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .lg\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .lg\\:my-4 {\n      margin-block: 1rem;\n    }\n    .lg\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .lg\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .lg\\:my-7 {\n      margin-block: 2rem;\n    }\n    .lg\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .lg\\:my-9 {\n      margin-block: 3rem;\n    }\n    .lg\\:my-auto {\n      margin-block: auto;\n    }\n    .lg\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .lg\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .lg\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .lg\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .lg\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .lg\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .lg\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .lg\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .lg\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .lg\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .lg\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .lg\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .lg\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .lg\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .lg\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .lg\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .lg\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .lg\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .lg\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .lg\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .lg\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .lg\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .lg\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .lg\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .lg\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .lg\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .lg\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .lg\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .lg\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .lg\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .lg\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .lg\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .lg\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .lg\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .lg\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .lg\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .lg\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .lg\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .lg\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .lg\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .lg\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .lg\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .lg\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .lg\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .lg\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .lg\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .lg\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .lg\\:p-0 {\n      padding: 0;\n    }\n    .lg\\:p-1 {\n      padding: 0.25rem;\n    }\n    .lg\\:p-2 {\n      padding: 0.5rem;\n    }\n    .lg\\:p-3 {\n      padding: 0.75rem;\n    }\n    .lg\\:p-4 {\n      padding: 1rem;\n    }\n    .lg\\:p-5 {\n      padding: 1.25rem;\n    }\n    .lg\\:p-6 {\n      padding: 1.5rem;\n    }\n    .lg\\:p-7 {\n      padding: 2rem;\n    }\n    .lg\\:p-8 {\n      padding: 2.5rem;\n    }\n    .lg\\:p-9 {\n      padding: 3rem;\n    }\n    .lg\\:px-0 {\n      padding-inline: 0;\n    }\n    .lg\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .lg\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .lg\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .lg\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .lg\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .lg\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .lg\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .lg\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .lg\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .lg\\:py-0 {\n      padding-block: 0;\n    }\n    .lg\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .lg\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .lg\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .lg\\:py-4 {\n      padding-block: 1rem;\n    }\n    .lg\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .lg\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .lg\\:py-7 {\n      padding-block: 2rem;\n    }\n    .lg\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .lg\\:py-9 {\n      padding-block: 3rem;\n    }\n    .lg\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .lg\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .lg\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .lg\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .lg\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .lg\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .lg\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .lg\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .lg\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .lg\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .lg\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .lg\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .lg\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .lg\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .lg\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .lg\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .lg\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .lg\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .lg\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .lg\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .lg\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .lg\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .lg\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .lg\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .lg\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .lg\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .lg\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .lg\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .lg\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .lg\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .lg\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .lg\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .lg\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .lg\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .lg\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .lg\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .lg\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .lg\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .lg\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .lg\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .lg\\:gap-0 {\n      gap: 0;\n    }\n    .lg\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .lg\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .lg\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .lg\\:gap-4 {\n      gap: 1rem;\n    }\n    .lg\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .lg\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .lg\\:gap-7 {\n      gap: 2rem;\n    }\n    .lg\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .lg\\:gap-9 {\n      gap: 3rem;\n    }\n    .lg\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .lg\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .lg\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .lg\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .lg\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .lg\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .lg\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .lg\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .lg\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .lg\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .lg\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .lg\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .lg\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .lg\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .lg\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .lg\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .lg\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .lg\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .lg\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .lg\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.lg\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.lg\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.lg\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.lg\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.lg\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.lg\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.lg\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.lg\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.lg\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.lg\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.lg\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.lg\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.lg\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.lg\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.lg\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.lg\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.lg\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.lg\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.lg\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.lg\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.lg\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.lg\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .lg\\:text-start {\n      text-align: start;\n    }\n    .lg\\:text-end {\n      text-align: end;\n    }\n    .lg\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:float-start {\n      float: inline-start;\n    }\n    .xl\\:float-end {\n      float: inline-end;\n    }\n    .xl\\:float-none {\n      float: none;\n    }\n    .xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .xl\\:d-inline {\n      display: inline;\n    }\n    .xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .xl\\:d-block {\n      display: block;\n    }\n    .xl\\:d-grid {\n      display: grid;\n    }\n    .xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .xl\\:d-table {\n      display: table;\n    }\n    .xl\\:d-table-row {\n      display: table-row;\n    }\n    .xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .xl\\:d-flex {\n      display: flex;\n    }\n    .xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .xl\\:d-contents {\n      display: contents;\n    }\n    .xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .xl\\:d-none {\n      display: none;\n    }\n    .xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .xl\\:flex-row {\n      flex-direction: row;\n    }\n    .xl\\:flex-column {\n      flex-direction: column;\n    }\n    .xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .xl\\:align-items-center {\n      align-items: center;\n    }\n    .xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .xl\\:align-content-center {\n      align-content: center;\n    }\n    .xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .xl\\:align-self-center {\n      align-self: center;\n    }\n    .xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .xl\\:place-items-start {\n      place-items: start;\n    }\n    .xl\\:place-items-end {\n      place-items: end;\n    }\n    .xl\\:place-items-center {\n      place-items: center;\n    }\n    .xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .xl\\:order-first {\n      order: -1;\n    }\n    .xl\\:order-0 {\n      order: 0;\n    }\n    .xl\\:order-1 {\n      order: 1;\n    }\n    .xl\\:order-2 {\n      order: 2;\n    }\n    .xl\\:order-3 {\n      order: 3;\n    }\n    .xl\\:order-4 {\n      order: 4;\n    }\n    .xl\\:order-5 {\n      order: 5;\n    }\n    .xl\\:order-last {\n      order: 6;\n    }\n    .xl\\:m-0 {\n      margin: 0;\n    }\n    .xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .xl\\:m-4 {\n      margin: 1rem;\n    }\n    .xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .xl\\:m-7 {\n      margin: 2rem;\n    }\n    .xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .xl\\:m-9 {\n      margin: 3rem;\n    }\n    .xl\\:m-auto {\n      margin: auto;\n    }\n    .xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .xl\\:my-0 {\n      margin-block: 0;\n    }\n    .xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .xl\\:my-auto {\n      margin-block: auto;\n    }\n    .xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .xl\\:p-0 {\n      padding: 0;\n    }\n    .xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .xl\\:p-4 {\n      padding: 1rem;\n    }\n    .xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .xl\\:p-7 {\n      padding: 2rem;\n    }\n    .xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .xl\\:p-9 {\n      padding: 3rem;\n    }\n    .xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .xl\\:py-0 {\n      padding-block: 0;\n    }\n    .xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .xl\\:gap-0 {\n      gap: 0;\n    }\n    .xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .xl\\:text-start {\n      text-align: start;\n    }\n    .xl\\:text-end {\n      text-align: end;\n    }\n    .xl\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:float-start {\n      float: inline-start;\n    }\n    .\\32 xl\\:float-end {\n      float: inline-end;\n    }\n    .\\32 xl\\:float-none {\n      float: none;\n    }\n    .\\32 xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .\\32 xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .\\32 xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .\\32 xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .\\32 xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .\\32 xl\\:d-inline {\n      display: inline;\n    }\n    .\\32 xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .\\32 xl\\:d-block {\n      display: block;\n    }\n    .\\32 xl\\:d-grid {\n      display: grid;\n    }\n    .\\32 xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .\\32 xl\\:d-table {\n      display: table;\n    }\n    .\\32 xl\\:d-table-row {\n      display: table-row;\n    }\n    .\\32 xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .\\32 xl\\:d-flex {\n      display: flex;\n    }\n    .\\32 xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .\\32 xl\\:d-contents {\n      display: contents;\n    }\n    .\\32 xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .\\32 xl\\:d-none {\n      display: none;\n    }\n    .\\32 xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .\\32 xl\\:flex-row {\n      flex-direction: row;\n    }\n    .\\32 xl\\:flex-column {\n      flex-direction: column;\n    }\n    .\\32 xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .\\32 xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .\\32 xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .\\32 xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .\\32 xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .\\32 xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .\\32 xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .\\32 xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .\\32 xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .\\32 xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .\\32 xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .\\32 xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .\\32 xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .\\32 xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .\\32 xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .\\32 xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .\\32 xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .\\32 xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .\\32 xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .\\32 xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .\\32 xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .\\32 xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .\\32 xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .\\32 xl\\:align-items-center {\n      align-items: center;\n    }\n    .\\32 xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .\\32 xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .\\32 xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .\\32 xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .\\32 xl\\:align-content-center {\n      align-content: center;\n    }\n    .\\32 xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .\\32 xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .\\32 xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .\\32 xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .\\32 xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .\\32 xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .\\32 xl\\:align-self-center {\n      align-self: center;\n    }\n    .\\32 xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .\\32 xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .\\32 xl\\:place-items-start {\n      place-items: start;\n    }\n    .\\32 xl\\:place-items-end {\n      place-items: end;\n    }\n    .\\32 xl\\:place-items-center {\n      place-items: center;\n    }\n    .\\32 xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .\\32 xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .\\32 xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .\\32 xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .\\32 xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .\\32 xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .\\32 xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .\\32 xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .\\32 xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .\\32 xl\\:order-first {\n      order: -1;\n    }\n    .\\32 xl\\:order-0 {\n      order: 0;\n    }\n    .\\32 xl\\:order-1 {\n      order: 1;\n    }\n    .\\32 xl\\:order-2 {\n      order: 2;\n    }\n    .\\32 xl\\:order-3 {\n      order: 3;\n    }\n    .\\32 xl\\:order-4 {\n      order: 4;\n    }\n    .\\32 xl\\:order-5 {\n      order: 5;\n    }\n    .\\32 xl\\:order-last {\n      order: 6;\n    }\n    .\\32 xl\\:m-0 {\n      margin: 0;\n    }\n    .\\32 xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .\\32 xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .\\32 xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .\\32 xl\\:m-4 {\n      margin: 1rem;\n    }\n    .\\32 xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .\\32 xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .\\32 xl\\:m-7 {\n      margin: 2rem;\n    }\n    .\\32 xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .\\32 xl\\:m-9 {\n      margin: 3rem;\n    }\n    .\\32 xl\\:m-auto {\n      margin: auto;\n    }\n    .\\32 xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .\\32 xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .\\32 xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .\\32 xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .\\32 xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .\\32 xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .\\32 xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .\\32 xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .\\32 xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .\\32 xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .\\32 xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .\\32 xl\\:my-0 {\n      margin-block: 0;\n    }\n    .\\32 xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .\\32 xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .\\32 xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .\\32 xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .\\32 xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .\\32 xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .\\32 xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .\\32 xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .\\32 xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .\\32 xl\\:my-auto {\n      margin-block: auto;\n    }\n    .\\32 xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .\\32 xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .\\32 xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .\\32 xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .\\32 xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .\\32 xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .\\32 xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .\\32 xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .\\32 xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .\\32 xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .\\32 xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .\\32 xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .\\32 xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .\\32 xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .\\32 xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .\\32 xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .\\32 xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .\\32 xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .\\32 xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .\\32 xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .\\32 xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .\\32 xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .\\32 xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .\\32 xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .\\32 xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .\\32 xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .\\32 xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .\\32 xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .\\32 xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .\\32 xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .\\32 xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .\\32 xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .\\32 xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .\\32 xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .\\32 xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .\\32 xl\\:p-0 {\n      padding: 0;\n    }\n    .\\32 xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .\\32 xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .\\32 xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .\\32 xl\\:p-4 {\n      padding: 1rem;\n    }\n    .\\32 xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .\\32 xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .\\32 xl\\:p-7 {\n      padding: 2rem;\n    }\n    .\\32 xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .\\32 xl\\:p-9 {\n      padding: 3rem;\n    }\n    .\\32 xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .\\32 xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .\\32 xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .\\32 xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .\\32 xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .\\32 xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .\\32 xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .\\32 xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .\\32 xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .\\32 xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .\\32 xl\\:py-0 {\n      padding-block: 0;\n    }\n    .\\32 xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .\\32 xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .\\32 xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .\\32 xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .\\32 xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .\\32 xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .\\32 xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .\\32 xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .\\32 xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .\\32 xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .\\32 xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .\\32 xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .\\32 xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .\\32 xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .\\32 xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .\\32 xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .\\32 xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .\\32 xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .\\32 xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .\\32 xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .\\32 xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .\\32 xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .\\32 xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .\\32 xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .\\32 xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .\\32 xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .\\32 xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .\\32 xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .\\32 xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .\\32 xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .\\32 xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .\\32 xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .\\32 xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .\\32 xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .\\32 xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .\\32 xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .\\32 xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .\\32 xl\\:gap-0 {\n      gap: 0;\n    }\n    .\\32 xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .\\32 xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .\\32 xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .\\32 xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .\\32 xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .\\32 xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .\\32 xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .\\32 xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .\\32 xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .\\32 xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .\\32 xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .\\32 xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .\\32 xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .\\32 xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .\\32 xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .\\32 xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .\\32 xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .\\32 xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .\\32 xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .\\32 xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .\\32 xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .\\32 xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .\\32 xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .\\32 xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .\\32 xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .\\32 xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .\\32 xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .\\32 xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .\\32 xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.\\32 xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.\\32 xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.\\32 xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.\\32 xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.\\32 xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.\\32 xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .\\32 xl\\:text-start {\n      text-align: start;\n    }\n    .\\32 xl\\:text-end {\n      text-align: end;\n    }\n    .\\32 xl\\:text-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-fg)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', monospace;\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(var(--gray-200), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow-xs: 0 .0625rem .1875rem rgb(0 0 0 / 7.5%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--radius-5),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--radius-5),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--radius-5),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--radius-7),\n    // scss-docs-end root-form-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n// Generate spacer tokens\n// scss-docs-start root-spacer-loop\n@each $key, $value in $spacers {\n  $root-tokens: map.set($root-tokens, --spacer-#{$key}, $value);\n}\n// scss-docs-end root-spacer-loop\n\n// Generate radius tokens\n// scss-docs-start root-radius-loop\n@each $key, $value in $radii {\n  $root-tokens: map.set($root-tokens, --radius-#{$key}, $value);\n}\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: map.set($root-tokens, --radius-pill, 50rem);\n// scss-docs-end root-radius-loop\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n  // Always reserve the viewport scrollbar gutter so layout doesn't shift\n  // when overflow: hidden is applied (e.g. when a dialog opens on Windows).\n  scrollbar-gutter: stable;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--radius-5),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Reset iframe color-scheme\n  //\n  // If the color scheme of an iframe differs from parent document, iframe gets\n  // an opaque canvas background appropriate (resulting in a white background\n  // on the iframe when in a page with a dark color scheme).\n  iframe {\n    color-scheme: light dark;\n    border: 0;\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: transparent; // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: var(--font-size-3xl);\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: var(--font-size-2xl);\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: var(--font-size-xl);\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: var(--font-size-lg);\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: var(--font-size-md);\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: var(--font-size-sm);\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-fg-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href], [class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"], [type=\"datetime-local\"], [type=\"month\"], [type=\"week\"], [type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-meridiem-field, // WebKit\n  ::-webkit-datetime-edit-ampm-field, // Chromium\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button,\n  ::-webkit-outer-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            true !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        false !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer * .75,\n  4: $spacer,\n  5: $spacer * 1.25,\n  6: $spacer * 1.5,\n  7: $spacer * 2,\n  8: $spacer * 2.5,\n  9: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: $spacer * 2,\n  3: $spacer * 3,\n  4: $spacer * 4,\n  5: $spacer * 5,\n  6: $spacer * 6,\n  7: $spacer * 7,\n  8: $spacer * 8,\n  9: $spacer * 9,\n  10: $spacer * 10,\n  11: $spacer * 11,\n  12: $spacer * 12,\n) !default;\n\n$radius: .5rem !default;\n$radii: (\n  0: 0,\n  1: $radius * .25,\n  2: $radius * .375,\n  3: $radius * .5,\n  4: $radius * .75,\n  5: $radius,\n  6: $radius * 1.25,\n  7: $radius * 1.5,\n  8: $radius * 2,\n  9: $radius * 3,\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      var(--spacer-2) !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n// $zindex-drawer-backdrop:         1040 !default;\n$zindex-drawer:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--radius-5), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/lists\" as *;\n@use \"../mixins/tokens\" as *;\n\n$blockquote-tokens: () !default;\n\n// scss-docs-start blockquote-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$blockquote-tokens: defaults(\n  (\n    --blockquote-gap: calc(var(--spacer) / 2),\n    --blockquote-padding-x: var(--spacer),\n    --blockquote-margin-y: 1rem,\n    --blockquote-font-size: var(--font-size-md),\n    --blockquote-border-width: .25rem,\n    --blockquote-border-color: var(--border-color),\n    --blockquote-footer-font-size: var(--font-size-sm),\n    --blockquote-footer-color: var(--fg-3),\n  ),\n  $blockquote-tokens\n);\n// scss-docs-end blockquote-tokens\n\n@layer content {\n  //\n  // Lists\n  //\n\n  .list-unstyled {\n    @include list-unstyled();\n  }\n\n  // Inline turns list items into inline-block\n  .list-inline {\n    @include list-unstyled();\n  }\n  .list-inline-item {\n    display: inline-block;\n\n    &:not(:last-child) {\n      margin-inline-end: var(--list-inline-padding, var(--spacer) / 2);\n    }\n  }\n\n  //\n  // Misc\n  //\n\n  // Builds on `abbr`\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n\n  // Blockquotes\n  .blockquote {\n    @include tokens($blockquote-tokens);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n\n    > * {\n      margin-bottom: 0;\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  figure.blockquote {\n    blockquote {\n      margin-bottom: 0;\n    }\n  }\n\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n\n    &::before {\n      content: \"\\2014\\00A0\"; // em dash, nbsp\n    }\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-inline-start: 0;\n  list-style-type: \"\";\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$table-tokens: () !default;\n\n// scss-docs-start table-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$table-tokens: defaults(\n  (\n    --table-cell-padding-y: .5rem,\n    --table-cell-padding-x: .5rem,\n    --table-cell-vertical-align: top,\n    --table-color: var(--fg-body),\n    --table-bg: var(--bg-body),\n    --table-accent-bg: transparent,\n    --table-border-width: var(--border-width),\n    --table-border-color: var(--border-color),\n    --table-group-separator-color: currentcolor,\n    --table-striped-color: var(--table-color),\n    --table-striped-bg-factor: 5%,\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent),\n    --table-active-color: var(--table-color),\n    --table-active-bg-factor: 10%,\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent),\n    --table-hover-color: var(--table-color),\n    --table-hover-bg-factor: 7.5%,\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent),\n  ),\n  $table-tokens\n);\n// scss-docs-end table-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n//\n// Basic Bootstrap table\n//\n\n@layer content {\n  .table {\n    @include tokens($table-tokens);\n\n    // Reset needed for nesting tables\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    // End of reset\n\n    width: 100%;\n    margin-bottom: var(--spacer);\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n\n    // Target th & td\n    // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n    // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n    // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n      // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb\n      color: var(--table-color-state, var(--table-color-type, var(--theme-fg, var(--table-color))));\n      background-color: var(--theme-bg-subtle, var(--table-bg));\n      border-block-end-width: var(--table-border-width);\n      box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n    }\n\n    > tbody {\n      vertical-align: inherit;\n    }\n\n    > thead {\n      vertical-align: bottom;\n    }\n  }\n\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n\n  //\n  // Change placement of captions with a class\n  //\n\n  .caption-top {\n    caption-side: top;\n  }\n\n  //\n  // Condensed table w/ half padding\n  //\n\n  .table-sm {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      --table-cell-padding-y: .25rem;\n      --table-cell-padding-x: .25rem;\n    }\n  }\n\n  // Border versions\n  //\n  // Add or remove borders all around the table and between all the columns.\n  //\n  // When borders are added on all sides of the cells, the corners can render odd when\n  // these borders do not have the same color or if they are semi-transparent.\n  // Therefore we add top and border bottoms to the `tr`s and left and right borders\n  // to the `td`s or `th`s\n\n  .table-bordered {\n    > :not(caption) > * {\n      border-width: var(--table-border-width) 0;\n\n      // stylelint-disable-next-line selector-max-universal\n      > * {\n        border-width: 0 var(--table-border-width);\n      }\n    }\n  }\n\n  .table-borderless {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      border-block-end-width: 0;\n    }\n\n    > :not(:first-child) {\n      border-block-start-width: 0;\n    }\n  }\n\n  // Zebra-striping\n  //\n  // Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n  // For rows\n  .table-striped {\n    > tbody > tr:nth-of-type(#{$table-striped-order}) > * {\n      --table-color-type: var(--theme-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // For columns\n  .table-striped-columns {\n    > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {\n      --table-color-type: var(--theme-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // Active table\n  //\n  // The `.table-active` class can be added to highlight rows or cells\n\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n\n  // Hover effect\n  //\n  // Placed here since it has to come after the potential zebra striping\n\n  .table-hover {\n    > tbody > tr:hover > * {\n      --table-color-state: var(--theme-fg, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate `.table-responsive` classes that act as container query contexts\n  // and enable horizontal scrolling when table content overflows.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    .#{$prefix}table-responsive {\n      container-type: inline-size;\n\n      @include media-breakpoint-down($breakpoint) {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n\n  // Stacked tables\n  //\n  // Generate `.table-stacked` classes that convert table rows into stacked\n  // blocks using container queries. Requires a `.table-responsive` ancestor\n  // and `data-cell` attributes on `<td>` elements for column labels.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include container-breakpoint-down($breakpoint) {\n      .#{$prefix}table-stacked {\n        > thead {\n          position: absolute;\n          width: 1px;\n          height: 1px;\n          padding: 0;\n          margin: -1px;\n          overflow: hidden;\n          clip: rect(0, 0, 0, 0);\n          white-space: nowrap;\n          border: 0;\n        }\n\n        > tbody > tr {\n          display: block;\n          padding-block: var(--table-cell-padding-y);\n\n          + tr {\n            border-block-start: var(--table-border-width) solid var(--table-border-color);\n          }\n\n          > td {\n            display: block;\n            padding: calc(var(--table-cell-padding-y) * .25) calc(var(--table-cell-padding-x) * 2);\n            border: 0;\n\n            &:first-child {\n              font-weight: var(--font-weight-bold);\n            }\n\n            // + td::before {\n            //   margin-block-start: .25rem;\n            // }\n\n            &[data-cell]:not(:first-child)::before {\n              display: block;\n              font-weight: var(--font-weight-semibold);\n              content: attr(data-cell);\n            }\n          }\n\n          > td:not(:first-child) + td::before {\n            margin-block-start: .25rem;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:string\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Escape a name for use at the start of a CSS identifier.\n// Leading digits are hex-escaped (e.g., 2xl becomes \\32 xl).\n@function css-escape-ident($name) {\n  $name-str: \"#{$name}\";\n  $digits: \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\";\n  $first: string.slice($name-str, 1, 1);\n\n  @if list.index($digits, $first) {\n    @return \"\\\\3#{$first} #{string.slice($name-str, 2)}\";\n  }\n\n  @return $name-str;\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name\n// with an escaped colon as a Tailwind-style prefix for responsive class names.\n// Leading digits are CSS-escaped (e.g., 2xl becomes \\32 xl) for valid identifiers.\n//\n//    >> breakpoint-prefix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-prefix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"sm\\:\"\n//    >> breakpoint-prefix(2xl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\\32 xl\\:\"\n@function breakpoint-prefix($name, $breakpoints: $breakpoints) {\n  @if breakpoint-min($name, $breakpoints) == null {\n    @return \"\";\n  }\n\n  @return \"#{css-escape-ident($name)}\\\\:\";\n}\n\n// Iterate all breakpoints and provide the current name and prefix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n    @content($breakpoint, $prefix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next prefix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $prefix: breakpoint-prefix($next, $breakpoints);\n    @content($breakpoint, $next, $prefix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $prefix) {\n    @content($breakpoint, $next, $prefix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/image\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/tokens\" as *;\n\n$thumbnail-tokens: () !default;\n\n// scss-docs-start thumbnail-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$thumbnail-tokens: defaults(\n  (\n    --thumbnail-padding: .25rem,\n    --thumbnail-bg: var(--bg-body),\n    --thumbnail-border-width: var(--border-width),\n    --thumbnail-border-color: var(--border-color),\n    --thumbnail-border-radius: var(--radius-5),\n    --thumbnail-box-shadow: var(--box-shadow-sm),\n  ),\n  $thumbnail-tokens\n);\n// scss-docs-end thumbnail-tokens\n\n$figure-tokens: () !default;\n\n// scss-docs-start figure-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$figure-tokens: defaults(\n  (\n    --figure-gap: calc(var(--spacer) * .5),\n    --figure-caption-font-size: var(--font-size-sm),\n    --figure-caption-color: var(--fg-3),\n  ),\n  $figure-tokens\n);\n// scss-docs-end figure-tokens\n\n@layer content {\n  // Responsive images (ensure images don't scale beyond their parents)\n  //\n  // This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n  // We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n  // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n  // which weren't expecting the images within themselves to be involuntarily resized.\n  // See also https://github.com/twbs/bootstrap/issues/18178\n  .img-fluid {\n    @include img-fluid();\n  }\n\n  .img-thumbnail {\n    @include tokens($thumbnail-tokens);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    @include border-radius(var(--thumbnail-border-radius));\n    @include box-shadow(var(--thumbnail-box-shadow));\n\n    // Keep them at most 100% wide\n    @include img-fluid();\n  }\n\n  .figure {\n    @include tokens($figure-tokens);\n    // Ensures the caption's text aligns with the image.\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n@mixin box-shadow($shadow...) {\n  @if $enable-shadows {\n    $result: ();\n    $has-single-value: false;\n    $single-value: null;\n\n    @each $value in $shadow {\n      @if $value != null {\n        @if $value == none or $value == initial or $value == inherit or $value == unset {\n          $has-single-value: true;\n          $single-value: $value;\n        } @else {\n          $result: list.append($result, $value, \"comma\");\n        }\n      }\n    }\n\n    @if $has-single-value {\n      box-shadow: $single-value;\n    } @else if (list.length($result) > 0) {\n      box-shadow: $result;\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$prose-tokens: () !default;\n\n// scss-docs-start prose-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$prose-tokens: defaults(\n  (\n    --content-font-size: 1rem,\n    --content-line-height: 1.5,\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height)),\n    --heading-color: light-dark(var(--gray-900), var(--white)),\n  ),\n  $prose-tokens\n);\n// scss-docs-end prose-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer content {\n  .prose {\n    @include tokens($prose-tokens);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: var(--content-line-height);\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n      // --content-gap: calc(var(--content-font-size) * var(--content-line-height));\n    }\n\n    :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n      margin-block: 0;\n    }\n\n    :where(ul, ol):not([class], :where(.not-prose, .not-prose *)) li:not(:last-child) {\n      margin-bottom: calc(var(--content-gap) / 4);\n    }\n\n    :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) / 4);\n    }\n\n    :where(hr):not(:where(.not-prose, .not-prose *)) {\n      margin: calc(var(--content-gap) * 1.5) 0;\n      border: 0;\n      border-block-start: var(--border-width) solid var(--hr-border-color);\n    }\n\n    :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) {\n      margin-top: 0;\n      margin-bottom: calc(var(--content-gap) / -2);\n      font-weight: 500;\n      line-height: 1.25;\n\n      code {\n        font-weight: 600;\n        color: inherit;\n      }\n    }\n\n    :where(h1, h2):not(:first-child, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .5);\n    }\n\n    :where(h1):not(:where(.not-prose, .not-prose *)) {\n      font-size: 2.25em;\n      line-height: 1.1;\n    }\n    :where(h2):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.75em;\n    }\n    :where(h3):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.5em;\n    }\n    :where(h4):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.25em;\n    }\n    :where(h5):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.125em;\n    }\n    :where(h6):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1em;\n    }\n\n    :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      color: var(--link-color);\n      text-decoration: underline;\n      text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n      text-underline-offset: 4px;\n      @include transition(.1s text-decoration-color ease-in-out);\n\n      &:hover {\n        text-decoration-color: var(--link-hover-color);\n      }\n    }\n\n    :where(img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n\n    :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n      padding-inline-start: calc(var(--content-gap) / 2);\n      margin: 0;\n      border-inline-start: 4px solid var(--border-color);\n    }\n\n    :where(table):not(:where(.not-prose, .not-prose *)) {\n      width: 100%;\n      border-spacing: 0;\n      border-collapse: collapse;\n    }\n\n    :where(table:not([class])):not(:where(.not-prose, .not-prose *)) {\n      td,\n      th {\n        padding: 6px 12px;\n        text-align: inherit;\n        border: 1px solid var(--border-color);\n      }\n    }\n\n    :where(dt):not(:where(.not-prose, .not-prose *)) {\n      font-weight: 500;\n    }\n\n    :where(video, img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .#{breakpoint-prefix($breakpoint, $breakpoints)}container {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .#{breakpoint-prefix($name, $breakpoints)}container {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      .#{$prefix}col {\n        flex: 1 0 0;\n      }\n\n      .#{$prefix}row-cols-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .#{$prefix}row-cols-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .#{$prefix}col-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}col-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($prefix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .#{$prefix}offset-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gx-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gy-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}g-col-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .#{$prefix}g-start-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n\n$form-label-tokens: () !default;\n\n// scss-docs-start form-label-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-label-tokens: defaults(\n  (\n    --label-margin-bottom: calc(var(--spacer) / 2),\n    --label-font-size: null,\n    --label-font-style: null,\n    --label-font-weight: null,\n    --label-color: null,\n  ),\n  $form-label-tokens\n);\n// scss-docs-end form-label-tokens\n\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\n    color: var(--label-color, var(--fg-body));\n  }\n\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n\n  // For use with horizontal and inline forms, when you need the label (or legend)\n  // text to align with the form controls.\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0; // Override the `<legend>` default\n  }\n\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-text-tokens: () !default;\n\n// scss-docs-start form-text-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-text-tokens: defaults(\n  (\n    --form-text-margin-top: .25rem,\n    --form-text-font-size: var(--font-size-sm),\n    --form-text-font-style: null,\n    --form-text-font-weight: null,\n    --form-text-color: var(--fg-2),\n  ),\n  $form-text-tokens\n);\n// scss-docs-end form-text-tokens\n\n@layer forms {\n  .form-text {\n    @include tokens($form-text-tokens);\n\n    // margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-control-tokens: () !default;\n\n// scss-docs-start form-control-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-tokens: defaults(\n  (\n    --control-min-height: var(--btn-input-min-height),\n    --control-padding-y: var(--btn-input-padding-y),\n    --control-padding-x: var(--btn-input-padding-x),\n    --control-font-size: var(--btn-input-font-size),\n    --control-line-height: var(--btn-input-line-height),\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--radius-5),\n    --control-box-shadow: var(--box-shadow-inset),\n    --control-action-bg: var(--bg-1),\n    --control-action-hover-bg: var(--bg-2),\n    --control-transition-property: \"border-color, box-shadow\",\n    --control-transition-timing: .15s ease-in-out,\n    --control-transition: var(--control-transition-property) var(--control-transition-timing),\n    --control-placeholder-color: var(--fg-3),\n    --control-disabled-color: var(--control-fg),\n    --control-disabled-bg: var(--bg-2),\n    --control-disabled-border-color: var(--control-border-color),\n    --control-select-bg: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#00000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n    --control-select-bg-position: right .75rem center,\n    --control-select-bg-size: 16px 12px,\n    --control-select-bg-dark: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n  ),\n  $form-control-tokens\n);\n// scss-docs-end form-control-tokens\n\n// scss-docs-start form-control-sizes\n$form-control-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $form-control-sizes\n);\n// scss-docs-end form-control-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .form-control {\n    @include tokens($form-control-tokens);\n\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n    @include box-shadow(var(--control-box-shadow));\n    @include transition(var(--control-transition));\n\n    // Customize the `:focus` state to imitate native WebKit styles.\n    &:focus-visible {\n      --focus-ring-offset: -1px;\n      @include focus-ring(true);\n    }\n\n    // Placeholder\n    &::placeholder {\n      color: var(--control-placeholder-color);\n      // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n      opacity: 1;\n    }\n\n    // Disabled inputs\n    //\n    // HTML5 says that controls under a fieldset > legend:first-child won't be\n    // disabled if the fieldset is disabled. Due to implementation difficulty, we\n    // don't honor that edge case; we style them as disabled anyway.\n    &:disabled {\n      color: var(--control-disabled-color);\n      background-color: var(--control-disabled-bg);\n      border-color: var(--control-disabled-border-color);\n      // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n      opacity: 1;\n    }\n\n    // Date and time inputs\n    // &::-webkit-date-and-time-value {\n    //   // On Android Chrome, form-control's \"width: 100%\" makes the input width too small\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   //\n    //   // On iOS Safari, form-control's \"appearance: none\" + \"width: 100%\" makes the input width too small\n    //   // Tested under iOS 16.2 / Safari 16.2\n    //   min-width: 85px; // Seems to be a good minimum safe width\n\n    //   // Add some height to date inputs on iOS\n    //   // https://github.com/twbs/bootstrap/issues/23307\n    //   // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n    //   // Multiply line-height by 1em if it has no unit\n    //   height: 1.5em;\n\n    //   // Android Chrome type=\"date\" is taller than the other inputs\n    //   // because of \"margin: 1px 24px 1px 4px\" inside the shadow DOM\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   margin: 0;\n    //   background-color: var(--red-500);\n    // }\n\n    // Prevent excessive date input height in Webkit\n    // https://github.com/twbs/bootstrap/issues/34433\n\n    // mdo-do: need to check this stuff out across browsers\n    &::-webkit-datetime-edit {\n      display: block;\n      height: 1.5rem;\n      padding: 0;\n      margin-bottom: -.125rem;\n    }\n    &::-webkit-datetime-edit-fields-wrapper {\n      height: 1.5rem;\n    }\n\n    // File inputs\n    &[type=\"file\"] {\n      overflow: hidden; // prevent pseudo element button overlap\n\n      &:not(:disabled, [readonly]) {\n        cursor: pointer;\n      }\n    }\n    &::file-selector-button {\n      min-height: var(--control-min-height);\n      padding: var(--control-padding-y) var(--control-padding-x);\n      margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n      margin-inline-end: var(--control-padding-x);\n      color: var(--control-fg);\n      // @include gradient-bg(var(--control-action-bg));\n      pointer-events: none;\n      background-color: var(--control-action-bg);\n      border-color: inherit;\n      border-style: solid;\n      border-width: 0;\n      border-inline-end-width: var(--control-border-width);\n      border-radius: 0; // stylelint-disable-line property-disallowed-list\n      @include transition(var(--control-transition));\n    }\n\n    &:hover:not(:disabled, [readonly])::file-selector-button {\n      background-color: var(--control-action-hover-bg);\n    }\n  }\n\n  // Readonly controls as plain text\n  //\n  // Apply class to a readonly input to make it appear like regular plain\n  // text (without any border, background color, focus indicator)\n\n  .form-control-plaintext {\n    // Plaintext is a standalone class (not combined with `.form-control`), so it\n    // needs its own copy of the control tokens. Without them the `var(--control-*)`\n    // references below are invalid and fall back to their initial values (e.g.\n    // `border-width: medium`), which adds phantom inline borders and misaligns the\n    // text from a floating label.\n    @include tokens($form-control-tokens);\n\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &.form-control-sm,\n    &.form-control-lg {\n      padding-inline: 0;\n    }\n  }\n\n  // stylelint-disable selector-no-qualifying-type\n  select.form-control,\n  .form-control-caret {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n\n    &[multiple],\n    &[size]:not([size=\"1\"]) {\n      padding-inline-end: var(--control-padding-x);\n      background-image: none;\n    }\n  }\n\n  [data-bs-theme=\"dark\"] {\n    select.form-control,\n    .form-control-caret {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  // Form control sizing\n  //\n  // Build on `.form-control` with modifier classes to decrease or increase the\n  // height and font-size of form controls.\n  //\n  // Repeated in `_input_group.scss` to avoid Sass extend issues.\n  @each $size, $_ in $form-control-sizes {\n    .form-control-#{$size} {\n      --control-min-height: var(--btn-input-#{$size}-min-height);\n      --control-padding-y: var(--btn-input-#{$size}-padding-y);\n      --control-padding-x: var(--btn-input-#{$size}-padding-x);\n      --control-font-size: var(--btn-input-#{$size}-font-size);\n      --control-line-height: var(--btn-input-#{$size}-line-height);\n      --control-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n\n    &:not(:disabled, [readonly]) {\n      cursor: pointer;\n    }\n\n    &::-moz-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\n    }\n  }\n\n  // Ghost input - removes all visual styling\n  // Used inside custom wrappers that handle their own styling\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &::placeholder {\n      color: var(--fg-3);\n      opacity: 1;\n    }\n\n    &:disabled {\n      color: var(--fg-4);\n      cursor: not-allowed;\n    }\n  }\n}\n","@mixin focus-ring($offset: false, $color: null) {\n  @if $color != null {\n    outline: var(--focus-ring-width) solid #{$color};\n  } @else {\n    outline: var(--focus-ring);\n  }\n  @if $offset {\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$check-tokens: () !default;\n\n// scss-docs-start check-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$check-tokens: defaults(\n  (\n    --check-size: 1.25rem,\n    --check-margin-block: .125rem,\n    --check-bg: var(--bg-body),\n    --check-border-color: var(--border-color),\n    --check-border-radius: var(--radius-5),\n    --check-icon-checked: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/></svg>\"))},\n    --check-icon-indeterminate: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/></svg>\"))},\n    --check-checked-bg: var(--control-checked-bg),\n    --check-checked-border-color: var(--control-checked-border-color),\n    --check-indeterminate-bg: var(--control-checked-bg),\n    --check-indeterminate-border-color: var(--control-checked-border-color),\n    --check-active-bg: var(--control-active-bg),\n    --check-active-border-color: var(--control-active-border-color),\n    --check-disabled-bg: var(--control-disabled-bg),\n    --check-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $check-tokens\n);\n// scss-docs-end check-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  // The class lives on the `<input>` itself; `appearance: none` controls render\n  // pseudo-elements, so the mark is drawn directly on the input — no wrapper.\n  .check {\n    @include tokens($check-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\n    appearance: none;\n    // later: maybe set a tertiary bg color?\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 33%;\n\n    &:checked,\n    &:indeterminate {\n      background-color: var(--theme-bg, var(--check-checked-bg));\n      border-color: var(--theme-bg, var(--check-checked-border-color));\n\n      // Check/indeterminate mark, overlaid on the input and rendered via a CSS\n      // mask so it inherits the contrast color without an inline SVG.\n      &::before {\n        position: absolute;\n        inset: 0;\n        pointer-events: none;\n        content: \"\";\n        background-color: var(--theme-contrast, var(--primary-contrast));\n        @include mask-icon();\n      }\n    }\n\n    &:checked::before { mask-image: var(--check-icon-checked); }\n    &:indeterminate::before { mask-image: var(--check-icon-indeterminate); }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: -1px;\n    }\n\n    &:disabled {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--check-disabled-opacity);\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","// Mask icon\n//\n// Renders an SVG icon via a CSS mask so the shape is painted with the\n// element's `background-color` and therefore inherits theme/dark-mode color.\n// Set `background-color` on the element itself; pass `null` for `$icon` when\n// the mask image is applied conditionally (e.g. per state or direction).\n\n// scss-docs-start mask-icon-mixin\n@mixin mask-icon($icon: null, $size: contain, $position: center) {\n  @if $icon != null {\n    mask-image: $icon;\n  }\n  mask-repeat: no-repeat;\n  @if $position != null {\n    mask-position: $position;\n  }\n  @if $size != null {\n    mask-size: $size;\n  }\n}\n// scss-docs-end mask-icon-mixin\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$radio-tokens: () !default;\n\n// scss-docs-start radio-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$radio-tokens: defaults(\n  (\n    --radio-size: 1.25rem,\n    --radio-margin-block: .125rem,\n    --radio-bg: var(--bg-body),\n    --radio-border-color: var(--border-color),\n    --radio-checked-bg: var(--control-checked-bg),\n    --radio-checked-border-color: var(--control-checked-border-color),\n    --radio-disabled-bg: var(--control-disabled-bg),\n    --radio-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $radio-tokens\n);\n// scss-docs-end radio-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .radio {\n    @include tokens($radio-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n\n    &:checked {\n      color: var(--theme-contrast, var(--primary-contrast));\n      background-color: var(--theme-bg, var(--radio-checked-bg));\n      border-color: var(--theme-bg, var(--radio-checked-border-color));\n\n      &::before {\n        position: absolute;\n        inset: calc(var(--radio-size) * .25);\n        content: \"\";\n        background-color: currentcolor;\n        // stylelint-disable-next-line property-disallowed-list\n        border-radius: 50%;\n      }\n    }\n\n    &:disabled {\n      --radio-bg: var(--radio-disabled-bg);\n\n      ~ label {\n        color: var(--secondary-fg);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--radio-disabled-opacity);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$switch-tokens: () !default;\n\n// scss-docs-start switch-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$switch-tokens: defaults(\n  (\n    --switch-height: 1.25rem,\n    --switch-width: calc(var(--switch-height) * 1.75),\n    --switch-padding: .0625rem,\n    --switch-margin-block: .125rem,\n    --switch-bg: var(--bg-3),\n    --switch-border-width: var(--border-width),\n    --switch-border-color: var(--border-color),\n    --switch-indicator-bg: var(--white),\n    --switch-indicator-width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-indicator-height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-checked-bg: var(--control-checked-bg),\n    --switch-checked-border-color: var(--switch-checked-bg),\n    --switch-checked-indicator-bg: var(--white),\n    --switch-disabled-bg: var(--control-disabled-bg),\n    --switch-disabled-indicator-bg: var(--fg-3),\n  ),\n  $switch-tokens\n);\n// scss-docs-end switch-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .switch {\n    @include tokens($switch-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgb(0 0 0 / .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: background-color .15s ease-in-out;\n\n    &::before {\n      position: absolute;\n      inset-block: var(--switch-padding);\n      inset-inline-start: var(--switch-padding);\n      width: var(--switch-indicator-width);\n      height: var(--switch-indicator-height);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 10rem;\n      box-shadow: 0 1px 2px rgb(0 0 0 / .1);\n      // stylelint-disable-next-line property-disallowed-list\n      transition: inset-inline-start .15s ease-in-out;\n    }\n\n    input {\n      position: absolute;\n      inset: 0;\n      appearance: none;\n      background-color: transparent;\n      outline: 0;\n    }\n\n    &:focus-within {\n      @include focus-ring(true);\n    }\n\n    &:has(input:disabled:not(:checked)) {\n      --switch-bg: var(--switch-disabled-bg);\n      --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n\n      &::before { opacity: .4; }\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n\n    &:has(input:checked) {\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n\n      &::before {\n        inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n      }\n    }\n\n    &:has(input:checked:disabled) {\n      opacity: .65;\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$range-tokens: () !default;\n\n// scss-docs-start range-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$range-tokens: defaults(\n  (\n    --range-track-width: 100%,\n    --range-track-height: .5rem,\n    --range-track-cursor: pointer,\n    --range-track-bg: var(--bg-3),\n    --range-track-border-radius: 1rem,\n    --range-track-fill-bg: var(--primary-base),\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3)),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color),\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: \"0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%)\",\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body)),\n    --range-thumb-disabled-bg: var(--fg-3),\n    --range-thumb-transition-property: \"background-color, border-color, box-shadow\",\n    --range-thumb-transition-timing: .15s ease-in-out,\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing),\n    --range-tick-width: var(--border-width),\n    --range-tick-height: .5rem,\n    --range-tick-bg: var(--border-color),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start range-mixins\n@mixin range-thumb() {\n  width: var(--range-thumb-width);\n  height: var(--range-thumb-height);\n  appearance: none;\n  @include gradient-bg(var(--range-thumb-bg));\n  border: var(--range-thumb-border);\n  @include border-radius(var(--range-thumb-border-radius));\n  @include box-shadow(var(--range-thumb-box-shadow));\n  @include transition(var(--range-thumb-transition));\n\n  &:active {\n    @include gradient-bg(var(--range-thumb-active-bg));\n  }\n}\n\n@mixin range-track() {\n  width: var(--range-track-width);\n  height: var(--range-track-height);\n  color: transparent;\n  cursor: var(--range-track-cursor);\n  // Fill (progress) up to the thumb. The Range plugin keeps `--range-fill` (0–1) in sync.\n  background-color: var(--range-track-bg);\n  background-image:\n    linear-gradient(\n      to right,\n      var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%),\n      transparent calc(var(--range-fill, 0) * 100%)\n    );\n  border-color: transparent;\n  @include border-radius(var(--range-track-border-radius));\n  @include box-shadow(var(--range-track-box-shadow));\n}\n// scss-docs-end range-mixins\n\n@layer forms {\n  .form-range {\n    @include tokens($range-tokens);\n\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n\n  .form-range-input {\n    display: block;\n    width: 100%;\n    height: calc(var(--range-thumb-height) + (var(--focus-ring-width) * 2));\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n\n    &:hover {\n      &::-webkit-slider-thumb {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n    }\n\n    &:focus-visible {\n      outline: 0;\n\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n    }\n\n    &::-moz-focus-outer {\n      border: 0;\n    }\n\n    &::-webkit-slider-thumb {\n      @include range-thumb();\n      margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * .5);\n    }\n\n    &::-moz-range-thumb {\n      @include range-thumb();\n    }\n\n    &::-webkit-slider-runnable-track {\n      @include range-track();\n    }\n\n    &::-moz-range-track {\n      @include range-track();\n    }\n\n    &:disabled {\n      pointer-events: none;\n\n      &::-webkit-slider-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-moz-range-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-webkit-slider-runnable-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n\n      &::-moz-range-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n    }\n  }\n\n  // Value bubble: reuses the tooltip styles (`.tooltip` markup) so we don't duplicate the\n  // pill and arrow. We only add the static positioning the Tooltip plugin would normally do.\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc((var(--range-thumb-width) * .5) + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n\n    .tooltip-arrow {\n      position: absolute;\n      bottom: calc(-1 * var(--tooltip-arrow-height));\n      left: 50%;\n      transform: translateX(-50%);\n    }\n  }\n\n  // Tick marks generated from the linked <datalist>. Plugin builds `grid-template-columns`\n  // from the gaps between values so each tick lands on a grid line (handles uneven values).\n  // Track is inset by 1/4th of the thumb width to keep alignment.\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * .25);\n  }\n\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    // Zero-width items so labels never widen their `fr` column; the tick line and label\n    // overflow centered on the grid line via `align-items`.\n    width: 0;\n\n    &::before {\n      width: var(--range-tick-width);\n      height: var(--range-tick-height);\n      content: \"\";\n      background-color: var(--range-tick-bg);\n    }\n\n    &:first-child {\n      align-items: flex-start;\n    }\n\n    &:last-child {\n      align-items: flex-end;\n    }\n  }\n\n  .form-range-tick-label {\n    margin-top: .125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n\n// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: var(--gray-700), $end-color: var(--gray-800), $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: var(--gray-700), $outer-color: var(--gray-800)) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgb(255 255 255 / .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-floating-tokens: () !default;\n\n// scss-docs-start form-floating-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-floating-tokens: defaults(\n  (\n    --form-floating-height: calc(3.75rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25),\n    --form-floating-padding-y: 1rem,\n    --form-floating-input-padding-t: 1.625rem,\n    --form-floating-input-padding-b: .625rem,\n    --form-floating-label-height: 1.5em,\n    // Backgrounds for the textarea label's masking pseudo-element. Mirrors\n    // `.form-control` here because the label is a sibling of the control, so it\n    // can't inherit the control's own `--control-bg`/`--control-disabled-bg`.\n    --form-floating-label-bg: var(--btn-input-bg),\n    --form-floating-label-disabled-bg: var(--bg-2),\n    --form-floating-label-opacity: .65,\n    --form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem),\n    --form-floating-label-disabled-color: var(--fg-3),\n    --form-floating-transition-property: \"opacity, transform\",\n    --form-floating-transition-timing: .1s ease-in-out,\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing),\n  ),\n  $form-floating-tokens\n);\n// scss-docs-end form-floating-tokens\n\n@layer forms {\n  .form-floating {\n    @include tokens($form-floating-tokens);\n\n    position: relative;\n\n    > label {\n      position: absolute;\n      inset-block-start: 0;\n      inset-inline-start: 0;\n      z-index: 2;\n      display: flex;\n      align-items: center;\n      max-width: 100%;\n      height: 100%; // allow textareas\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      overflow: hidden;\n      color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n      text-align: start;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      pointer-events: none;\n      border: var(--border-width) solid transparent; // Required for aligning label's text with the input as it affects inner box model\n      transform-origin: 0 0;\n      @include transition(var(--form-floating-transition));\n    }\n\n    // Anchor the label to the top for textareas so it floats correctly at any height\n    > label:has(~ textarea) {\n      align-items: flex-start;\n    }\n\n    > .form-control,\n    > .form-control-plaintext {\n      height: var(--form-floating-height);\n      min-height: var(--form-floating-height);\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      line-height: var(--form-floating-line-height);\n\n      &::placeholder {\n        color: transparent;\n      }\n\n      &:focus,\n      &:not(:placeholder-shown) {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n      // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n      &:-webkit-autofill {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n    }\n\n    // The label precedes the control in the DOM so screen readers announce it\n    // before the field's value, so we look forward with `:has()` to react to the\n    // control's state (focus, value, disabled, etc.).\n    > label:has(~ .form-control:focus),\n    > label:has(~ .form-control:not(:placeholder-shown)),\n    > label:has(~ .form-control-plaintext) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > label:has(~ .form-control:-webkit-autofill) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    > label:has(~ textarea:focus),\n    > label:has(~ textarea:not(:placeholder-shown)) {\n      &::after {\n        position: absolute;\n        inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * .5);\n        z-index: -1;\n        height: var(--form-floating-label-height);\n        content: \"\";\n        background-color: var(--form-floating-label-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > label:has(~ textarea:disabled)::after {\n      background-color: var(--form-floating-label-disabled-bg);\n    }\n\n    > label:has(~ .form-control-plaintext) {\n      border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n    }\n\n    > label:has(~ :disabled),\n    > label:has(~ .form-control:disabled) { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n$input-group-addon-tokens: () !default;\n\n// scss-docs-start input-group-addon-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-addon-tokens: defaults(\n  (\n    --input-group-addon-padding-y: var(--btn-input-padding-y),\n    --input-group-addon-padding-x: var(--btn-input-padding-x),\n    --input-group-addon-font-size: var(--btn-input-font-size),\n    --input-group-addon-line-height: var(--btn-input-line-height),\n    --input-group-addon-color: var(--fg-body),\n    --input-group-addon-bg: var(--bg-2),\n    --input-group-addon-border-color: var(--border-color),\n  ),\n  $input-group-addon-tokens\n);\n// scss-docs-end input-group-addon-tokens\n\n// scss-docs-start input-group-sizes\n$input-group-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $input-group-sizes\n);\n// scss-docs-end input-group-sizes\n\n@layer components {\n  .input-group {\n    @include tokens($input-group-addon-tokens);\n\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    width: 100%;\n\n    > .form-control,\n    > .form-floating {\n      position: relative; // For focus state's z-index\n      flex: 1 1 auto;\n      width: 1%;\n      min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n    }\n\n    // Bring the \"active\" form control to the top of surrounding elements\n    > .form-control:focus,\n    > .form-floating:focus-within {\n      z-index: 5;\n    }\n\n    // Ensure buttons are always above inputs for more visually pleasing borders.\n    // This isn't needed for `.input-group-text` since it shares the same border-color\n    // as our inputs.\n    > .input-group-btn {\n      position: relative;\n      z-index: 2;\n\n      &:focus {\n        z-index: 5;\n      }\n    }\n  }\n\n  // Textual addons\n  //\n  // Serves as a catch-all element for any text or radio/checkbox input you wish\n  // to prepend or append to an input.\n\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size); // Match inputs\n    // font-weight: $input-group-addon-font-weight;\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    @include border-radius(var(--btn-input-border-radius));\n  }\n\n  // Sizing\n  //\n  // Remix the default form control sizing classes into new ones for easier\n  // manipulation.\n\n  @each $size, $_ in $input-group-sizes {\n    .input-group-#{$size} {\n      > .form-control,\n      > .input-group-text,\n      > .btn {\n        min-height: var(--btn-input-#{$size}-min-height);\n        padding: var(--btn-input-#{$size}-padding-y) var(--btn-input-#{$size}-padding-x);\n        font-size: var(--btn-input-#{$size}-font-size);\n        @include border-radius(var(--btn-input-#{$size}-border-radius));\n      }\n    }\n  }\n\n  // Rounded corners\n  //\n  // These rulesets must come after the sizing ones to properly override sm and lg\n  // border-radius values when extending. They're more specific than we'd like\n  // with the `.input-group >` part, but without it, we cannot override the sizing.\n\n  // stylelint-disable-next-line no-duplicate-selectors\n  .input-group {\n    > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n    > .menu-toggle-split:nth-last-child(n + 3),\n    > .form-floating:not(:last-child) > .form-control,\n    > .form-floating:not(:last-child) > .form-select {\n      @include border-end-radius(0);\n    }\n\n    > :not(:first-child, .menu, .input-group-ignore) {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n      @include border-start-radius(var(--btn-input-border-radius));\n    }\n\n    > .form-floating:not(:first-child) > .form-control,\n    > .form-floating:not(:first-child) > .form-select {\n      @include border-start-radius(0);\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$strength-tokens: () !default;\n\n// scss-docs-start strength-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$strength-tokens: defaults(\n  (\n    --strength-height: .375rem,\n    --strength-gap: .25rem,\n    --strength-margin-top: .25rem,\n    --strength-border-radius: var(--radius-pill),\n    --strength-bg: var(--bg-2),\n    --strength-color: var(--bg-2),\n    --strength-weak-color: var(--danger-bg),\n    --strength-fair-color: var(--warning-bg),\n    --strength-good-color: var(--info-bg),\n    --strength-strong-color: var(--success-bg),\n  ),\n  $strength-tokens\n);\n// scss-docs-end strength-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start strength-levels\n$strength-levels: weak, fair, good, strong !default;\n// scss-docs-end strength-levels\n\n$strength-transition: background-color .2s ease-in-out, width .3s ease-in-out !default;\n\n@layer forms {\n  // Strength meter container\n  .strength {\n    @include tokens($strength-tokens);\n\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n\n  // Individual strength segments\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n    @include transition($strength-transition);\n\n    // Filled state\n    &.active {\n      background-color: var(--strength-color);\n    }\n  }\n\n  @each $level in $strength-levels {\n    .strength[data-bs-strength=\"#{$level}\"] {\n      --strength-color: var(--strength-#{$level}-color);\n    }\n  }\n  // Optional text feedback\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    @include transition(color .2s ease-in-out);\n\n    // Hide when empty\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Alternative: Single bar variant (like a progress bar)\n  .strength-bar {\n    @include tokens($strength-tokens);\n\n    --strength-color: transparent;\n    --strength-width: 0%;\n\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n\n    &::after {\n      display: block;\n      width: var(--strength-width);\n      height: 100%;\n      content: \"\";\n      background-color: var(--strength-color);\n      @include border-radius(var(--strength-border-radius));\n      @include transition($strength-transition);\n    }\n\n    @each $level in $strength-levels {\n      &[data-bs-strength=\"#{$level}\"] {\n        --strength-color: var(--strength-#{$level}-color);\n        --strength-width: #{list.index($strength-levels, $level) * 25%};\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-tokens: defaults(\n  (\n    --otp-size: var(--btn-input-lg-min-height),\n    --otp-font-size: var(--btn-input-font-size),\n    --otp-gap: .5rem,\n    --otp-slot-fg: var(--btn-input-fg),\n    --otp-slot-bg: var(--btn-input-bg),\n    --otp-slot-border-width: var(--border-width),\n    --otp-slot-border-color: var(--border-color),\n    --otp-slot-border-radius: var(--radius-5),\n  ),\n  $otp-tokens\n);\n// scss-docs-end otp-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start otp-sizes\n$otp-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $otp-sizes\n);\n// scss-docs-end otp-sizes\n\n@layer components {\n  .otp {\n    @include tokens($otp-tokens);\n\n    position: relative;\n    display: flex;\n  }\n\n  // A single real input backs the whole control. Once the JS renders the\n  // visual slots (`.otp-rendered`), the input becomes a transparent overlay\n  // that captures all interaction while the slots display the value.\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    // The input sits on top and receives taps itself, so a touch focuses it\n    // natively (raising the on-screen keyboard via a genuine user gesture).\n    // The JS maps the tap's position to a slot and sets the caret.\n    pointer-events: auto;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n\n    // Never reveal the underlying characters, even on selection\n    &::selection {\n      color: transparent;\n      background-color: transparent;\n    }\n  }\n\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none; // purely visual; the overlaid input handles interaction\n  }\n\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    user-select: none; // decorative cells; the real input handles selection\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    @include border-radius(var(--otp-slot-border-radius));\n    @include box-shadow(var(--box-shadow-inset));\n    @include transition(border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n  }\n\n  // The slot at the caret gets the focus ring; empty active slots show a\n  // blinking caret so the entry point is obvious.\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    @include focus-ring(true);\n\n    &:not(.otp-slot-filled)::after {\n      width: 1px;\n      height: 50%;\n      content: \"\";\n      background-color: var(--otp-slot-fg);\n      animation: otp-caret-blink 1s step-end infinite;\n    }\n  }\n\n  // Disabled state mirrors disabled form controls\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n\n  // Connected slots share borders for a single cohesive field\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n\n    &:not(:first-child) {\n      margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n    }\n    &:first-child {\n      @include border-start-radius(var(--otp-slot-border-radius));\n    }\n    &:last-child {\n      @include border-end-radius(var(--otp-slot-border-radius));\n    }\n  }\n\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n\n  // OTP input sizing — keep in sync with `$form-control-sizes`.\n  @each $size, $_ in $otp-sizes {\n    .otp-#{$size} {\n      --otp-size: var(--btn-input-#{$size}-min-height);\n      --otp-font-size: var(--btn-input-#{$size}-font-size);\n    }\n  }\n}\n\n@keyframes otp-caret-blink {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-adorn-tokens: () !default;\n\n// scss-docs-start form-adorn-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-adorn-tokens: defaults(\n  (\n    --form-adorn-gap: .375rem,\n    --form-adorn-icon-size: 1rem,\n    --form-adorn-icon-color: var(--fg-2),\n  ),\n  $form-adorn-tokens\n);\n// scss-docs-end form-adorn-tokens\n\n@layer forms {\n  .form-adorn {\n    @include tokens($form-adorn-tokens);\n\n    gap: var(--form-adorn-gap);\n    align-items: center;\n\n    // Prevent default `.form-control` focus\n    &:focus-visible {\n      outline: 0;\n    }\n\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1;\n      min-width: 0; // Prevent text overflow\n    }\n\n    &.form-adorn-end > .form-ghost {\n      order: -1;\n    }\n  }\n\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n\n    > svg {\n      width: var(--form-adorn-icon-size);\n      height: var(--form-adorn-icon-size);\n    }\n  }\n\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$chip-input-tokens: () !default;\n\n// scss-docs-start chip-input-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-input-tokens: defaults(\n  (\n    --chip-input-padding-y: .75rem,\n    --chip-input-padding-x: .75rem,\n    --chip-input-gap: .375rem,\n    --chip-input-ghost-min-width: 5rem,\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--radius-5),\n  ),\n  $chip-input-tokens\n);\n// scss-docs-end chip-input-tokens\n\n@layer forms {\n  .chip-input {\n    @include tokens($chip-input-tokens);\n\n    // Flexbox wrapping layout\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n\n    // Focus state when ghost input is focused\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1 1 0;\n      min-width: var(--chip-input-ghost-min-width);\n      min-height: 1.75rem;\n    }\n\n    // Disabled state\n    &.disabled,\n    &:has(.form-ghost:disabled) {\n      cursor: not-allowed;\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      &:focus-within {\n        border-color: var(--control-border-color);\n        outline: 0;\n      }\n\n      > .chip {\n        pointer-events: none;\n        opacity: var(--control-disabled-opacity);\n      }\n    }\n  }\n}\n","@use \"../mixins/transition\" as *;\n\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: .5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n\n    &.show {\n      background-color: var(--bg-1);\n    }\n\n    &:disabled,\n    &.disabled {\n      cursor: not-allowed;\n      opacity: .65;\n    }\n  }\n\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: .5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .combobox-caret {\n    flex-shrink: 0;\n    @include transition(transform .2s ease-in-out);\n\n    .show > & {\n      transform: rotate(180deg);\n    }\n  }\n\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, .25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n\n  .combobox-search-input {\n    width: 100%;\n  }\n\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n// scss-docs-start form-field\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: .5rem;\n    // width: 100%;\n\n    > label,\n    > .form-label {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n\n    &:has(> .check, > .radio, > .switch) {\n      grid-template-columns: auto 1fr;\n      column-gap: .5rem;\n      align-items: start;\n\n      > .check,\n      > .radio,\n      > .switch {\n        grid-column: 1;\n      }\n\n      > :not(.check, .radio, .switch) {\n        grid-column: 2;\n      }\n\n      > .form-label {\n        grid-column: 1 / -1;\n      }\n    }\n  }\n\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * .75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    @include border-radius(var(--radius-7));\n\n    &:hover {\n      background-color: var(--bg-1);\n    }\n\n    &:has(:checked) {\n      background-color: var(--bg-1);\n      border-color: var(--border-color);\n    }\n\n    label::before {\n      position: absolute;\n      inset: 0;\n      content: \"\";\n    }\n  }\n\n  .form-group {\n    display: grid;\n    gap: .5rem;\n\n    > label,\n    > .form-label,\n    > legend {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n  }\n}\n// scss-docs-end form-field\n","@use \"../config\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/form-validation\" as *;\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid.\n// Server-side: `.is-invalid` / `.is-valid` classes work globally.\n// Client-side: `:user-invalid` pseudo-class is scoped behind `[data-bs-validate]`.\n// `:user-valid` is scoped behind `[data-bs-validate~=\"valid\"]` so success styling is opt-in.\n// Custom states (e.g., \"warning\") use only `.is-*` classes.\n\n// scss-docs-start form-validation-states\n$validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$validation-states: defaults(\n  (\n    \"valid\": \"success\",\n    \"invalid\": \"danger\",\n  ),\n  $validation-states\n);\n// scss-docs-end form-validation-states\n\n// scss-docs-start form-validation-state-mixin\n@mixin form-validation-state($state, $theme) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--#{$theme}-fg);\n  }\n\n  // More specific to override base tooltip styles\n  .tooltip.#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: .1rem;\n    color: var(--#{$theme}-contrast);\n    text-align: center;\n    background-color: var(--#{$theme}-bg);\n    opacity: 1;\n    @include border-radius(var(--tooltip-border-radius));\n  }\n\n  // Generic sibling feedback display — works for .form-control, .form-range,\n  // and any element where feedback is a direct sibling.\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  // Form control\n  .form-control {\n    @include form-validation-state-selector($state) {\n      --control-border-color: var(--#{$theme}-border);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        --control-border-color: var(--#{$theme}-border);\n      }\n    }\n  }\n\n  // Checkbox — control-level styling (border, checked bg, focus ring).\n  .check {\n    @include form-validation-state-selector($state) {\n      --check-border-color: var(--#{$theme}-border);\n      --check-checked-bg: var(--#{$theme}-bg);\n      --check-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Checkbox — label color and feedback display via .form-field:has().\n  .form-field:has(.check.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.check:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.check:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Radio — control-level styling.\n  .radio {\n    @include form-validation-state-selector($state) {\n      --radio-border-color: var(--#{$theme}-border);\n      --radio-checked-bg: var(--#{$theme}-bg);\n      --radio-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Radio — label color and feedback display via .form-field:has().\n  .form-field:has(.radio.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.radio:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.radio:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Switch — control-level styling. The input is an invisible overlay;\n  // all visuals are on the .switch wrapper.\n  .switch:has(input.is-#{$state}) {\n    --switch-border-color: var(--#{$theme}-border);\n    --switch-checked-bg: var(--#{$theme}-bg);\n    --switch-checked-border-color: var(--#{$theme}-bg);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n    }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .switch:has(input:user-invalid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .switch:has(input:user-valid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Switch — label color and feedback display via .form-field:has().\n  .form-field:has(.switch input.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.switch input:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.switch input:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Chip input — wrapper has the visible border; the .form-ghost inside\n  // receives the native pseudo-class.\n  .chip-input:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .chip-input:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Form adorn — :user-invalid fires on the inner .form-ghost, so we\n  // propagate it to the visible wrapper with :has().\n  .form-adorn:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-adorn:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Range — the validation class lives on .form-range-input, while feedback sits outside\n  // the .form-range wrapper, so we use :has() to toggle it.\n  .form-range-input {\n    @include form-validation-state-selector($state) {\n      &::-webkit-slider-thumb { background: var(--#{$theme}-bg); }\n      &::-moz-range-thumb { background: var(--#{$theme}-bg); }\n\n      &:focus-visible {\n        &::-webkit-slider-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n        &::-moz-range-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n      }\n    }\n  }\n\n  .form-range:has(.form-range-input.is-#{$state}) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  // Input group — feedback lives outside the input-group in the parent\n  // .form-field, so we use :has() to toggle display.\n  .form-field:has(.input-group .form-control.is-#{$state}) {\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) {\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.input-group .form-control:user-valid) {\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  .input-group {\n    > .form-control:not(:focus),\n    > .form-floating:not(:focus-within) {\n      @include form-validation-state-selector($state) {\n        @if $state == \"valid\" {\n          z-index: 3;\n        } @else if $state == \"invalid\" {\n          z-index: 4;\n        }\n      }\n    }\n  }\n\n  // OTP — validation applies to the wrapper; the visual slots inherit the state.\n  .otp {\n    @include form-validation-state-selector($state) {\n      .otp-slot {\n        --otp-slot-border-color: var(--#{$theme}-border);\n      }\n\n      .otp-slot-active {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-mixin\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $theme in $validation-states {\n    @include form-validation-state($state, $theme);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-validation-state-selector\n@mixin form-validation-state-selector($state) {\n  @if & {\n    &.is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      @at-root [data-bs-validate] #{&}:user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      @at-root [data-bs-validate~=\"valid\"] #{&}:user-valid {\n        @content;\n      }\n    }\n  } @else {\n    .is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      [data-bs-validate] :user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      [data-bs-validate~=\"valid\"] :user-valid {\n        @content;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-selector\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n$button-tokens: () !default;\n\n// scss-docs-start btn-tokens\n$button-tokens: defaults(\n  (\n    --btn-min-height: var(--btn-input-min-height),\n    --btn-padding-x: var(--btn-input-padding-x),\n    --btn-padding-y: var(--btn-input-padding-y),\n    --btn-font-size: var(--btn-input-font-size),\n    --btn-font-weight: var(--btn-input-font-weight),\n    --btn-line-height: var(--btn-input-line-height),\n    --btn-color: var(--fg-body),\n    --btn-white-space: nowrap,\n    --btn-border-width: var(--border-width),\n    --btn-border-color: transparent,\n    --btn-border-radius: var(--radius-5),\n    --btn-hover-border-color: transparent,\n    --btn-disabled-opacity: .65,\n    --btn-transition-timing: .15s ease-in-out,\n    --btn-transition-property: \"color, background-color, border-color, box-shadow\",\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing),\n  ),\n  $button-tokens\n);\n// scss-docs-end btn-tokens\n\n$button-link-tokens: () !default;\n\n// scss-docs-start button-link-tokens\n$button-link-tokens: defaults(\n  (\n    --btn-font-weight: var(--font-weight-normal),\n    --btn-color: var(--link-color),\n    --btn-bg: transparent,\n    --btn-border-color: transparent,\n    --btn-hover-color: var(--link-hover-color),\n    --btn-hover-bg: transparent,\n    --btn-hover-border-color: transparent,\n    --btn-active-color: var(--link-hover-color),\n    --btn-active-bg: transparent,\n    --btn-active-border-color: transparent,\n    --btn-disabled-color: var(--fg-3),\n    --btn-disabled-border-color: transparent,\n  ),\n  $button-link-tokens\n);\n// scss-docs-end button-link-tokens\n\n$button-styled-tokens: () !default;\n\n// scss-docs-start button-styled-tokens\n$button-styled-tokens: defaults(\n  (\n    --btn-gradient-start: rgb(255 255 255 / 12.5%),\n    --btn-gradient-end: rgb(0 0 0 / 7.5%) ,\n    --btn-border-mix-color: #000,\n    --btn-border-mix-amount: 10%,\n    --btn-border-hover-mix-amount: 12.5%,\n    --btn-border-active-mix-amount: 20%,\n    --btn-shadow: \"0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%)\",\n    --btn-active-shadow: inset 0 2px 4px rgb(0 0 0 / .15) ,\n  ),\n  $button-styled-tokens\n);\n// scss-docs-end button-styled-tokens\n\n// scss-docs-start button-sizes\n$button-sizes: () !default;\n$button-sizes: defaults(\n  (\"xs\", \"sm\", \"lg\"),\n  $button-sizes\n);\n// scss-docs-end button-sizes\n\n$button-variants: () !default;\n\n// scss-docs-start btn-variants\n$button-variants: defaults(\n  (\n    \"solid\": (\n      \"base\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      )\n    ),\n    \"outline\": (\n      \"base\": (\n        \"bg\": \"transparent\",\n        \"color\": \"fg\",\n        \"border-color\": \"border\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      )\n    ),\n    \"subtle\": (\n      \"base\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"fg-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"fg\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      )\n    )\n  ),\n  $button-variants\n);\n// scss-docs-end btn-variants\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n//\n// Base styles\n//\n\n// scss-docs-start btn-variant-selectors\n$btn-variant-selectors: (string.unquote(\".btn\"), string.unquote(\".btn-link\"), string.unquote(\".btn-icon\")) !default;\n@each $variant, $config in $button-variants {\n  $btn-variant-selectors: list.append($btn-variant-selectors, string.unquote(\".btn-#{$variant}\"), comma);\n}\n// scss-docs-end btn-variant-selectors\n\n@layer components {\n  #{$btn-variant-selectors} {\n    @include tokens($button-tokens);\n\n    display: inline-flex;\n    gap: var(--btn-gap, .25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    // font-family: var(--btn-font-family);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    cursor: if(sass($enable-button-pointers): pointer; else: null);\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    @include border-radius(var(--btn-border-radius));\n    @include transition(var(--btn-transition));\n\n    &:hover {\n      color: var(--btn-hover-color);\n      background-color: var(--btn-hover-bg, var(--bg-3));\n      border-color: var(--btn-hover-border-color);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &.active,\n    &.show {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      border-color: var(--btn-active-border-color);\n\n      &:focus-visible {\n        @include focus-ring(true);\n      }\n    }\n\n    &:disabled,\n    &.disabled,\n    fieldset:disabled & {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n    }\n  }\n\n  // Main button style generator mixin\n  // Generate button variant classes (e.g., .btn-solid, .btn-outline, etc.)\n  // scss-docs-start btn-variant-mixin\n  @each $variant, $config in $button-variants {\n    .btn-#{$variant} {\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-#{$property}: transparent;\n        } @else {\n          --btn-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      @each $property, $value in map.get($button-variants, $variant, \"active\") {\n        @if $value == \"transparent\" {\n          --btn-active-#{$property}: transparent;\n        } @else if $value == \"bg-subtle\" {\n          --btn-active-#{$property}: var(--theme-#{$value});\n        } @else {\n          --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n        }\n      }\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-disabled-#{$property}: transparent;\n        } @else {\n          --btn-disabled-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      &:hover {\n        @each $property, $value in map.get($button-variants, $variant, \"hover\") {\n          @if $value == \"transparent\" {\n            --btn-hover-#{$property}: transparent;\n          } @else if meta.type-of($value) == \"list\" {\n            $first-value: list.nth($value, 1);\n            $second-value: list.nth($value, 2);\n            --btn-hover-#{$property}: color-mix(in oklch, var(--theme-#{$first-value}) 50%, var(--theme-#{$second-value}));\n          } @else if $value == \"bg-subtle\" {\n            --btn-hover-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-hover-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .95) calc(c * 1.1) h);\n          }\n        }\n      }\n\n      &:focus-visible {\n        outline-color: var(--theme-focus-ring);\n      }\n\n      &:active,\n      &.active,\n      &.btn-check:has(input:checked) {\n        @each $property, $value in map.get($button-variants, $variant, \"active\") {\n          @if $value == \"transparent\" {\n            --btn-active-#{$property}: transparent;\n          } @else if $value == \"bg-subtle\" {\n            --btn-active-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n          }\n        }\n      }\n\n      // Disabled state for toggle buttons\n      &:disabled,\n      &.disabled,\n      &.btn-check:has(input:disabled) {\n        @each $property, $value in map.get($button-variants, $variant, \"base\") {\n          @if $value == \"transparent\" {\n            --btn-disabled-#{$property}: transparent;\n          } @else {\n            --btn-disabled-#{$property}: var(--theme-#{$value});\n          }\n        }\n      }\n    }\n  }\n  // scss-docs-end btn-variant-mixin\n\n  //\n  // Link buttons\n  //\n\n  // Make a button look and behave like a link\n  .btn-link {\n    @include tokens($button-link-tokens);\n\n    color: var(--theme-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n\n    @if $enable-gradients {\n      background-image: none;\n    }\n\n    &:focus-visible {\n      color: var(--theme-fg, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-fg-emphasis, var(--btn-hover-color));\n    }\n\n    // No need for an active state here\n  }\n\n  //\n  // Button Sizes\n  //\n\n  // Generate button size classes from the $button-sizes map\n  // Skip \"md\" as it's the default size for .btn\n\n  // scss-docs-start btn-sizes-loop\n  @each $size, $_ in $button-sizes {\n    .btn-#{$size},\n    .btn-group-#{$size} > [class*=\"btn-\"] {\n      --btn-min-height: var(--btn-input-#{$size}-min-height);\n      --btn-padding-y: var(--btn-input-#{$size}-padding-y);\n      --btn-padding-x: var(--btn-input-#{$size}-padding-x);\n      --btn-font-size: var(--btn-input-#{$size}-font-size);\n      --btn-line-height: var(--btn-input-#{$size}-line-height);\n      --btn-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end btn-sizes-loop\n\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n\n  //\n  // Toggle buttons (.btn-check)\n  //\n  // Checkbox and radio inputs that look like buttons. Add .btn-check to a\n  // label with button classes, with the input nested inside.\n  //\n  // Example: <label class=\"btn-check btn-solid theme-primary\"><input type=\"checkbox\">Toggle</label>\n\n  .btn-check {\n    > input {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n\n    &:has(input:checked) {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-active-border-color);\n      @include box-shadow(var(--btn-active-shadow));\n    }\n\n    &:has(input:focus-visible) {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &:has(input:disabled) {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n      @include box-shadow(none);\n    }\n  }\n\n  //\n  // Styled buttons\n  //\n  // Add visual depth with gradients and shadows. Customize via CSS variables.\n\n  .btn-styled {\n    @include tokens($button-styled-tokens);\n\n    background-image:\n      linear-gradient(\n        to bottom,\n        var(--btn-gradient-start),\n        var(--btn-gradient-end)\n      );\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n\n    &:hover {\n      background-image:\n        linear-gradient(\n          to bottom,\n          var(--btn-gradient-start),\n          var(--btn-gradient-end)\n        );\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n    }\n\n    &:active,\n    &.active {\n      background-image: none;\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n      box-shadow: var(--btn-active-shadow);\n    }\n\n    &:disabled,\n    &.disabled {\n      background-image: none;\n      box-shadow: none;\n    }\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n@layer components {\n  // Make the div behave like a button\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle; // match .btn alignment given font-size hack above\n\n    > [class*=\"btn-\"] {\n      position: relative;\n      flex: 1 1 auto;\n\n      &:hover {\n        z-index: 1;\n      }\n    }\n\n    > .btn-check:has(input:checked),\n    > [class*=\"btn-\"]:active,\n    > [class*=\"btn-\"].active {\n      z-index: 2;\n    }\n\n    > .btn-check:has(input:focus),\n    > [class*=\"btn-\"]:focus {\n      z-index: 3;\n    }\n  }\n\n  .btn-group-divider {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        position: absolute;\n        // top: 25%;\n        // bottom: 25%;\n        // left: calc(var(--btn-border-width) * -1);\n        z-index: 3;\n        // width: var(--btn-border-width);\n        content: \"\";\n        background-color: var(--btn-color);\n        opacity: .25;\n      }\n    }\n  }\n\n  .btn-group:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: 25%;\n        bottom: 25%;\n        left: calc(var(--btn-border-width) * -1);\n        width: var(--btn-border-width);\n      }\n    }\n  }\n\n  .btn-group-vertical:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: calc(var(--btn-border-width) * -1);\n        right: var(--btn-padding-x);\n        left: var(--btn-padding-x);\n        height: var(--btn-border-width);\n      }\n    }\n  }\n\n  // Optional: Group multiple button groups together for a toolbar\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: .5rem;\n    justify-content: flex-start;\n\n    .input-group {\n      width: auto;\n    }\n  }\n\n  .btn-group {\n    @include border-radius(var(--btn-border-radius));\n\n    // Prevent double borders when buttons are next to each other\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-inline-start: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child, :has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-end-radius(0);\n    }\n\n    // The left radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-start-radius(0);\n    }\n  }\n\n  //\n  // Vertical button groups\n  //\n\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    > [class*=\"btn-\"],\n    > .btn-group {\n      width: 100%;\n    }\n\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-top: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child, :has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-bottom-radius(0);\n    }\n\n    // The top radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-top-radius(0);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" as *;\n@use \"../mixins/tokens\" as *;\n\n$btn-close-tokens: () !default;\n\n// scss-docs-start btn-close-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$btn-close-tokens: defaults(\n  (\n    --btn-close-size: 1.5rem,\n    --btn-close-color: inherit,\n    --btn-close-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/></svg>\"))},\n    --btn-close-opacity: .5,\n    --btn-close-hover-opacity: .75,\n    --btn-close-focus-opacity: .85,\n    --btn-close-disabled-opacity: .25,\n  ),\n  $btn-close-tokens\n);\n// scss-docs-end btn-close-tokens\n\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n@layer components {\n  .btn-close {\n    @include tokens($btn-close-tokens);\n\n    box-sizing: content-box;\n    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0; // for button elements\n    @include border-radius(var(--radius-5));\n    opacity: var(--btn-close-opacity);\n    @include mask-icon(var(--btn-close-icon));\n\n    // Override <a>'s hover style\n    &:hover {\n      color: var(--btn-close-color);\n      text-decoration: none;\n      opacity: var(--btn-close-hover-opacity);\n    }\n\n    &:focus-visible {\n      opacity: var(--btn-close-focus-opacity);\n      @include focus-ring();\n    }\n\n    &:disabled,\n    &.disabled {\n      pointer-events: none;\n      user-select: none;\n      opacity: var(--btn-close-disabled-opacity);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$accordion-tokens: () !default;\n\n// scss-docs-start accordion-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$accordion-tokens: defaults(\n  (\n    --accordion-padding-x: 1.25rem,\n    --accordion-padding-y: 1rem,\n    --accordion-color: var(--fg-body),\n    --accordion-bg: var(--bg-body),\n    --accordion-transition-property: \"color, background-color, border-radius\",\n    --accordion-transition-timing: \".15s ease-in-out\",\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing),\n    --accordion-border-color: var(--border-color),\n    --accordion-border-width: var(--border-width),\n    --accordion-border-radius: var(--accordion-radius, var(--radius-7)),\n    --accordion-btn-color: var(--fg-2),\n    --accordion-btn-bg: var(--bg-body),\n    --accordion-btn-icon-width: 1rem,\n    --accordion-btn-icon-transform: rotate(-180deg),\n    --accordion-btn-icon-transition: transform .2s ease-in-out,\n    --accordion-active-color: var(--fg),\n    --accordion-active-bg: var(--bg-2),\n  ),\n  $accordion-tokens\n);\n// scss-docs-end accordion-tokens\n\n@layer components {\n  .accordion {\n    @include tokens($accordion-tokens);\n  }\n\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none; // Remove default marker\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    @include transition(var(--accordion-transition));\n\n    &::-webkit-details-marker {\n      display: none;\n    }\n\n    .accordion-icon {\n      flex-shrink: 0;\n      width: var(--accordion-btn-icon-width);\n      height: var(--accordion-btn-icon-width);\n      margin-inline-start: auto;\n      color: currentcolor;\n      @include transition(var(--accordion-btn-icon-transition));\n    }\n\n    &:hover {\n      z-index: 2;\n    }\n\n    &:focus-visible {\n      position: relative;\n      z-index: 3;\n      @include focus-ring(true);\n      outline-offset: -1px;\n    }\n  }\n\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n\n    @media (prefers-reduced-motion: no-preference) {\n      interpolate-size: allow-keywords;\n    }\n\n    &::details-content {\n      block-size: 0;\n      overflow-y: clip;\n      @include transition(content-visibility .2s allow-discrete, block-size .2s);\n    }\n\n    &:first-of-type {\n      @include border-top-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-top-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n    }\n\n    &:not(:first-of-type) {\n      border-block-start: 0;\n    }\n\n    // Only set a border-radius on the last item if the accordion is collapsed\n    &:last-of-type {\n      @include border-bottom-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-bottom-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n\n      > .accordion-body {\n        @include border-bottom-radius(var(--accordion-border-radius));\n      }\n    }\n\n    // Open state - details[open] applies these styles\n    &[open] {\n\n      border-color: var(--theme-border, var(--accordion-border-color));\n      &::details-content {\n        block-size: auto;\n      }\n\n      > .accordion-header {\n        color: var(--theme-fg, var(--accordion-active-color));\n        background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n        box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n\n        .accordion-icon {\n          transform: var(--accordion-btn-icon-transform);\n        }\n      }\n\n      // Remove bottom radius from header when open (even on last item)\n      &:last-of-type > .accordion-header {\n        @include border-bottom-radius(0);\n      }\n    }\n  }\n\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n\n\n  // Flush accordion items\n  //\n  // Remove borders and border-radius to keep accordion items edge-to-edge.\n\n  .accordion-flush {\n    > .accordion-item {\n      border-inline: 0;\n      @include border-radius(0);\n\n      &:first-child {\n        border-block-start: 0;\n      }\n\n      &:last-child {\n        border-block-end: 0;\n      }\n\n      > .accordion-header,\n      > .accordion-body {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$alert-tokens: () !default;\n\n// scss-docs-start alert-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$alert-tokens: defaults(\n  (\n    --alert-gap: var(--spacer-3),\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: var(--spacer),\n    --alert-padding-y: var(--spacer),\n    --alert-color: var(--theme-fg, inherit),\n    --alert-border-color: var(--theme-border, var(--border-color)),\n    --alert-border: var(--border-width) solid var(--alert-border-color),\n    --alert-border-radius: var(--radius-5),\n    --alert-link-color: inherit,\n    --hr-border-color: var(--theme-border, var(--border-color)),\n  ),\n  $alert-tokens\n);\n// scss-docs-end alert-tokens\n\n@layer components {\n  .alert {\n    @include tokens($alert-tokens);\n\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    @include border-radius(var(--alert-border-radius));\n  }\n\n  .alert > p {\n    margin-bottom: 0;\n  }\n\n  .alert-heading {\n    // Specified to prevent conflicts of changing $headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n","@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$avatar-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start avatar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-tokens: defaults(\n  (\n    --avatar-size: 2.5rem,\n    --avatar-border-radius: 50%,\n    --avatar-border-width: 2px,\n    --avatar-border-color: var(--bg-body),\n    --avatar-bg: var(--bg-2),\n    --avatar-color: var(--fg-body),\n    // --avatar-font-weight: var(--font-weight-medium), // Defaults to fallback\n    --avatar-status-size: .75rem,\n    --avatar-status-border-width: 2px,\n    --avatar-status-border-color: var(--bg-body),\n    --avatar-stack-spacing: -.3,\n    --avatar-stack-transition: \"transform .2s ease-in-out\",\n  ),\n  $avatar-tokens\n);\n// scss-docs-end avatar-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start avatar-sizes\n$avatar-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-sizes: defaults(\n  (\n    \"xs\": (\n      size: 1.5rem,\n      status-size: .625rem,\n    ),\n    \"sm\": (\n      size: 2rem,\n    ),\n    \"lg\": (\n      size: 3rem,\n      status-size: 1rem,\n      border-width: 3px,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n      border-width: 4px,\n    ),\n  ),\n  $avatar-sizes\n);\n// scss-docs-end avatar-sizes\n\n@layer components {\n  .avatar {\n    @include tokens($avatar-tokens);\n\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * .4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    @include border-radius(var(--avatar-border-radius));\n\n    > .avatar-img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n  }\n\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    @include border-radius(var(--avatar-border-radius, 50%));\n  }\n\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    @include border-radius(50%);\n\n    &.status-online {\n      background-color: var(--green-500);\n    }\n\n    &.status-offline {\n      background-color: var(--gray-400);\n      @include border-radius(20%);\n    }\n\n    &.status-busy {\n      background-color: var(--red-500);\n      @include border-radius(20%);\n    }\n\n    &.status-away {\n      background-color: var(--yellow-500);\n    }\n  }\n\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n\n    .avatar {\n      // Stack spacing is calculated as a percentage of avatar size\n      margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n      border: var(--avatar-border-width) solid var(--avatar-border-color);\n      mask-image: none;\n      @include transition(var(--avatar-stack-transition));\n\n      &:last-child {\n        margin-left: 0;\n      }\n\n      &:hover {\n        z-index: 1;\n        transform: translateY(-2px);\n      }\n    }\n  }\n\n  @each $size, $tokens in $avatar-sizes {\n    .avatar-#{$size},\n    .avatar-stack-#{$size} > .avatar {\n      --avatar-size: #{map.get($tokens, size)};\n\n      @if map.has-key($tokens, status-size) {\n        --avatar-status-size: #{map.get($tokens, status-size)};\n      }\n\n      @if map.has-key($tokens, border-width) {\n        --avatar-border-width: #{map.get($tokens, border-width)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$badge-tokens: () !default;\n\n// scss-docs-start badge-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$badge-tokens: defaults(\n  (\n    --badge-padding-x: .625em,\n    --badge-padding-y: .25em,\n    --badge-font-size: clamp(12px, .75em, .75em),\n    --badge-font-weight: var(--font-weight-semibold),\n    --badge-color: inherit,\n    --badge-bg: var(--bg-2),\n    --badge-border-width: var(--border-width),\n    --badge-border-color: transparent,\n    --badge-border-radius: var(--radius-7),\n  ),\n  $badge-tokens\n);\n// scss-docs-end badge-tokens\n\n// scss-docs-start badge-variants\n$badge-variants: (\n  \"subtle\": (\n    \"color\": \"fg\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"fg\",\n    \"bg\": \"transparent\",\n    \"border-color\": \"border\"\n  )\n) !default;\n// scss-docs-end badge-variants\n\n@layer components {\n  .badge {\n    @include tokens($badge-tokens);\n\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    @include border-radius(var(--badge-border-radius));\n    // @include gradient-bg();\n\n    // Empty badges collapse automatically\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Quick fix for badges in buttons\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n\n  // scss-docs-start badge-variant-loop\n  @each $variant, $properties in $badge-variants {\n    .badge-#{$variant} {\n      @each $property, $value in $properties {\n        @if $value == \"transparent\" {\n          --badge-#{$property}: transparent;\n        } @else {\n          --badge-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      color: var(--badge-color);\n      background-color: var(--badge-bg);\n      border-color: var(--badge-border-color);\n    }\n  }\n  // scss-docs-end badge-variant-loop\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$breadcrumb-tokens: () !default;\n\n// scss-docs-start breadcrumb-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$breadcrumb-tokens: defaults(\n  (\n    --breadcrumb-margin-bottom: 1rem,\n    --breadcrumb-font-size: inherit,\n    --breadcrumb-bg: transparent,\n    --breadcrumb-border-radius: var(--radius-5),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-divider-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/></svg>\"))},\n    --breadcrumb-divider-width: .375rem,\n    --breadcrumb-divider-height: .75rem,\n    --breadcrumb-link-padding-x: .75rem,\n    --breadcrumb-link-padding-y: .25rem,\n    --breadcrumb-link-color: var(--fg-3),\n    --breadcrumb-link-hover-color: var(--fg-2),\n    --breadcrumb-link-hover-bg: var(--bg-1),\n    --breadcrumb-link-active-color: var(--fg-1),\n    --breadcrumb-link-border-radius: var(--radius-7),\n  ),\n  $breadcrumb-tokens\n);\n// scss-docs-end breadcrumb-tokens\n\n@layer components {\n  .breadcrumb {\n    @include tokens($breadcrumb-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style-type: \"\";\n    background-color: var(--breadcrumb-bg);\n    @include border-radius(var(--breadcrumb-border-radius));\n  }\n\n  .breadcrumb-item {\n    display: flex;\n  }\n\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n\n    // Render a default chevron, painted with `currentcolor` via a mask, when the\n    // divider has no explicit content. Any content (an inline SVG, a text\n    // character, etc.) added to the element overrides this default.\n    &:empty::before {\n      display: block;\n      width: var(--breadcrumb-divider-width);\n      height: var(--breadcrumb-divider-height);\n      content: \"\";\n      background-color: currentcolor;\n      @include mask-icon(var(--breadcrumb-divider-icon));\n    }\n  }\n\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    @include border-radius(var(--breadcrumb-link-border-radius));\n    @include transition(.1s text-decoration-color ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--breadcrumb-link-hover-color);\n      background-color: var(--breadcrumb-link-hover-bg);\n    }\n\n    &.active {\n      color: var(--breadcrumb-link-active-color);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$chip-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start chip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-tokens: defaults(\n  (\n    --chip-height: 1.75rem,\n    --chip-padding-x: .625rem,\n    --chip-gap: .3125rem,\n    --chip-border-radius: var(--radius-pill),\n    --chip-img-size: 1.25rem,\n    --chip-icon-size: 1rem,\n    --chip-dismiss-size: 1rem,\n    --chip-dismiss-opacity: .65,\n    --chip-dismiss-hover-opacity: 1,\n    --chip-color: var(--theme-fg, var(--fg-body)),\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2)),\n    --chip-border-color: transparent,\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast)),\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg)),\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg)),\n  ),\n  $chip-tokens\n);\n// scss-docs-end chip-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .chip {\n    @include tokens($chip-tokens);\n\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    @include border-radius(var(--chip-border-radius));\n\n    &:hover {\n      --chip-bg: var(--theme-bg-muted, var(--bg-3));\n    }\n\n    &:focus-visible {\n      outline: 0;\n      // @include focus-ring();\n    }\n\n    &.active {\n      --chip-color: var(--chip-selected-color);\n      --chip-bg: var(--chip-selected-bg);\n      --chip-border-color: var(--chip-selected-border-color);\n\n      &:hover {\n        --chip-bg: var(--chip-selected-bg);\n        opacity: .9;\n      }\n    }\n\n    &.disabled,\n    &:disabled {\n      pointer-events: none;\n      opacity: .65;\n    }\n  }\n\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    @include border-radius(50%);\n\n    &:first-child {\n      margin-inline-start: -.375rem;\n    }\n  }\n\n  // Chip icon (left side)\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -.25);\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n    }\n\n    > img {\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n      object-fit: cover;\n      @include border-radius(50%);\n    }\n  }\n\n  // Dismiss button (right side)\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    // margin-inline-start: calc(var(--chip-padding-x) * -.5);\n    margin-inline-end: calc(var(--chip-padding-x) * -.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n    // @include transition(opacity .15s ease-in-out);\n\n    &:hover {\n      opacity: var(--chip-dismiss-hover-opacity);\n    }\n\n    &:focus-visible {\n      outline: 0;\n      opacity: 1;\n      @include focus-ring();\n    }\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-dismiss-size);\n      height: var(--chip-dismiss-size);\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"layout/breakpoints\" as *;\n\n$card-tokens: () !default;\n\n// scss-docs-start card-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$card-tokens: defaults(\n  (\n    --card-spacer-y: var(--spacer-5),\n    --card-spacer-x: var(--spacer-5),\n    --card-subtitle-color: inherit,\n    --card-border-width: var(--border-width),\n    --card-border-color: var(--border-color-translucent),\n    --card-border-radius: var(--radius-7),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --card-cap-padding-y: var(--spacer-3),\n    --card-cap-padding-x: var(--spacer),\n    --card-cap-bg: var(--bg-1),\n    --card-cap-color: inherit,\n    --card-height: auto,\n    --card-color: inherit,\n    --card-bg: var(--bg-body),\n    --card-img-overlay-padding: var(--card-spacer-y),\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: calc(var(--card-spacer-y) * .5),\n  ),\n  $card-tokens\n);\n// scss-docs-end card-tokens\n\n@layer components {\n  .card {\n    @include tokens($card-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    // border: var(--card-border-width) solid var(--card-border-color);\n    @include border-radius(var(--card-border-radius));\n    @include box-shadow(var(--card-box-shadow));\n\n    > hr {\n      margin-inline: 0;\n    }\n  }\n\n  .card-body {\n    display: flex;\n    // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n    // as much space as possible, ensuring footers are aligned to the bottom.\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    &:first-child {\n      @include border-top-radius(var(--card-border-radius));\n      border-top-width: var(--card-border-width);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(var(--card-border-radius));\n      border-bottom-width: var(--card-border-width);\n    }\n\n    &:not(:first-child, :last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n\n    // The footer draws a full border (including its top edge), so a body/list\n    // segment that precedes it must not also draw a bottom border or the seam\n    // doubles up.\n    &:has(+ .card-footer) {\n      border-block-end-width: 0;\n    }\n  }\n\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -.5);\n  }\n\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0; // Removes the default margin-bottom of <hN>\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:first-child {\n      @include border-radius(var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0);\n    }\n  }\n\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:last-child {\n      @include border-radius(0 0 var(--card-inner-border-radius) var(--card-inner-border-radius));\n    }\n  }\n\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n\n    .card-header,\n    .card-footer {\n      background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n    }\n  }\n\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n\n    .card-header {\n      color: var(--theme-fg-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-footer {\n      color: var(--theme-fg-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-body,\n    .card-list {\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n  }\n\n  //\n  // Header navs\n  //\n\n  // Combined selector because of specificity match with `.nav` base class\n  .nav.card-header-tabs {\n    margin-inline: calc(-.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y) - var(--nav-tabs-border-width));\n    border-block-end: 0;\n\n    .nav-link.active {\n      background-color: var(--card-bg);\n      border-block-end-color: var(--card-bg);\n    }\n  }\n\n  // Card image\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    @include border-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n\n  .card-img,\n  .card-img-top {\n    @include border-top-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-bottom {\n    @include border-bottom-radius(var(--card-inner-border-radius));\n  }\n\n  .card-row {\n    flex-direction: row;\n\n    .card-body,\n    .card-list {\n      border-width: var(--card-border-width) 0;\n      @include border-radius(0);\n\n      &:first-child {\n        @include border-start-radius(var(--card-inner-border-radius));\n        border-inline-start-width: var(--card-border-width);\n      }\n\n      &:last-child {\n        @include border-end-radius(var(--card-inner-border-radius));\n        border-inline-end-width: var(--card-border-width);\n      }\n\n      &:not(:first-child, :last-child) {\n        border-inline-end-width: var(--card-border-width);\n      }\n    }\n  }\n\n  .card-img-start {\n    @include border-start-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img-end {\n    @include border-end-radius(var(--card-inner-border-radius));\n  }\n\n  //\n  // Card groups\n  //\n\n  // Card groups lay out their cards in a row using a container query, so wrap the\n  // group in a query container (e.g., the `.contains-inline` utility) for the row\n  // layout to take effect. Without a query container the cards remain stacked.\n  .card-group {\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      margin-bottom: var(--card-group-margin);\n    }\n\n    @include container-breakpoint-up(sm) {\n      display: flex;\n      flex-flow: row wrap;\n      // The child selector allows nested `.card` within `.card-group`\n      // to display properly.\n      > .card {\n        flex: 1 0 0;\n        margin-bottom: 0;\n\n        // Borders now live on the inner segments (header, body, list, footer)\n        // and the card images use outlines, so adjacent cards would otherwise\n        // render a doubled-up border at each seam. Pull subsequent cards back by\n        // one border width so their leading edges overlap the previous card's\n        // trailing edge, collapsing the seam into a single line. Gap can't be\n        // negative, so this relies on a negative margin.\n        + .card {\n          margin-inline-start: calc(-1 * var(--card-border-width));\n        }\n\n        // Handle rounded corners\n        @if $enable-rounded {\n          &:not(:last-child) {\n            @include border-end-radius(0);\n\n            > .card-img-top,\n            > .card-header,\n            > .card-body {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-end-radius: 0;\n            }\n          }\n\n          &:not(:first-child) {\n            @include border-start-radius(0);\n\n            > .card-img-top,\n            > .card-header,\n            > .card-body {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-gap: .75rem,\n    --carousel-indicator-bg: var(--fg-3),\n    --carousel-indicator-width: .75rem,\n    --carousel-indicator-height: .75rem,\n    --carousel-indicator-spacer: .25rem,\n    --carousel-indicator-transition: \"opacity .6s ease, width .3s ease\",\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg),\n    --carousel-control-icon-width: 1rem,\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\"),\n    --carousel-control-next-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\"),\n    --carousel-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\"),\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\"),\n    // Scroll-snap engine. `gap` must carry a length unit: it feeds the\n    // `.carousel-item` flex-basis `calc()`, and subtracting a unitless `0` from a\n    // percentage is invalid CSS (it would drop the whole declaration and collapse\n    // every slide to its content width). `peek` only feeds `padding-inline`/\n    // `scroll-padding-inline`, so a bare `0` would be valid there, but we keep it\n    // unit-bearing for consistency.\n    --carousel-items: 1,\n    --carousel-items-gap: 0px,\n    --carousel-items-peek: 0px,\n    --carousel-fade-duration: .6s,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .carousel {\n    @include tokens($carousel-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n\n  // The scroll viewport\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none; // Hide the scrollbar without losing scrollability\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n  }\n\n  // Smooth programmatic/keyboard scrolling, disabled under reduced-motion\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n\n  .carousel-item {\n    // `100%` here is `.carousel-inner`'s content box, which `padding-inline`\n    // has already inset by the peek on each side, so the peek must NOT be\n    // subtracted again — doing so makes every slide `2 * peek` too narrow and\n    // the peek lopsided. Only the inter-slide gaps need removing.\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n\n  //\n  // Layout variants\n  //\n\n  // Center the active slide in the viewport (pairs well with `--carousel-items-peek`)\n  .carousel-center {\n    .carousel-item {\n      scroll-snap-align: center;\n    }\n  }\n\n  // Let each slide size itself; snap points still land on every item\n  .carousel-auto {\n    .carousel-item {\n      flex-basis: auto;\n    }\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  // Fade can't ride scroll-snap (it stacks slides instead of scrolling), so it\n  // becomes a JavaScript-driven mode: every slide is stacked and the active one\n  // is faded in via a CSS opacity transition.\n  .carousel-fade {\n    .carousel-inner {\n      display: grid;\n      overflow: hidden;\n      scroll-snap-type: none;\n    }\n\n    .carousel-item {\n      grid-area: 1 / 1;\n      width: 100%;\n      visibility: hidden;\n      opacity: 0;\n      @include transition(opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration));\n    }\n\n    .carousel-item.active {\n      visibility: visible;\n      opacity: 1;\n      @include transition(opacity var(--carousel-fade-duration) ease);\n    }\n  }\n\n  // Icons for within, rendered via CSS mask so they inherit the current text\n  // color (white on the overlay controls, the button color inside `.btn-*`).\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    @include mask-icon($size: 100% 100%, $position: 50%);\n  }\n\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n\n  [dir=\"rtl\"] .carousel-icon-prev,\n  [dir=\"rtl\"] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n\n  // Optional play/pause control\n  //\n  // A discoverable toggle so users can stop an autoplaying carousel, as required\n  // by WCAG 2.2.2 (Pause, Stop, Hide). `.carousel-control-play-pause` is only a\n  // behavior hook—JS toggles `.paused` on it and its appearance comes from the\n  // wrapping button (e.g. `.btn-icon`). The button holds both glyphs and we show\n  // whichever `.carousel-icon-*` matches the current state.\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n\n  .carousel-control-play-pause.paused {\n    .carousel-icon-pause {\n      display: none;\n    }\n\n    .carousel-icon-play {\n      display: inline-block;\n    }\n  }\n\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n\n    [data-bs-target] {\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      cursor: pointer;\n      background-color: transparent;\n      border: 1px solid var(--carousel-indicator-bg);\n      @include border-radius(var(--carousel-indicator-width));\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      width: calc(var(--carousel-indicator-width) * 2.5);\n      background-color: var(--carousel-indicator-bg);\n      border-color: var(--carousel-indicator-bg);\n    }\n  }\n\n  // Autoplay progress: fill the active indicator like a progress bar over the\n  // current slide's interval. The JS adds `.carousel-playing` and sets\n  // `--carousel-interval` (shipped as `--bs-carousel-interval`) while autoplay is\n  // running. The fill restarts on its own each slide because `.active` moves to a\n  // fresh indicator, so its `::after` animation begins from scratch.\n  @if $enable-transitions {\n    @keyframes carousel-indicator-progress {\n      from { inline-size: 0; }\n      to { inline-size: 100%; }\n    }\n\n    .carousel-playing .carousel-indicators .active {\n      @media (prefers-reduced-motion: no-preference) {\n        position: relative;\n        overflow: hidden;\n        // Empty the pill so it reads as a track that the fill grows across.\n        background-color: transparent;\n\n        &::after {\n          position: absolute;\n          inset-block: 0;\n          inset-inline-start: 0;\n          inline-size: 0;\n          content: \"\";\n          background-color: var(--carousel-indicator-progress-bg);\n          animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n        }\n      }\n    }\n  }\n\n  // Overlay layout\n  //\n  // Overlays the prev/next controls, play/pause button, and indicators on top of\n  // the slides (the classic carousel look) instead of stacking them in the flow.\n\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n\n    .carousel-overlay-controls {\n      position: absolute;\n      inset-block-end: 1rem;\n      inset-inline: 1rem;\n      z-index: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n  }\n}\n","// stylelint-disable selector-max-attribute, property-disallowed-list, selector-no-qualifying-type -- VCP uses extensive data attributes and requires direct border-radius properties for range selection\n\n@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$datepicker-tokens: () !default;\n\n// scss-docs-start datepicker-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$datepicker-tokens: defaults(\n  (\n    --datepicker-padding: 1rem,\n    --datepicker-bg: var(--bg-body),\n    --datepicker-color: var(--fg-body),\n    --datepicker-border-color: var(--border-color-translucent),\n    --datepicker-border-width: var(--border-width),\n    --datepicker-border-radius: var(--radius-7),\n    --datepicker-box-shadow: var(--box-shadow),\n    --datepicker-font-size: var(--font-size-sm),\n    --datepicker-min-width: 280px,\n    --datepicker-zindex: #{$zindex-menu},\n    --datepicker-header-font-weight: 600,\n    --datepicker-weekday-color: var(--fg-3),\n    --datepicker-day-hover-bg: var(--bg-1),\n    --datepicker-day-selected-bg: var(--primary-bg),\n    --datepicker-day-selected-color: var(--primary-contrast),\n    --datepicker-day-today-bg: var(--bg-2),\n    --datepicker-day-today-color: var(--fg-1),\n    --datepicker-day-disabled-color: var(--fg-4),\n  ),\n  $datepicker-tokens\n);\n// scss-docs-end datepicker-tokens\n\n@layer components {\n  [data-vc=\"calendar\"] {\n    @include tokens($datepicker-tokens);\n\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    @include border-radius(var(--datepicker-border-radius));\n\n    // Respond to Bootstrap's color mode system\n    &[data-bs-theme=\"light\"] {\n      color-scheme: light;\n    }\n\n    &[data-bs-theme=\"dark\"] {\n      color-scheme: dark;\n    }\n\n    // Catch-all for focus styles\n    button:focus-visible {\n      position: relative;\n      z-index: 1;\n      @include focus-ring();\n    }\n  }\n\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n\n  // Inline calendars\n  //\n  // Remove popover styling for more neutral styling\n  [data-vc=\"calendar\"]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n\n  [data-vc-position=\"bottom\"] {\n    margin-block-start: .25rem;\n  }\n\n  [data-vc-position=\"top\"] {\n    margin-block-end: -.25rem;\n  }\n\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-color: var(--datepicker-color);\n      @include mask-icon(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\"), $size: null);\n    }\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc-arrow=\"prev\"]::before {\n    transform: rotate(90deg);\n  }\n\n  [data-vc-arrow=\"next\"]::before {\n    transform: rotate(-90deg);\n  }\n\n  // Grid layout\n  [data-vc=\"controls\"] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n\n  [data-vc=\"grid\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n\n  [data-vc=\"column\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n\n  //\n  // Header\n  //\n\n  [data-vc=\"header\"] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: .75rem;\n  }\n\n  // Month and year\n  [data-vc-header=\"content\"] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n\n  [data-vc=\"month\"],\n  [data-vc=\"year\"] {\n    padding: .25rem .5rem;\n    margin-inline: -.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    // cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc=\"content\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n\n  // Month/Year grids\n  [data-vc=\"months\"],\n  [data-vc=\"years\"] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: .25rem;\n    align-items: center;\n  }\n\n  [data-vc=\"years\"] {\n    --vc-columns: 5;\n  }\n\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: .25rem;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n\n    &[data-vc-months-month-selected],\n    &[data-vc-years-year-selected] {\n      color: var(--datepicker-day-selected-color);\n      background-color: var(--datepicker-day-selected-bg);\n\n      &:hover {\n        color: var(--datepicker-day-selected-color);\n        background-color: var(--datepicker-day-selected-bg);\n      }\n    }\n  }\n\n  // Week days header\n  [data-vc=\"week\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: .5rem;\n  }\n\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n\n  // Dates grid\n  [data-vc=\"dates\"] {\n    pointer-events: none;\n  }\n\n  [data-vc-dates=\"row\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: .125rem;\n    padding-bottom: .125rem;\n    pointer-events: auto;\n\n    &:not(:has([data-vc-date-btn])),\n    &[data-vc-date-disabled],\n    &[data-vc-date-disabled] [data-vc-date-btn] {\n      pointer-events: none;\n    }\n  }\n\n  // Date button\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: .75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  // Today\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n\n  // Outside month\n  [data-vc-date-month=\"next\"] [data-vc-date-btn],\n  [data-vc-date-month=\"prev\"] [data-vc-date-btn] {\n    opacity: .5;\n  }\n\n  // Disabled\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n\n  // Range selection styles\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n\n  [data-vc-date-hover=\"first\"] [data-vc-date-btn] {\n    border-start-start-radius: var(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"middle\"] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: .8;\n  }\n\n  // Selected\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n\n  }\n\n  [data-vc-date-selected=\"first\"] [data-vc-date-btn] {\n    border-top-left-radius: var(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// Native <dialog> component\n// Uses the browser's native dialog element with showModal()/show()/close() APIs\n// Leverages native [open] attribute and ::backdrop pseudo-element\n\n// stylelint-disable custom-property-no-missing-var-function\n$dialog-tokens: () !default;\n\n// scss-docs-start dialog-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-tokens: defaults(\n  (\n    --dialog-padding: 1rem,\n    --dialog-width: 500px,\n    --dialog-margin: 1.75rem,\n    --dialog-color: var(--fg-body),\n    --dialog-bg: var(--bg-body),\n    --dialog-border-color: var(--border-color-translucent),\n    --dialog-border-width: var(--border-width),\n    --dialog-border-radius: var(--radius-7),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-transition-duration: .3s,\n    --dialog-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --dialog-backdrop-bg: light-dark(rgb(0 0 0 / 50%), rgb(0 0 0 / 65%)),\n    --dialog-backdrop-blur: 8px,\n    --dialog-header-padding: 1rem,\n    --dialog-header-border-color: var(--border-color-translucent),\n    --dialog-header-border-width: var(--border-width),\n    --dialog-footer-padding: 1rem,\n    --dialog-footer-border-color: var(--border-color-translucent),\n    --dialog-footer-border-width: var(--border-width),\n    --dialog-footer-gap: .5rem,\n  ),\n  $dialog-tokens\n);\n// scss-docs-end dialog-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start dialog-sizes\n$dialog-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-sizes: defaults(\n  (\n    sm: 280px,\n    lg: 800px,\n    xl: 1140px,\n  ),\n  $dialog-sizes\n);\n// scss-docs-end dialog-sizes\n\n@layer components {\n  // Prevent page scroll when a dialog is open. Applied to the root element so\n  // `overflow: hidden` sits on the same element as `scrollbar-gutter: stable`\n  // (see _root.scss): the gutter stays reserved while the scrollbar is hidden,\n  // so the page doesn't shift when a dialog opens.\n  :root.dialog-open {\n    overflow: hidden;\n  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Override UA display:none so visibility controls the hidden state,\n    // enabling reliable cross-browser exit animations after close().\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    @include border-radius(var(--dialog-border-radius));\n    @include box-shadow(var(--dialog-box-shadow));\n\n    // Animated variant (default) — transitions, opacity fade, slide transforms.\n    // Adding .dialog-instant skips all animations (instant show/hide).\n    &:not(.dialog-instant) {\n      // Exit state: faded out\n      opacity: 0;\n\n      // Exit transition: opacity and transform animate out, then visibility\n      // flips hidden after the animation completes (via the delay).\n      @include transition(\n        opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n        transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n        visibility 0s var(--dialog-transition-duration)\n      );\n\n      // Slide-down variant: enters from above sliding down, exits by reversing\n      // back up. Base value is the entry-from / exit-to position so the\n      // animation works on every open (not just the first, which is the only\n      // time @starting-style applies for a persistent <dialog> element).\n      &.dialog-slide-down {\n        transform: translateY(-3rem);\n      }\n\n      // Slide-up variant: enters from below sliding up, exits by reversing\n      // back down. See note above re: base value choice.\n      &.dialog-slide-up {\n        transform: translateY(3rem);\n      }\n\n      // Open state: visible and faded in.\n      // Entry transition: visibility flips visible immediately (0s, no delay),\n      // then opacity and transform animate in.\n      // The :not(.hiding) qualifier lets the exit transition fall back to the\n      // base \"exit\" state above while [open] is still present (the JS keeps\n      // the dialog in the top layer during the exit so the ::backdrop and\n      // the browser's modal centering remain intact).\n      &[open]:not(.hiding) {\n        overflow: visible;\n        visibility: visible;\n        opacity: 1;\n        @include transition(\n          opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n          transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n          visibility 0s\n        );\n        transform: none;\n      }\n\n      // Static backdrop \"bounce\" animation (modal dialogs only). Qualified\n      // with [open] (to outrank the open-state `transform: none` selector\n      // which now also includes `:not(.hiding)`) and `:not(.hiding)` (so\n      // a backdrop click while the dialog is mid-exit doesn't fight the\n      // slide-out transform).\n      &[open].dialog-static:not(.hiding) {\n        transform: scale(1.02);\n      }\n\n      // Native backdrop styling with transitions\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n        @include backdrop-transitions(var(--dialog-transition-duration), var(--dialog-transition-timing));\n      }\n\n      // Exit: fade the native backdrop out alongside the dialog. The dialog\n      // is kept in the top layer (and thus the ::backdrop is still rendered)\n      // for the duration of the exit transition.\n      &.hiding::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n\n    // Instant variant — no transitions, just snap visibility\n    &.dialog-instant {\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n      }\n    }\n\n    // Open state base (always applies, regardless of animation mode).\n    // Excluded while .hiding is present so the animated exit (above) can\n    // fall through to the base \"exit\" state — for instant dialogs, .hiding\n    // is removed synchronously after close() so this still applies normally.\n    &[open]:not(.hiding) {\n      overflow: visible;\n      visibility: visible;\n      opacity: 1;\n      transform: none;\n    }\n\n    // Non-modal dialog positioning\n    // show() doesn't use the top layer, so we need explicit positioning and z-index\n    &.dialog-nonmodal {\n      position: fixed;\n      inset-block-start: 50%;\n      inset-inline-start: 50%;\n      z-index: $zindex-dialog;\n      margin-inline: 0;\n      transform: translate(-50%, -50%);\n    }\n\n    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Entry animation for ::backdrop via @starting-style. The backdrop only\n  // exists while the dialog is in the top layer, so its starting state can't\n  // be expressed on the base selector.\n  // Default dialog (fade only) and the slide variants do NOT need\n  // @starting-style — the base opacity: 0 (and base transform for slides)\n  // serves as the entry-from state with the visibility trick.\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n\n    // Swap entry: when this dialog is opened as the target of a swap, the\n    // outgoing dialog's ::backdrop is being removed synchronously in the same\n    // JS tick. To avoid any flicker (either a dip from a fade-in over nothing,\n    // or double-darkening from two stacked backdrops), start this backdrop\n    // already-opaque so it takes over from the outgoing one seamlessly.\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n  }\n\n  // Dialog sizes\n  @each $size, $value in $dialog-sizes {\n    .dialog-#{$size} { --dialog-width: #{$value}; }\n  }\n\n  // Fullscreen dialog\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n\n  // Responsive fullscreen dialogs\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @if $prefix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .#{css-escape-ident($breakpoint)}-down\\:dialog-fullscreen {\n          --dialog-width: 100vw;\n          --dialog-margin: 0;\n          --dialog-border-radius: 0;\n\n          width: 100%;\n          max-width: none;\n          height: 100%;\n          max-height: none;\n        }\n      }\n    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    @include dialog-header(var(--dialog-header-padding));\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n\n    .btn-close {\n      margin-inline-start: auto;\n    }\n  }\n\n  // Dialog title\n  .dialog-title {\n    @include dialog-title();\n    font-size: var(--font-size-md);\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    @include dialog-body(var(--dialog-padding));\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    @include dialog-footer(var(--dialog-footer-padding), var(--dialog-footer-gap), var(--dialog-footer-border-width), var(--dialog-footer-border-color));\n  }\n}\n","// Shared mixins for Dialog and Drawer sub-components.\n// Both components use identical header/footer/body/title patterns\n// with different token namespaces.\n\n@use \"transition\" as *;\n\n// Header: flex row with close button alignment\n@mixin dialog-header($padding) {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  padding: $padding;\n}\n\n// Footer: flex row with end-aligned actions\n@mixin dialog-footer($padding, $gap, $border-width, $border-color) {\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  gap: $gap;\n  align-items: center;\n  justify-content: flex-end;\n  padding: $padding;\n  border-block-start: $border-width solid $border-color;\n}\n\n// Body: flexible scrollable content area\n@mixin dialog-body($padding) {\n  flex: 1 1 auto;\n  padding: $padding;\n}\n\n// Title: reset margin, set line-height\n@mixin dialog-title($line-height: 1.5) {\n  margin-bottom: 0;\n  line-height: $line-height;\n}\n\n// Backdrop transitions for ::backdrop pseudo-element.\n// Both Dialog and Drawer use identical allow-discrete transitions\n// on display and overlay to keep ::backdrop in the top layer.\n@mixin backdrop-transitions($duration, $timing) {\n  @include transition(\n    background-color $duration $timing,\n    backdrop-filter $duration $timing,\n    display $duration allow-discrete,\n    overlay $duration allow-discrete\n  );\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// stylelint-disable scss/dollar-variable-default, custom-property-no-missing-var-function\n$menu-tokens: () !default;\n\n// scss-docs-start menu-tokens\n$menu-tokens: defaults(\n  (\n    --menu-zindex: #{$zindex-menu},\n    --menu-gap: .125rem,\n    --menu-min-width: 10rem,\n    --menu-padding-x: .25rem,\n    --menu-padding-y: .25rem,\n    --menu-spacer: .125rem,\n    --menu-font-size: var(--font-size-sm),\n    --menu-color: var(--fg-body),\n    --menu-bg: var(--bg-body),\n    // --menu-border-color: var(--border-color-translucent),\n    // --menu-border-radius: var(--radius-7),\n    // --menu-border-width: var(--border-width),\n    --menu-box-shadow: var(--box-shadow),\n    // --menu-max-height: none,\n    --menu-divider-bg: var(--border-color-translucent),\n    --menu-divider-margin-y: .125rem,\n    --menu-divider-margin-x: .25rem,\n    --menu-item-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-bg: var(--bg-1),\n    --menu-item-active-color: var(--primary-contrast),\n    --menu-item-active-bg: var(--primary-bg),\n    --menu-item-disabled-color: var(--fg-3),\n    --menu-item-gap: .5rem,\n    --menu-item-padding-x: .75rem,\n    --menu-item-padding-y: .25rem,\n    --menu-item-border-radius: var(--radius-5),\n    --menu-icon-size: 1rem,\n    --menu-description-font-size: var(--font-size-xs),\n    --menu-check-color: currentcolor,\n    --menu-header-color: var(--fg-3),\n    --menu-header-padding-x: .75rem,\n    --menu-header-padding-y: .25rem,\n    --menu-transition-duration: .15s,\n    --menu-transition-timing: cubic-bezier(.22, 1, .36, 1),\n  ),\n  $menu-tokens\n);\n// scss-docs-end menu-tokens\n\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n@layer components {\n  .menu {\n    @include tokens($menu-tokens);\n\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style-type: \"\";\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    @include border-radius(var(--menu-border-radius, var(--radius-7)));\n    @include box-shadow(var(--menu-box-shadow));\n    opacity: 0;\n    transform: scale(.95);\n    transform-origin: top start;\n\n    &[data-bs-placement^=\"top\"] {\n      transform-origin: bottom start;\n    }\n\n    &[data-bs-placement=\"bottom-end\"] {\n      transform-origin: top end;\n    }\n\n    &[data-bs-placement=\"top-end\"] {\n      transform-origin: bottom end;\n    }\n\n    &[data-bs-placement^=\"left\"] {\n      transform-origin: top end;\n    }\n\n    @include transition(\n      opacity var(--menu-transition-duration) var(--menu-transition-timing),\n      transform var(--menu-transition-duration) var(--menu-transition-timing),\n      display var(--menu-transition-duration) allow-discrete\n    );\n\n    &.show {\n      display: flex;\n      opacity: 1;\n      transform: none;\n    }\n  }\n\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(.95);\n    }\n  }\n\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-fg, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    @include border-radius(var(--menu-item-border-radius, 0));\n\n    &:hover,\n    &:focus {\n      color: var(--theme-fg-emphasis, var(--menu-item-hover-color));\n      background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n      // @include gradient-bg(var(--theme-bg-subtle, var(--menu-item-hover-bg)));\n    }\n\n    &.active,\n    &:active {\n      color: var(--theme-contrast, var(--menu-item-active-color));\n      background-color: var(--theme-bg, var(--menu-item-active-bg));\n      // @include gradient-bg(var(--theme-bg, var(--menu-item-active-bg)));\n\n      .menu-item-icon {\n        color: inherit !important; // stylelint-disable-line declaration-no-important\n      }\n    }\n\n    &.selected {\n      font-weight: $font-weight-semibold;\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--menu-item-disabled-color);\n      pointer-events: none;\n      background-color: transparent;\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n    }\n  }\n\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: .125rem;\n  }\n\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: .125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n\n    .selected > & {\n      visibility: visible;\n    }\n  }\n\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n\n  // scss-docs-start submenu\n  .submenu {\n    position: relative;\n\n    > .menu-item {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .menu-item::after {\n      display: inline-block;\n      flex-shrink: 0;\n      width: .375em;\n      height: .375em;\n      margin-inline-start: auto;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0 .125em .125em 0;\n      transform: rotate(-45deg);\n\n      [dir=\"rtl\"] & {\n        transform: rotate(135deg);\n      }\n    }\n\n    > .menu {\n      top: 0;\n      margin-top: calc(-1 * var(--menu-padding-y));\n    }\n\n    &:hover > .menu-item,\n    &:focus-within > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n\n    &.show > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n  }\n  // scss-docs-end submenu\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n$list-group-tokens: () !default;\n\n// scss-docs-start list-group-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$list-group-tokens: defaults(\n  (\n    --list-group-color: var(--fg-body),\n    --list-group-bg: var(--bg-body),\n    --list-group-border-color: var(--border-color),\n    --list-group-border-width: var(--border-width),\n    --list-group-border-radius: var(--radius-5),\n    --list-group-item-padding-x: var(--spacer),\n    --list-group-item-padding-y: var(--spacer-2),\n    --list-group-action-color: var(--fg-2),\n    --list-group-action-hover-color: var(--fg-1),\n    --list-group-action-hover-bg: var(--bg-1),\n    --list-group-action-active-color: var(--fg-body),\n    --list-group-action-active-bg: var(--bg-2),\n    --list-group-disabled-color: var(--fg-3),\n    --list-group-disabled-bg: var(--bg-body),\n    --list-group-active-color: var(--primary-contrast),\n    --list-group-active-bg: var(--primary-bg),\n    --list-group-active-border-color: var(--primary-bg),\n  ),\n  $list-group-tokens\n);\n// scss-docs-end list-group-tokens\n\n@layer components {\n  .list-group {\n    @include tokens($list-group-tokens);\n\n    display: flex;\n    flex-direction: column;\n\n    // No need to set list-style-type: \"\"; since .list-group-item is block level\n    padding-inline-start: 0; // reset padding because ul and ol\n    margin-bottom: 0;\n    @include border-radius(var(--list-group-border-radius));\n  }\n\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n\n    > .list-group-item::before {\n      // Increments only this instance of the section counter\n      content: counters(section, \".\") \". \";\n      counter-increment: section;\n    }\n  }\n\n  // Individual list items\n  //\n  // Use on `li`s or `div`s within the `.list-group` parent.\n\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-fg, var(--list-group-color));\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    text-decoration: if(sass($link-decoration == none): null);\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n\n    &:first-child {\n      @include border-top-radius(inherit);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(inherit);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--list-group-disabled-color);\n      pointer-events: none;\n      background-color: var(--list-group-disabled-bg);\n    }\n\n    // Include both here for `<a>`s and `<button>`s\n    &.active {\n      z-index: 2; // Place active items above their siblings for proper border styling\n      color: var(--list-group-active-color);\n      background-color: var(--list-group-active-bg);\n      border-color: var(--list-group-active-border-color);\n    }\n\n    // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector\n    & + .list-group-item {\n      border-block-start-width: 0;\n\n      &.active {\n        margin-top: calc(-1 * var(--list-group-border-width));\n        border-block-start-width: var(--list-group-border-width);\n      }\n    }\n  }\n\n  // Interactive list items\n  //\n  // Use anchor or button elements instead of `li`s or `div`s to create interactive\n  // list items. Includes an extra `.active` modifier class for selected items.\n\n  .list-group-item-action {\n    width: 100%; // For `<button>`s (anchors become 100% by default though)\n    color: var(--theme-fg, var(--list-group-action-color));\n    text-align: inherit; // For `<button>`s (anchors inherit)\n    text-decoration: none;\n\n    &:not(.active) {\n      // Hover state\n      &:hover,\n      &:focus {\n        z-index: 1; // Place hover/focus items above their siblings for proper border styling\n        color: var(--theme-fg-emphasis, var(--list-group-action-hover-color));\n        text-decoration: none;\n        background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n      }\n\n      &:active {\n        color: var(--theme-fg-emphasis, var(--list-group-action-active-color));\n        background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n      }\n    }\n  }\n\n  // Horizontal\n  //\n  // Change the layout of list group items from vertical (default) to horizontal.\n  // The responsive variants use container queries, so wrap the list group in a\n  // query container (e.g., the `.contains-inline` utility) for them to take effect.\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}list-group-horizontal {\n      @include container-breakpoint-up($breakpoint) {\n        flex-direction: row;\n\n        > .list-group-item {\n          &:first-child:not(:last-child) {\n            @include border-bottom-start-radius(var(--list-group-border-radius));\n            @include border-top-end-radius(0);\n          }\n\n          &:last-child:not(:first-child) {\n            @include border-top-end-radius(var(--list-group-border-radius));\n            @include border-bottom-start-radius(0);\n          }\n\n          &.active {\n            margin-top: 0;\n          }\n\n          + .list-group-item {\n            border-block-start-width: var(--list-group-border-width);\n            border-inline-start-width: 0;\n\n            &.active {\n              margin-inline-start: calc(-1 * var(--list-group-border-width));\n              border-inline-start-width: var(--list-group-border-width);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Flush list items\n  //\n  // Remove borders and border-radius to keep list group items edge-to-edge. Most\n  // useful within other components (e.g., cards).\n\n  .list-group-flush {\n    @include border-radius(0);\n\n    > .list-group-item {\n      border-width: 0 0 var(--list-group-border-width);\n\n      &:last-child {\n        border-block-end-width: 0;\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n$nav-tokens: () !default;\n\n// scss-docs-start nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tokens: defaults(\n  (\n    --nav-gap: .125rem,\n    --nav-link-gap: .5rem,\n    --nav-link-align: center,\n    --nav-link-justify: center,\n    --nav-link-padding-x: .75rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--fg-2),\n    --nav-link-hover-color: var(--fg-1),\n    --nav-link-hover-bg: var(--bg-1),\n    --nav-link-active-color: var(--fg-body),\n    --nav-link-active-bg: var(--bg-2),\n    --nav-link-disabled-color: var(--fg-4),\n    --nav-link-border-width: var(--border-width),\n    --nav-link-transition-property: \"color, background-color, border-color\",\n    --nav-link-transition-timing: .15s ease-in-out,\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing),\n  ),\n  $nav-tokens\n);\n// scss-docs-end nav-tokens\n\n$nav-tabs-tokens: () !default;\n\n// scss-docs-start nav-tabs-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tabs-tokens: defaults(\n  (\n    --nav-tabs-border-width: var(--border-width),\n    --nav-tabs-border-color: var(--border-color),\n    --nav-tabs-border-radius: var(--radius-5),\n    --nav-tabs-link-hover-border-color: var(--border-subtle),\n    --nav-tabs-link-active-color: var(--fg-color),\n    --nav-tabs-link-active-bg: var(--bg-body),\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body),\n  ),\n  $nav-tabs-tokens\n);\n// scss-docs-end nav-tabs-tokens\n\n$nav-pills-tokens: () !default;\n\n// scss-docs-start nav-pills-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-pills-tokens: defaults(\n  (\n    --nav-pills-bg: var(--bg-1),\n    --nav-pills-padding: .25rem,\n    --nav-pills-border-radius: var(--radius-9),\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n    --nav-pills-link-border-radius: var(--radius-9),\n  ),\n  $nav-pills-tokens\n);\n// scss-docs-end nav-pills-tokens\n\n$nav-underline-tokens: () !default;\n\n// scss-docs-start nav-underline-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-underline-tokens: defaults(\n  (\n    --nav-gap: 1rem,\n    --nav-link-active-bg: transparent,\n    --nav-underline-border-width: .125rem,\n    --nav-underline-link-active-color: var(--fg-color),\n  ),\n  $nav-underline-tokens\n);\n// scss-docs-end nav-underline-tokens\n\n// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n@layer components {\n  .nav {\n    @include tokens($nav-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n\n  .nav-item {\n    display: flex;\n  }\n\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    @include border-radius(var(--radius-5));\n    @include transition(var(--nav-link-transition));\n\n    &:hover,\n    &:focus {\n      color: var(--nav-link-hover-color);\n      background-color: var(--nav-link-hover-bg);\n    }\n\n    &:focus-visible {\n      --focus-ring-offset: 1px;\n      color: var(--nav-link-hover-color);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    &:active {\n      color: var(--nav-link-active-color);\n      background-color: var(--nav-link-active-bg);\n    }\n\n    // Disabled state lightens text\n    &.disabled,\n    &:disabled {\n      color: var(--nav-link-disabled-color);\n      pointer-events: none;\n      cursor: default;\n    }\n  }\n\n  //\n  // Tabs\n  //\n\n  .nav-tabs {\n    // scss-docs-start nav-tabs-css-vars\n    @include tokens($nav-tabs-tokens);\n    // scss-docs-end nav-tabs-css-vars\n\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n\n    .nav-link {\n      border: var(--nav-tabs-border-width) solid transparent;\n      border-bottom-color: var(--nav-tabs-border-color);\n      @include border-bottom-radius(0);\n\n      &:hover {\n        // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n        isolation: isolate;\n        border-color: var(--nav-tabs-link-hover-border-color);\n        border-bottom-color: var(--nav-tabs-border-color);\n      }\n    }\n\n    .nav-link.active,\n    .nav-item.show .nav-link {\n      color: var(--nav-tabs-link-active-color);\n      background-color: var(--nav-tabs-link-active-bg);\n      border-color: var(--nav-tabs-link-active-border-color);\n      border-bottom-color: var(--nav-tabs-link-active-bg);\n    }\n\n    .menu {\n      margin-top: calc(-1 * var(--nav-tabs-border-width));\n      @include border-top-radius(0);\n    }\n  }\n\n  //\n  // Pills\n  //\n\n  .nav-pills {\n    @include tokens($nav-pills-tokens);\n\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    @include border-radius(var(--nav-pills-border-radius));\n\n    .nav-link {\n      @include border-radius(var(--nav-pills-link-border-radius));\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      color: var(--nav-pills-link-active-color);\n      @include gradient-bg(var(--nav-pills-link-active-bg));\n    }\n  }\n\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n\n    .nav-item,\n    .nav-link {\n      width: 100%;\n    }\n  }\n\n  //\n  // Underline\n  //\n\n  .nav-underline {\n    // scss-docs-start nav-underline-css-vars\n    @include tokens($nav-underline-tokens);\n    // scss-docs-end nav-underline-css-vars\n\n    .nav-link {\n      padding-inline: 0;\n      border: 0;\n      border-block-end: var(--nav-underline-border-width) solid transparent;\n      @include border-radius(0);\n\n      &:hover,\n      &:focus {\n        border-block-end-color: currentcolor;\n      }\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      font-weight: $font-weight-bold;\n      color: var(--nav-underline-link-active-color);\n      border-block-end-color: currentcolor;\n    }\n  }\n\n  //\n  // Justified variants\n  //\n\n  .nav-fill {\n    > .nav-link,\n    .nav-item {\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n\n  .nav-justified {\n    > .nav-link,\n    .nav-item {\n      flex-grow: 1;\n      flex-basis: 0;\n      text-align: center;\n    }\n  }\n\n  .nav-fill,\n  .nav-justified {\n    .nav-item .nav-link {\n      width: 100%; // Make sure button will grow\n    }\n  }\n\n  // Tabbable tabs\n  //\n  // Hide tabbable panes to start, show them when `.active`\n\n  .tab-content {\n    > .tab-pane {\n      display: none;\n    }\n    > .active {\n      display: block;\n    }\n  }\n}\n","// Nav Overflow (Priority+ Pattern)\n//\n// A responsive navigation pattern that automatically moves items\n// to an overflow menu when space is limited.\n\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0; // Allow flex child to shrink below content width\n  }\n\n  // Pills use inline-flex by default; override so the nav fills its container\n  // and the ResizeObserver can detect width changes.\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n\n  // Inside a navbar the nav is a flex child that sizes to content by default;\n  // grow it so it fills remaining space and shrinks with the container.\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\n  }\n\n  // Container item for overflow\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n\n  // Hide items that have been moved to overflow\n  .nav-overflow [data-bs-nav-overflow=\"true\"] {\n    display: none;\n  }\n\n  // Preserve items that should never overflow\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// mdo-do: fix nav-link-height and navbar-brand-height, which we previously calculated with font-size, line-height, and block padding\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start navbar-breakpoints\n$navbar-breakpoints: $breakpoints !default;\n// scss-docs-end navbar-breakpoints\n\n$navbar-tokens: () !default;\n$navbar-dark-tokens: () !default;\n$navbar-nav-tokens: () !default;\n\n// scss-docs-start navbar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-tokens: defaults(\n  (\n    --navbar-padding-x: 0,\n    --navbar-padding-y: .5rem,\n    --navbar-color: var(--fg-2),\n    --navbar-hover-color: var(--fg-1),\n    --navbar-disabled-color: var(--fg-3),\n    --navbar-active-color: var(--fg-body),\n    --navbar-brand-padding-y: .75rem,\n    --navbar-brand-margin-end: 1rem,\n    --navbar-brand-font-size: var(--font-size-md),\n    --navbar-brand-font-weight: var(--font-weight-medium),\n    --navbar-brand-color: var(--fg-body),\n    --navbar-brand-hover-color: var(--fg-body),\n    --navbar-nav-link-padding-x: .75rem,\n    --navbar-toggler-width: 2rem,\n    --navbar-toggler-padding-y: .25rem,\n    --navbar-toggler-padding-x: .75rem,\n    --navbar-toggler-font-size: var(--font-size-lg),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    --navbar-toggler-border-radius: var(--radius-5),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n    --navbar-toggler-icon-size: 1.25rem,\n    --navbar-toggler-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/></svg>\"))},\n  ),\n  $navbar-tokens\n);\n// scss-docs-end navbar-tokens\n\n// scss-docs-start navbar-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-dark-tokens: defaults(\n  (\n    --navbar-color: color-mix(in oklch, var(--white) .55, transparent),\n    --navbar-hover-color: color-mix(in oklch, var(--white) .75, transparent),\n    --navbar-disabled-color: color-mix(in oklch, var(--white) .25, transparent),\n    --navbar-active-color: var(--white),\n    --navbar-brand-color: var(--white),\n    --navbar-brand-hover-color: var(--white),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) .1, transparent),\n  ),\n  $navbar-dark-tokens\n);\n// scss-docs-end navbar-dark-tokens\n\n// scss-docs-start navbar-nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-nav-tokens: defaults(\n  (\n    --nav-gap: .25rem,\n    --nav-link-gap: .5rem,\n    --nav-link-padding-x: .5rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--navbar-color),\n    --nav-link-border-width: var(--border-width),\n    //--nav-link-border-color: var(--border-color),\n    --nav-link-hover-color: var(--navbar-hover-color),\n    --nav-link-hover-bg: transparent,\n    --nav-link-active-color: var(--navbar-active-color),\n    --nav-link-active-bg: transparent,\n    --nav-link-disabled-color: var(--navbar-disabled-color),\n  ),\n  $navbar-nav-tokens\n);\n// scss-docs-end navbar-nav-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  // Base navbar\n  .navbar {\n    @include tokens($navbar-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    @include set-container();\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n    // @include gradient-bg(var(--navbar-bg, var(--bg-body)));\n\n    // Container properties for nested containers\n    %container-flex-properties {\n      display: flex;\n      flex-wrap: inherit;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .container,\n    > .container-fluid {\n      @extend %container-flex-properties;\n    }\n\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      > .#{breakpoint-prefix($breakpoint, $container-max-widths)}container {\n        @extend %container-flex-properties;\n      }\n    }\n  }\n\n  // Navbar brand\n  //\n  // Used for brand, project, or site names.\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n\n    &:hover,\n    &:focus {\n      color: var(--navbar-brand-hover-color);\n    }\n  }\n\n  // Navigation within navbars. Sets all nav-link CSS variables needed for\n  // proper styling.\n  //\n  // Relies on `.nav` base class.\n  .navbar-nav {\n    @include tokens($navbar-nav-tokens);\n\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n\n    .nav-link {\n      &.active,\n      &.show {\n        color: var(--navbar-active-color);\n        border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n      }\n    }\n  }\n\n  // Navbar text\n  //\n  // For adding text or inline elements to the navbar\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n\n    a,\n    a:hover,\n    a:focus {\n      color: var(--navbar-active-color);\n    }\n  }\n\n  // Button for toggling the navbar when in its collapsed state\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n\n  // Hamburger icon, rendered via CSS mask so it inherits the navbar color\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    @include mask-icon(var(--navbar-toggler-icon));\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of responsive `.navbar-expand` classes for configuring\n  // where your navbar collapses and expands. Uses container queries so the\n  // navbar responds to its own width, not the viewport width.\n\n  // Mixin for expanded state styles (applied to descendants)\n  @mixin navbar-expanded {\n    // Style the inner container since we can't style .navbar itself with container queries\n    > .container,\n    > .container-fluid,\n    %navbar-expand-container {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n\n    .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n\n    .navbar-toggler {\n      display: none !important; // stylelint-disable-line declaration-no-important\n    }\n\n    [class*=\"drawer\"] {\n      // stylelint-disable declaration-no-important\n      // Reset native <dialog> UA styles and below-breakpoint drawer styles.\n      // Must use !important to override both UA <dialog> defaults and the\n      // responsive drawer styles from media-breakpoint-down().\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      @include box-shadow(none);\n      @include transition(none);\n      // stylelint-enable declaration-no-important\n\n      .drawer-header {\n        display: none !important; // stylelint-disable-line declaration-no-important\n      }\n\n      .drawer-body {\n        display: flex;\n        flex-grow: 1;\n        flex-direction: row;\n        align-items: center;\n        padding: 0;\n        overflow-y: visible;\n      }\n    }\n  }\n\n  // Always expanded (no responsive behavior)\n  .navbar-expand {\n    @include navbar-expanded();\n\n    // Also set on navbar itself for non-responsive case\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n\n  // Responsive navbar expand classes using container queries\n  @include loop-breakpoints-down($navbar-breakpoints) using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}navbar-expand {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  // Prevent drawer flash on breakpoint crossing.\n  // When the navbar crosses from expanded (inline) to collapsed (drawer),\n  // the drawer transitions from visibility:visible to visibility:hidden.\n  // Without this override, the slide transition plays — briefly showing the\n  // panel sliding away. Disabling transitions when not [open] ensures only\n  // intentional show/hide actions animate.\n  // stylelint-disable-next-line no-duplicate-selectors\n  .navbar {\n    [class*=\"drawer\"]:not([open], .hiding) {\n      @include transition(none !important);\n    }\n  }\n\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n\n    &::before {\n      position: absolute;\n      inset: 0;\n      z-index: -1;\n      content: \"\";\n      background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n      background-image: none;\n      backdrop-filter: blur(5px) saturate(180%);\n    }\n  }\n\n  .navbar[data-bs-theme=\"dark\"] {\n    @include tokens($navbar-dark-tokens);\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$drawer-tokens: () !default;\n\n// scss-docs-start drawer-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-tokens: defaults(\n  (\n    --drawer-inset: var(--spacer),\n    --drawer-zindex: #{$zindex-drawer},\n    --drawer-width: 400px,\n    --drawer-height: 30vh,\n    --drawer-padding-x: var(--spacer),\n    --drawer-padding-y: var(--spacer),\n    --drawer-color: var(--fg-body),\n    --drawer-bg: var(--bg-body),\n    --drawer-border-width: var(--border-width),\n    --drawer-border-color: var(--border-color-translucent),\n    --drawer-border-radius: var(--radius-7),\n    --drawer-box-shadow: var(--box-shadow-lg),\n    --drawer-transition-duration: .3s,\n    --drawer-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --drawer-title-line-height: 1.5,\n    --drawer-backdrop-bg: color-mix(in oklch, var(--bg-body) 25%, transparent),\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-tokens\n);\n// scss-docs-end drawer-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$drawer-backdrop-tokens: () !default;\n\n// scss-docs-start drawer-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-backdrop-tokens: defaults(\n  (\n    --drawer-backdrop-bg: var(--bg-body),\n    --drawer-backdrop-opacity: 25%,\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-backdrop-tokens\n);\n// scss-docs-end drawer-backdrop-tokens\n\n%drawer-css-vars {\n  @include tokens($drawer-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all drawer responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @extend %drawer-css-vars;\n    }\n  }\n\n  // Responsive drawer styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @include media-breakpoint-down($next) {\n        // Reset native <dialog> UA defaults (fit-content sizing, inset, margins)\n        // and override display:none so visibility controls the hidden state.\n        position: fixed;\n        inset: auto;\n        z-index: var(--drawer-zindex);\n        display: flex;\n        flex-direction: column;\n        width: auto;\n        max-width: calc(100% - var(--drawer-inset) * 2);\n        height: auto;\n        max-height: calc(100% - var(--drawer-inset) * 2);\n        padding: 0;\n        margin: 0;\n        color: var(--drawer-color);\n        visibility: hidden;\n        background-color: var(--drawer-bg);\n        background-clip: padding-box;\n        border: var(--drawer-border-width) solid var(--drawer-border-color);\n        outline: 0;\n\n        @include border-radius(var(--drawer-border-radius));\n        @include box-shadow(var(--drawer-box-shadow));\n\n        // Placement positioning and sizing — always applied regardless of animation mode.\n        &:where(.drawer-start) {\n          inset-block: var(--drawer-inset);\n          inset-inline-start: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-end) {\n          inset-block: var(--drawer-inset);\n          inset-inline-end: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-top) {\n          inset: var(--drawer-inset) var(--drawer-inset) auto;\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-bottom) {\n          inset: auto var(--drawer-inset) var(--drawer-inset);\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-fullscreen) {\n          inset: var(--drawer-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n        }\n\n        // Animated variant (default) — transitions + off-screen transforms.\n        // Adding .drawer-instant skips all animations.\n        &:not(.drawer-instant) {\n          @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration));\n\n          // Off-screen transforms per placement\n          &:where(.drawer-start) {\n            transform: translateX(calc(-100% - var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(100% + var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-end) {\n            transform: translateX(calc(100% + var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(-100% - var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-top) {\n            transform: translateY(calc(-100% - var(--drawer-inset)));\n          }\n\n          &:where(.drawer-bottom) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          &:where(.drawer-fullscreen) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          // Open state: slide in with transition\n          &[open] {\n            visibility: visible;\n            @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s);\n            transform: none;\n          }\n        }\n\n        // Open state base (always applies, regardless of animation mode)\n        &[open] {\n          visibility: visible;\n          transform: none;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive drawer)\n      // Above breakpoint - show content inline (for responsive drawer).\n      // Must fully reset all drawer styles so the element behaves as an\n      // inline flex container within its parent (e.g., a navbar).\n      @if not ($prefix == \"\") {\n        @include media-breakpoint-up($next) {\n          // stylelint-disable declaration-no-important\n          --drawer-height: auto;\n          --drawer-border-width: 0;\n          // Reset native <dialog> UA styles\n          position: static !important;\n          inset: auto;\n          z-index: auto;\n          display: flex !important;\n          flex-grow: 1;\n          width: auto !important;\n          max-width: none;\n          height: auto !important;\n          max-height: none;\n          padding: 0;\n          margin: 0;\n          visibility: visible !important;\n          background-color: transparent !important;\n          border: 0 !important;\n          transform: none !important;\n          @include transition(none !important);\n          // stylelint-enable declaration-no-important\n\n          .drawer-header {\n            display: none;\n          }\n\n          .drawer-body {\n            display: flex;\n            flex-grow: 0;\n            flex-direction: row;\n            width: 100%;\n            padding: 0;\n            overflow-y: visible;\n            // stylelint-disable-next-line declaration-no-important\n            background-color: transparent !important;\n          }\n          @include border-radius(0);\n          @include box-shadow(none);\n        }\n      }\n    }\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer::backdrop {\n      background-color: var(--drawer-backdrop-bg);\n      backdrop-filter: blur(var(--drawer-backdrop-blur));\n      @include backdrop-transitions(var(--drawer-transition-duration), var(--drawer-transition-timing));\n    }\n  }\n\n  // Backdrop entry animation — ::backdrop can safely use @starting-style\n  // since it only exists when the dialog is in the top layer (no responsive issue).\n  @starting-style {\n    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n      .#{$prefix}drawer::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n  }\n\n  // Static backdrop transition (\"bounce\")\n  .drawer-static {\n    transform: scale(1.02);\n  }\n\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  // Sheet variant: flush-to-edge panel with no inset, border-radius, or shadow.\n  // Overrides tokens so placement transforms (which use calc() with --drawer-inset)\n  // automatically position the drawer at the viewport edge.\n  .drawer-sheet {\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100vw;\n    margin-inline: auto;\n    margin-bottom: calc(-1 * var(--drawer-border-width));\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n\n    @include media-breakpoint-up(lg) {\n      max-width: var(--drawer-sheet-width, 760px);\n    }\n  }\n\n  // Header with close button\n  .drawer-header {\n    @include dialog-header(var(--drawer-padding-y) var(--drawer-padding-x));\n\n    .btn-close {\n      margin-block: calc(-.5 * var(--drawer-padding-y));\n      margin-inline-start: auto;\n    }\n  }\n\n  // Title\n  .drawer-title {\n    @include dialog-title(var(--drawer-title-line-height));\n  }\n\n  // Scrollable body\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    @include dialog-body(var(--drawer-padding-y) var(--drawer-padding-x));\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .drawer-footer {\n    @include dialog-footer(var(--drawer-padding-y) var(--drawer-padding-x), .5rem, var(--drawer-border-width), var(--drawer-border-color));\n  }\n\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/lists\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// mdo-do: Update pagination to support variant themes\n\n// stylelint-disable custom-property-no-missing-var-function\n$pagination-tokens: () !default;\n\n// scss-docs-start pagination-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-tokens: defaults(\n  (\n    --pagination-min-height: var(--btn-input-min-height),\n    --pagination-padding-x: var(--btn-input-padding-x),\n    --pagination-padding-y: var(--btn-input-padding-y),\n    --pagination-font-size: var(--btn-input-font-size),\n    --pagination-color: var(--link-color),\n    --pagination-bg: var(--bg-body),\n    --pagination-border-width: var(--border-width),\n    --pagination-border-color: var(--border-color),\n    --pagination-border-radius: var(--btn-input-border-radius),\n    --pagination-hover-color: var(--link-hover-color),\n    --pagination-hover-bg: var(--bg-1),\n    --pagination-hover-border-color: var(--border-color),\n    --pagination-focus-color: var(--link-hover-color),\n    --pagination-focus-bg: var(--bg-2),\n    --pagination-active-color: var(--primary-contrast),\n    --pagination-active-bg: var(--primary-bg),\n    --pagination-active-border-color: var(--primary-bg),\n    --pagination-disabled-color: var(--fg-3),\n    --pagination-disabled-bg: var(--bg-2),\n    --pagination-disabled-border-color: var(--border-color),\n  ),\n  $pagination-tokens\n);\n// scss-docs-end pagination-tokens\n\n// scss-docs-start pagination-sizes\n$pagination-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $pagination-sizes\n);\n// scss-docs-end pagination-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .pagination {\n    @include tokens($pagination-tokens);\n\n    display: flex;\n    @include list-unstyled();\n  }\n\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    @include transition(color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--pagination-hover-color);\n      background-color: var(--pagination-hover-bg);\n      border-color: var(--pagination-hover-border-color);\n    }\n\n    &:focus-visible {\n      z-index: 3;\n      color: var(--pagination-focus-color);\n      background-color: var(--pagination-focus-bg);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    .active > & {\n      z-index: 3;\n      color: var(--pagination-active-color);\n      @include gradient-bg(var(--pagination-active-bg));\n      border-color: var(--pagination-active-border-color);\n    }\n\n    &.disabled,\n    .disabled > & {\n      color: var(--pagination-disabled-color);\n      pointer-events: none;\n      background-color: var(--pagination-disabled-bg);\n      border-color: var(--pagination-disabled-border-color);\n    }\n  }\n\n  .page-item {\n    &:not(:first-child) .page-link {\n      margin-inline-start: calc(-1 * var(--pagination-border-width));\n    }\n\n    &:first-child {\n      .page-link {\n        @include border-start-radius(var(--pagination-border-radius));\n      }\n    }\n\n    &:last-child {\n      .page-link {\n        @include border-end-radius(var(--pagination-border-radius));\n      }\n    }\n  }\n\n  //\n  // Sizing\n  //\n\n  // scss-docs-start pagination-sizes-loop\n  @each $size, $_ in $pagination-sizes {\n    .pagination-#{$size} {\n      --pagination-min-height: var(--bs-btn-input-#{$size}-min-height);\n      --pagination-padding-y: var(--btn-input-#{$size}-padding-y);\n      --pagination-padding-x: var(--btn-input-#{$size}-padding-x);\n      --pagination-font-size: var(--btn-input-#{$size}-font-size);\n      --pagination-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end pagination-sizes-loop\n}\n","@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n$placeholder-tokens: () !default;\n\n// scss-docs-start placeholder-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$placeholder-tokens: defaults(\n  (\n    --placeholder-opacity-max: .5,\n    --placeholder-opacity-min: .2,\n  ),\n  $placeholder-tokens\n);\n// scss-docs-end placeholder-tokens\n\n@layer components {\n  .placeholder {\n    @include tokens($placeholder-tokens);\n\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n\n    &.btn::before {\n      display: inline-block;\n      content: \"\";\n    }\n  }\n\n  // Sizing\n  .placeholder-xs {\n    min-height: .6em;\n  }\n\n  .placeholder-sm {\n    min-height: .8em;\n  }\n\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n\n  // Animation\n  .placeholder-glow {\n    .placeholder {\n      animation: placeholder-glow 2s ease-in-out infinite;\n    }\n  }\n\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, $black 55%, rgb(0 0 0 / calc(1 - var(--placeholder-opacity-min))) 75%, $black 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$popover-tokens: () !default;\n\n// scss-docs-start popover-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$popover-tokens: defaults(\n  (\n    --popover-zindex: #{$zindex-popover},\n    --popover-max-width: 280px,\n    --popover-font-size: var(--font-size-sm),\n    --popover-bg: var(--bg-body),\n    --popover-border-width: var(--border-width),\n    --popover-border-color: var(--border-color-translucent),\n    --popover-border-radius: var(--radius-7),\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: var(--spacer),\n    --popover-header-padding-y: var(--spacer-3),\n    --popover-header-font-size: var(--font-size-sm),\n    --popover-header-color: #{$headings-color},\n    --popover-header-bg: var(--bg-1),\n    --popover-body-padding-x: var(--spacer),\n    --popover-body-padding-y: var(--spacer-3),\n    --popover-body-color: var(--fg-body),\n    --popover-arrow-width: 1rem,\n    --popover-arrow-height: .5rem,\n    --popover-arrow-border: var(--popover-border-color),\n  ),\n  $popover-tokens\n);\n// scss-docs-end popover-tokens\n\n@layer components {\n  .popover {\n    // scss-docs-start popover-css-vars\n    @include tokens($popover-tokens);\n    // scss-docs-end popover-css-vars\n\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--popover-font-size);\n    // Allow breaking very long words so they don't overflow the popover's bounds\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-radius(var(--popover-border-radius));\n    @include box-shadow(var(--popover-box-shadow));\n\n    .popover-arrow {\n      display: block;\n      width: var(--popover-arrow-width);\n      height: var(--popover-arrow-height);\n\n      &::before,\n      &::after {\n        position: absolute;\n        display: block;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n        border-width: 0;\n      }\n    }\n  }\n\n  .bs-popover-top {\n    > .popover-arrow {\n      bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        bottom: 0;\n        border-block-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        bottom: var(--popover-border-width);\n        border-block-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-end {\n    > .popover-arrow {\n      left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        left: 0;\n        border-inline-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        left: var(--popover-border-width);\n        border-inline-end-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-bottom {\n    > .popover-arrow {\n      top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        top: 0;\n        border-block-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        top: var(--popover-border-width);\n        border-block-end-color: var(--popover-bg);\n      }\n\n      // When the popover has a header, the bottom arrow points into the header,\n      // so its fill should match the header background, not the body background.\n      &:has(+ .popover-header)::after {\n        border-block-end-color: var(--popover-header-bg);\n      }\n    }\n\n    // This will remove the popover-header's border just below the arrow\n    .popover-header::before {\n      position: absolute;\n      top: 0;\n      left: 50%;\n      display: block;\n      width: var(--popover-arrow-width);\n      margin-inline-start: calc(-.5 * var(--popover-arrow-width));\n      content: \"\";\n      border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n    }\n  }\n\n  .bs-popover-start {\n    > .popover-arrow {\n      right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        right: 0;\n        border-inline-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        right: var(--popover-border-width);\n        border-inline-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-popover-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-popover-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-popover-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-popover-start;\n    }\n  }\n\n  // Offset the popover to account for the popover arrow\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0; // Reset the default from Reboot\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-top-radius(var(--popover-inner-border-radius));\n\n    &:empty {\n      display: none;\n    }\n  }\n\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n","@mixin reset-text {\n  font-family: var(--body-font-family);\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: var(--body-font-weight);\n  line-height: var(--body-line-height);\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  white-space: normal;\n  word-spacing: normal;\n  line-break: auto;\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n\n$progress-tokens: () !default;\n\n// scss-docs-start progress-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$progress-tokens: defaults(\n  (\n    --progress-height: 1rem,\n    --progress-font-size: var(--font-size-sm),\n    --progress-bg: var(--bg-2),\n    --progress-border-radius: var(--radius-5),\n    --progress-box-shadow: var(--box-shadow-inset),\n    --progress-bar-color: var(--white),\n    --progress-bar-bg: var(--primary-bg),\n    --progress-bar-transition: width .6s ease,\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite,\n  ),\n  $progress-tokens\n);\n// scss-docs-end progress-tokens\n\n// Disable animation if transitions are disabled\n\n@layer components {\n  // scss-docs-start progress-keyframes\n  @if $enable-transitions {\n    @keyframes progress-bar-stripes {\n      0% { background-position-x: var(--progress-height); }\n    }\n  }\n  // scss-docs-end progress-keyframes\n\n  .progress,\n  .progress-stacked {\n    @include tokens($progress-tokens);\n\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    @include border-radius(var(--progress-border-radius));\n    @include box-shadow(var(--progress-box-shadow));\n  }\n\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    @include transition(var(--progress-bar-transition));\n  }\n\n  .progress-bar-striped {\n    @include gradient-striped();\n    background-size: var(--progress-height) var(--progress-height);\n  }\n\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n\n  @if $enable-transitions {\n    .progress-bar-animated {\n      animation: var(--progress-bar-animation);\n\n      @if $enable-reduced-motion {\n        @media (prefers-reduced-motion: reduce) {\n          animation: none;\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$spinner-border-tokens: () !default;\n\n// scss-docs-start spinner-border-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-border-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-border-width: .25em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-border,\n  ),\n  $spinner-border-tokens\n);\n// scss-docs-end spinner-border-tokens\n\n$spinner-grow-tokens: () !default;\n\n// scss-docs-start spinner-grow-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-grow-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-grow,\n  ),\n  $spinner-grow-tokens\n);\n// scss-docs-end spinner-grow-tokens\n\n// stylelint-enable custom-property-no-missing-var-function\n\n//\n// Rotating border\n//\n\n@layer components {\n  // mdo-do: Refactor this to assume flex parent and remove `vertical-align`\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n\n  // scss-docs-start spinner-border-keyframes\n  @keyframes spinner-border {\n    to { transform: rotate(360deg); }\n  }\n  // scss-docs-end spinner-border-keyframes\n\n  .spinner-border {\n    @include tokens($spinner-border-tokens);\n\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n\n  .spinner-border-sm {\n    // scss-docs-start spinner-border-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n    // scss-docs-end spinner-border-sm-css-vars\n  }\n\n  //\n  // Growing circle\n  //\n\n  // scss-docs-start spinner-grow-keyframes\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  // scss-docs-end spinner-grow-keyframes\n\n  .spinner-grow {\n    @include tokens($spinner-grow-tokens);\n\n    background-color: currentcolor;\n    opacity: 0;\n  }\n\n  .spinner-grow-sm {\n    // scss-docs-start spinner-grow-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    // scss-docs-end spinner-grow-sm-css-vars\n  }\n\n  @if $enable-reduced-motion {\n    @media (prefers-reduced-motion: reduce) {\n      .spinner-border,\n      .spinner-grow {\n        --spinner-animation-speed: 1.5s;\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$stepper-tokens: () !default;\n\n// scss-docs-start stepper-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$stepper-tokens: defaults(\n  (\n    --stepper-size: 2rem,\n    --stepper-gap: 1rem,\n    --stepper-font-size: var(--font-size-sm),\n    --stepper-text-gap: .5rem,\n    --stepper-track-size: .125rem,\n    --stepper-bg: var(--bg-2),\n    --stepper-active-color: var(--primary-contrast),\n    --stepper-active-bg: var(--primary-bg),\n  ),\n  $stepper-tokens\n);\n// scss-docs-end stepper-tokens\n\n// scss-docs-start stepper-horizontal-mixin\n@mixin stepper-horizontal() {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n\n  .stepper-item {\n    grid-template-rows: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n\n    &::after {\n      inset-block-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 100%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n@layer components {\n  .stepper {\n    @include tokens($stepper-tokens);\n\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\n  }\n\n  .stepper-item {\n    position: relative;\n    display: grid;\n    grid-template-rows: auto;\n    grid-template-columns: var(--stepper-size) auto;\n    gap: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, center);\n    text-decoration: none;\n\n    // The counter\n    &::before {\n      position: relative;\n      z-index: 1;\n      display: flex;\n      flex-shrink: 0;\n      align-items: center;\n      justify-content: center;\n      width: var(--stepper-size);\n      height: var(--stepper-size);\n      padding: .5rem;\n      font-size: var(--stepper-font-size);\n      font-weight: 600;\n      line-height: 1;\n      text-align: center;\n      content: counter(stepper);\n      counter-increment: stepper;\n      background-color: var(--stepper-bg);\n      @include border-radius(50%);\n    }\n\n    // Connecting lines\n    &::after {\n      position: absolute;\n      inset-block-start: 50%;\n      inset-block-end: 100%;\n      inset-inline-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      width: var(--stepper-track-size);\n      height: calc(100% + var(--stepper-gap));\n      content: \"\";\n      background-color: var(--stepper-bg);\n    }\n\n    // Avoid sibling selector for easier CSS overrides\n    &:last-child::after {\n      display: none;\n    }\n\n    &.active {\n      &::before,\n      &::after {\n        color: var(--theme-contrast, var(--stepper-active-color));\n        background-color: var(--theme-bg, var(--stepper-active-bg));\n      }\n    }\n  }\n\n  // Targets the last .active element from a sequence of active elements\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n\n  .stepper-horizontal {\n    @include stepper-horizontal();\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}stepper-horizontal {\n        @include container-breakpoint-up($next) {\n          @include stepper-horizontal();\n        }\n      }\n    }\n  }\n\n  // scss-docs-start stepper-overflow\n  .stepper-overflow {\n    container-type: inline-size;\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n\n    > .stepper {\n      width: max-content;\n      min-width: 100%;\n    }\n  }\n  // scss-docs-end stepper-overflow\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$toast-tokens: () !default;\n\n// scss-docs-start toast-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$toast-tokens: defaults(\n  (\n    --toast-zindex: #{$zindex-toast},\n    --toast-padding-x: 1rem,\n    --toast-padding-y: .75rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: var(--font-size-sm),\n    --toast-color: null,\n    --toast-bg: var(--bg-body),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: null,\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: var(--bg-1),\n    --toast-header-border-color: var(--border-color-translucent),\n  ),\n  $toast-tokens\n);\n// stylelint-enable custom-property-no-missing-var-function\n// scss-docs-end toast-tokens\n\n@layer components {\n  .toast {\n    @include tokens($toast-tokens);\n\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius, var(--radius-7)));\n\n    &.showing {\n      opacity: 0;\n    }\n\n    &:not(.show) {\n      display: none;\n    }\n  }\n\n  .toast-container {\n    --toast-zindex: #{$zindex-toast};\n\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n\n    > :not(:last-child) {\n      margin-bottom: var(--toast-spacing);\n    }\n  }\n\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    // background-clip: padding-box;\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n\n    .btn-close {\n      margin-inline-start: calc(.5 * var(--toast-padding-x));\n      margin-inline-end: calc(-.25 * var(--toast-padding-x));\n      color: inherit;\n    }\n  }\n\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$tooltip-tokens: () !default;\n\n// scss-docs-start tooltip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$tooltip-tokens: defaults(\n  (\n    --tooltip-zindex: #{$zindex-tooltip},\n    --tooltip-max-width: 200px,\n    --tooltip-padding-x: var(--spacer-3),\n    --tooltip-padding-y: calc(var(--spacer) * .375),\n    --tooltip-font-size: var(--font-size-sm),\n    --tooltip-color: var(--bg-body),\n    --tooltip-bg: var(--fg-body),\n    --tooltip-border-radius: var(--radius-5),\n    --tooltip-opacity: .95,\n    --tooltip-arrow-width: .8rem,\n    --tooltip-arrow-height: .4rem,\n  ),\n  $tooltip-tokens\n);\n// scss-docs-end tooltip-tokens\n\n@layer components {\n  .tooltip {\n    @include tokens($tooltip-tokens);\n\n    z-index: var(--tooltip-zindex);\n    display: block;\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--tooltip-font-size);\n    // Allow breaking very long words so they don't overflow the tooltip's bounds\n    word-wrap: break-word;\n    opacity: 0;\n\n    &.show { opacity: var(--tooltip-opacity); }\n\n    .tooltip-arrow {\n      display: block;\n      width: var(--tooltip-arrow-width);\n      height: var(--tooltip-arrow-height);\n\n      &::before {\n        position: absolute;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n      }\n    }\n  }\n\n  .bs-tooltip-top .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      top: -1px;\n      border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-block-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-end .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      right: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-inline-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-bottom .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-block-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-start .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      left: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-inline-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-tooltip-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-tooltip-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-tooltip-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-tooltip-start;\n    }\n  }\n\n  // Wrapper for the tooltip content\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    @include border-radius(var(--tooltip-border-radius));\n  }\n}\n","@use \"config\" as *;\n@use \"mixins/transition\" as *;\n\n.fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","@layer helpers {\n  .focus-ring:focus-visible {\n    // outline: var(--focus-ring);\n    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}sticky-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .#{$prefix}sticky-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}vstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .#{$prefix}hstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Themes map sub-keys\n//\n// Return var() references to root tokens instead of raw values.\n// Ex: theme-color-refs(\"bg\") => (primary: var(--primary-bg), accent: var(--accent-bg), ...)\n@function theme-color-refs($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: var(--#{$color-name}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Theme token to root tokens\n//\n// Returns the global :root token reference for a given a given token map, prefix, and key.\n// Ex: theme-token-refs($theme-bgs, \"bg\") => (body: var(--bg-body), 1: var(--bg-1), ...)\n// Skips `inherit` since it's a CSS-wide keyword that can't be stored in a custom property.\n@function theme-token-refs($map, $prefix) {\n  $result: ();\n\n  @each $key, $value in $map {\n    @if $value != inherit {\n      $result: map.merge($result, ($key: var(--#{$prefix}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"fg\": light-dark(var(--blue-600), var(--blue-400)),\n    \"fg-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"fg\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"fg-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"fg\": light-dark(var(--green-600), var(--green-400)),\n    \"fg-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"fg\": light-dark(var(--red-600), var(--red-400)),\n    \"fg-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"fg\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"fg-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"fg\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"fg-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"fg\": light-dark(var(--gray-900), var(--gray-200)),\n    \"fg-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"fg\": light-dark(var(--gray-600), var(--gray-400)),\n    \"fg-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"fg\": var(--fg-body),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"bg\": var(--bg-body),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus, :focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus, :focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../config\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  @include generate-utilities-loop($utilities, $breakpoints);\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../layout/breakpoints\" as bp;\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can target children via `child-selector`, wrapped in :where() for zero specificity\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to emit CSS custom properties from a utility's `variables` key.\n// When variables is a map, the provided static values are used on each class.\n// When variables is a list or single identifier, each variable receives the current utility value.\n@mixin generate-variables($utility, $value) {\n  @if map.has-key($utility, variables) {\n    $variables: map.get($utility, variables);\n    @if meta.type-of($variables) == \"map\" {\n      @each $var-key, $var-value in $variables {\n        --#{$var-key}: #{$var-value};\n      }\n    } @else {\n      // Treat as a list (or single identifier) — each variable gets the utility value\n      @each $var-name in $variables {\n        --#{$var-name}: #{$value};\n      }\n    }\n  }\n}\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $property-map, $properties, $value) {\n  @if $property-map != null {\n    // Property-Value Mapping approach\n    @each $property, $default-value in $property-map {\n      // If value is a map, check if it has a key for this property.\n      // Otherwise, use default-value (or $value if default-value is null).\n      $actual-value: $default-value;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actual-value: map.get($value, $property);\n      } @else if $default-value == null {\n        $actual-value: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actual-value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actual-value;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $prefix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, dark, important, state, variables, child-selector, enabled;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Validate boolean keys\n  @each $bool-key in (responsive, print, dark, important, enabled) {\n    @if map.has-key($utility, $bool-key) {\n      $val: map.get($utility, $bool-key);\n      @if $val != true and $val != false {\n        @error \"Utility key `#{$bool-key}` should be a boolean (true or false), got: #{$val}\";\n      }\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selector-type: \"class\";\n  @if map.has-key($utility, selector) {\n    $selector-type: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selector-type) {\n      @error \"Invalid `selector` value `#{$selector-type}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in an attribute selector (e.g., [class^=\"class\"])\n  $selector-class: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selector-type != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selector-type}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $property-map: null;\n    $custom-class: \"\";\n\n    // Check if property is a map (Property-Value Mapping approach)\n    @if meta.type-of($properties) == \"map\" {\n      $property-map: $properties;\n      @if map.has-key($utility, class) {\n        $custom-class: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $custom-class: map.get($utility, class);\n      } @else {\n        $custom-class: list.nth($properties, 1);\n      }\n      @if $custom-class == null {\n        $custom-class: \"\";\n      }\n    }\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // Don't add a dash before value key if value key is null (e.g. with shadow class)\n    $custom-class-modifier: \"\";\n    @if $key {\n      @if $custom-class == \"\" {\n        $custom-class-modifier: $key;\n      } @else {\n        $custom-class-modifier: \"-\" + $key;\n      }\n    }\n\n    // Build the class name fragment (without prefix or dot) for reuse in state variants\n    $class-name: \"\";\n    @if $selector-type == \"class\" {\n      @if $custom-class != \"\" {\n        $class-name: $custom-class + $custom-class-modifier;\n      } @else if $selector-class != null and $selector-class != \"\" {\n        $class-name: $selector-class + $custom-class-modifier;\n      } @else {\n        $class-name: $custom-class-modifier;\n      }\n    }\n\n    $selector: \"\";\n    @if $selector-type == \"class\" {\n      $selector: \".#{$prefix + $class-name}\";\n    } @else if $selector-type == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selector-class}\\\"]\";\n    } @else if $selector-type == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selector-class}\\\"]\";\n    }\n\n    // Apply child-selector wrapping if present (wraps in :where() for zero specificity)\n    $child-sel: null;\n    @if map.has-key($utility, child-selector) {\n      $child-sel: map.get($utility, child-selector);\n    }\n\n    $final-selector: $selector;\n    @if $child-sel {\n      $final-selector: \":where(#{$selector} #{$child-sel})\";\n    }\n\n    #{$final-selector} {\n      @include generate-variables($utility, $value);\n      @include generate-properties($utility, $property-map, $properties, $value);\n    }\n\n    // Generate state variants (e.g., hover:link-10 instead of link-10-hover)\n    @if $state != () {\n      @each $state-variant in $state {\n        $state-selector: \".#{$prefix}#{$state-variant}\\\\:#{$class-name}:#{$state-variant}\";\n        @if $child-sel {\n          $state-selector: \":where(#{$state-selector} #{$child-sel})\";\n        }\n\n        #{$state-selector} {\n          @include generate-variables($utility, $value);\n          @include generate-properties($utility, $property-map, $properties, $value);\n        }\n      }\n    }\n  }\n}\n\n// Generates all utility classes: base, responsive, print, and dark.\n// Extracted so that tests can call this mixin directly with a custom $utilities map\n// rather than having to mirror the loop conditions inline.\n@mixin generate-utilities-loop($utilities, $breakpoints) {\n  // Base + responsive (one pass per breakpoint)\n  @each $breakpoint in map.keys($breakpoints) {\n    @include bp.media-breakpoint-up($breakpoint, $breakpoints) {\n      $prefix: bp.breakpoint-prefix($breakpoint, $breakpoints);\n\n      @each $key, $utility in $utilities {\n        @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and (map.get($utility, responsive) or $prefix == \"\") {\n          @include generate-utility($utility, $prefix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, print) == true {\n        @include generate-utility($utility, \"print\\\\:\");\n      }\n    }\n  }\n\n  // Dark utilities\n  @media (prefers-color-scheme: dark) {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, dark) == true {\n        @include generate-utility($utility, \"dark\\\\:\");\n      }\n    }\n  }\n}\n"]}
\ No newline at end of file
index 1c7becb76856dacabcc1ed99d006e9d804d5599e..ffb38244313e809ed592bf4c2e105d82c8d2fb0f 100644 (file)
@@ -1,2 +1,2 @@
-:root{--bs-blue-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .24 240));--bs-blue-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .24 240));--bs-blue-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .24 240));--bs-blue-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .24 240));--bs-blue-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .24 240));--bs-blue-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .24 240));--bs-blue-500:oklch(60% .24 240);--bs-blue-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .24 240));--bs-blue-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .24 240));--bs-blue-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .24 240));--bs-blue-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .24 240));--bs-blue-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .24 240));--bs-blue-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .24 240));--bs-indigo-025:color-mix(in lab, var(--bs-white) 94%, oklch(56% .26 288));--bs-indigo-050:color-mix(in lab, var(--bs-white) 90%, oklch(56% .26 288));--bs-indigo-100:color-mix(in lab, var(--bs-white) 80%, oklch(56% .26 288));--bs-indigo-200:color-mix(in lab, var(--bs-white) 60%, oklch(56% .26 288));--bs-indigo-300:color-mix(in lab, var(--bs-white) 40%, oklch(56% .26 288));--bs-indigo-400:color-mix(in lab, var(--bs-white) 20%, oklch(56% .26 288));--bs-indigo-500:oklch(56% .26 288);--bs-indigo-600:color-mix(in lab, var(--bs-black) 16%, oklch(56% .26 288));--bs-indigo-700:color-mix(in lab, var(--bs-black) 32%, oklch(56% .26 288));--bs-indigo-800:color-mix(in lab, var(--bs-black) 48%, oklch(56% .26 288));--bs-indigo-900:color-mix(in lab, var(--bs-black) 64%, oklch(56% .26 288));--bs-indigo-950:color-mix(in lab, var(--bs-black) 76%, oklch(56% .26 288));--bs-indigo-975:color-mix(in lab, var(--bs-black) 88%, oklch(56% .26 288));--bs-violet-025:color-mix(in lab, var(--bs-white) 94%, oklch(56% .24 300));--bs-violet-050:color-mix(in lab, var(--bs-white) 90%, oklch(56% .24 300));--bs-violet-100:color-mix(in lab, var(--bs-white) 80%, oklch(56% .24 300));--bs-violet-200:color-mix(in lab, var(--bs-white) 60%, oklch(56% .24 300));--bs-violet-300:color-mix(in lab, var(--bs-white) 40%, oklch(56% .24 300));--bs-violet-400:color-mix(in lab, var(--bs-white) 20%, oklch(56% .24 300));--bs-violet-500:oklch(56% .24 300);--bs-violet-600:color-mix(in lab, var(--bs-black) 16%, oklch(56% .24 300));--bs-violet-700:color-mix(in lab, var(--bs-black) 32%, oklch(56% .24 300));--bs-violet-800:color-mix(in lab, var(--bs-black) 48%, oklch(56% .24 300));--bs-violet-900:color-mix(in lab, var(--bs-black) 64%, oklch(56% .24 300));--bs-violet-950:color-mix(in lab, var(--bs-black) 76%, oklch(56% .24 300));--bs-violet-975:color-mix(in lab, var(--bs-black) 88%, oklch(56% .24 300));--bs-purple-025:color-mix(in lab, var(--bs-white) 94%, oklch(56% .24 320));--bs-purple-050:color-mix(in lab, var(--bs-white) 90%, oklch(56% .24 320));--bs-purple-100:color-mix(in lab, var(--bs-white) 80%, oklch(56% .24 320));--bs-purple-200:color-mix(in lab, var(--bs-white) 60%, oklch(56% .24 320));--bs-purple-300:color-mix(in lab, var(--bs-white) 40%, oklch(56% .24 320));--bs-purple-400:color-mix(in lab, var(--bs-white) 20%, oklch(56% .24 320));--bs-purple-500:oklch(56% .24 320);--bs-purple-600:color-mix(in lab, var(--bs-black) 16%, oklch(56% .24 320));--bs-purple-700:color-mix(in lab, var(--bs-black) 32%, oklch(56% .24 320));--bs-purple-800:color-mix(in lab, var(--bs-black) 48%, oklch(56% .24 320));--bs-purple-900:color-mix(in lab, var(--bs-black) 64%, oklch(56% .24 320));--bs-purple-950:color-mix(in lab, var(--bs-black) 76%, oklch(56% .24 320));--bs-purple-975:color-mix(in lab, var(--bs-black) 88%, oklch(56% .24 320));--bs-pink-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .22 4));--bs-pink-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .22 4));--bs-pink-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .22 4));--bs-pink-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .22 4));--bs-pink-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .22 4));--bs-pink-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .22 4));--bs-pink-500:oklch(60% .22 4);--bs-pink-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .22 4));--bs-pink-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .22 4));--bs-pink-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .22 4));--bs-pink-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .22 4));--bs-pink-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .22 4));--bs-pink-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .22 4));--bs-red-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .22 20));--bs-red-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .22 20));--bs-red-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .22 20));--bs-red-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .22 20));--bs-red-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .22 20));--bs-red-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .22 20));--bs-red-500:oklch(60% .22 20);--bs-red-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .22 20));--bs-red-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .22 20));--bs-red-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .22 20));--bs-red-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .22 20));--bs-red-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .22 20));--bs-red-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .22 20));--bs-orange-025:color-mix(in lab, var(--bs-white) 94%, oklch(70% .22 52));--bs-orange-050:color-mix(in lab, var(--bs-white) 90%, oklch(70% .22 52));--bs-orange-100:color-mix(in lab, var(--bs-white) 80%, oklch(70% .22 52));--bs-orange-200:color-mix(in lab, var(--bs-white) 60%, oklch(70% .22 52));--bs-orange-300:color-mix(in lab, var(--bs-white) 40%, oklch(70% .22 52));--bs-orange-400:color-mix(in lab, var(--bs-white) 20%, oklch(70% .22 52));--bs-orange-500:oklch(70% .22 52);--bs-orange-600:color-mix(in lab, var(--bs-black) 16%, oklch(70% .22 52));--bs-orange-700:color-mix(in lab, var(--bs-black) 32%, oklch(70% .22 52));--bs-orange-800:color-mix(in lab, var(--bs-black) 48%, oklch(70% .22 52));--bs-orange-900:color-mix(in lab, var(--bs-black) 64%, oklch(70% .22 52));--bs-orange-950:color-mix(in lab, var(--bs-black) 76%, oklch(70% .22 52));--bs-orange-975:color-mix(in lab, var(--bs-black) 88%, oklch(70% .22 52));--bs-amber-025:color-mix(in lab, var(--bs-white) 94%, oklch(79% .2 78));--bs-amber-050:color-mix(in lab, var(--bs-white) 90%, oklch(79% .2 78));--bs-amber-100:color-mix(in lab, var(--bs-white) 80%, oklch(79% .2 78));--bs-amber-200:color-mix(in lab, var(--bs-white) 60%, oklch(79% .2 78));--bs-amber-300:color-mix(in lab, var(--bs-white) 40%, oklch(79% .2 78));--bs-amber-400:color-mix(in lab, var(--bs-white) 20%, oklch(79% .2 78));--bs-amber-500:oklch(79% .2 78);--bs-amber-600:color-mix(in lab, var(--bs-black) 16%, oklch(79% .2 78));--bs-amber-700:color-mix(in lab, var(--bs-black) 32%, oklch(79% .2 78));--bs-amber-800:color-mix(in lab, var(--bs-black) 48%, oklch(79% .2 78));--bs-amber-900:color-mix(in lab, var(--bs-black) 64%, oklch(79% .2 78));--bs-amber-950:color-mix(in lab, var(--bs-black) 76%, oklch(79% .2 78));--bs-amber-975:color-mix(in lab, var(--bs-black) 88%, oklch(79% .2 78));--bs-yellow-025:color-mix(in lab, var(--bs-white) 94%, oklch(88% .24 88));--bs-yellow-050:color-mix(in lab, var(--bs-white) 90%, oklch(88% .24 88));--bs-yellow-100:color-mix(in lab, var(--bs-white) 80%, oklch(88% .24 88));--bs-yellow-200:color-mix(in lab, var(--bs-white) 60%, oklch(88% .24 88));--bs-yellow-300:color-mix(in lab, var(--bs-white) 40%, oklch(88% .24 88));--bs-yellow-400:color-mix(in lab, var(--bs-white) 20%, oklch(88% .24 88));--bs-yellow-500:oklch(88% .24 88);--bs-yellow-600:color-mix(in lab, var(--bs-black) 16%, oklch(88% .24 88));--bs-yellow-700:color-mix(in lab, var(--bs-black) 32%, oklch(88% .24 88));--bs-yellow-800:color-mix(in lab, var(--bs-black) 48%, oklch(88% .24 88));--bs-yellow-900:color-mix(in lab, var(--bs-black) 64%, oklch(88% .24 88));--bs-yellow-950:color-mix(in lab, var(--bs-black) 76%, oklch(88% .24 88));--bs-yellow-975:color-mix(in lab, var(--bs-black) 88%, oklch(88% .24 88));--bs-lime-025:color-mix(in lab, var(--bs-white) 94%, oklch(65% .24 135));--bs-lime-050:color-mix(in lab, var(--bs-white) 90%, oklch(65% .24 135));--bs-lime-100:color-mix(in lab, var(--bs-white) 80%, oklch(65% .24 135));--bs-lime-200:color-mix(in lab, var(--bs-white) 60%, oklch(65% .24 135));--bs-lime-300:color-mix(in lab, var(--bs-white) 40%, oklch(65% .24 135));--bs-lime-400:color-mix(in lab, var(--bs-white) 20%, oklch(65% .24 135));--bs-lime-500:oklch(65% .24 135);--bs-lime-600:color-mix(in lab, var(--bs-black) 16%, oklch(65% .24 135));--bs-lime-700:color-mix(in lab, var(--bs-black) 32%, oklch(65% .24 135));--bs-lime-800:color-mix(in lab, var(--bs-black) 48%, oklch(65% .24 135));--bs-lime-900:color-mix(in lab, var(--bs-black) 64%, oklch(65% .24 135));--bs-lime-950:color-mix(in lab, var(--bs-black) 76%, oklch(65% .24 135));--bs-lime-975:color-mix(in lab, var(--bs-black) 88%, oklch(65% .24 135));--bs-green-025:color-mix(in lab, var(--bs-white) 94%, oklch(64% .22 160));--bs-green-050:color-mix(in lab, var(--bs-white) 90%, oklch(64% .22 160));--bs-green-100:color-mix(in lab, var(--bs-white) 80%, oklch(64% .22 160));--bs-green-200:color-mix(in lab, var(--bs-white) 60%, oklch(64% .22 160));--bs-green-300:color-mix(in lab, var(--bs-white) 40%, oklch(64% .22 160));--bs-green-400:color-mix(in lab, var(--bs-white) 20%, oklch(64% .22 160));--bs-green-500:oklch(64% .22 160);--bs-green-600:color-mix(in lab, var(--bs-black) 16%, oklch(64% .22 160));--bs-green-700:color-mix(in lab, var(--bs-black) 32%, oklch(64% .22 160));--bs-green-800:color-mix(in lab, var(--bs-black) 48%, oklch(64% .22 160));--bs-green-900:color-mix(in lab, var(--bs-black) 64%, oklch(64% .22 160));--bs-green-950:color-mix(in lab, var(--bs-black) 76%, oklch(64% .22 160));--bs-green-975:color-mix(in lab, var(--bs-black) 88%, oklch(64% .22 160));--bs-teal-025:color-mix(in lab, var(--bs-white) 94%, oklch(68% .22 190));--bs-teal-050:color-mix(in lab, var(--bs-white) 90%, oklch(68% .22 190));--bs-teal-100:color-mix(in lab, var(--bs-white) 80%, oklch(68% .22 190));--bs-teal-200:color-mix(in lab, var(--bs-white) 60%, oklch(68% .22 190));--bs-teal-300:color-mix(in lab, var(--bs-white) 40%, oklch(68% .22 190));--bs-teal-400:color-mix(in lab, var(--bs-white) 20%, oklch(68% .22 190));--bs-teal-500:oklch(68% .22 190);--bs-teal-600:color-mix(in lab, var(--bs-black) 16%, oklch(68% .22 190));--bs-teal-700:color-mix(in lab, var(--bs-black) 32%, oklch(68% .22 190));--bs-teal-800:color-mix(in lab, var(--bs-black) 48%, oklch(68% .22 190));--bs-teal-900:color-mix(in lab, var(--bs-black) 64%, oklch(68% .22 190));--bs-teal-950:color-mix(in lab, var(--bs-black) 76%, oklch(68% .22 190));--bs-teal-975:color-mix(in lab, var(--bs-black) 88%, oklch(68% .22 190));--bs-cyan-025:color-mix(in lab, var(--bs-white) 94%, oklch(69% .22 220));--bs-cyan-050:color-mix(in lab, var(--bs-white) 90%, oklch(69% .22 220));--bs-cyan-100:color-mix(in lab, var(--bs-white) 80%, oklch(69% .22 220));--bs-cyan-200:color-mix(in lab, var(--bs-white) 60%, oklch(69% .22 220));--bs-cyan-300:color-mix(in lab, var(--bs-white) 40%, oklch(69% .22 220));--bs-cyan-400:color-mix(in lab, var(--bs-white) 20%, oklch(69% .22 220));--bs-cyan-500:oklch(69% .22 220);--bs-cyan-600:color-mix(in lab, var(--bs-black) 16%, oklch(69% .22 220));--bs-cyan-700:color-mix(in lab, var(--bs-black) 32%, oklch(69% .22 220));--bs-cyan-800:color-mix(in lab, var(--bs-black) 48%, oklch(69% .22 220));--bs-cyan-900:color-mix(in lab, var(--bs-black) 64%, oklch(69% .22 220));--bs-cyan-950:color-mix(in lab, var(--bs-black) 76%, oklch(69% .22 220));--bs-cyan-975:color-mix(in lab, var(--bs-black) 88%, oklch(69% .22 220));--bs-brown-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .12 54));--bs-brown-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .12 54));--bs-brown-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .12 54));--bs-brown-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .12 54));--bs-brown-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .12 54));--bs-brown-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .12 54));--bs-brown-500:oklch(60% .12 54);--bs-brown-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .12 54));--bs-brown-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .12 54));--bs-brown-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .12 54));--bs-brown-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .12 54));--bs-brown-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .12 54));--bs-brown-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .12 54));--bs-gray-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .02 245));--bs-gray-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .02 245));--bs-gray-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .02 245));--bs-gray-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .02 245));--bs-gray-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .02 245));--bs-gray-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .02 245));--bs-gray-500:oklch(60% .02 245);--bs-gray-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .02 245));--bs-gray-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .02 245));--bs-gray-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .02 245));--bs-gray-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .02 245));--bs-gray-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .02 245));--bs-gray-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .02 245));--bs-pewter-025:color-mix(in lab, var(--bs-white) 94%, oklch(65% .01 290));--bs-pewter-050:color-mix(in lab, var(--bs-white) 90%, oklch(65% .01 290));--bs-pewter-100:color-mix(in lab, var(--bs-white) 80%, oklch(65% .01 290));--bs-pewter-200:color-mix(in lab, var(--bs-white) 60%, oklch(65% .01 290));--bs-pewter-300:color-mix(in lab, var(--bs-white) 40%, oklch(65% .01 290));--bs-pewter-400:color-mix(in lab, var(--bs-white) 20%, oklch(65% .01 290));--bs-pewter-500:oklch(65% .01 290);--bs-pewter-600:color-mix(in lab, var(--bs-black) 16%, oklch(65% .01 290));--bs-pewter-700:color-mix(in lab, var(--bs-black) 32%, oklch(65% .01 290));--bs-pewter-800:color-mix(in lab, var(--bs-black) 48%, oklch(65% .01 290));--bs-pewter-900:color-mix(in lab, var(--bs-black) 64%, oklch(65% .01 290));--bs-pewter-950:color-mix(in lab, var(--bs-black) 76%, oklch(65% .01 290));--bs-pewter-975:color-mix(in lab, var(--bs-black) 88%, oklch(65% .01 290))}@layer colors,theme,config,root;@layer reboot{*,:before,:after{box-sizing:border-box}:root{accent-color:var(--bs-primary-base)}iframe{color-scheme:light dark;border:0}body{font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-fg-body);text-align:var(--bs-body-text-align);background-color:var(--bs-bg-body);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;margin:0}hr{margin:var(--bs-hr-margin-y,var(--bs-spacer)) 0;border:0;border-block-start:var(--bs-border-width) solid var(--bs-hr-border-color)}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:var(--bs-spacer-2);color:var(--bs-heading-color);font-weight:500;line-height:1.2}h1,.h1{font-size:var(--bs-font-size-3xl)}h2,.h2{font-size:var(--bs-font-size-2xl)}h3,.h3{font-size:var(--bs-font-size-xl)}h4,.h4{font-size:var(--bs-font-size-lg)}h5,.h5{font-size:var(--bs-font-size-md)}h6,.h6{font-size:var(--bs-font-size-sm)}p{margin-top:0;margin-bottom:1rem}abbr[title]{cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-inline-start:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-inline-start:0;margin-bottom:.5rem}blockquote{margin:0 0 1rem}blockquote>*{margin-block:0}b,strong{font-weight:bolder}small,.small{font-size:var(--bs-small-font-size,87.5%)}mark,.mark{--bs-mark-padding:.1875em;--bs-mark-color:var(--bs-fg-body);--bs-mark-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));padding:var(--bs-mark-padding);color:var(--bs-mark-color);background-color:var(--bs-mark-bg)}sub,sup{font-size:var(--bs-sub-sup-font-size,.75em);vertical-align:baseline;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-theme-fg,var(--bs-link-color));-webkit-text-decoration:var(--bs-link-decoration);-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);text-underline-offset:.2em}a:hover{color:var(--bs-theme-fg-emphasis,var(--bs-link-hover-color));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration))}a:not([href],[class]),a:not([href],[class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-mono);font-size:1em}pre{font-size:var(--bs-code-font-size);color:var(--bs-code-color,inherit);margin-top:0;margin-bottom:1rem;display:block;overflow:auto}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:var(--bs-code-font-size);color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{--bs-kbd-padding-y:.125rem;--bs-kbd-padding-x:.25rem;--bs-kbd-font-size:var(--bs-font-size-xs);--bs-kbd-color:var(--bs-bg-body);--bs-kbd-bg:var(--bs-fg-2);--bs-kbd-border-radius:var(--bs-radius-5);padding:var(--bs-kbd-padding-y) var(--bs-kbd-padding-x);font-size:var(--bs-kbd-font-size);color:var(--bs-kbd-color);background-color:var(--bs-kbd-bg);border-radius:var(--bs-kbd-border-radius)}kbd kbd{font-size:1em;font-weight:inherit;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{color:var(--bs-fg-3);text-align:start;padding-block:.5rem}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date],[type=datetime-local],[type=month],[type=week],[type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}textarea{resize:vertical}fieldset{border:0;min-width:0;margin:0;padding:0}legend{float:inline-start;width:100%;font-size:1.5rem;line-height:inherit;margin-bottom:.5rem;padding:0}legend+*{clear:inline-start}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-text{padding:0}::-webkit-datetime-edit-millisecond-field{padding:0}::-webkit-datetime-edit-second-field{padding:0}::-webkit-datetime-edit-minute-field{padding:0}::-webkit-datetime-edit-hour-field{padding:0}::-webkit-datetime-edit-meridiem-field{padding:0}::-webkit-datetime-edit-ampm-field{padding:0}::-webkit-datetime-edit-day-field{padding:0}::-webkit-datetime-edit-week-field{padding:0}::-webkit-datetime-edit-month-field{padding:0}::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale()}[type=tel],[type=url],[type=email],[type=number]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}}@layer layout{.container,.container-fluid,.\32 xl\:container,.xl\:container,.lg\:container,.md\:container,.sm\:container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-inline:calc(var(--bs-gutter-x) * .5);margin-inline:auto}@media (width>=576px){.sm\:container,.container{max-width:540px}}@media (width>=768px){.md\:container,.sm\:container,.container{max-width:720px}}@media (width>=1024px){.lg\:container,.md\:container,.sm\:container,.container{max-width:960px}}@media (width>=1280px){.xl\:container,.lg\:container,.md\:container,.sm\:container,.container{max-width:1200px}}@media (width>=1536px){.\32 xl\:container,.xl\:container,.lg\:container,.md\:container,.sm\:container,.container{max-width:1440px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-inline:calc(-.5 * var(--bs-gutter-x));margin-top:calc(-1 * var(--bs-gutter-y));flex-wrap:wrap;display:flex}.row>*{width:100%;max-width:100%;padding-inline:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y);flex-shrink:0}.col{flex:1 0 0}.row-cols-auto>*{flex:none;width:auto}.row-cols-1>*{flex:none;width:100%}.row-cols-2>*{flex:none;width:50%}.row-cols-3>*{flex:none;width:33.3333%}.row-cols-4>*{flex:none;width:25%}.row-cols-5>*{flex:none;width:20%}.row-cols-6>*{flex:none;width:16.6667%}.col-auto{flex:none;width:auto}.col-1{flex:none;width:8.33333%}.col-2{flex:none;width:16.6667%}.col-3{flex:none;width:25%}.col-4{flex:none;width:33.3333%}.col-5{flex:none;width:41.6667%}.col-6{flex:none;width:50%}.col-7{flex:none;width:58.3333%}.col-8{flex:none;width:66.6667%}.col-9{flex:none;width:75%}.col-10{flex:none;width:83.3333%}.col-11{flex:none;width:91.6667%}.col-12{flex:none;width:100%}.offset-1{margin-inline-start:8.33333%}.offset-2{margin-inline-start:16.6667%}.offset-3{margin-inline-start:25%}.offset-4{margin-inline-start:33.3333%}.offset-5{margin-inline-start:41.6667%}.offset-6{margin-inline-start:50%}.offset-7{margin-inline-start:58.3333%}.offset-8{margin-inline-start:66.6667%}.offset-9{margin-inline-start:75%}.offset-10{margin-inline-start:83.3333%}.offset-11{margin-inline-start:91.6667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:.75rem}.g-3,.gy-3{--bs-gutter-y:.75rem}.g-4,.gx-4{--bs-gutter-x:1rem}.g-4,.gy-4{--bs-gutter-y:1rem}.g-5,.gx-5{--bs-gutter-x:1.25rem}.g-5,.gy-5{--bs-gutter-y:1.25rem}.g-6,.gx-6{--bs-gutter-x:1.5rem}.g-6,.gy-6{--bs-gutter-y:1.5rem}.g-7,.gx-7{--bs-gutter-x:2rem}.g-7,.gy-7{--bs-gutter-y:2rem}.g-8,.gx-8{--bs-gutter-x:2.5rem}.g-8,.gy-8{--bs-gutter-y:2.5rem}.g-9,.gx-9{--bs-gutter-x:3rem}.g-9,.gy-9{--bs-gutter-y:3rem}@media (width>=576px){.sm\:col{flex:1 0 0}.sm\:row-cols-auto>*{flex:none;width:auto}.sm\:row-cols-1>*{flex:none;width:100%}.sm\:row-cols-2>*{flex:none;width:50%}.sm\:row-cols-3>*{flex:none;width:33.3333%}.sm\:row-cols-4>*{flex:none;width:25%}.sm\:row-cols-5>*{flex:none;width:20%}.sm\:row-cols-6>*{flex:none;width:16.6667%}.sm\:col-auto{flex:none;width:auto}.sm\:col-1{flex:none;width:8.33333%}.sm\:col-2{flex:none;width:16.6667%}.sm\:col-3{flex:none;width:25%}.sm\:col-4{flex:none;width:33.3333%}.sm\:col-5{flex:none;width:41.6667%}.sm\:col-6{flex:none;width:50%}.sm\:col-7{flex:none;width:58.3333%}.sm\:col-8{flex:none;width:66.6667%}.sm\:col-9{flex:none;width:75%}.sm\:col-10{flex:none;width:83.3333%}.sm\:col-11{flex:none;width:91.6667%}.sm\:col-12{flex:none;width:100%}.sm\:offset-0{margin-inline-start:0}.sm\:offset-1{margin-inline-start:8.33333%}.sm\:offset-2{margin-inline-start:16.6667%}.sm\:offset-3{margin-inline-start:25%}.sm\:offset-4{margin-inline-start:33.3333%}.sm\:offset-5{margin-inline-start:41.6667%}.sm\:offset-6{margin-inline-start:50%}.sm\:offset-7{margin-inline-start:58.3333%}.sm\:offset-8{margin-inline-start:66.6667%}.sm\:offset-9{margin-inline-start:75%}.sm\:offset-10{margin-inline-start:83.3333%}.sm\:offset-11{margin-inline-start:91.6667%}.sm\:g-0,.sm\:gx-0{--bs-gutter-x:0}.sm\:g-0,.sm\:gy-0{--bs-gutter-y:0}.sm\:g-1,.sm\:gx-1{--bs-gutter-x:.25rem}.sm\:g-1,.sm\:gy-1{--bs-gutter-y:.25rem}.sm\:g-2,.sm\:gx-2{--bs-gutter-x:.5rem}.sm\:g-2,.sm\:gy-2{--bs-gutter-y:.5rem}.sm\:g-3,.sm\:gx-3{--bs-gutter-x:.75rem}.sm\:g-3,.sm\:gy-3{--bs-gutter-y:.75rem}.sm\:g-4,.sm\:gx-4{--bs-gutter-x:1rem}.sm\:g-4,.sm\:gy-4{--bs-gutter-y:1rem}.sm\:g-5,.sm\:gx-5{--bs-gutter-x:1.25rem}.sm\:g-5,.sm\:gy-5{--bs-gutter-y:1.25rem}.sm\:g-6,.sm\:gx-6{--bs-gutter-x:1.5rem}.sm\:g-6,.sm\:gy-6{--bs-gutter-y:1.5rem}.sm\:g-7,.sm\:gx-7{--bs-gutter-x:2rem}.sm\:g-7,.sm\:gy-7{--bs-gutter-y:2rem}.sm\:g-8,.sm\:gx-8{--bs-gutter-x:2.5rem}.sm\:g-8,.sm\:gy-8{--bs-gutter-y:2.5rem}.sm\:g-9,.sm\:gx-9{--bs-gutter-x:3rem}.sm\:g-9,.sm\:gy-9{--bs-gutter-y:3rem}}@media (width>=768px){.md\:col{flex:1 0 0}.md\:row-cols-auto>*{flex:none;width:auto}.md\:row-cols-1>*{flex:none;width:100%}.md\:row-cols-2>*{flex:none;width:50%}.md\:row-cols-3>*{flex:none;width:33.3333%}.md\:row-cols-4>*{flex:none;width:25%}.md\:row-cols-5>*{flex:none;width:20%}.md\:row-cols-6>*{flex:none;width:16.6667%}.md\:col-auto{flex:none;width:auto}.md\:col-1{flex:none;width:8.33333%}.md\:col-2{flex:none;width:16.6667%}.md\:col-3{flex:none;width:25%}.md\:col-4{flex:none;width:33.3333%}.md\:col-5{flex:none;width:41.6667%}.md\:col-6{flex:none;width:50%}.md\:col-7{flex:none;width:58.3333%}.md\:col-8{flex:none;width:66.6667%}.md\:col-9{flex:none;width:75%}.md\:col-10{flex:none;width:83.3333%}.md\:col-11{flex:none;width:91.6667%}.md\:col-12{flex:none;width:100%}.md\:offset-0{margin-inline-start:0}.md\:offset-1{margin-inline-start:8.33333%}.md\:offset-2{margin-inline-start:16.6667%}.md\:offset-3{margin-inline-start:25%}.md\:offset-4{margin-inline-start:33.3333%}.md\:offset-5{margin-inline-start:41.6667%}.md\:offset-6{margin-inline-start:50%}.md\:offset-7{margin-inline-start:58.3333%}.md\:offset-8{margin-inline-start:66.6667%}.md\:offset-9{margin-inline-start:75%}.md\:offset-10{margin-inline-start:83.3333%}.md\:offset-11{margin-inline-start:91.6667%}.md\:g-0,.md\:gx-0{--bs-gutter-x:0}.md\:g-0,.md\:gy-0{--bs-gutter-y:0}.md\:g-1,.md\:gx-1{--bs-gutter-x:.25rem}.md\:g-1,.md\:gy-1{--bs-gutter-y:.25rem}.md\:g-2,.md\:gx-2{--bs-gutter-x:.5rem}.md\:g-2,.md\:gy-2{--bs-gutter-y:.5rem}.md\:g-3,.md\:gx-3{--bs-gutter-x:.75rem}.md\:g-3,.md\:gy-3{--bs-gutter-y:.75rem}.md\:g-4,.md\:gx-4{--bs-gutter-x:1rem}.md\:g-4,.md\:gy-4{--bs-gutter-y:1rem}.md\:g-5,.md\:gx-5{--bs-gutter-x:1.25rem}.md\:g-5,.md\:gy-5{--bs-gutter-y:1.25rem}.md\:g-6,.md\:gx-6{--bs-gutter-x:1.5rem}.md\:g-6,.md\:gy-6{--bs-gutter-y:1.5rem}.md\:g-7,.md\:gx-7{--bs-gutter-x:2rem}.md\:g-7,.md\:gy-7{--bs-gutter-y:2rem}.md\:g-8,.md\:gx-8{--bs-gutter-x:2.5rem}.md\:g-8,.md\:gy-8{--bs-gutter-y:2.5rem}.md\:g-9,.md\:gx-9{--bs-gutter-x:3rem}.md\:g-9,.md\:gy-9{--bs-gutter-y:3rem}}@media (width>=1024px){.lg\:col{flex:1 0 0}.lg\:row-cols-auto>*{flex:none;width:auto}.lg\:row-cols-1>*{flex:none;width:100%}.lg\:row-cols-2>*{flex:none;width:50%}.lg\:row-cols-3>*{flex:none;width:33.3333%}.lg\:row-cols-4>*{flex:none;width:25%}.lg\:row-cols-5>*{flex:none;width:20%}.lg\:row-cols-6>*{flex:none;width:16.6667%}.lg\:col-auto{flex:none;width:auto}.lg\:col-1{flex:none;width:8.33333%}.lg\:col-2{flex:none;width:16.6667%}.lg\:col-3{flex:none;width:25%}.lg\:col-4{flex:none;width:33.3333%}.lg\:col-5{flex:none;width:41.6667%}.lg\:col-6{flex:none;width:50%}.lg\:col-7{flex:none;width:58.3333%}.lg\:col-8{flex:none;width:66.6667%}.lg\:col-9{flex:none;width:75%}.lg\:col-10{flex:none;width:83.3333%}.lg\:col-11{flex:none;width:91.6667%}.lg\:col-12{flex:none;width:100%}.lg\:offset-0{margin-inline-start:0}.lg\:offset-1{margin-inline-start:8.33333%}.lg\:offset-2{margin-inline-start:16.6667%}.lg\:offset-3{margin-inline-start:25%}.lg\:offset-4{margin-inline-start:33.3333%}.lg\:offset-5{margin-inline-start:41.6667%}.lg\:offset-6{margin-inline-start:50%}.lg\:offset-7{margin-inline-start:58.3333%}.lg\:offset-8{margin-inline-start:66.6667%}.lg\:offset-9{margin-inline-start:75%}.lg\:offset-10{margin-inline-start:83.3333%}.lg\:offset-11{margin-inline-start:91.6667%}.lg\:g-0,.lg\:gx-0{--bs-gutter-x:0}.lg\:g-0,.lg\:gy-0{--bs-gutter-y:0}.lg\:g-1,.lg\:gx-1{--bs-gutter-x:.25rem}.lg\:g-1,.lg\:gy-1{--bs-gutter-y:.25rem}.lg\:g-2,.lg\:gx-2{--bs-gutter-x:.5rem}.lg\:g-2,.lg\:gy-2{--bs-gutter-y:.5rem}.lg\:g-3,.lg\:gx-3{--bs-gutter-x:.75rem}.lg\:g-3,.lg\:gy-3{--bs-gutter-y:.75rem}.lg\:g-4,.lg\:gx-4{--bs-gutter-x:1rem}.lg\:g-4,.lg\:gy-4{--bs-gutter-y:1rem}.lg\:g-5,.lg\:gx-5{--bs-gutter-x:1.25rem}.lg\:g-5,.lg\:gy-5{--bs-gutter-y:1.25rem}.lg\:g-6,.lg\:gx-6{--bs-gutter-x:1.5rem}.lg\:g-6,.lg\:gy-6{--bs-gutter-y:1.5rem}.lg\:g-7,.lg\:gx-7{--bs-gutter-x:2rem}.lg\:g-7,.lg\:gy-7{--bs-gutter-y:2rem}.lg\:g-8,.lg\:gx-8{--bs-gutter-x:2.5rem}.lg\:g-8,.lg\:gy-8{--bs-gutter-y:2.5rem}.lg\:g-9,.lg\:gx-9{--bs-gutter-x:3rem}.lg\:g-9,.lg\:gy-9{--bs-gutter-y:3rem}}@media (width>=1280px){.xl\:col{flex:1 0 0}.xl\:row-cols-auto>*{flex:none;width:auto}.xl\:row-cols-1>*{flex:none;width:100%}.xl\:row-cols-2>*{flex:none;width:50%}.xl\:row-cols-3>*{flex:none;width:33.3333%}.xl\:row-cols-4>*{flex:none;width:25%}.xl\:row-cols-5>*{flex:none;width:20%}.xl\:row-cols-6>*{flex:none;width:16.6667%}.xl\:col-auto{flex:none;width:auto}.xl\:col-1{flex:none;width:8.33333%}.xl\:col-2{flex:none;width:16.6667%}.xl\:col-3{flex:none;width:25%}.xl\:col-4{flex:none;width:33.3333%}.xl\:col-5{flex:none;width:41.6667%}.xl\:col-6{flex:none;width:50%}.xl\:col-7{flex:none;width:58.3333%}.xl\:col-8{flex:none;width:66.6667%}.xl\:col-9{flex:none;width:75%}.xl\:col-10{flex:none;width:83.3333%}.xl\:col-11{flex:none;width:91.6667%}.xl\:col-12{flex:none;width:100%}.xl\:offset-0{margin-inline-start:0}.xl\:offset-1{margin-inline-start:8.33333%}.xl\:offset-2{margin-inline-start:16.6667%}.xl\:offset-3{margin-inline-start:25%}.xl\:offset-4{margin-inline-start:33.3333%}.xl\:offset-5{margin-inline-start:41.6667%}.xl\:offset-6{margin-inline-start:50%}.xl\:offset-7{margin-inline-start:58.3333%}.xl\:offset-8{margin-inline-start:66.6667%}.xl\:offset-9{margin-inline-start:75%}.xl\:offset-10{margin-inline-start:83.3333%}.xl\:offset-11{margin-inline-start:91.6667%}.xl\:g-0,.xl\:gx-0{--bs-gutter-x:0}.xl\:g-0,.xl\:gy-0{--bs-gutter-y:0}.xl\:g-1,.xl\:gx-1{--bs-gutter-x:.25rem}.xl\:g-1,.xl\:gy-1{--bs-gutter-y:.25rem}.xl\:g-2,.xl\:gx-2{--bs-gutter-x:.5rem}.xl\:g-2,.xl\:gy-2{--bs-gutter-y:.5rem}.xl\:g-3,.xl\:gx-3{--bs-gutter-x:.75rem}.xl\:g-3,.xl\:gy-3{--bs-gutter-y:.75rem}.xl\:g-4,.xl\:gx-4{--bs-gutter-x:1rem}.xl\:g-4,.xl\:gy-4{--bs-gutter-y:1rem}.xl\:g-5,.xl\:gx-5{--bs-gutter-x:1.25rem}.xl\:g-5,.xl\:gy-5{--bs-gutter-y:1.25rem}.xl\:g-6,.xl\:gx-6{--bs-gutter-x:1.5rem}.xl\:g-6,.xl\:gy-6{--bs-gutter-y:1.5rem}.xl\:g-7,.xl\:gx-7{--bs-gutter-x:2rem}.xl\:g-7,.xl\:gy-7{--bs-gutter-y:2rem}.xl\:g-8,.xl\:gx-8{--bs-gutter-x:2.5rem}.xl\:g-8,.xl\:gy-8{--bs-gutter-y:2.5rem}.xl\:g-9,.xl\:gx-9{--bs-gutter-x:3rem}.xl\:g-9,.xl\:gy-9{--bs-gutter-y:3rem}}@media (width>=1536px){.\32 xl\:col{flex:1 0 0}.\32 xl\:row-cols-auto>*{flex:none;width:auto}.\32 xl\:row-cols-1>*{flex:none;width:100%}.\32 xl\:row-cols-2>*{flex:none;width:50%}.\32 xl\:row-cols-3>*{flex:none;width:33.3333%}.\32 xl\:row-cols-4>*{flex:none;width:25%}.\32 xl\:row-cols-5>*{flex:none;width:20%}.\32 xl\:row-cols-6>*{flex:none;width:16.6667%}.\32 xl\:col-auto{flex:none;width:auto}.\32 xl\:col-1{flex:none;width:8.33333%}.\32 xl\:col-2{flex:none;width:16.6667%}.\32 xl\:col-3{flex:none;width:25%}.\32 xl\:col-4{flex:none;width:33.3333%}.\32 xl\:col-5{flex:none;width:41.6667%}.\32 xl\:col-6{flex:none;width:50%}.\32 xl\:col-7{flex:none;width:58.3333%}.\32 xl\:col-8{flex:none;width:66.6667%}.\32 xl\:col-9{flex:none;width:75%}.\32 xl\:col-10{flex:none;width:83.3333%}.\32 xl\:col-11{flex:none;width:91.6667%}.\32 xl\:col-12{flex:none;width:100%}.\32 xl\:offset-0{margin-inline-start:0}.\32 xl\:offset-1{margin-inline-start:8.33333%}.\32 xl\:offset-2{margin-inline-start:16.6667%}.\32 xl\:offset-3{margin-inline-start:25%}.\32 xl\:offset-4{margin-inline-start:33.3333%}.\32 xl\:offset-5{margin-inline-start:41.6667%}.\32 xl\:offset-6{margin-inline-start:50%}.\32 xl\:offset-7{margin-inline-start:58.3333%}.\32 xl\:offset-8{margin-inline-start:66.6667%}.\32 xl\:offset-9{margin-inline-start:75%}.\32 xl\:offset-10{margin-inline-start:83.3333%}.\32 xl\:offset-11{margin-inline-start:91.6667%}.\32 xl\:g-0,.\32 xl\:gx-0{--bs-gutter-x:0}.\32 xl\:g-0,.\32 xl\:gy-0{--bs-gutter-y:0}.\32 xl\:g-1,.\32 xl\:gx-1{--bs-gutter-x:.25rem}.\32 xl\:g-1,.\32 xl\:gy-1{--bs-gutter-y:.25rem}.\32 xl\:g-2,.\32 xl\:gx-2{--bs-gutter-x:.5rem}.\32 xl\:g-2,.\32 xl\:gy-2{--bs-gutter-y:.5rem}.\32 xl\:g-3,.\32 xl\:gx-3{--bs-gutter-x:.75rem}.\32 xl\:g-3,.\32 xl\:gy-3{--bs-gutter-y:.75rem}.\32 xl\:g-4,.\32 xl\:gx-4{--bs-gutter-x:1rem}.\32 xl\:g-4,.\32 xl\:gy-4{--bs-gutter-y:1rem}.\32 xl\:g-5,.\32 xl\:gx-5{--bs-gutter-x:1.25rem}.\32 xl\:g-5,.\32 xl\:gy-5{--bs-gutter-y:1.25rem}.\32 xl\:g-6,.\32 xl\:gx-6{--bs-gutter-x:1.5rem}.\32 xl\:g-6,.\32 xl\:gy-6{--bs-gutter-y:1.5rem}.\32 xl\:g-7,.\32 xl\:gx-7{--bs-gutter-x:2rem}.\32 xl\:g-7,.\32 xl\:gy-7{--bs-gutter-y:2rem}.\32 xl\:g-8,.\32 xl\:gx-8{--bs-gutter-x:2.5rem}.\32 xl\:g-8,.\32 xl\:gy-8{--bs-gutter-y:2.5rem}.\32 xl\:g-9,.\32 xl\:gx-9{--bs-gutter-x:3rem}.\32 xl\:g-9,.\32 xl\:gy-9{--bs-gutter-y:3rem}}.grid{--bs-columns:12;--bs-rows:1;--bs-gap:1.5rem;grid-template-rows:repeat(var(--bs-rows), 1fr);grid-template-columns:repeat(var(--bs-columns), 1fr);gap:var(--bs-gap);display:grid}.g-col-1{grid-column:auto/span 1}.g-col-2{grid-column:auto/span 2}.g-col-3{grid-column:auto/span 3}.g-col-4{grid-column:auto/span 4}.g-col-5{grid-column:auto/span 5}.g-col-6{grid-column:auto/span 6}.g-col-7{grid-column:auto/span 7}.g-col-8{grid-column:auto/span 8}.g-col-9{grid-column:auto/span 9}.g-col-10{grid-column:auto/span 10}.g-col-11{grid-column:auto/span 11}.g-col-12{grid-column:auto/span 12}.g-start-1{grid-column-start:1}.g-start-2{grid-column-start:2}.g-start-3{grid-column-start:3}.g-start-4{grid-column-start:4}.g-start-5{grid-column-start:5}.g-start-6{grid-column-start:6}.g-start-7{grid-column-start:7}.g-start-8{grid-column-start:8}.g-start-9{grid-column-start:9}.g-start-10{grid-column-start:10}.g-start-11{grid-column-start:11}@media (width>=576px){.sm\:g-col-1{grid-column:auto/span 1}.sm\:g-col-2{grid-column:auto/span 2}.sm\:g-col-3{grid-column:auto/span 3}.sm\:g-col-4{grid-column:auto/span 4}.sm\:g-col-5{grid-column:auto/span 5}.sm\:g-col-6{grid-column:auto/span 6}.sm\:g-col-7{grid-column:auto/span 7}.sm\:g-col-8{grid-column:auto/span 8}.sm\:g-col-9{grid-column:auto/span 9}.sm\:g-col-10{grid-column:auto/span 10}.sm\:g-col-11{grid-column:auto/span 11}.sm\:g-col-12{grid-column:auto/span 12}.sm\:g-start-1{grid-column-start:1}.sm\:g-start-2{grid-column-start:2}.sm\:g-start-3{grid-column-start:3}.sm\:g-start-4{grid-column-start:4}.sm\:g-start-5{grid-column-start:5}.sm\:g-start-6{grid-column-start:6}.sm\:g-start-7{grid-column-start:7}.sm\:g-start-8{grid-column-start:8}.sm\:g-start-9{grid-column-start:9}.sm\:g-start-10{grid-column-start:10}.sm\:g-start-11{grid-column-start:11}}@media (width>=768px){.md\:g-col-1{grid-column:auto/span 1}.md\:g-col-2{grid-column:auto/span 2}.md\:g-col-3{grid-column:auto/span 3}.md\:g-col-4{grid-column:auto/span 4}.md\:g-col-5{grid-column:auto/span 5}.md\:g-col-6{grid-column:auto/span 6}.md\:g-col-7{grid-column:auto/span 7}.md\:g-col-8{grid-column:auto/span 8}.md\:g-col-9{grid-column:auto/span 9}.md\:g-col-10{grid-column:auto/span 10}.md\:g-col-11{grid-column:auto/span 11}.md\:g-col-12{grid-column:auto/span 12}.md\:g-start-1{grid-column-start:1}.md\:g-start-2{grid-column-start:2}.md\:g-start-3{grid-column-start:3}.md\:g-start-4{grid-column-start:4}.md\:g-start-5{grid-column-start:5}.md\:g-start-6{grid-column-start:6}.md\:g-start-7{grid-column-start:7}.md\:g-start-8{grid-column-start:8}.md\:g-start-9{grid-column-start:9}.md\:g-start-10{grid-column-start:10}.md\:g-start-11{grid-column-start:11}}@media (width>=1024px){.lg\:g-col-1{grid-column:auto/span 1}.lg\:g-col-2{grid-column:auto/span 2}.lg\:g-col-3{grid-column:auto/span 3}.lg\:g-col-4{grid-column:auto/span 4}.lg\:g-col-5{grid-column:auto/span 5}.lg\:g-col-6{grid-column:auto/span 6}.lg\:g-col-7{grid-column:auto/span 7}.lg\:g-col-8{grid-column:auto/span 8}.lg\:g-col-9{grid-column:auto/span 9}.lg\:g-col-10{grid-column:auto/span 10}.lg\:g-col-11{grid-column:auto/span 11}.lg\:g-col-12{grid-column:auto/span 12}.lg\:g-start-1{grid-column-start:1}.lg\:g-start-2{grid-column-start:2}.lg\:g-start-3{grid-column-start:3}.lg\:g-start-4{grid-column-start:4}.lg\:g-start-5{grid-column-start:5}.lg\:g-start-6{grid-column-start:6}.lg\:g-start-7{grid-column-start:7}.lg\:g-start-8{grid-column-start:8}.lg\:g-start-9{grid-column-start:9}.lg\:g-start-10{grid-column-start:10}.lg\:g-start-11{grid-column-start:11}}@media (width>=1280px){.xl\:g-col-1{grid-column:auto/span 1}.xl\:g-col-2{grid-column:auto/span 2}.xl\:g-col-3{grid-column:auto/span 3}.xl\:g-col-4{grid-column:auto/span 4}.xl\:g-col-5{grid-column:auto/span 5}.xl\:g-col-6{grid-column:auto/span 6}.xl\:g-col-7{grid-column:auto/span 7}.xl\:g-col-8{grid-column:auto/span 8}.xl\:g-col-9{grid-column:auto/span 9}.xl\:g-col-10{grid-column:auto/span 10}.xl\:g-col-11{grid-column:auto/span 11}.xl\:g-col-12{grid-column:auto/span 12}.xl\:g-start-1{grid-column-start:1}.xl\:g-start-2{grid-column-start:2}.xl\:g-start-3{grid-column-start:3}.xl\:g-start-4{grid-column-start:4}.xl\:g-start-5{grid-column-start:5}.xl\:g-start-6{grid-column-start:6}.xl\:g-start-7{grid-column-start:7}.xl\:g-start-8{grid-column-start:8}.xl\:g-start-9{grid-column-start:9}.xl\:g-start-10{grid-column-start:10}.xl\:g-start-11{grid-column-start:11}}@media (width>=1536px){.\32 xl\:g-col-1{grid-column:auto/span 1}.\32 xl\:g-col-2{grid-column:auto/span 2}.\32 xl\:g-col-3{grid-column:auto/span 3}.\32 xl\:g-col-4{grid-column:auto/span 4}.\32 xl\:g-col-5{grid-column:auto/span 5}.\32 xl\:g-col-6{grid-column:auto/span 6}.\32 xl\:g-col-7{grid-column:auto/span 7}.\32 xl\:g-col-8{grid-column:auto/span 8}.\32 xl\:g-col-9{grid-column:auto/span 9}.\32 xl\:g-col-10{grid-column:auto/span 10}.\32 xl\:g-col-11{grid-column:auto/span 11}.\32 xl\:g-col-12{grid-column:auto/span 12}.\32 xl\:g-start-1{grid-column-start:1}.\32 xl\:g-start-2{grid-column-start:2}.\32 xl\:g-start-3{grid-column-start:3}.\32 xl\:g-start-4{grid-column-start:4}.\32 xl\:g-start-5{grid-column-start:5}.\32 xl\:g-start-6{grid-column-start:6}.\32 xl\:g-start-7{grid-column-start:7}.\32 xl\:g-start-8{grid-column-start:8}.\32 xl\:g-start-9{grid-column-start:9}.\32 xl\:g-start-10{grid-column-start:10}.\32 xl\:g-start-11{grid-column-start:11}}.grid-cols-subgrid{grid-template-columns:subgrid}.grid-fill{--bs-gap:1.5rem;gap:var(--bs-gap);grid-template-columns:repeat(auto-fit,minmax(0,1fr));grid-auto-flow:row;display:grid}}@layer content{.list-unstyled,.list-inline{padding-inline-start:0;list-style-type:""}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-inline-end:var(--bs-list-inline-padding,var(--bs-spacer)/2)}.initialism{font-size:var(--bs-initialism-font-size,var(--bs-font-size-xs));text-transform:uppercase}.blockquote{--bs-blockquote-gap:calc(var(--bs-spacer) / 2);--bs-blockquote-padding-x:var(--bs-spacer);--bs-blockquote-margin-y:1rem;--bs-blockquote-font-size:var(--bs-font-size-md);--bs-blockquote-border-width:.25rem;--bs-blockquote-border-color:var(--bs-border-color);--bs-blockquote-footer-font-size:var(--bs-font-size-sm);--bs-blockquote-footer-color:var(--bs-fg-3);gap:var(--bs-blockquote-gap);margin-bottom:var(--bs-blockquote-margin-y);font-size:var(--bs-blockquote-font-size);border-inline-start:var(--bs-blockquote-border-width) solid var(--bs-blockquote-border-color);flex-direction:column;padding-inline-start:var(--bs-blockquote-padding-x);display:flex}.blockquote>*,figure.blockquote blockquote{margin-bottom:0}.blockquote-footer{font-size:var(--bs-blockquote-footer-font-size);color:var(--bs-blockquote-footer-color)}.blockquote-footer:before{content:"— "}.table{--bs-table-cell-padding-y:.5rem;--bs-table-cell-padding-x:.5rem;--bs-table-cell-vertical-align:top;--bs-table-color:var(--bs-fg-body);--bs-table-bg:var(--bs-bg-body);--bs-table-accent-bg:transparent;--bs-table-border-width:var(--bs-border-width);--bs-table-border-color:var(--bs-border-color);--bs-table-group-separator-color:currentcolor;--bs-table-striped-color:var(--bs-table-color);--bs-table-striped-bg-factor:5%;--bs-table-striped-bg:color-mix(in srgb, var(--bs-table-color) var(--bs-table-striped-bg-factor), transparent);--bs-table-active-color:var(--bs-table-color);--bs-table-active-bg-factor:10%;--bs-table-active-bg:color-mix(in srgb, var(--bs-table-color) var(--bs-table-active-bg-factor), transparent);--bs-table-hover-color:var(--bs-table-color);--bs-table-hover-bg-factor:7.5%;--bs-table-hover-bg:color-mix(in srgb, var(--bs-table-color) var(--bs-table-hover-bg-factor), transparent);--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;width:100%;margin-bottom:var(--bs-spacer);vertical-align:var(--bs-table-cell-vertical-align);border-color:var(--bs-theme-border,var(--bs-table-border-color))}.table>:not(caption)>*>*{padding:var(--bs-table-cell-padding-y) var(--bs-table-cell-padding-x);color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-theme-fg,var(--bs-table-color))));background-color:var(--bs-theme-bg-subtle,var(--bs-table-bg));border-block-end-width:var(--bs-table-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-theme-bg-subtle,var(--bs-table-accent-bg))))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-block-start:calc(var(--bs-table-border-width) * 2) solid var(--bs-table-group-separator-color)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{--bs-table-cell-padding-y:.25rem;--bs-table-cell-padding-x:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-table-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-table-border-width)}.table-borderless>:not(caption)>*>*{border-block-end-width:0}.table-borderless>:not(:first-child){border-block-start-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*,.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-theme-fg,var(--bs-table-striped-color));--bs-table-bg-type:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-striped-bg-factor), transparent)}.table-active{--bs-table-color-state:var(--bs-theme-fg,var(--bs-table-active-color));--bs-table-bg-state:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-active-bg-factor), transparent)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-theme-fg,var(--bs-table-hover-color));--bs-table-bg-state:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-hover-bg-factor), transparent)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto;container-type:inline-size}.sm\:table-responsive{container-type:inline-size}@media (width<576px){.sm\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.md\:table-responsive{container-type:inline-size}@media (width<768px){.md\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.lg\:table-responsive{container-type:inline-size}@media (width<1024px){.lg\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.xl\:table-responsive{container-type:inline-size}@media (width<1280px){.xl\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.\32 xl\:table-responsive{container-type:inline-size}@media (width<1536px){.\32 xl\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}@container (width<576px){.sm\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sm\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.sm\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.sm\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.sm\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.sm\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.sm\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<768px){.md\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.md\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.md\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.md\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.md\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.md\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.md\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1024px){.lg\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.lg\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.lg\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.lg\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.lg\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.lg\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.lg\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1280px){.xl\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.xl\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.xl\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.xl\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.xl\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.xl\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.xl\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1536px){.\32 xl\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.\32 xl\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.\32 xl\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.\32 xl\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.\32 xl\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.\32 xl\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.\32 xl\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}.img-fluid{max-width:100%;height:auto}.img-thumbnail{--bs-thumbnail-padding:.25rem;--bs-thumbnail-bg:var(--bs-bg-body);--bs-thumbnail-border-width:var(--bs-border-width);--bs-thumbnail-border-color:var(--bs-border-color);--bs-thumbnail-border-radius:var(--bs-radius-5);--bs-thumbnail-box-shadow:var(--bs-box-shadow-sm);padding:var(--bs-thumbnail-padding);background-color:var(--bs-thumbnail-bg);border:var(--bs-thumbnail-border-width) solid var(--bs-thumbnail-border-color);border-radius:var(--bs-thumbnail-border-radius);box-shadow:var(--bs-thumbnail-box-shadow);max-width:100%;height:auto}.figure{--bs-figure-gap:calc(var(--bs-spacer) * .5);--bs-figure-caption-font-size:var(--bs-font-size-sm);--bs-figure-caption-color:var(--bs-fg-3);gap:var(--bs-figure-gap);flex-direction:column;display:flex}.figure-caption{font-size:var(--bs-figure-caption-font-size);color:var(--bs-figure-caption-color)}.prose{--bs-content-font-size:1rem;--bs-content-line-height:1.5;--bs-content-gap:calc(var(--bs-content-font-size) * var(--bs-content-line-height));--bs-heading-color:light-dark(var(--bs-gray-900),var(--bs-white));gap:var(--bs-content-gap);max-width:1000px;font-size:var(--bs-content-font-size);line-height:var(--bs-content-line-height);flex-direction:column;margin-inline:auto;display:flex;position:relative}@media (width>=1024px){.prose{--bs-content-font-size:var(--bs-font-size-md);--bs-content-line-height:1.625}}.prose :where(p,ul,ol,dl,pre,table,blockquote):not(:where(.not-prose,.not-prose *)){margin-block:0}.prose :where(ul,ol):not([class],:where(.not-prose,.not-prose *)) li:not(:last-child){margin-bottom:calc(var(--bs-content-gap) / 4)}.prose :where(li ul,li ol):not(:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap) / 4)}.prose :where(hr):not(:where(.not-prose,.not-prose *)){margin:calc(var(--bs-content-gap) * 1.5) 0;border:0;border-block-start:var(--bs-border-width) solid var(--bs-hr-border-color)}.prose :where(h1,h2,h3,h4,h5,h6):not([class],:where(.not-prose,.not-prose *)){margin-top:0;margin-bottom:calc(var(--bs-content-gap) / -2);font-weight:500;line-height:1.25}.prose :where(h1,h2,h3,h4,h5,h6):not([class],:where(.not-prose,.not-prose *)) code{color:inherit;font-weight:600}.prose :where(h1,h2):not(:first-child,:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap) * .75)}.prose :where(h3,h4,h5,h6):not(:first-child,:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap) * .5)}.prose :where(h1):not(:where(.not-prose,.not-prose *)){font-size:2.25em;line-height:1.1}.prose :where(h2):not(:where(.not-prose,.not-prose *)){font-size:1.75em}.prose :where(h3):not(:where(.not-prose,.not-prose *)){font-size:1.5em}.prose :where(h4):not(:where(.not-prose,.not-prose *)){font-size:1.25em}.prose :where(h5):not(:where(.not-prose,.not-prose *)){font-size:1.125em}.prose :where(h6):not(:where(.not-prose,.not-prose *)){font-size:1em}.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)){color:var(--bs-link-color);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--bs-link-color) 25%, transparent);text-decoration-color:color-mix(in srgb, var(--bs-link-color) 25%, transparent);text-underline-offset:4px;transition:text-decoration-color .1s ease-in-out}@media (prefers-reduced-motion:reduce){.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)){transition:none}}.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)):hover{-webkit-text-decoration-color:var(--bs-link-hover-color);text-decoration-color:var(--bs-link-hover-color)}.prose :where(img):not(:where(.not-prose,.not-prose *)){max-width:100%}.prose :where(blockquote):not(:where(.not-prose,.not-prose *)){border-inline-start:4px solid var(--bs-border-color);margin:0;padding-inline-start:calc(var(--bs-content-gap) / 2)}.prose :where(table):not(:where(.not-prose,.not-prose *)){border-spacing:0;border-collapse:collapse;width:100%}.prose :where(table:not([class])):not(:where(.not-prose,.not-prose *)) td,.prose :where(table:not([class])):not(:where(.not-prose,.not-prose *)) th{text-align:inherit;border:1px solid var(--bs-border-color);padding:6px 12px}.prose :where(dt):not(:where(.not-prose,.not-prose *)){font-weight:500}.prose :where(video,img):not(:where(.not-prose,.not-prose *)){max-width:100%}}@layer forms{.form-label,.col-form-label{font-size:var(--bs-label-font-size,inherit);font-style:var(--bs-label-font-style,inherit);font-weight:var(--bs-label-font-weight,500);color:var(--bs-label-color,var(--bs-fg-body))}.form-label{margin-bottom:var(--bs-label-margin-bottom,calc(var(--bs-spacer) / 2))}.col-form-label{--bs-label-padding-y:calc(var(--bs-btn-input-padding-y) + var(--bs-border-width));padding-block:var(--bs-label-padding-y);margin-bottom:0}.col-form-label-lg{--bs-label-padding-y:calc(var(--bs-btn-input-lg-padding-y) + var(--bs-border-width));font-size:var(--bs-btn-input-lg-font-size)}.col-form-label-sm{--bs-label-padding-y:calc(var(--bs-btn-input-sm-padding-y) + var(--bs-border-width));font-size:var(--bs-btn-input-sm-font-size)}.form-text{--bs-form-text-margin-top:.25rem;--bs-form-text-font-size:var(--bs-font-size-sm);--bs-form-text-color:var(--bs-fg-2);font-size:var(--bs-form-text-font-size);font-style:var(--bs-form-text-font-style);font-weight:var(--bs-form-text-font-weight);color:var(--bs-form-text-color)}.form-control{--bs-control-min-height:var(--bs-btn-input-min-height);--bs-control-padding-y:var(--bs-btn-input-padding-y);--bs-control-padding-x:var(--bs-btn-input-padding-x);--bs-control-font-size:var(--bs-btn-input-font-size);--bs-control-line-height:var(--bs-btn-input-line-height);--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-radius-5);--bs-control-box-shadow:var(--bs-box-shadow-inset);--bs-control-action-bg:var(--bs-bg-1);--bs-control-action-hover-bg:var(--bs-bg-2);--bs-control-transition-property:border-color, box-shadow;--bs-control-transition-timing:.15s ease-in-out;--bs-control-transition:var(--bs-control-transition-property) var(--bs-control-transition-timing);--bs-control-placeholder-color:var(--bs-fg-3);--bs-control-disabled-color:var(--bs-control-fg);--bs-control-disabled-bg:var(--bs-bg-2);--bs-control-disabled-border-color:var(--bs-control-border-color);--bs-control-select-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");--bs-control-select-bg-position:right .75rem center;--bs-control-select-bg-size:16px 12px;--bs-control-select-bg-dark:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");width:100%;min-height:var(--bs-control-min-height);padding:var(--bs-control-padding-y) var(--bs-control-padding-x);font-size:var(--bs-control-font-size);line-height:var(--bs-control-line-height);color:var(--bs-control-fg);appearance:none;background-color:var(--bs-control-bg);border:var(--bs-control-border-width) solid var(--bs-control-border-color);border-radius:var(--bs-control-border-radius);box-shadow:var(--bs-control-box-shadow);transition:var(--bs-control-transition);background-clip:padding-box;display:flex}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control:focus-visible{--bs-focus-ring-offset:-1px;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-control::placeholder{color:var(--bs-control-placeholder-color);opacity:1}.form-control:disabled{color:var(--bs-control-disabled-color);background-color:var(--bs-control-disabled-bg);border-color:var(--bs-control-disabled-border-color);opacity:1}.form-control::-webkit-datetime-edit{height:1.5rem;margin-bottom:-.125rem;padding:0;display:block}.form-control::-webkit-datetime-edit-fields-wrapper{height:1.5rem}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled,[readonly]){cursor:pointer}.form-control::file-selector-button{min-height:var(--bs-control-min-height);padding:var(--bs-control-padding-y) var(--bs-control-padding-x);margin:calc(var(--bs-control-padding-y) * -1) calc(var(--bs-control-padding-x) * -1);color:var(--bs-control-fg);pointer-events:none;background-color:var(--bs-control-action-bg);border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-control-border-width);transition:var(--bs-control-transition);border-radius:0;margin-inline-end:var(--bs-control-padding-x)}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled,[readonly])::file-selector-button{background-color:var(--bs-control-action-hover-bg)}.form-control-plaintext{--bs-control-min-height:var(--bs-btn-input-min-height);--bs-control-padding-y:var(--bs-btn-input-padding-y);--bs-control-padding-x:var(--bs-btn-input-padding-x);--bs-control-font-size:var(--bs-btn-input-font-size);--bs-control-line-height:var(--bs-btn-input-line-height);--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-radius-5);--bs-control-box-shadow:var(--bs-box-shadow-inset);--bs-control-action-bg:var(--bs-bg-1);--bs-control-action-hover-bg:var(--bs-bg-2);--bs-control-transition-property:border-color, box-shadow;--bs-control-transition-timing:.15s ease-in-out;--bs-control-transition:var(--bs-control-transition-property) var(--bs-control-transition-timing);--bs-control-placeholder-color:var(--bs-fg-3);--bs-control-disabled-color:var(--bs-control-fg);--bs-control-disabled-bg:var(--bs-bg-2);--bs-control-disabled-border-color:var(--bs-control-border-color);--bs-control-select-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");--bs-control-select-bg-position:right .75rem center;--bs-control-select-bg-size:16px 12px;--bs-control-select-bg-dark:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");width:100%;padding:var(--bs-control-padding-y) 0;line-height:var(--bs-control-line-height);color:var(--bs-control-fg);border:solid #0000;border-width:var(--bs-control-border-width) 0;background-color:#0000;margin-bottom:0;display:block}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-inline:0}select.form-control,.form-control-caret{background-image:var(--bs-control-select-bg);background-repeat:no-repeat;background-position:var(--bs-control-select-bg-position);background-size:var(--bs-control-select-bg-size);padding-inline-end:calc(var(--bs-control-padding-x) * 3)}select.form-control[multiple],select.form-control[size]:not([size="1"]),.form-control-caret[multiple],.form-control-caret[size]:not([size="1"]){background-image:none;padding-inline-end:var(--bs-control-padding-x)}[data-bs-theme=dark] select.form-control,[data-bs-theme=dark] .form-control-caret{background-image:var(--bs-control-select-bg-dark)}.form-control-sm{--bs-control-min-height:var(--bs-btn-input-sm-min-height);--bs-control-padding-y:var(--bs-btn-input-sm-padding-y);--bs-control-padding-x:var(--bs-btn-input-sm-padding-x);--bs-control-font-size:var(--bs-btn-input-sm-font-size);--bs-control-line-height:var(--bs-btn-input-sm-line-height);--bs-control-border-radius:var(--bs-btn-input-sm-border-radius)}.form-control-lg{--bs-control-min-height:var(--bs-btn-input-lg-min-height);--bs-control-padding-y:var(--bs-btn-input-lg-padding-y);--bs-control-padding-x:var(--bs-btn-input-lg-padding-x);--bs-control-font-size:var(--bs-btn-input-lg-font-size);--bs-control-line-height:var(--bs-btn-input-lg-line-height);--bs-control-border-radius:var(--bs-btn-input-lg-border-radius)}.form-control-color{width:var(--bs-control-min-height);padding:var(--bs-control-padding-y)}.form-control-color:not(:disabled,[readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border-radius:var(--bs-radius-5);border:0!important}.form-control-color::-webkit-color-swatch{border-radius:var(--bs-radius-5);border:0!important}.form-ghost{width:100%;font:inherit;color:inherit;appearance:none;background:0 0;border:0;padding:0;display:block}.form-ghost:focus{outline:0}.form-ghost::placeholder{color:var(--bs-fg-3);opacity:1}.form-ghost:disabled{color:var(--bs-fg-4);cursor:not-allowed}.check{--bs-check-size:1.25rem;--bs-check-margin-block:.125rem;--bs-check-bg:var(--bs-bg-body);--bs-check-border-color:var(--bs-border-color);--bs-check-border-radius:var(--bs-radius-5);--bs-check-icon-checked:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e");--bs-check-icon-indeterminate:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e");--bs-check-checked-bg:var(--bs-control-checked-bg);--bs-check-checked-border-color:var(--bs-control-checked-border-color);--bs-check-indeterminate-bg:var(--bs-control-checked-bg);--bs-check-indeterminate-border-color:var(--bs-control-checked-border-color);--bs-check-active-bg:var(--bs-control-active-bg);--bs-check-active-border-color:var(--bs-control-active-border-color);--bs-check-disabled-bg:var(--bs-control-disabled-bg);--bs-check-disabled-opacity:var(--bs-control-disabled-opacity);width:var(--bs-check-size);height:var(--bs-check-size);margin-block:var(--bs-check-margin-block);appearance:none;background-color:var(--bs-theme-bg,var(--bs-check-bg));border:1px solid var(--bs-theme-bg,var(--bs-check-border-color));border-radius:33%;flex-shrink:0;position:relative}.check:checked,.check:indeterminate{background-color:var(--bs-theme-bg,var(--bs-check-checked-bg));border-color:var(--bs-theme-bg,var(--bs-check-checked-border-color))}.check:checked:before,.check:indeterminate:before{pointer-events:none;content:"";background-color:var(--bs-theme-contrast,var(--bs-primary-contrast));position:absolute;inset:0;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.check:checked:before{mask-image:var(--bs-check-icon-checked)}.check:indeterminate:before{mask-image:var(--bs-check-icon-indeterminate)}.check:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:-1px}.check:disabled{--bs-check-bg:var(--bs-check-disabled-bg)}.check:disabled~label{color:var(--bs-fg-3);cursor:default}.check:disabled:checked{opacity:var(--bs-check-disabled-opacity)}.check-sm{--bs-check-size:1rem}.check-sm+label{font-size:var(--bs-font-size-sm)}.check-lg{--bs-check-size:1.5rem;--bs-check-margin-block:.375rem}.check-lg+label{font-size:var(--bs-font-size-lg)}.radio{--bs-radio-size:1.25rem;--bs-radio-margin-block:.125rem;--bs-radio-bg:var(--bs-bg-body);--bs-radio-border-color:var(--bs-border-color);--bs-radio-checked-bg:var(--bs-control-checked-bg);--bs-radio-checked-border-color:var(--bs-control-checked-border-color);--bs-radio-disabled-bg:var(--bs-control-disabled-bg);--bs-radio-disabled-opacity:var(--bs-control-disabled-opacity);width:var(--bs-radio-size);height:var(--bs-radio-size);margin-block:var(--bs-radio-margin-block);appearance:none;background-color:var(--bs-theme-bg,var(--bs-radio-bg));border:1px solid var(--bs-theme-bg,var(--bs-radio-border-color));border-radius:50%;flex-shrink:0;position:relative}.radio:checked{color:var(--bs-theme-contrast,var(--bs-primary-contrast));background-color:var(--bs-theme-bg,var(--bs-radio-checked-bg));border-color:var(--bs-theme-bg,var(--bs-radio-checked-border-color))}.radio:checked:before{inset:calc(var(--bs-radio-size) * .25);content:"";background-color:currentColor;border-radius:50%;position:absolute}.radio:disabled{--bs-radio-bg:var(--bs-radio-disabled-bg)}.radio:disabled~label{color:var(--bs-secondary-fg);cursor:default}.radio:disabled:checked{opacity:var(--bs-radio-disabled-opacity)}.radio:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.radio-sm{--bs-radio-size:1rem}.radio-sm+label{font-size:var(--bs-font-size-sm)}.radio-lg{--bs-radio-size:1.5rem;--bs-radio-margin-block:.375rem}.radio-lg+label{font-size:var(--bs-font-size-lg)}.switch{--bs-switch-height:1.25rem;--bs-switch-width:calc(var(--bs-switch-height) * 1.75);--bs-switch-padding:.0625rem;--bs-switch-margin-block:.125rem;--bs-switch-bg:var(--bs-bg-3);--bs-switch-border-width:var(--bs-border-width);--bs-switch-border-color:var(--bs-border-color);--bs-switch-indicator-bg:var(--bs-white);--bs-switch-indicator-width:calc(var(--bs-switch-height) - var(--bs-switch-padding) * 2 - var(--bs-switch-border-width) * 2);--bs-switch-indicator-height:calc(var(--bs-switch-height) - var(--bs-switch-padding) * 2 - var(--bs-switch-border-width) * 2);--bs-switch-checked-bg:var(--bs-control-checked-bg);--bs-switch-checked-border-color:var(--bs-switch-checked-bg);--bs-switch-checked-indicator-bg:var(--bs-white);--bs-switch-disabled-bg:var(--bs-control-disabled-bg);--bs-switch-disabled-indicator-bg:var(--bs-fg-3);width:var(--bs-switch-width);height:var(--bs-switch-height);padding:var(--bs-switch-padding);margin-block:var(--bs-switch-margin-block);background-color:var(--bs-switch-bg);border:var(--bs-switch-border-width) solid var(--bs-switch-border-color);border-radius:10rem;flex-shrink:0;transition:background-color .15s ease-in-out;position:relative;box-shadow:inset 0 1px 2px #0000000d}.switch:before{inset-block:var(--bs-switch-padding);width:var(--bs-switch-indicator-width);height:var(--bs-switch-indicator-height);content:"";background-color:var(--bs-theme-contrast,var(--bs-switch-indicator-bg));border-radius:10rem;transition:inset-inline-start .15s ease-in-out;position:absolute;inset-inline-start:var(--bs-switch-padding);box-shadow:0 1px 2px #0000001a}.switch input{appearance:none;background-color:#0000;outline:0;position:absolute;inset:0}.switch:focus-within{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.switch:has(input:disabled:not(:checked)){--bs-switch-bg:var(--bs-switch-disabled-bg);--bs-switch-indicator-bg:var(--bs-switch-disabled-indicator-bg)}.switch:has(input:disabled:not(:checked)):before{opacity:.4}.switch:has(input:disabled:not(:checked))~label{color:var(--bs-fg-3);cursor:default}.switch:has(input:checked){background-color:var(--bs-theme-bg,var(--bs-switch-checked-bg));border-color:var(--bs-theme-bg,var(--bs-switch-checked-border-color))}.switch:has(input:checked):before{inset-inline-start:calc(100% - var(--bs-switch-indicator-width) - var(--bs-switch-padding))}.switch:has(input:checked:disabled){opacity:.65}.switch:has(input:checked:disabled)~label{color:var(--bs-fg-3);cursor:default}.switch-sm{--bs-switch-height:1rem}.switch-sm+label{font-size:var(--bs-font-size-sm)}.switch-lg{--bs-switch-height:1.5rem;--bs-switch-margin-block:.375rem}.switch-lg+label{font-size:var(--bs-font-size-lg)}.form-range{--bs-range-track-width:100%;--bs-range-track-height:.5rem;--bs-range-track-cursor:pointer;--bs-range-track-bg:var(--bs-bg-3);--bs-range-track-border-radius:1rem;--bs-range-track-fill-bg:var(--bs-primary-base);--bs-range-track-disabled-bg:color-mix(in oklch, var(--bs-bg-4), var(--bs-fg-3));--bs-range-thumb-width:1rem;--bs-range-thumb-height:var(--bs-range-thumb-width);--bs-range-thumb-bg:var(--bs-primary-base);--bs-range-thumb-border:var(--bs-range-thumb-bg) solid var(--bs-border-color);--bs-range-thumb-border-radius:1rem;--bs-range-thumb-box-shadow:0 1px 2px #00000013, 0 2px 4px #00000013;--bs-range-thumb-active-bg:color-mix(in oklch, var(--bs-primary-base) 70%, var(--bs-bg-body));--bs-range-thumb-disabled-bg:var(--bs-fg-3);--bs-range-thumb-transition-property:background-color, border-color, box-shadow;--bs-range-thumb-transition-timing:.15s ease-in-out;--bs-range-thumb-transition:var(--bs-range-thumb-transition-property) var(--bs-range-thumb-transition-timing);--bs-range-tick-width:var(--bs-border-width);--bs-range-tick-height:.5rem;--bs-range-tick-bg:var(--bs-border-color);width:100%;display:block;position:relative}.form-range-input{width:100%;height:calc(var(--bs-range-thumb-height) + var(--bs-focus-ring-width) * 2);appearance:none;background-color:#0000;padding:0;display:block}.form-range-input:hover::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent)}.form-range-input:hover::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent)}.form-range-input:focus-visible{outline:0}.form-range-input:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:0}.form-range-input:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:0}.form-range-input::-moz-focus-outer{border:0}.form-range-input::-webkit-slider-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);background-image:var(--bs-gradient);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range-input::-webkit-slider-thumb{transition:none}}.form-range-input::-webkit-slider-thumb:active{background-color:var(--bs-range-thumb-active-bg);background-image:var(--bs-gradient)}.form-range-input::-webkit-slider-thumb{margin-top:calc((var(--bs-range-track-height) - var(--bs-range-thumb-height)) * .5)}.form-range-input::-moz-range-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);background-image:var(--bs-gradient);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range-input::-moz-range-thumb{transition:none}}.form-range-input::-moz-range-thumb:active{background-color:var(--bs-range-thumb-active-bg);background-image:var(--bs-gradient)}.form-range-input::-webkit-slider-runnable-track{width:var(--bs-range-track-width);height:var(--bs-range-track-height);color:#0000;cursor:var(--bs-range-track-cursor);background-color:var(--bs-range-track-bg);background-image:linear-gradient(to right, var(--bs-range-track-fill-bg) calc(var(--bs-range-fill,0) * 100%), transparent calc(var(--bs-range-fill,0) * 100%));border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range-input::-moz-range-track{width:var(--bs-range-track-width);height:var(--bs-range-track-height);color:#0000;cursor:var(--bs-range-track-cursor);background-color:var(--bs-range-track-bg);background-image:linear-gradient(to right, var(--bs-range-track-fill-bg) calc(var(--bs-range-fill,0) * 100%), transparent calc(var(--bs-range-fill,0) * 100%));border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range-input:disabled{pointer-events:none}.form-range-input:disabled::-webkit-slider-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-range-input:disabled::-moz-range-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-range-input:disabled::-webkit-slider-runnable-track{--bs-range-track-fill-bg:var(--bs-range-track-disabled-bg)}.form-range-input:disabled::-moz-range-track{--bs-range-track-fill-bg:var(--bs-range-track-disabled-bg)}.form-range-bubble{bottom:100%;left:calc(var(--bs-range-thumb-width) * .5 + var(--bs-range-fill,0) * (100% - var(--bs-range-thumb-width)));margin-bottom:var(--bs-tooltip-arrow-height);pointer-events:none;position:absolute;transform:translate(-50%)}.form-range-bubble .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height));position:absolute;left:50%;transform:translate(-50%)}.form-range-ticks{padding-inline:calc(var(--bs-range-thumb-width) * .25);display:grid}.form-range-tick{flex-direction:column;justify-self:start;align-items:center;width:0;display:flex}.form-range-tick:before{width:var(--bs-range-tick-width);height:var(--bs-range-tick-height);content:"";background-color:var(--bs-range-tick-bg)}.form-range-tick:first-child{align-items:flex-start}.form-range-tick:last-child{align-items:flex-end}.form-range-tick-label{font-size:var(--bs-font-size-sm);color:var(--bs-fg-2);white-space:nowrap;margin-top:.125rem}.form-floating{--bs-form-floating-height:calc(3.75rem + var(--bs-border-width) * 2);--bs-form-floating-line-height:1.25;--bs-form-floating-padding-x:calc(var(--bs-btn-input-padding-x) * 1.25);--bs-form-floating-padding-y:1rem;--bs-form-floating-input-padding-t:1.625rem;--bs-form-floating-input-padding-b:.625rem;--bs-form-floating-label-height:1.5em;--bs-form-floating-label-bg:var(--bs-btn-input-bg);--bs-form-floating-label-disabled-bg:var(--bs-bg-2);--bs-form-floating-label-opacity:.65;--bs-form-floating-label-transform:scale(.85) translateY(-.5rem) translateX(.15rem);--bs-form-floating-label-disabled-color:var(--bs-fg-3);--bs-form-floating-transition-property:opacity, transform;--bs-form-floating-transition-timing:.1s ease-in-out;--bs-form-floating-transition:var(--bs-form-floating-transition-property) var(--bs-form-floating-transition-timing);position:relative}.form-floating>label{z-index:2;max-width:100%;height:100%;padding:var(--bs-form-floating-padding-y) var(--bs-form-floating-padding-x);color:color-mix(in oklch, var(--bs-fg-body) var(--bs-form-floating-label-opacity), transparent);text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:var(--bs-form-floating-transition);align-items:center;display:flex;position:absolute;inset-block-start:0;inset-inline-start:0;overflow:hidden}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>label:has(~textarea){align-items:flex-start}.form-floating>.form-control,.form-floating>.form-control-plaintext{height:var(--bs-form-floating-height);min-height:var(--bs-form-floating-height);padding:var(--bs-form-floating-padding-y) var(--bs-form-floating-padding-x);line-height:var(--bs-form-floating-line-height)}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:#0000}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),:-webkit-any(.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill){padding-top:var(--bs-form-floating-input-padding-t);padding-bottom:var(--bs-form-floating-input-padding-b)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),:is(.form-floating>.form-control:autofill,.form-floating>.form-control-plaintext:autofill){padding-top:var(--bs-form-floating-input-padding-t);padding-bottom:var(--bs-form-floating-input-padding-b)}.form-floating>label:has(~.form-control:focus),.form-floating>label:has(~.form-control:not(:placeholder-shown)),.form-floating>label:has(~.form-control-plaintext){transform:var(--bs-form-floating-label-transform)}.form-floating>label:has(~.form-control:-webkit-autofill){transform:var(--bs-form-floating-label-transform)}.form-floating>label:has(~textarea:focus):after,.form-floating>label:has(~textarea:not(:placeholder-shown)):after{inset:var(--bs-form-floating-padding-y) calc(var(--bs-form-floating-padding-x) * .5);z-index:-1;height:var(--bs-form-floating-label-height);content:"";background-color:var(--bs-form-floating-label-bg);border-radius:var(--bs-btn-input-border-radius);position:absolute}.form-floating>label:has(~textarea:disabled):after{background-color:var(--bs-form-floating-label-disabled-bg)}.form-floating>label:has(~.form-control-plaintext){border-width:var(--bs-control-border-width) 0}.form-floating>label:has(~:disabled),.form-floating>label:has(~.form-control:disabled){color:var(--bs-form-floating-label-disabled-color)}.strength{--bs-strength-height:.375rem;--bs-strength-gap:.25rem;--bs-strength-margin-top:.25rem;--bs-strength-border-radius:var(--bs-radius-pill);--bs-strength-bg:var(--bs-bg-2);--bs-strength-color:var(--bs-bg-2);--bs-strength-weak-color:var(--bs-danger-bg);--bs-strength-fair-color:var(--bs-warning-bg);--bs-strength-good-color:var(--bs-info-bg);--bs-strength-strong-color:var(--bs-success-bg);gap:var(--bs-strength-gap);width:100%;margin-top:var(--bs-strength-margin-top);display:flex}.strength-segment{height:var(--bs-strength-height);background-color:var(--bs-strength-bg);border-radius:var(--bs-strength-border-radius);flex:1;transition:background-color .2s ease-in-out,width .3s ease-in-out}@media (prefers-reduced-motion:reduce){.strength-segment{transition:none}}.strength-segment.active{background-color:var(--bs-strength-color)}.strength[data-bs-strength=weak]{--bs-strength-color:var(--bs-strength-weak-color)}.strength[data-bs-strength=fair]{--bs-strength-color:var(--bs-strength-fair-color)}.strength[data-bs-strength=good]{--bs-strength-color:var(--bs-strength-good-color)}.strength[data-bs-strength=strong]{--bs-strength-color:var(--bs-strength-strong-color)}.strength-text{margin-top:var(--bs-strength-margin-top);font-size:var(--bs-font-size-xs);color:var(--bs-strength-color,var(--bs-fg-3));transition:color .2s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.strength-text{transition:none}}.strength-text:empty{display:none}.strength-bar{--bs-strength-height:.375rem;--bs-strength-gap:.25rem;--bs-strength-margin-top:.25rem;--bs-strength-border-radius:var(--bs-radius-pill);--bs-strength-bg:var(--bs-bg-2);--bs-strength-color:transparent;--bs-strength-weak-color:var(--bs-danger-bg);--bs-strength-fair-color:var(--bs-warning-bg);--bs-strength-good-color:var(--bs-info-bg);--bs-strength-strong-color:var(--bs-success-bg);--bs-strength-width:0%;width:100%;height:var(--bs-strength-height);margin-top:var(--bs-strength-margin-top);background-color:var(--bs-strength-bg);border-radius:var(--bs-strength-border-radius);overflow:hidden}.strength-bar:after{width:var(--bs-strength-width);content:"";background-color:var(--bs-strength-color);border-radius:var(--bs-strength-border-radius);height:100%;transition:background-color .2s ease-in-out,width .3s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.strength-bar:after{transition:none}}.strength-bar[data-bs-strength=weak]{--bs-strength-color:var(--bs-strength-weak-color);--bs-strength-width:25%}.strength-bar[data-bs-strength=fair]{--bs-strength-color:var(--bs-strength-fair-color);--bs-strength-width:50%}.strength-bar[data-bs-strength=good]{--bs-strength-color:var(--bs-strength-good-color);--bs-strength-width:75%}.strength-bar[data-bs-strength=strong]{--bs-strength-color:var(--bs-strength-strong-color);--bs-strength-width:100%}.form-adorn{--bs-form-adorn-gap:.375rem;--bs-form-adorn-icon-size:1rem;--bs-form-adorn-icon-color:var(--bs-fg-2);gap:var(--bs-form-adorn-gap);align-items:center}.form-adorn:focus-visible{outline:0}.form-adorn:focus-within{--bs-focus-ring-offset:-1px;border-color:var(--bs-focus-ring-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-adorn>.form-ghost{flex:1;min-width:0}.form-adorn.form-adorn-end>.form-ghost{order:-1}.form-adorn-icon{color:var(--bs-form-adorn-icon-color);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.form-adorn-icon>svg{width:var(--bs-form-adorn-icon-size);height:var(--bs-form-adorn-icon-size)}.form-adorn-text{color:var(--bs-form-adorn-icon-color);pointer-events:none;-webkit-user-select:none;user-select:none;flex-shrink:0}.chip-input{--bs-chip-input-padding-y:.75rem;--bs-chip-input-padding-x:.75rem;--bs-chip-input-gap:.375rem;--bs-chip-input-ghost-min-width:5rem;--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-radius-5);gap:var(--bs-chip-input-gap);padding:var(--bs-chip-input-padding-y) var(--bs-chip-input-padding-x);color:var(--bs-control-fg);background-color:var(--bs-control-bg);border:var(--bs-control-border-width) solid var(--bs-control-border-color);border-radius:var(--bs-control-border-radius);flex-wrap:wrap;align-items:center;display:flex}.chip-input:focus-within{--bs-focus-ring-offset:-1px;border-color:var(--bs-focus-ring-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.chip-input>.form-ghost{min-width:var(--bs-chip-input-ghost-min-width);flex:1 1 0;min-height:1.75rem}.chip-input.disabled,.chip-input:has(.form-ghost:disabled){cursor:not-allowed;background-color:var(--bs-bg-2);opacity:1}.chip-input.disabled:focus-within,.chip-input:has(.form-ghost:disabled):focus-within{border-color:var(--bs-control-border-color);outline:0}.chip-input.disabled>.chip,.chip-input:has(.form-ghost:disabled)>.chip{pointer-events:none;opacity:var(--bs-control-disabled-opacity)}.form-field{gap:.5rem;display:grid;position:relative}.form-field>label,.form-field>.form-label{justify-self:start;margin-bottom:0}.form-field:has(>.check,>.radio,>.switch){grid-template-columns:auto 1fr;align-items:start;column-gap:.5rem}.form-field:has(>.check,>.radio,>.switch)>.check,.form-field:has(>.check,>.radio,>.switch)>.radio,.form-field:has(>.check,>.radio,>.switch)>.switch{grid-column:1}.form-field:has(>.check,>.radio,>.switch)>:not(.check,.radio,.switch){grid-column:2}.form-field:has(>.check,>.radio,>.switch)>.form-label{grid-column:1/-1}.form-field-content{flex-direction:column;align-items:flex-start;display:flex}.form-field-card{padding:calc(var(--bs-spacer) * .75);cursor:pointer;border:var(--bs-border-width) solid transparent;border-radius:var(--bs-radius-7);position:relative}.form-field-card:hover{background-color:var(--bs-bg-1)}.form-field-card:has(:checked){background-color:var(--bs-bg-1);border-color:var(--bs-border-color)}.form-field-card label:before{content:"";position:absolute;inset:0}.form-group{gap:.5rem;display:grid}.form-group>label,.form-group>.form-label,.form-group>legend{justify-self:start;margin-bottom:0}}@layer components{.input-group{--bs-input-group-addon-padding-y:var(--bs-btn-input-padding-y);--bs-input-group-addon-padding-x:var(--bs-btn-input-padding-x);--bs-input-group-addon-font-size:var(--bs-btn-input-font-size);--bs-input-group-addon-line-height:var(--bs-btn-input-line-height);--bs-input-group-addon-color:var(--bs-fg-body);--bs-input-group-addon-bg:var(--bs-bg-2);--bs-input-group-addon-border-color:var(--bs-border-color);align-items:stretch;width:100%;display:flex;position:relative}.input-group>.form-control,.input-group>.form-floating{flex:auto;width:1%;min-width:0;position:relative}.input-group>.form-control:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group>.input-group-btn{z-index:2;position:relative}.input-group>.input-group-btn:focus{z-index:5}.input-group-text{padding:var(--bs-input-group-addon-padding-y) var(--bs-input-group-addon-padding-x);font-size:var(--bs-input-group-addon-font-size);line-height:var(--bs-input-group-addon-line-height);color:var(--bs-input-group-addon-color);text-align:center;white-space:nowrap;background-color:var(--bs-input-group-addon-bg);border:var(--bs-border-width) solid var(--bs-input-group-addon-border-color);border-radius:var(--bs-btn-input-border-radius);align-items:center;display:flex}.input-group-sm>.form-control,.input-group-sm>.input-group-text,.input-group-sm>.btn{min-height:var(--bs-btn-input-sm-min-height);padding:var(--bs-btn-input-sm-padding-y) var(--bs-btn-input-sm-padding-x);font-size:var(--bs-btn-input-sm-font-size);border-radius:var(--bs-btn-input-sm-border-radius)}.input-group-lg>.form-control,.input-group-lg>.input-group-text,.input-group-lg>.btn{min-height:var(--bs-btn-input-lg-min-height);padding:var(--bs-btn-input-lg-padding-y) var(--bs-btn-input-lg-padding-x);font-size:var(--bs-btn-input-lg-font-size);border-radius:var(--bs-btn-input-lg-border-radius)}.input-group>:not(:last-child,.menu-toggle-split,.menu,.input-group-ignore,.form-floating,:has(+:is(.menu,.input-group-ignore):last-child)),.input-group>.menu-toggle-split:nth-last-child(n+3),.input-group>.form-floating:not(:last-child)>.form-control,.input-group>.form-floating:not(:last-child)>.form-select{border-start-end-radius:0;border-end-end-radius:0}.input-group>:not(:first-child,.menu,.input-group-ignore){border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:calc(-1 * var(--bs-border-width))}.input-group>:first-child.input-group-ignore+:not(.menu,.input-group-ignore){border-start-start-radius:var(--bs-btn-input-border-radius);border-end-start-radius:var(--bs-btn-input-border-radius)}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-start-start-radius:0;border-end-start-radius:0}.otp{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-font-size);--bs-otp-gap:.5rem;--bs-otp-slot-fg:var(--bs-btn-input-fg);--bs-otp-slot-bg:var(--bs-btn-input-bg);--bs-otp-slot-border-width:var(--bs-border-width);--bs-otp-slot-border-color:var(--bs-border-color);--bs-otp-slot-border-radius:var(--bs-radius-5);display:flex;position:relative}.otp-rendered .otp-input{color:#0000;text-align:center;cursor:default;caret-color:#0000;width:100%;height:100%;box-shadow:none;background-color:#0000;border:0;outline:0;padding:0;position:absolute;inset:0}.otp-rendered .otp-input::selection{color:#0000;background-color:#0000}.otp-slots{gap:var(--bs-otp-gap);pointer-events:none;display:inline-flex}.otp-slot{width:var(--bs-otp-size);min-height:var(--bs-otp-size);font-size:var(--bs-otp-font-size);color:var(--bs-otp-slot-fg);background-color:var(--bs-otp-slot-bg);border:var(--bs-otp-slot-border-width) solid var(--bs-otp-slot-border-color);border-radius:var(--bs-otp-slot-border-radius);box-shadow:var(--bs-box-shadow-inset);justify-content:center;align-items:center;font-weight:500;line-height:1;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex}@media (prefers-reduced-motion:reduce){.otp-slot{transition:none}}.otp-slot-active{--bs-focus-ring-offset:-1px;z-index:1;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.otp-slot-active:not(.otp-slot-filled):after{content:"";background-color:var(--bs-otp-slot-fg);width:1px;height:50%;animation:1s step-end infinite otp-caret-blink}.otp-input:disabled~.otp-slots .otp-slot{background-color:var(--bs-bg-2)}.otp-connected .otp-slots{gap:0}.otp-connected .otp-slot{border-radius:0}.otp-connected .otp-slot:not(:first-child){margin-inline-start:calc(var(--bs-otp-slot-border-width) * -1)}.otp-connected .otp-slot:first-child{border-start-start-radius:var(--bs-otp-slot-border-radius);border-end-start-radius:var(--bs-otp-slot-border-radius)}.otp-connected .otp-slot:last-child{border-start-end-radius:var(--bs-otp-slot-border-radius);border-end-end-radius:var(--bs-otp-slot-border-radius)}.otp-separator{padding-inline:var(--bs-otp-gap);font-size:var(--bs-otp-font-size);color:var(--bs-fg-4);-webkit-user-select:none;user-select:none;align-items:center;display:flex}.otp-sm{--bs-otp-size:var(--bs-btn-input-sm-min-height);--bs-otp-font-size:var(--bs-btn-input-sm-font-size)}.otp-lg{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-lg-font-size)}.combobox-toggle{width:100%;text-align:start;cursor:pointer;justify-content:space-between;align-items:center;gap:.5rem;padding-inline-end:var(--bs-control-padding-x);display:inline-flex}.combobox-toggle.show{background-color:var(--bs-bg-1)}.combobox-toggle:disabled,.combobox-toggle.disabled{cursor:not-allowed;opacity:.65}.combobox-value{text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;gap:.5rem;display:flex;overflow:hidden}.combobox-placeholder{color:color-mix(in oklch, currentcolor 65%, transparent)}.combobox-caret{flex-shrink:0;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.combobox-caret{transition:none}}.show>.combobox-caret{transform:rotate(180deg)}.combobox-toggle+.menu{--bs-menu-max-height:300px;--bs-menu-overflow-y:auto}.combobox-search{z-index:1;padding:var(--bs-menu-padding-x,.25rem);background-color:var(--bs-menu-bg,var(--bs-bg-body));position:sticky;top:0}.combobox-search-input{width:100%}.combobox-no-results{font-size:var(--bs-font-size-sm);color:var(--bs-fg-3);text-align:center;padding:1rem}.valid-feedback{width:100%;font-size:var(--bs-font-size-sm);color:var(--bs-success-fg);display:none}.tooltip.valid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-success-contrast);text-align:center;background-color:var(--bs-success-bg);opacity:1;border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,:is([data-bs-validate~=valid] :user-valid~.valid-feedback,[data-bs-validate~=valid] :user-valid~.valid-tooltip){display:block}.form-control.is-valid{--bs-control-border-color:var(--bs-success-border)}.form-control.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-control:user-valid{--bs-control-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-control:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-success-border)}.check.is-valid{--bs-check-border-color:var(--bs-success-border);--bs-check-checked-bg:var(--bs-success-bg);--bs-check-checked-border-color:var(--bs-success-bg)}.check.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .check:user-valid{--bs-check-border-color:var(--bs-success-border);--bs-check-checked-bg:var(--bs-success-bg);--bs-check-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .check:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.check.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.check.is-valid) .valid-feedback,.form-field:has(.check.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.check:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip){display:block}.radio.is-valid{--bs-radio-border-color:var(--bs-success-border);--bs-radio-checked-bg:var(--bs-success-bg);--bs-radio-checked-border-color:var(--bs-success-bg)}.radio.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .radio:user-valid{--bs-radio-border-color:var(--bs-success-border);--bs-radio-checked-bg:var(--bs-success-bg);--bs-radio-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .radio:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.radio.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.radio.is-valid) .valid-feedback,.form-field:has(.radio.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.radio:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip){display:block}.switch:has(input.is-valid){--bs-switch-border-color:var(--bs-success-border);--bs-switch-checked-bg:var(--bs-success-bg);--bs-switch-checked-border-color:var(--bs-success-bg)}.switch:has(input.is-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .switch:has(input:user-valid){--bs-switch-border-color:var(--bs-success-border);--bs-switch-checked-bg:var(--bs-success-bg);--bs-switch-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .switch:has(input:user-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.switch input.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.switch input.is-valid) .valid-feedback,.form-field:has(.switch input.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip){display:block}.chip-input:has(.form-ghost.is-valid){border-color:var(--bs-success-border)}.chip-input:has(.form-ghost.is-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}.chip-input:has(.form-ghost.is-valid)~.valid-feedback,.chip-input:has(.form-ghost.is-valid)~.valid-tooltip{display:block}[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid){border-color:var(--bs-success-border)}[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}:is([data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid)~.valid-feedback,[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid)~.valid-tooltip){display:block}.form-adorn:has(.form-ghost.is-valid){border-color:var(--bs-success-border)}.form-adorn:has(.form-ghost.is-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}.form-adorn:has(.form-ghost.is-valid)~.valid-feedback,.form-adorn:has(.form-ghost.is-valid)~.valid-tooltip{display:block}[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid){border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}:is([data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid)~.valid-feedback,[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid)~.valid-tooltip){display:block}.form-range-input.is-valid::-webkit-slider-thumb{background:var(--bs-success-bg)}.form-range-input.is-valid::-moz-range-thumb{background:var(--bs-success-bg)}.form-range-input.is-valid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range-input.is-valid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb{background:var(--bs-success-bg)}[data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb{background:var(--bs-success-bg)}[data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range:has(.form-range-input.is-valid)~.valid-feedback,.form-range:has(.form-range-input.is-valid)~.valid-tooltip,.form-field:has(.input-group .form-control.is-valid) .valid-feedback,.form-field:has(.input-group .form-control.is-valid) .valid-tooltip,:is([data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip){display:block}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,:is([data-bs-validate~=valid] .input-group>.form-control:not(:focus),.input-group>.form-floating:not(:focus-within):user-valid){z-index:3}.otp.is-valid .otp-slot{--bs-otp-slot-border-color:var(--bs-success-border)}.otp.is-valid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .otp:user-valid .otp-slot{--bs-otp-slot-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .otp:user-valid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.invalid-feedback{width:100%;font-size:var(--bs-font-size-sm);color:var(--bs-danger-fg);display:none}.tooltip.invalid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-danger-contrast);text-align:center;background-color:var(--bs-danger-bg);opacity:1;border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,:is([data-bs-validate] :user-invalid~.invalid-feedback,[data-bs-validate] :user-invalid~.invalid-tooltip){display:block}.form-control.is-invalid{--bs-control-border-color:var(--bs-danger-border)}.form-control.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-danger-border)}[data-bs-validate] .form-control:user-invalid{--bs-control-border-color:var(--bs-danger-border)}[data-bs-validate] .form-control:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-danger-border)}.check.is-invalid{--bs-check-border-color:var(--bs-danger-border);--bs-check-checked-bg:var(--bs-danger-bg);--bs-check-checked-border-color:var(--bs-danger-bg)}.check.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .check:user-invalid{--bs-check-border-color:var(--bs-danger-border);--bs-check-checked-bg:var(--bs-danger-bg);--bs-check-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .check:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.check.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.check.is-invalid) .invalid-feedback,.form-field:has(.check.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.check:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip){display:block}.radio.is-invalid{--bs-radio-border-color:var(--bs-danger-border);--bs-radio-checked-bg:var(--bs-danger-bg);--bs-radio-checked-border-color:var(--bs-danger-bg)}.radio.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .radio:user-invalid{--bs-radio-border-color:var(--bs-danger-border);--bs-radio-checked-bg:var(--bs-danger-bg);--bs-radio-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .radio:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.radio.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.radio.is-invalid) .invalid-feedback,.form-field:has(.radio.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.radio:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip){display:block}.switch:has(input.is-invalid){--bs-switch-border-color:var(--bs-danger-border);--bs-switch-checked-bg:var(--bs-danger-bg);--bs-switch-checked-border-color:var(--bs-danger-bg)}.switch:has(input.is-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .switch:has(input:user-invalid){--bs-switch-border-color:var(--bs-danger-border);--bs-switch-checked-bg:var(--bs-danger-bg);--bs-switch-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .switch:has(input:user-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.switch input.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.switch input.is-invalid) .invalid-feedback,.form-field:has(.switch input.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.switch input:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip){display:block}.chip-input:has(.form-ghost.is-invalid){border-color:var(--bs-danger-border)}.chip-input:has(.form-ghost.is-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}.chip-input:has(.form-ghost.is-invalid)~.invalid-feedback,.chip-input:has(.form-ghost.is-invalid)~.invalid-tooltip{display:block}[data-bs-validate] .chip-input:has(.form-ghost:user-invalid){border-color:var(--bs-danger-border)}[data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}:is([data-bs-validate] .chip-input:has(.form-ghost:user-invalid)~.invalid-feedback,[data-bs-validate] .chip-input:has(.form-ghost:user-invalid)~.invalid-tooltip){display:block}.form-adorn:has(.form-ghost.is-invalid){border-color:var(--bs-danger-border)}.form-adorn:has(.form-ghost.is-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}.form-adorn:has(.form-ghost.is-invalid)~.invalid-feedback,.form-adorn:has(.form-ghost.is-invalid)~.invalid-tooltip{display:block}[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid){border-color:var(--bs-danger-border)}[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}:is([data-bs-validate] .form-adorn:has(.form-ghost:user-invalid)~.invalid-feedback,[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid)~.invalid-tooltip){display:block}.form-range-input.is-invalid::-webkit-slider-thumb{background:var(--bs-danger-bg)}.form-range-input.is-invalid::-moz-range-thumb{background:var(--bs-danger-bg)}.form-range-input.is-invalid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range-input.is-invalid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb{background:var(--bs-danger-bg)}[data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb{background:var(--bs-danger-bg)}[data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range:has(.form-range-input.is-invalid)~.invalid-feedback,.form-range:has(.form-range-input.is-invalid)~.invalid-tooltip,.form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,.form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip,:is([data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip){display:block}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,:is([data-bs-validate] .input-group>.form-control:not(:focus),.input-group>.form-floating:not(:focus-within):user-invalid){z-index:4}.otp.is-invalid .otp-slot{--bs-otp-slot-border-color:var(--bs-danger-border)}.otp.is-invalid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .otp:user-invalid .otp-slot{--bs-otp-slot-border-color:var(--bs-danger-border)}[data-bs-validate] .otp:user-invalid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.btn,.btn-link,.btn-icon,.btn-solid,.btn-outline,.btn-subtle,.btn-text{--bs-btn-min-height:var(--bs-btn-input-min-height);--bs-btn-padding-x:var(--bs-btn-input-padding-x);--bs-btn-padding-y:var(--bs-btn-input-padding-y);--bs-btn-font-size:var(--bs-btn-input-font-size);--bs-btn-font-weight:var(--bs-btn-input-font-weight);--bs-btn-line-height:var(--bs-btn-input-line-height);--bs-btn-color:var(--bs-fg-body);--bs-btn-white-space:nowrap;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-radius-5);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:.65;--bs-btn-transition-timing:.15s ease-in-out;--bs-btn-transition-property:color, background-color, border-color, box-shadow;--bs-btn-transition:var(--bs-btn-transition-property) var(--bs-btn-transition-timing);gap:var(--bs-btn-gap,.25rem);min-height:var(--bs-btn-min-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);white-space:var(--bs-btn-white-space);vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;background-color:var(--bs-btn-bg,var(--bs-bg-2));border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);transition:var(--bs-btn-transition);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}@media (prefers-reduced-motion:reduce){.btn,.btn-link,.btn-icon,.btn-solid,.btn-outline,.btn-subtle,.btn-text{transition:none}}.btn:hover,.btn-link:hover,.btn-icon:hover,.btn-solid:hover,.btn-outline:hover,.btn-subtle:hover,.btn-text:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg,var(--bs-bg-3));border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible,.btn-link:focus-visible,.btn-icon:focus-visible,.btn-solid:focus-visible,.btn-outline:focus-visible,.btn-subtle:focus-visible,.btn-text:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.btn.active,.btn.show,.btn-link.active,.btn-link.show,.btn-icon.active,.btn-icon.show,.btn-solid.active,.btn-solid.show,.btn-outline.active,.btn-outline.show,.btn-subtle.active,.btn-subtle.show,.btn-text.active,.btn-text.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg,var(--bs-bg-3));border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn-link.active:focus-visible,.btn-link.show:focus-visible,.btn-icon.active:focus-visible,.btn-icon.show:focus-visible,.btn-solid.active:focus-visible,.btn-solid.show:focus-visible,.btn-outline.active:focus-visible,.btn-outline.show:focus-visible,.btn-subtle.active:focus-visible,.btn-subtle.show:focus-visible,.btn-text.active:focus-visible,.btn-text.show:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.btn:disabled,.btn.disabled,fieldset:disabled .btn,.btn-link:disabled,.btn-link.disabled,fieldset:disabled .btn-link,.btn-icon:disabled,.btn-icon.disabled,fieldset:disabled .btn-icon,.btn-solid:disabled,.btn-solid.disabled,fieldset:disabled .btn-solid,.btn-outline:disabled,.btn-outline.disabled,fieldset:disabled .btn-outline,.btn-subtle:disabled,.btn-subtle.disabled,fieldset:disabled .btn-subtle,.btn-text:disabled,.btn-text.disabled,fieldset:disabled .btn-text{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg,var(--bs-bg-1));border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity);background-image:none}.btn-solid{--bs-btn-bg:var(--bs-theme-bg);--bs-btn-color:var(--bs-theme-contrast);--bs-btn-border-color:var(--bs-theme-bg);--bs-btn-active-bg:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast) calc(l * .9) calc(c * 1.15) h);--bs-btn-disabled-bg:var(--bs-theme-bg);--bs-btn-disabled-color:var(--bs-theme-contrast);--bs-btn-disabled-border-color:var(--bs-theme-bg)}.btn-solid:hover{--bs-btn-hover-bg:oklch(from var(--bs-theme-bg) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-border-color:oklch(from var(--bs-theme-bg) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-color:oklch(from var(--bs-theme-contrast) calc(l * .95) calc(c * 1.1) h)}.btn-solid:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-solid:active,.btn-solid.active,.btn-solid.btn-check:has(input:checked){--bs-btn-active-bg:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast) calc(l * .9) calc(c * 1.15) h)}.btn-solid:disabled,.btn-solid.disabled,.btn-solid.btn-check:has(input:disabled){--bs-btn-disabled-bg:var(--bs-theme-bg);--bs-btn-disabled-color:var(--bs-theme-contrast);--bs-btn-disabled-border-color:var(--bs-theme-bg)}.btn-outline{--bs-btn-bg:transparent;--bs-btn-color:var(--bs-theme-fg);--bs-btn-border-color:var(--bs-theme-border);--bs-btn-active-bg:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-border-color:var(--bs-theme-border)}.btn-outline:hover{--bs-btn-hover-bg:oklch(from var(--bs-theme-bg) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-color:oklch(from var(--bs-theme-contrast) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-border-color:oklch(from var(--bs-theme-bg) calc(l * .95) calc(c * 1.1) h)}.btn-outline:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-outline:active,.btn-outline.active,.btn-outline.btn-check:has(input:checked){--bs-btn-active-bg:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h)}.btn-outline:disabled,.btn-outline.disabled,.btn-outline.btn-check:has(input:disabled){--bs-btn-disabled-bg:transparent;--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-border-color:var(--bs-theme-border)}.btn-subtle{--bs-btn-bg:var(--bs-theme-bg-subtle);--bs-btn-color:var(--bs-theme-fg);--bs-btn-border-color:transparent;--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);--bs-btn-disabled-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-border-color:transparent}.btn-subtle:hover{--bs-btn-hover-bg:color-mix(in oklch, var(--bs-theme-bg-muted) 50%, var(--bs-theme-bg-subtle));--bs-btn-hover-color:oklch(from var(--bs-theme-fg-emphasis) calc(l * .95) calc(c * 1.1) h)}.btn-subtle:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-subtle:active,.btn-subtle.active,.btn-subtle.btn-check:has(input:checked){--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h)}.btn-subtle:disabled,.btn-subtle.disabled,.btn-subtle.btn-check:has(input:disabled){--bs-btn-disabled-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-border-color:transparent}.btn-text{--bs-btn-color:var(--bs-theme-fg);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-active-color:oklch(from var(--bs-theme-fg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-text:hover{--bs-btn-hover-color:oklch(from var(--bs-theme-fg) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-bg:var(--bs-theme-bg-subtle)}.btn-text:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-text:active,.btn-text.active,.btn-text.btn-check:has(input:checked){--bs-btn-active-color:oklch(from var(--bs-theme-fg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-bg:var(--bs-theme-bg-subtle)}.btn-text:disabled,.btn-text.disabled,.btn-text.btn-check:has(input:disabled){--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-link{--bs-btn-font-weight:var(--bs-font-weight-normal);--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-bg:transparent;--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:var(--bs-fg-3);--bs-btn-disabled-border-color:transparent;color:var(--bs-theme-fg,var(--bs-btn-color));-webkit-text-decoration:var(--bs-link-decoration);-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);background-image:none}.btn-link:focus-visible{color:var(--bs-theme-fg,var(--bs-btn-color))}.btn-link:hover{color:var(--bs-theme-fg-emphasis,var(--bs-btn-hover-color))}.btn-xs,.btn-group-xs>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-xs-min-height);--bs-btn-padding-y:var(--bs-btn-input-xs-padding-y);--bs-btn-padding-x:var(--bs-btn-input-xs-padding-x);--bs-btn-font-size:var(--bs-btn-input-xs-font-size);--bs-btn-line-height:var(--bs-btn-input-xs-line-height);--bs-btn-border-radius:var(--bs-btn-input-xs-border-radius)}.btn-sm,.btn-group-sm>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-sm-min-height);--bs-btn-padding-y:var(--bs-btn-input-sm-padding-y);--bs-btn-padding-x:var(--bs-btn-input-sm-padding-x);--bs-btn-font-size:var(--bs-btn-input-sm-font-size);--bs-btn-line-height:var(--bs-btn-input-sm-line-height);--bs-btn-border-radius:var(--bs-btn-input-sm-border-radius)}.btn-lg,.btn-group-lg>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-lg-min-height);--bs-btn-padding-y:var(--bs-btn-input-lg-padding-y);--bs-btn-padding-x:var(--bs-btn-input-lg-padding-x);--bs-btn-font-size:var(--bs-btn-input-lg-font-size);--bs-btn-line-height:var(--bs-btn-input-lg-line-height);--bs-btn-border-radius:var(--bs-btn-input-lg-border-radius)}.btn-icon{aspect-ratio:1;justify-content:center;align-items:center;padding:0}.btn-check>input{clip:rect(0, 0, 0, 0);pointer-events:none;position:absolute}.btn-check:has(input:checked){color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg,var(--bs-bg-3));border-color:var(--bs-btn-active-border-color);box-shadow:var(--bs-btn-active-shadow);background-image:none}.btn-check:has(input:focus-visible){outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.btn-check:has(input:disabled){color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg,var(--bs-bg-1));border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity);box-shadow:none;background-image:none}.btn-styled{--bs-btn-gradient-start:#ffffff20;--bs-btn-gradient-end:#00000013;--bs-btn-border-mix-color:#000;--bs-btn-border-mix-amount:10%;--bs-btn-border-hover-mix-amount:12.5%;--bs-btn-border-active-mix-amount:20%;--bs-btn-shadow:0 1px 2px #00000026, inset 0 1px 0 #ffffff1a;--bs-btn-active-shadow:inset 0 2px 4px #00000026;background-image:linear-gradient(to bottom, var(--bs-btn-gradient-start), var(--bs-btn-gradient-end));border-color:color-mix(in lab, var(--bs-theme-bg), var(--bs-btn-border-mix-color) var(--bs-btn-border-mix-amount));box-shadow:var(--bs-btn-shadow)}.btn-styled:hover{background-image:linear-gradient(to bottom, var(--bs-btn-gradient-start), var(--bs-btn-gradient-end));border-color:color-mix(in lab, var(--bs-theme-bg), var(--bs-btn-border-mix-color) var(--bs-btn-border-hover-mix-amount))}.btn-styled:active,.btn-styled.active{border-color:color-mix(in lab, var(--bs-theme-bg), var(--bs-btn-border-mix-color) var(--bs-btn-border-active-mix-amount));box-shadow:var(--bs-btn-active-shadow);background-image:none}.btn-styled:disabled,.btn-styled.disabled{box-shadow:none;background-image:none}.btn-group,.btn-group-vertical{vertical-align:middle;display:inline-flex;position:relative}.btn-group>[class*=btn-],.btn-group-vertical>[class*=btn-]{flex:auto;position:relative}.btn-group>[class*=btn-]:hover,.btn-group-vertical>[class*=btn-]:hover{z-index:1}.btn-group>.btn-check:has(input:checked),.btn-group>[class*=btn-]:active,.btn-group>[class*=btn-].active,.btn-group-vertical>.btn-check:has(input:checked),.btn-group-vertical>[class*=btn-]:active,.btn-group-vertical>[class*=btn-].active{z-index:2}.btn-group>.btn-check:has(input:focus),.btn-group>[class*=btn-]:focus,.btn-group-vertical>.btn-check:has(input:focus),.btn-group-vertical>[class*=btn-]:focus{z-index:3}.btn-group-divider>[class*=btn-]+[class*=btn-]:before{z-index:3;content:"";background-color:var(--bs-btn-color);opacity:.25;position:absolute}.btn-group:where(.btn-group-divider)>[class*=btn-]+[class*=btn-]:before{top:25%;bottom:25%;left:calc(var(--bs-btn-border-width) * -1);width:var(--bs-btn-border-width)}.btn-group-vertical:where(.btn-group-divider)>[class*=btn-]+[class*=btn-]:before{top:calc(var(--bs-btn-border-width) * -1);right:var(--bs-btn-padding-x);left:var(--bs-btn-padding-x);height:var(--bs-btn-border-width)}.btn-toolbar{flex-wrap:wrap;justify-content:flex-start;gap:.5rem;display:flex}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-btn-border-radius)}.btn-group>[class*=btn-]:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-inline-start:calc(-1 * var(--bs-btn-border-width))}.btn-group>[class*=btn-]:not(:last-child,:has(+.menu)),.btn-group>.btn-group:not(:last-child)>[class*=btn-]{border-start-end-radius:0;border-end-end-radius:0}.btn-group>[class*=btn-]:not(:first-child),.btn-group>.btn-group:not(:first-child)>[class*=btn-]{border-start-start-radius:0;border-end-start-radius:0}.btn-group-vertical{flex-direction:column;justify-content:center;align-items:flex-start}.btn-group-vertical>[class*=btn-],.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>[class*=btn-]:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1 * var(--bs-btn-border-width))}.btn-group-vertical>[class*=btn-]:not(:last-child,:has(+.menu)),.btn-group-vertical>.btn-group:not(:last-child)>[class*=btn-]{border-end-end-radius:0;border-end-start-radius:0}.btn-group-vertical>[class*=btn-]:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>[class*=btn-]{border-start-start-radius:0;border-start-end-radius:0}.btn-close{--bs-btn-close-size:1.5rem;--bs-btn-close-color:inherit;--bs-btn-close-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e");--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-opacity:.85;--bs-btn-close-disabled-opacity:.25;box-sizing:content-box;min-width:var(--bs-btn-close-size);min-height:var(--bs-btn-close-size);color:var(--bs-btn-close-color);border-radius:var(--bs-radius-5);opacity:var(--bs-btn-close-opacity);mask-image:var(--bs-btn-close-icon);background-color:currentColor;border:0;padding:0;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.btn-close:hover{color:var(--bs-btn-close-color);opacity:var(--bs-btn-close-hover-opacity);text-decoration:none}.btn-close:focus-visible{opacity:var(--bs-btn-close-focus-opacity);outline:var(--bs-focus-ring)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.accordion{--bs-accordion-padding-x:1.25rem;--bs-accordion-padding-y:1rem;--bs-accordion-color:var(--bs-fg-body);--bs-accordion-bg:var(--bs-bg-body);--bs-accordion-transition-property:color, background-color, border-radius;--bs-accordion-transition-timing:.15s ease-in-out;--bs-accordion-transition:var(--bs-accordion-transition-property) var(--bs-accordion-timing);--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-accordion-radius,var(--bs-radius-7));--bs-accordion-btn-color:var(--bs-fg-2);--bs-accordion-btn-bg:var(--bs-bg-body);--bs-accordion-btn-icon-width:1rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-active-color:var(--bs-fg);--bs-accordion-active-bg:var(--bs-bg-2)}.accordion-header{width:100%;padding:var(--bs-accordion-btn-padding-y,var(--bs-accordion-padding-y)) var(--bs-accordion-btn-padding-x,var(--bs-accordion-padding-x));font-size:var(--bs-accordion-font-size,var(--bs-font-size-base));color:var(--bs-accordion-btn-color);text-align:start;cursor:pointer;background-color:var(--bs-accordion-btn-bg);transition:var(--bs-accordion-transition);align-items:center;list-style:none;display:flex}@media (prefers-reduced-motion:reduce){.accordion-header{transition:none}}.accordion-header::-webkit-details-marker{display:none}.accordion-header .accordion-icon{width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);color:currentColor;transition:var(--bs-accordion-btn-icon-transition);flex-shrink:0;margin-inline-start:auto}@media (prefers-reduced-motion:reduce){.accordion-header .accordion-icon{transition:none}}.accordion-header:hover{z-index:2}.accordion-header:focus-visible{z-index:3;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);outline-offset:-1px;position:relative}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}@media (prefers-reduced-motion:no-preference){.accordion-item{interpolate-size:allow-keywords}}.accordion-item::details-content{block-size:0;transition:content-visibility .2s allow-discrete, block-size .2s;overflow-y:clip}@media (prefers-reduced-motion:reduce){.accordion-item::details-content{transition:none}}.accordion-item:first-of-type{border-start-start-radius:var(--bs-accordion-border-radius);border-start-end-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header{border-start-start-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width));border-start-end-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width))}.accordion-item:not(:first-of-type){border-block-start:0}.accordion-item:last-of-type{border-end-end-radius:var(--bs-accordion-border-radius);border-end-start-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header{border-end-end-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width));border-end-start-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width))}.accordion-item:last-of-type>.accordion-body{border-end-end-radius:var(--bs-accordion-border-radius);border-end-start-radius:var(--bs-accordion-border-radius)}.accordion-item[open]{border-color:var(--bs-theme-border,var(--bs-accordion-border-color))}.accordion-item[open]::details-content{block-size:auto}.accordion-item[open]>.accordion-header{color:var(--bs-theme-fg,var(--bs-accordion-active-color));background-color:var(--bs-theme-bg-subtle,var(--bs-accordion-active-bg));box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-theme-border,var(--bs-accordion-border-color))}.accordion-item[open]>.accordion-header .accordion-icon{transform:var(--bs-accordion-btn-icon-transform)}.accordion-item[open]:last-of-type>.accordion-header{border-end-end-radius:0;border-end-start-radius:0}.accordion-body{padding:var(--bs-accordion-body-padding-y,var(--bs-accordion-padding-y)) var(--bs-accordion-body-padding-x,var(--bs-accordion-padding-x))}.accordion-flush>.accordion-item{border-inline:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-block-start:0}.accordion-flush>.accordion-item:last-child{border-block-end:0}.accordion-flush>.accordion-item>.accordion-header,.accordion-flush>.accordion-item>.accordion-body{border-radius:0}.alert{--bs-alert-gap:var(--bs-spacer-3);--bs-alert-bg:var(--bs-theme-bg-subtle,var(--bs-bg-1));--bs-alert-padding-x:var(--bs-spacer);--bs-alert-padding-y:var(--bs-spacer);--bs-alert-color:var(--bs-theme-fg,inherit);--bs-alert-border-color:var(--bs-theme-border,var(--bs-border-color));--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-radius-5);--bs-alert-link-color:inherit;--bs-hr-border-color:var(--bs-theme-border,var(--bs-border-color));gap:var(--bs-alert-gap);padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius);align-items:start;display:flex}.alert>p{margin-bottom:0}.alert-heading{color:inherit}.alert-link{font-weight:var(--bs-font-weight-semibold);color:var(--bs-alert-link-color)}.avatar{--bs-avatar-size:2.5rem;--bs-avatar-border-radius:50%;--bs-avatar-border-width:2px;--bs-avatar-border-color:var(--bs-bg-body);--bs-avatar-bg:var(--bs-bg-2);--bs-avatar-color:var(--bs-fg-body);--bs-avatar-status-size:.75rem;--bs-avatar-status-border-width:2px;--bs-avatar-status-border-color:var(--bs-bg-body);--bs-avatar-stack-spacing:-.3;--bs-avatar-stack-transition:transform .2s ease-in-out;width:var(--bs-avatar-size);height:var(--bs-avatar-size);font-size:calc(var(--bs-avatar-size) * .4);font-weight:var(--bs-avatar-font-weight,var(--bs-font-weight-medium));color:var(--bs-theme-contrast,var(--bs-avatar-color));text-transform:uppercase;vertical-align:middle;background-color:var(--bs-theme-bg,var(--bs-avatar-bg));border-radius:var(--bs-avatar-border-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}.avatar>.avatar-img{object-fit:cover;width:100%;height:100%}.avatar-subtle{color:var(--bs-theme-fg,var(--bs-avatar-color));background-color:var(--bs-theme-bg-subtle,var(--bs-avatar-bg))}.avatar-img{border-radius:var(--bs-avatar-border-radius,50%)}.avatar-status{right:calc(var(--bs-avatar-status-border-width) * -1);bottom:calc(var(--bs-avatar-status-border-width) * -1);width:var(--bs-avatar-status-size);height:var(--bs-avatar-status-size);background-color:var(--bs-gray-400);border:var(--bs-avatar-status-border-width) solid var(--bs-avatar-status-border-color);border-radius:50%;position:absolute}.avatar-status.status-online{background-color:var(--bs-green-500)}.avatar-status.status-offline{background-color:var(--bs-gray-400);border-radius:20%}.avatar-status.status-busy{background-color:var(--bs-red-500);border-radius:20%}.avatar-status.status-away{background-color:var(--bs-yellow-500)}.avatar-stack{flex-direction:row-reverse;display:inline-flex}.avatar-stack .avatar{margin-left:calc(var(--bs-avatar-size) * var(--bs-avatar-stack-spacing));border:var(--bs-avatar-border-width) solid var(--bs-avatar-border-color);transition:var(--bs-avatar-stack-transition);mask-image:none}@media (prefers-reduced-motion:reduce){.avatar-stack .avatar{transition:none}}.avatar-stack .avatar:last-child{margin-left:0}.avatar-stack .avatar:hover{z-index:1;transform:translateY(-2px)}.avatar-xs,.avatar-stack-xs>.avatar{--bs-avatar-size:1.5rem;--bs-avatar-status-size:.625rem}.avatar-sm,.avatar-stack-sm>.avatar{--bs-avatar-size:2rem}.avatar-lg,.avatar-stack-lg>.avatar{--bs-avatar-size:3rem;--bs-avatar-status-size:1rem;--bs-avatar-border-width:3px}.avatar-xl,.avatar-stack-xl>.avatar{--bs-avatar-size:4rem;--bs-avatar-status-size:1.25rem;--bs-avatar-border-width:4px}.badge{--bs-badge-padding-x:.625em;--bs-badge-padding-y:.25em;--bs-badge-font-size:clamp(12px, .75em, .75em);--bs-badge-font-weight:var(--bs-font-weight-semibold);--bs-badge-color:inherit;--bs-badge-bg:var(--bs-bg-2);--bs-badge-border-width:var(--bs-border-width);--bs-badge-border-color:transparent;--bs-badge-border-radius:var(--bs-radius-7);min-height:1.375rem;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);color:var(--bs-theme-contrast,var(--bs-badge-color));text-align:center;white-space:nowrap;vertical-align:baseline;background-color:var(--bs-theme-bg,var(--bs-badge-bg));border:var(--bs-badge-border-width) solid var(--bs-badge-border-color);border-radius:var(--bs-badge-border-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-subtle{--bs-badge-color:var(--bs-theme-fg);--bs-badge-bg:var(--bs-theme-bg-subtle);--bs-badge-border-color:transparent;color:var(--bs-badge-color);background-color:var(--bs-badge-bg);border-color:var(--bs-badge-border-color)}.badge-outline{--bs-badge-color:var(--bs-theme-fg);--bs-badge-bg:transparent;--bs-badge-border-color:var(--bs-theme-border);color:var(--bs-badge-color);background-color:var(--bs-badge-bg);border-color:var(--bs-badge-border-color)}.breadcrumb{--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-font-size:inherit;--bs-breadcrumb-bg:transparent;--bs-breadcrumb-border-radius:var(--bs-radius-5);--bs-breadcrumb-divider-color:var(--bs-fg-4);--bs-breadcrumb-divider-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e");--bs-breadcrumb-divider-width:.375rem;--bs-breadcrumb-divider-height:.75rem;--bs-breadcrumb-link-padding-x:.75rem;--bs-breadcrumb-link-padding-y:.25rem;--bs-breadcrumb-link-color:var(--bs-fg-3);--bs-breadcrumb-link-hover-color:var(--bs-fg-2);--bs-breadcrumb-link-hover-bg:var(--bs-bg-1);--bs-breadcrumb-link-active-color:var(--bs-fg-1);--bs-breadcrumb-link-border-radius:var(--bs-radius-7);padding:var(--bs-breadcrumb-padding-y,0) var(--bs-breadcrumb-padding-x,0);font-size:var(--bs-breadcrumb-font-size);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius);flex-wrap:wrap;align-items:center;list-style-type:"";display:flex}.breadcrumb-item{display:flex}.breadcrumb-divider{margin-inline:calc(var(--bs-breadcrumb-link-padding-x) / 4);color:var(--bs-breadcrumb-divider-color)}.breadcrumb-divider:empty:before{width:var(--bs-breadcrumb-divider-width);height:var(--bs-breadcrumb-divider-height);content:"";mask-image:var(--bs-breadcrumb-divider-icon);background-color:currentColor;display:block;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.breadcrumb-link{min-height:2.25rem;padding:var(--bs-breadcrumb-link-padding-y) var(--bs-breadcrumb-link-padding-x);color:var(--bs-breadcrumb-link-color);border-radius:var(--bs-breadcrumb-link-border-radius);justify-content:center;align-items:center;text-decoration:none;transition:text-decoration-color .1s ease-in-out;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.breadcrumb-link{transition:none}}.breadcrumb-link:hover{z-index:2;color:var(--bs-breadcrumb-link-hover-color);background-color:var(--bs-breadcrumb-link-hover-bg)}.breadcrumb-link.active{color:var(--bs-breadcrumb-link-active-color)}.chip{--bs-chip-height:1.75rem;--bs-chip-padding-x:.625rem;--bs-chip-gap:.3125rem;--bs-chip-border-radius:var(--bs-radius-pill);--bs-chip-img-size:1.25rem;--bs-chip-icon-size:1rem;--bs-chip-dismiss-size:1rem;--bs-chip-dismiss-opacity:.65;--bs-chip-dismiss-hover-opacity:1;--bs-chip-color:var(--bs-theme-fg,var(--bs-fg-body));--bs-chip-bg:var(--bs-theme-bg-subtle,var(--bs-bg-2));--bs-chip-border-color:transparent;--bs-chip-selected-color:var(--bs-theme-contrast,var(--bs-primary-contrast));--bs-chip-selected-bg:var(--bs-theme-bg,var(--bs-primary-bg));--bs-chip-selected-border-color:var(--bs-theme-bg,var(--bs-primary-bg));gap:var(--bs-chip-gap);height:var(--bs-chip-height);padding-inline:var(--bs-chip-padding-x);font-size:var(--bs-chip-font-size,var(--bs-font-size-sm));font-weight:var(--bs-chip-font-weight,var(--bs-font-weight-base));line-height:var(--bs-chip-line-height,1.25rem);color:var(--bs-chip-color);white-space:nowrap;vertical-align:middle;cursor:pointer;background-color:var(--bs-chip-bg);border:var(--bs-border-width) solid var(--bs-chip-border-color);border-radius:var(--bs-chip-border-radius);align-items:center;text-decoration:none;display:inline-flex}.chip:hover{--bs-chip-bg:var(--bs-theme-bg-muted,var(--bs-bg-3))}.chip:focus-visible{outline:0}.chip.active{--bs-chip-color:var(--bs-chip-selected-color);--bs-chip-bg:var(--bs-chip-selected-bg);--bs-chip-border-color:var(--bs-chip-selected-border-color)}.chip.active:hover{--bs-chip-bg:var(--bs-chip-selected-bg);opacity:.9}.chip.disabled,.chip:disabled{pointer-events:none;opacity:.65}.chip-img{width:var(--bs-chip-img-size);height:var(--bs-chip-img-size);border-radius:50%}.chip-img:first-child{margin-inline-start:-.375rem}.chip-icon{flex-shrink:0;justify-content:center;align-items:center;margin-inline-start:calc(var(--bs-chip-gap) * -.25);display:flex}.chip-icon>svg{width:var(--bs-chip-icon-size);height:var(--bs-chip-icon-size);display:block}.chip-icon>img{width:var(--bs-chip-icon-size);height:var(--bs-chip-icon-size);object-fit:cover;border-radius:50%}.chip-dismiss{width:var(--bs-chip-min-height);height:var(--bs-chip-min-height);color:inherit;cursor:pointer;opacity:var(--bs-chip-dismiss-opacity);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;margin-inline-end:calc(var(--bs-chip-padding-x) * -.25);padding:0;display:flex}.chip-dismiss:hover{opacity:var(--bs-chip-dismiss-hover-opacity)}.chip-dismiss:focus-visible{opacity:1;outline:0;outline:var(--bs-focus-ring)}.chip-dismiss>svg{width:var(--bs-chip-dismiss-size);height:var(--bs-chip-dismiss-size);display:block}.card{--bs-card-spacer-y:var(--bs-spacer-5);--bs-card-spacer-x:var(--bs-spacer-5);--bs-card-subtitle-color:inherit;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-radius-7);--bs-card-box-shadow:none;--bs-card-inner-border-radius:calc(var(--bs-radius-7) - var(--bs-border-width));--bs-card-cap-padding-y:var(--bs-spacer-3);--bs-card-cap-padding-x:var(--bs-spacer);--bs-card-cap-bg:var(--bs-bg-1);--bs-card-cap-color:inherit;--bs-card-height:auto;--bs-card-color:inherit;--bs-card-bg:var(--bs-bg-body);--bs-card-img-overlay-padding:var(--bs-card-spacer-y);--bs-card-group-margin:.75rem;--bs-card-body-gap:calc(var(--bs-card-spacer-y) * .5);min-width:0;height:var(--bs-card-height);color:var(--bs-fg-body);word-wrap:break-word;background-color:var(--bs-card-bg);border-radius:var(--bs-card-border-radius);box-shadow:var(--bs-card-box-shadow);flex-direction:column;display:flex;position:relative}.card>hr{margin-inline:0}.card-body{gap:var(--bs-card-body-gap);padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color);border:solid var(--bs-theme-bg,var(--bs-card-border-color));border-width:0 var(--bs-card-border-width);flex-direction:column;flex:auto;align-items:flex-start;display:flex}.card-body>*{margin-block:0}.card-body,.card-list{border:solid var(--bs-theme-bg,var(--bs-card-border-color));border-width:0 var(--bs-card-border-width)}.card-body:first-child,.card-list:first-child{border-top-width:var(--bs-card-border-width);border-start-start-radius:var(--bs-card-border-radius);border-start-end-radius:var(--bs-card-border-radius)}.card-body:last-child,.card-list:last-child{border-bottom-width:var(--bs-card-border-width);border-end-end-radius:var(--bs-card-border-radius);border-end-start-radius:var(--bs-card-border-radius)}.card-body:not(:first-child,:last-child),.card-list:not(:first-child,:last-child){border-block-end-width:var(--bs-card-border-width)}.card-body:has(+.card-footer),.card-list:has(+.card-footer){border-block-end-width:0}.card-title,.card-subtitle,.card-text{align-self:stretch}.card-subtitle{margin-top:calc(var(--bs-card-body-gap) * -.5)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-theme-contrast,var(--bs-card-cap-color));background-color:var(--bs-theme-bg,var(--bs-card-cap-bg));border:var(--bs-card-border-width) solid var(--bs-theme-bg,var(--bs-card-border-color));margin-bottom:0}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-theme-bg,var(--bs-card-cap-bg));border:var(--bs-card-border-width) solid var(--bs-theme-bg,var(--bs-card-border-color))}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-translucent{background-color:color-mix(in oklch, var(--bs-card-bg) 80%, transparent);backdrop-filter:blur(5px)saturate(180%)}.card-translucent .card-header,.card-translucent .card-footer{background-color:color-mix(in oklch, var(--bs-card-cap-bg) 60%, transparent)}.card-subtle{border-color:var(--bs-theme-border,var(--bs-card-border-color))}.card-subtle .card-header,.card-subtle .card-footer{color:var(--bs-theme-fg-emphasis,currentcolor);background-color:var(--bs-theme-bg-subtle,var(--bs-card-cap-bg));border-color:var(--bs-theme-border,var(--bs-card-border-color))}.card-subtle .card-body,.card-subtle .card-list{border-color:var(--bs-theme-border,var(--bs-card-border-color))}.nav.card-header-tabs{margin-inline:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y) - var(--bs-nav-tabs-border-width));border-block-end:0}.nav.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-block-end-color:var(--bs-card-bg)}.card-img-overlay{padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius);position:absolute;inset:0}.card-img,.card-img-top,.card-img-bottom{outline:var(--bs-card-border-width) solid var(--bs-card-border-color);outline-offset:calc(var(--bs-card-border-width) * -1);width:100%}.card-img,.card-img-top{border-start-start-radius:var(--bs-card-inner-border-radius);border-start-end-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-end-end-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-row{flex-direction:row}.card-row .card-body,.card-row .card-list{border-width:var(--bs-card-border-width) 0;border-radius:0}.card-row .card-body:first-child,.card-row .card-list:first-child{border-inline-start-width:var(--bs-card-border-width);border-start-start-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-row .card-body:last-child,.card-row .card-list:last-child{border-inline-end-width:var(--bs-card-border-width);border-start-end-radius:var(--bs-card-inner-border-radius);border-end-end-radius:var(--bs-card-inner-border-radius)}.card-row .card-body:not(:first-child,:last-child),.card-row .card-list:not(:first-child,:last-child){border-inline-end-width:var(--bs-card-border-width)}.card-img-start{border-start-start-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-img-end{border-start-end-radius:var(--bs-card-inner-border-radius);border-end-end-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@container (width>=576px){.card-group{flex-flow:wrap;display:flex}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{margin-inline-start:calc(-1 * var(--bs-card-border-width))}.card-group>.card:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.card-group>.card:not(:last-child)>.card-img-top,.card-group>.card:not(:last-child)>.card-header,.card-group>.card:not(:last-child)>.card-body{border-start-end-radius:0}.card-group>.card:not(:last-child)>.card-img-bottom,.card-group>.card:not(:last-child)>.card-footer,.card-group>.card:not(:last-child)>.card-body{border-end-end-radius:0}.card-group>.card:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.card-group>.card:not(:first-child)>.card-img-top,.card-group>.card:not(:first-child)>.card-header,.card-group>.card:not(:first-child)>.card-body{border-start-start-radius:0}.card-group>.card:not(:first-child)>.card-img-bottom,.card-group>.card:not(:first-child)>.card-footer,.card-group>.card:not(:first-child)>.card-body{border-end-start-radius:0}}.carousel{--bs-carousel-gap:.75rem;--bs-carousel-indicator-bg:var(--bs-fg-3);--bs-carousel-indicator-width:.75rem;--bs-carousel-indicator-height:.75rem;--bs-carousel-indicator-spacer:.25rem;--bs-carousel-indicator-transition:opacity .6s ease, width .3s ease;--bs-carousel-indicator-progress-bg:var(--bs-carousel-indicator-bg);--bs-carousel-control-icon-width:1rem;--bs-carousel-control-prev-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>");--bs-carousel-control-next-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>");--bs-carousel-control-pause-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>");--bs-carousel-control-play-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>");--bs-carousel-items:1;--bs-carousel-items-gap:0px;--bs-carousel-items-peek:0px;--bs-carousel-fade-duration:.6s;gap:var(--bs-carousel-gap);flex-direction:column;display:flex;position:relative}.carousel-inner{gap:var(--bs-carousel-items-gap);width:100%;padding-inline:var(--bs-carousel-items-peek);overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--bs-carousel-items-peek);scrollbar-width:none;display:flex;overflow-x:auto}.carousel-inner::-webkit-scrollbar{display:none}@media (prefers-reduced-motion:no-preference){.carousel-inner{scroll-behavior:smooth}}.carousel-item{flex:0 0 calc((100% - (var(--bs-carousel-items) - 1) * var(--bs-carousel-items-gap)) / var(--bs-carousel-items));scroll-snap-align:start;scroll-snap-stop:always;min-width:0}.carousel-center .carousel-item{scroll-snap-align:center}.carousel-auto .carousel-item{flex-basis:auto}.carousel-fade .carousel-inner{scroll-snap-type:none;display:grid;overflow:hidden}.carousel-fade .carousel-item{visibility:hidden;opacity:0;width:100%;transition:opacity var(--bs-carousel-fade-duration) ease, visibility 0s linear var(--bs-carousel-fade-duration);grid-area:1/1}@media (prefers-reduced-motion:reduce){.carousel-fade .carousel-item{transition:none}}.carousel-fade .carousel-item.active{visibility:visible;opacity:1;transition:opacity var(--bs-carousel-fade-duration) ease}@media (prefers-reduced-motion:reduce){.carousel-fade .carousel-item.active{transition:none}}.carousel-icon-prev,.carousel-icon-next,.carousel-icon-pause,.carousel-icon-play{width:var(--bs-carousel-control-icon-width);height:var(--bs-carousel-control-icon-width);background-color:currentColor;display:inline-block;mask-position:50%;mask-size:100% 100%;mask-repeat:no-repeat}.carousel-icon-prev{mask-image:var(--bs-carousel-control-prev-icon)}.carousel-icon-next{mask-image:var(--bs-carousel-control-next-icon)}[dir=rtl] .carousel-icon-prev,[dir=rtl] .carousel-icon-next{transform:scaleX(-1)}.carousel-icon-pause{mask-image:var(--bs-carousel-control-pause-icon)}.carousel-icon-play{mask-image:var(--bs-carousel-control-play-icon)}.carousel-control-play-pause .carousel-icon-play,.carousel-control-play-pause.paused .carousel-icon-pause{display:none}.carousel-control-play-pause.paused .carousel-icon-play{display:inline-block}.carousel-indicators{gap:var(--bs-carousel-indicator-spacer);justify-content:center;display:flex}.carousel-indicators [data-bs-target]{width:var(--bs-carousel-indicator-width);height:var(--bs-carousel-indicator-height);cursor:pointer;border:1px solid var(--bs-carousel-indicator-bg);border-radius:var(--bs-carousel-indicator-width);transition:var(--bs-carousel-indicator-transition);background-color:#0000;flex:0 auto;padding:0}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{width:calc(var(--bs-carousel-indicator-width) * 2.5);background-color:var(--bs-carousel-indicator-bg);border-color:var(--bs-carousel-indicator-bg)}@keyframes carousel-indicator-progress{0%{inline-size:0}to{inline-size:100%}}@media (prefers-reduced-motion:no-preference){.carousel-playing .carousel-indicators .active{background-color:#0000;position:relative;overflow:hidden}.carousel-playing .carousel-indicators .active:after{content:"";background-color:var(--bs-carousel-indicator-progress-bg);inline-size:0;animation:carousel-indicator-progress var(--bs-carousel-interval,5s) linear forwards;position:absolute;inset-block:0;inset-inline-start:0}}.carousel-overlay{--bs-carousel-indicator-bg:light-dark(var(--bs-white),var(--bs-black))}.carousel-overlay .carousel-overlay-controls{z-index:1;justify-content:space-between;align-items:center;display:flex;position:absolute;inset-block-end:1rem;inset-inline:1rem}[data-vc=calendar]{--bs-datepicker-padding:1rem;--bs-datepicker-bg:var(--bs-bg-body);--bs-datepicker-color:var(--bs-fg-body);--bs-datepicker-border-color:var(--bs-border-color-translucent);--bs-datepicker-border-width:var(--bs-border-width);--bs-datepicker-border-radius:var(--bs-radius-7);--bs-datepicker-box-shadow:var(--bs-box-shadow);--bs-datepicker-font-size:var(--bs-font-size-sm);--bs-datepicker-min-width:280px;--bs-datepicker-zindex:1000;--bs-datepicker-header-font-weight:600;--bs-datepicker-weekday-color:var(--bs-fg-3);--bs-datepicker-day-hover-bg:var(--bs-bg-1);--bs-datepicker-day-selected-bg:var(--bs-primary-bg);--bs-datepicker-day-selected-color:var(--bs-primary-contrast);--bs-datepicker-day-today-bg:var(--bs-bg-2);--bs-datepicker-day-today-color:var(--bs-fg-1);--bs-datepicker-day-disabled-color:var(--bs-fg-4);z-index:var(--bs-datepicker-zindex);box-sizing:border-box;min-width:var(--bs-datepicker-min-width);padding:var(--bs-datepicker-padding);font-family:var(--bs-font-sans-serif);font-size:var(--bs-datepicker-font-size);color:var(--bs-datepicker-color);color-scheme:light dark;background-color:var(--bs-datepicker-bg);border:var(--bs-datepicker-border-width) solid var(--bs-datepicker-border-color);box-shadow:var(--bs-datepicker-box-shadow);opacity:1;border-radius:var(--bs-datepicker-border-radius);flex-direction:column;display:flex;position:absolute}[data-vc=calendar][data-bs-theme=light]{color-scheme:light}[data-vc=calendar][data-bs-theme=dark]{color-scheme:dark}[data-vc=calendar] button:focus-visible{z-index:1;outline:var(--bs-focus-ring);position:relative}[data-vc-calendar-hidden]{pointer-events:none;opacity:0}[data-vc=calendar]:not([data-vc-input]){width:fit-content;box-shadow:none;border:0;padding:0;position:relative}[data-vc-position=bottom]{margin-block-start:.25rem}[data-vc-position=top]{margin-block-end:-.25rem}[data-vc-arrow]{width:2rem;height:2rem;color:var(--bs-datepicker-color);pointer-events:auto;cursor:pointer;border-radius:var(--bs-radius-5);background-color:#0000;border:0;display:block;position:relative}[data-vc-arrow]:before{content:"";background-color:var(--bs-datepicker-color);position:absolute;inset:.25rem;mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>");mask-position:50%;mask-repeat:no-repeat}[data-vc-arrow]:hover{background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-arrow=prev]:before{transform:rotate(90deg)}[data-vc-arrow=next]:before{transform:rotate(-90deg)}[data-vc=controls]{z-index:20;pointer-events:none;justify-content:space-between;align-items:center;padding-top:1rem;padding-left:1rem;padding-right:1rem;display:flex;position:absolute;top:0;left:0;right:0}[data-vc=grid]{flex-wrap:wrap;flex-grow:1;gap:1.75rem;display:flex}[data-vc=column]{flex-direction:column;flex-grow:1;min-width:240px;display:flex}[data-vc=header]{align-items:center;margin-bottom:.75rem;display:flex;position:relative}[data-vc-header=content]{white-space:pre-wrap;flex-grow:1;justify-content:center;align-items:center;display:inline-flex}[data-vc=month],[data-vc=year]{font-size:1rem;font-weight:var(--bs-datepicker-header-font-weight);color:var(--bs-datepicker-color);border-radius:var(--bs-radius-5);background-color:#0000;border:0;margin-inline:-.125rem;padding:.25rem .5rem}[data-vc=month]:disabled,[data-vc=year]:disabled{color:var(--bs-datepicker-day-disabled-color);pointer-events:none}[data-vc=month]:hover:not(:disabled),[data-vc=year]:hover:not(:disabled){background-color:var(--bs-datepicker-day-hover-bg)}[data-vc=content]{flex-direction:column;flex-grow:1;display:flex}[data-vc=months],[data-vc=years]{grid-template-columns:repeat(var(--bs-vc-columns,4), minmax(0, 1fr));flex-grow:1;align-items:center;gap:1rem .25rem;display:grid}[data-vc=years]{--bs-vc-columns:5}[data-vc-months-month],[data-vc-years-year]{height:2.5rem;color:var(--bs-datepicker-weekday-color);text-align:center;word-break:break-all;cursor:pointer;border-radius:var(--bs-radius-5);background-color:#0000;border:0;justify-content:center;align-items:center;padding:.25rem;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}[data-vc-months-month]:disabled,[data-vc-years-year]:disabled{color:var(--bs-datepicker-day-disabled-color);pointer-events:none}[data-vc-months-month]:hover:not(:disabled),[data-vc-years-year]:hover:not(:disabled){background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-months-month][data-vc-months-month-selected],[data-vc-months-month][data-vc-years-year-selected],[data-vc-years-year][data-vc-months-month-selected],[data-vc-years-year][data-vc-years-year-selected],[data-vc-months-month][data-vc-months-month-selected]:hover,[data-vc-months-month][data-vc-years-year-selected]:hover,[data-vc-years-year][data-vc-months-month-selected]:hover,[data-vc-years-year][data-vc-years-year-selected]:hover{color:var(--bs-datepicker-day-selected-color);background-color:var(--bs-datepicker-day-selected-bg)}[data-vc=week]{grid-template-columns:repeat(7,1fr);justify-items:center;margin-bottom:.5rem;display:grid}[data-vc-week-day]{width:100%;min-width:1.875rem;color:var(--bs-datepicker-weekday-color);background-color:#0000;border:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}button[data-vc-week-day]{cursor:pointer}[data-vc=dates]{pointer-events:none}[data-vc-dates=row]{grid-template-columns:repeat(7,1fr);place-items:center;width:100%;display:grid}[data-vc-date]{pointer-events:auto;justify-content:center;align-items:center;width:100%;padding-top:.125rem;padding-bottom:.125rem;display:flex;position:relative}[data-vc-date]:not(:has([data-vc-date-btn])),[data-vc-date][data-vc-date-disabled],[data-vc-date][data-vc-date-disabled] [data-vc-date-btn]{pointer-events:none}[data-vc-date-btn]{width:100%;min-width:1.875rem;height:100%;min-height:1.875rem;color:var(--bs-datepicker-color);cursor:pointer;border-radius:var(--bs-radius-5);background-color:#0000;border:0;justify-content:center;align-items:center;padding:0;font-size:.75rem;font-weight:400;line-height:1rem;display:flex}[data-vc-date-btn]:hover{background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-date-today] [data-vc-date-btn]{color:var(--bs-datepicker-day-today-color);background-color:var(--bs-datepicker-day-today-bg);font-weight:600}[data-vc-date-month=next] [data-vc-date-btn],[data-vc-date-month=prev] [data-vc-date-btn]{opacity:.5}[data-vc-date-disabled] [data-vc-date-btn]{color:var(--bs-datepicker-day-disabled-color)}[data-vc-date-hover] [data-vc-date-btn]{background-color:var(--bs-datepicker-day-hover-bg);border-radius:0}[data-vc-date-hover=first] [data-vc-date-btn]{border-start-start-radius:var(--bs-radius-5);border-end-start-radius:var(--bs-radius-5)}[data-vc-date-hover=last] [data-vc-date-btn]{border-start-end-radius:var(--bs-radius-5);border-end-end-radius:var(--bs-radius-5)}[data-vc-date-hover=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-radius-5)}[data-vc-date-selected=middle] [data-vc-date-btn]{opacity:.8;border-radius:0}[data-vc-date-selected] [data-vc-date-btn]{color:var(--bs-datepicker-day-selected-color);background-color:var(--bs-datepicker-day-selected-bg)}[data-vc-date-selected=first] [data-vc-date-btn]{border-top-left-radius:var(--bs-radius-5);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bs-radius-5)}[data-vc-date-selected=last] [data-vc-date-btn]{border-top-left-radius:0;border-top-right-radius:var(--bs-radius-5);border-bottom-right-radius:var(--bs-radius-5);border-bottom-left-radius:0}[data-vc-date-selected=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-radius-5)}:root.dialog-open{overflow:hidden}.dialog{--bs-dialog-padding:1rem;--bs-dialog-width:500px;--bs-dialog-margin:1.75rem;--bs-dialog-color:var(--bs-fg-body);--bs-dialog-bg:var(--bs-bg-body);--bs-dialog-border-color:var(--bs-border-color-translucent);--bs-dialog-border-width:var(--bs-border-width);--bs-dialog-border-radius:var(--bs-radius-7);--bs-dialog-box-shadow:var(--bs-box-shadow-lg);--bs-dialog-transition-duration:.3s;--bs-dialog-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-dialog-backdrop-bg:light-dark(#00000080,#000000a6);--bs-dialog-backdrop-blur:8px;--bs-dialog-header-padding:1rem;--bs-dialog-header-border-color:var(--bs-border-color-translucent);--bs-dialog-header-border-width:var(--bs-border-width);--bs-dialog-footer-padding:1rem;--bs-dialog-footer-border-color:var(--bs-border-color-translucent);--bs-dialog-footer-border-width:var(--bs-border-width);--bs-dialog-footer-gap:.5rem;width:var(--bs-dialog-width);max-width:calc(100% - var(--bs-dialog-margin) * 2);max-height:calc(100% - var(--bs-dialog-margin) * 2);color:var(--bs-dialog-color);visibility:hidden;background-color:var(--bs-dialog-bg);border:var(--bs-dialog-border-width) solid var(--bs-dialog-border-color);border-radius:var(--bs-dialog-border-radius);box-shadow:var(--bs-dialog-box-shadow);background-clip:padding-box;flex-direction:column;margin:auto;padding:0;display:flex;overflow:visible}.dialog:not(.dialog-instant){opacity:0;transition:opacity var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), transform var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), visibility 0s var(--bs-dialog-transition-duration)}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant){transition:none}}.dialog:not(.dialog-instant).dialog-slide-down{transform:translateY(-3rem)}.dialog:not(.dialog-instant).dialog-slide-up{transform:translateY(3rem)}.dialog:not(.dialog-instant)[open]:not(.hiding){visibility:visible;opacity:1;transition:opacity var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), transform var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), visibility 0s;overflow:visible}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant)[open]:not(.hiding){transition:none}}.dialog:not(.dialog-instant)[open]:not(.hiding){transform:none}.dialog:not(.dialog-instant)[open].dialog-static:not(.hiding){transform:scale(1.02)}.dialog:not(.dialog-instant)::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur));transition:background-color var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), backdrop-filter var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), display var(--bs-dialog-transition-duration) allow-discrete, overlay var(--bs-dialog-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant)::backdrop{transition:none}}.dialog:not(.dialog-instant).hiding::backdrop{backdrop-filter:blur();background-color:#0000}.dialog.dialog-instant::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}.dialog[open]:not(.hiding){visibility:visible;opacity:1;overflow:visible;transform:none}.dialog.dialog-nonmodal{z-index:1055;margin-inline:0;position:fixed;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}.dialog.dialog-scrollable[open]{max-height:calc(100% - var(--bs-dialog-margin) * 2)}.dialog.dialog-scrollable[open] .dialog-body{overflow-y:auto}@starting-style{.dialog:not(.dialog-instant)::backdrop{backdrop-filter:blur();background-color:#0000}.dialog.dialog-swap-in:not(.dialog-instant)::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}}.dialog-sm{--bs-dialog-width:280px}.dialog-lg{--bs-dialog-width:800px}.dialog-xl{--bs-dialog-width:1140px}.dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}@media (width<576px){.sm-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<768px){.md-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1024px){.lg-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1280px){.xl-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1536px){.\32 xl-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}.dialog-header{padding:var(--bs-dialog-header-padding);border-block-end:var(--bs-dialog-header-border-width) solid var(--bs-dialog-header-border-color);flex-shrink:0;align-items:center;display:flex}.dialog-header .btn-close{margin-inline-start:auto}.dialog-title{line-height:1.5;font-size:var(--bs-font-size-md);margin-bottom:0}.dialog-body{padding:var(--bs-dialog-padding);flex:auto;position:relative}.dialog-footer{gap:var(--bs-dialog-footer-gap);padding:var(--bs-dialog-footer-padding);border-block-start:var(--bs-dialog-footer-border-width) solid var(--bs-dialog-footer-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;display:flex}.menu{--bs-menu-zindex:1000;--bs-menu-gap:.125rem;--bs-menu-min-width:10rem;--bs-menu-padding-x:.25rem;--bs-menu-padding-y:.25rem;--bs-menu-spacer:.125rem;--bs-menu-font-size:var(--bs-font-size-sm);--bs-menu-color:var(--bs-fg-body);--bs-menu-bg:var(--bs-bg-body);--bs-menu-box-shadow:var(--bs-box-shadow);--bs-menu-divider-bg:var(--bs-border-color-translucent);--bs-menu-divider-margin-y:.125rem;--bs-menu-divider-margin-x:.25rem;--bs-menu-item-color:var(--bs-menu-color,var(--bs-fg-body));--bs-menu-item-hover-color:var(--bs-menu-color,var(--bs-fg-body));--bs-menu-item-hover-bg:var(--bs-bg-1);--bs-menu-item-active-color:var(--bs-primary-contrast);--bs-menu-item-active-bg:var(--bs-primary-bg);--bs-menu-item-disabled-color:var(--bs-fg-3);--bs-menu-item-gap:.5rem;--bs-menu-item-padding-x:.75rem;--bs-menu-item-padding-y:.25rem;--bs-menu-item-border-radius:var(--bs-radius-5);--bs-menu-icon-size:1rem;--bs-menu-description-font-size:var(--bs-font-size-xs);--bs-menu-check-color:currentcolor;--bs-menu-header-color:var(--bs-fg-3);--bs-menu-header-padding-x:.75rem;--bs-menu-header-padding-y:.25rem;--bs-menu-transition-duration:.15s;--bs-menu-transition-timing:cubic-bezier(.22, 1, .36, 1);z-index:var(--bs-menu-zindex);gap:var(--bs-menu-gap);min-width:var(--bs-menu-min-width);max-height:var(--bs-menu-max-height,none);padding:var(--bs-menu-padding-y) var(--bs-menu-padding-x);overflow-y:var(--bs-menu-overflow-y,initial);overscroll-behavior:contain;font-size:var(--bs-menu-font-size);color:var(--bs-menu-color);text-align:start;background-color:var(--bs-menu-bg);border:var(--bs-menu-border-width,var(--bs-border-width)) solid var(--bs-menu-border-color,var(--bs-border-color-translucent));border-radius:var(--bs-menu-border-radius,var(--bs-radius-7));box-shadow:var(--bs-menu-box-shadow);opacity:0;transform-origin:top start;background-clip:padding-box;flex-direction:column;margin:0;list-style-type:"";display:none;position:absolute;transform:scale(.95)}.menu[data-bs-placement^=top]{transform-origin:bottom start}.menu[data-bs-placement=bottom-end]{transform-origin:top end}.menu[data-bs-placement=top-end]{transform-origin:bottom end}.menu[data-bs-placement^=left]{transform-origin:top end}.menu{transition:opacity var(--bs-menu-transition-duration) var(--bs-menu-transition-timing), transform var(--bs-menu-transition-duration) var(--bs-menu-transition-timing), display var(--bs-menu-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.menu{transition:none}}.menu.show{opacity:1;display:flex;transform:none}@starting-style{.menu.show{opacity:0;transform:scale(.95)}}.menu-scrollable{--bs-menu-max-height:80dvh;--bs-menu-overflow-y:auto}.menu-translucent{--bs-menu-item-hover-bg-light:color-mix(in oklch, var(--bs-bg-1) 90%, transparent);--bs-menu-item-hover-bg-dark:color-mix(in oklch, var(--bs-bg-1) 80%, transparent);--bs-menu-item-active-bg-light:color-mix(in oklch, var(--bs-primary-bg) 80%, transparent);--bs-menu-item-active-bg-dark:color-mix(in oklch, var(--bs-primary-bg) 70%, transparent);--bs-menu-item-active-bg:light-dark(var(--bs-menu-item-active-bg-light),var(--bs-menu-item-active-bg-dark));--bs-menu-item-hover-bg:light-dark(var(--bs-menu-item-hover-bg-light),var(--bs-menu-item-hover-bg-dark));background-color:color-mix(in oklch, var(--bs-menu-bg) 80%, transparent);backdrop-filter:blur(5px)saturate(180%)}.menu-divider{height:0;margin:var(--bs-menu-divider-margin-y) var(--bs-menu-divider-margin-x);border-block-start:1px solid var(--bs-menu-divider-bg);opacity:1;overflow:hidden}.menu-item{gap:var(--bs-menu-item-gap);width:100%;padding:var(--bs-menu-item-padding-y) var(--bs-menu-item-padding-x);font-weight:var(--bs-menu-item-font-weight,var(--bs-font-weight-normal));color:var(--bs-theme-fg,var(--bs-menu-item-color));text-align:inherit;white-space:nowrap;cursor:pointer;border-radius:var(--bs-menu-item-border-radius,0);background-color:#0000;border:0;outline:0;align-items:center;text-decoration:none;display:flex}.menu-item:hover,.menu-item:focus{color:var(--bs-theme-fg-emphasis,var(--bs-menu-item-hover-color));background-color:var(--bs-theme-bg-subtle,var(--bs-menu-item-hover-bg))}.menu-item.active,.menu-item:active{color:var(--bs-theme-contrast,var(--bs-menu-item-active-color));background-color:var(--bs-theme-bg,var(--bs-menu-item-active-bg))}.menu-item.active .menu-item-icon,.menu-item:active .menu-item-icon{color:inherit!important}.menu-item.selected{font-weight:600}.menu-item.disabled,.menu-item:disabled{color:var(--bs-menu-item-disabled-color);pointer-events:none;background-color:#0000;background-image:none}.menu-item-icon{width:var(--bs-menu-icon-size);flex-shrink:0;align-self:flex-start;height:auto;margin-top:.125rem}.menu-item-content{flex-direction:column;flex:1;min-width:fit-content;display:flex}.menu-item-description{font-size:var(--bs-menu-description-font-size);font-weight:var(--bs-font-weight-normal);color:color-mix(in oklch, currentcolor 65%, transparent)}.menu-item-check{color:var(--bs-menu-check-color);visibility:hidden;flex-shrink:0;align-self:flex-start;margin-block-start:.125rem;margin-inline-start:auto}.selected>.menu-item-check{visibility:visible}.menu-header{padding:var(--bs-menu-header-padding-y) var(--bs-menu-header-padding-x);font-size:var(--bs-font-size-sm);color:var(--bs-menu-header-color);white-space:nowrap;margin-bottom:0;display:block}.menu-text{padding:var(--bs-menu-item-padding-y) var(--bs-menu-item-padding-x);color:var(--bs-fg-2);display:block}.submenu{position:relative}.submenu>.menu-item{justify-content:space-between;align-items:center;display:flex}.submenu>.menu-item:after{content:"";border:.125em solid;border-width:0 .125em .125em 0;flex-shrink:0;width:.375em;height:.375em;margin-inline-start:auto;display:inline-block;transform:rotate(-45deg)}[dir=rtl] .submenu>.menu-item:after{transform:rotate(135deg)}.submenu>.menu{margin-top:calc(-1 * var(--bs-menu-padding-y));top:0}.submenu:hover>.menu-item,.submenu:focus-within>.menu-item,.submenu.show>.menu-item{color:var(--bs-menu-item-hover-color);background-color:var(--bs-menu-item-hover-bg)}.list-group{--bs-list-group-color:var(--bs-fg-body);--bs-list-group-bg:var(--bs-bg-body);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-radius-5);--bs-list-group-item-padding-x:var(--bs-spacer);--bs-list-group-item-padding-y:var(--bs-spacer-2);--bs-list-group-action-color:var(--bs-fg-2);--bs-list-group-action-hover-color:var(--bs-fg-1);--bs-list-group-action-hover-bg:var(--bs-bg-1);--bs-list-group-action-active-color:var(--bs-fg-body);--bs-list-group-action-active-bg:var(--bs-bg-2);--bs-list-group-disabled-color:var(--bs-fg-3);--bs-list-group-disabled-bg:var(--bs-bg-body);--bs-list-group-active-color:var(--bs-primary-contrast);--bs-list-group-active-bg:var(--bs-primary-bg);--bs-list-group-active-border-color:var(--bs-primary-bg);border-radius:var(--bs-list-group-border-radius);flex-direction:column;margin-bottom:0;padding-inline-start:0;display:flex}.list-group-numbered{counter-reset:section;list-style-type:none}.list-group-numbered>.list-group-item:before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item{padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-theme-fg,var(--bs-list-group-color));background-color:var(--bs-theme-bg-subtle,var(--bs-list-group-bg));border:var(--bs-list-group-border-width) solid var(--bs-theme-border,var(--bs-list-group-border-color));display:block;position:relative}.list-group-item:first-child{border-start-start-radius:inherit;border-start-end-radius:inherit}.list-group-item:last-child{border-end-end-radius:inherit;border-end-start-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-block-start-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-block-start-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-theme-fg,var(--bs-list-group-action-color));text-align:inherit;text-decoration:none}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--bs-theme-fg-emphasis,var(--bs-list-group-action-hover-color));background-color:var(--bs-theme-bg-muted,var(--bs-list-group-action-hover-bg));text-decoration:none}.list-group-item-action:not(.active):active{color:var(--bs-theme-fg-emphasis,var(--bs-list-group-action-active-color));background-color:var(--bs-theme-bg-muted,var(--bs-list-group-action-active-bg))}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}@container (width>=576px){.sm\:list-group-horizontal{flex-direction:row}.sm\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.sm\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.sm\:list-group-horizontal>.list-group-item.active{margin-top:0}.sm\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.sm\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}@container (width>=768px){.md\:list-group-horizontal{flex-direction:row}.md\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.md\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.md\:list-group-horizontal>.list-group-item.active{margin-top:0}.md\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.md\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}@container (width>=1024px){.lg\:list-group-horizontal{flex-direction:row}.lg\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.lg\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.lg\:list-group-horizontal>.list-group-item.active{margin-top:0}.lg\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.lg\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}@container (width>=1280px){.xl\:list-group-horizontal{flex-direction:row}.xl\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.xl\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.xl\:list-group-horizontal>.list-group-item.active{margin-top:0}.xl\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.xl\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}@container (width>=1536px){.\32 xl\:list-group-horizontal{flex-direction:row}.\32 xl\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.\32 xl\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.\32 xl\:list-group-horizontal>.list-group-item.active{margin-top:0}.\32 xl\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.\32 xl\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-block-end-width:0}.nav{--bs-nav-gap:.125rem;--bs-nav-link-gap:.5rem;--bs-nav-link-align:center;--bs-nav-link-justify:center;--bs-nav-link-padding-x:.75rem;--bs-nav-link-padding-y:.375rem;--bs-nav-link-color:var(--bs-fg-2);--bs-nav-link-hover-color:var(--bs-fg-1);--bs-nav-link-hover-bg:var(--bs-bg-1);--bs-nav-link-active-color:var(--bs-fg-body);--bs-nav-link-active-bg:var(--bs-bg-2);--bs-nav-link-disabled-color:var(--bs-fg-4);--bs-nav-link-border-width:var(--bs-border-width);--bs-nav-link-transition-property:color, background-color, border-color;--bs-nav-link-transition-timing:.15s ease-in-out;--bs-nav-link-transition:var(--bs-nav-link-transition-property) var(--bs-nav-link-transition-timing);gap:var(--bs-nav-gap);flex-wrap:wrap;margin-bottom:0;padding-inline-start:0;list-style-type:"";display:flex}.nav-item{display:flex}.nav-link{gap:var(--bs-nav-link-gap);align-items:var(--bs-nav-link-align);justify-content:var(--bs-nav-link-justify);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);white-space:nowrap;border:var(--bs-nav-link-border-width) solid transparent;border-radius:var(--bs-radius-5);transition:var(--bs-nav-link-transition);background:0 0;text-decoration:none;display:flex}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color);background-color:var(--bs-nav-link-hover-bg)}.nav-link:focus-visible{--bs-focus-ring-offset:1px;color:var(--bs-nav-link-hover-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.nav-link.active,.nav-link:active{color:var(--bs-nav-link-active-color);background-color:var(--bs-nav-link-active-bg)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-radius-5);--bs-nav-tabs-link-hover-border-color:var(--bs-border-subtle);--bs-nav-tabs-link-active-color:var(--bs-fg-color);--bs-nav-tabs-link-active-bg:var(--bs-bg-body);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-bg-body);box-shadow:inset 0 calc(-1 * var(--bs-nav-tabs-border-width)) 0 var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{border:var(--bs-nav-tabs-border-width) solid transparent;border-bottom-color:var(--bs-nav-tabs-border-color);border-end-end-radius:0;border-end-start-radius:0}.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color);border-bottom-color:var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);border-bottom-color:var(--bs-nav-tabs-link-active-bg)}.nav-tabs .menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-start-start-radius:0;border-start-end-radius:0}.nav-pills{--bs-nav-pills-bg:var(--bs-bg-1);--bs-nav-pills-padding:.25rem;--bs-nav-pills-border-radius:var(--bs-radius-9);--bs-nav-pills-link-active-color:var(--bs-primary-contrast);--bs-nav-pills-link-active-bg:var(--bs-primary-bg);--bs-nav-pills-link-border-radius:var(--bs-radius-9);padding:var(--bs-nav-pills-padding);background-color:var(--bs-nav-pills-bg);border-radius:var(--bs-nav-pills-border-radius);display:inline-flex}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-link-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg);background-image:var(--bs-gradient)}.nav-pills-vertical{flex-direction:column;align-items:stretch}.nav-pills-vertical .nav-item,.nav-pills-vertical .nav-link{width:100%}.nav-underline{--bs-nav-gap:1rem;--bs-nav-link-active-bg:transparent;--bs-nav-underline-border-width:.125rem;--bs-nav-underline-link-active-color:var(--bs-fg-color)}.nav-underline .nav-link{border:0;border-block-end:var(--bs-nav-underline-border-width) solid transparent;border-radius:0;padding-inline:0}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-block-end-color:currentColor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{color:var(--bs-nav-underline-link-active-color);border-block-end-color:currentColor;font-weight:700}.nav-fill>.nav-link,.nav-fill .nav-item{text-align:center;flex:auto}.nav-justified>.nav-link,.nav-justified .nav-item{text-align:center;flex-grow:1;flex-basis:0}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-overflow{flex-wrap:nowrap;min-width:0}.nav-pills.nav-overflow{display:flex}.navbar-nav.nav-overflow{flex:1 1 0}.nav-overflow-item{flex-shrink:0;margin-inline-start:auto}.nav-overflow [data-bs-nav-overflow=true]{display:none}.nav-overflow-keep{flex-shrink:0}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:var(--bs-fg-2);--bs-navbar-hover-color:var(--bs-fg-1);--bs-navbar-disabled-color:var(--bs-fg-3);--bs-navbar-active-color:var(--bs-fg-body);--bs-navbar-brand-padding-y:.75rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:var(--bs-font-size-md);--bs-navbar-brand-font-weight:var(--bs-font-weight-medium);--bs-navbar-brand-color:var(--bs-fg-body);--bs-navbar-brand-hover-color:var(--bs-fg-body);--bs-navbar-nav-link-padding-x:.75rem;--bs-navbar-toggler-width:2rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:var(--bs-font-size-lg);--bs-navbar-toggler-border-color:color-mix(in oklch, var(--bs-fg-body) 15%, transparent);--bs-navbar-toggler-border-radius:var(--bs-radius-5);--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;--bs-navbar-toggler-icon-size:1.25rem;--bs-navbar-toggler-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e");padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);color:var(--bs-navbar-color,var(--bs-fg-body));background-color:var(--bs-navbar-bg,var(--bs-bg-body));flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex;position:relative;container-type:inline-size}.navbar>.\32 xl\:container,.navbar>.xl\:container,.navbar>.lg\:container,.navbar>.md\:container,.navbar>.sm\:container,.navbar>.container,.navbar>.container-fluid{flex-wrap:inherit;justify-content:space-between;align-items:center;display:flex}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);font-size:var(--bs-navbar-brand-font-size);font-weight:var(--bs-navbar-brand-font-weight);color:var(--bs-navbar-brand-color);white-space:nowrap;margin-inline-end:var(--bs-navbar-brand-margin-end);text-decoration:none}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-gap:.25rem;--bs-nav-link-gap:.5rem;--bs-nav-link-padding-x:.5rem;--bs-nav-link-padding-y:.375rem;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-border-width:var(--bs-border-width);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-hover-bg:transparent;--bs-nav-link-active-color:var(--bs-navbar-active-color);--bs-nav-link-active-bg:transparent;--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);gap:var(--bs-nav-gap);flex-direction:column;margin-bottom:0;padding-inline-start:0;list-style-type:"";display:flex}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color);border:var(--bs-nav-link-border-width) solid var(--bs-nav-link-border-color,transparent)}.navbar-text{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-toggler{--bs-btn-bg:transparent;--bs-btn-hover-bg:var(--bs-bg-2)}.navbar-toggler-icon{width:var(--bs-navbar-toggler-icon-size);height:var(--bs-navbar-toggler-icon-size);mask-image:var(--bs-navbar-toggler-icon);background-color:currentColor;display:inline-block;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand .navbar-toggler{display:none!important}.navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.navbar-expand [class*=drawer] .drawer-header{display:none!important}.navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}@container (width>=576px){.sm\:navbar-expand>.container,.sm\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.sm\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.sm\:navbar-expand .navbar-toggler{display:none!important}.sm\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.sm\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.sm\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=768px){.md\:navbar-expand>.container,.md\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.md\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.md\:navbar-expand .navbar-toggler{display:none!important}.md\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.md\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.md\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1024px){.lg\:navbar-expand>.container,.lg\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.lg\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.lg\:navbar-expand .navbar-toggler{display:none!important}.lg\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.lg\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.lg\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1280px){.xl\:navbar-expand>.container,.xl\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.xl\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.xl\:navbar-expand .navbar-toggler{display:none!important}.xl\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.xl\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.xl\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1536px){.\32 xl\:navbar-expand>.container,.\32 xl\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.\32 xl\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.\32 xl\:navbar-expand .navbar-toggler{display:none!important}.\32 xl\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.\32 xl\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.\32 xl\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}.navbar [class*=drawer]:not([open],.hiding){transition:none!important}@media (prefers-reduced-motion:reduce){.navbar [class*=drawer]:not([open],.hiding){transition:none}}.navbar-translucent{background-color:#0000;position:relative}.navbar-translucent:before{z-index:-1;content:"";background-color:color-mix(in oklch, var(--bs-navbar-bg,var(--bs-bg-body)) 80%, transparent);backdrop-filter:blur(5px)saturate(180%);background-image:none;position:absolute;inset:0}.navbar[data-bs-theme=dark]{--bs-navbar-color:color-mix(in oklch, var(--bs-white) .55, transparent);--bs-navbar-hover-color:color-mix(in oklch, var(--bs-white) .75, transparent);--bs-navbar-disabled-color:color-mix(in oklch, var(--bs-white) .25, transparent);--bs-navbar-active-color:var(--bs-white);--bs-navbar-brand-color:var(--bs-white);--bs-navbar-brand-hover-color:var(--bs-white);--bs-navbar-toggler-border-color:color-mix(in oklch, var(--bs-white) .1, transparent)}@media (width<576px){.sm\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.sm\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.sm\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.sm\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.sm\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.sm\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.sm\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<576px) and (prefers-reduced-motion:reduce){.sm\:drawer:not(.drawer-instant){transition:none}}@media (width<576px){.sm\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .sm\:drawer:not(.drawer-instant):where(.drawer-start),.sm\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .sm\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant):where(.drawer-bottom),.sm\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<576px) and (prefers-reduced-motion:reduce){.sm\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<576px){.sm\:drawer[open]{visibility:visible;transform:none}}@media (width>=576px){.sm\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=576px) and (prefers-reduced-motion:reduce){.sm\:drawer{transition:none}}@media (width>=576px){.sm\:drawer .drawer-header{display:none}.sm\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<768px){.md\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.md\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.md\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.md\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.md\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.md\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.md\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<768px) and (prefers-reduced-motion:reduce){.md\:drawer:not(.drawer-instant){transition:none}}@media (width<768px){.md\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .md\:drawer:not(.drawer-instant):where(.drawer-start),.md\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .md\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant):where(.drawer-bottom),.md\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<768px) and (prefers-reduced-motion:reduce){.md\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<768px){.md\:drawer[open]{visibility:visible;transform:none}}@media (width>=768px){.md\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=768px) and (prefers-reduced-motion:reduce){.md\:drawer{transition:none}}@media (width>=768px){.md\:drawer .drawer-header{display:none}.md\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1024px){.lg\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.lg\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.lg\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.lg\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.lg\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.lg\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.lg\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1024px) and (prefers-reduced-motion:reduce){.lg\:drawer:not(.drawer-instant){transition:none}}@media (width<1024px){.lg\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .lg\:drawer:not(.drawer-instant):where(.drawer-start),.lg\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .lg\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant):where(.drawer-bottom),.lg\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1024px) and (prefers-reduced-motion:reduce){.lg\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1024px){.lg\:drawer[open]{visibility:visible;transform:none}}@media (width>=1024px){.lg\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1024px) and (prefers-reduced-motion:reduce){.lg\:drawer{transition:none}}@media (width>=1024px){.lg\:drawer .drawer-header{display:none}.lg\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1280px){.xl\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.xl\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.xl\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.xl\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.xl\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.xl\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.xl\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1280px) and (prefers-reduced-motion:reduce){.xl\:drawer:not(.drawer-instant){transition:none}}@media (width<1280px){.xl\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .xl\:drawer:not(.drawer-instant):where(.drawer-start),.xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant):where(.drawer-bottom),.xl\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1280px) and (prefers-reduced-motion:reduce){.xl\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1280px){.xl\:drawer[open]{visibility:visible;transform:none}}@media (width>=1280px){.xl\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1280px) and (prefers-reduced-motion:reduce){.xl\:drawer{transition:none}}@media (width>=1280px){.xl\:drawer .drawer-header{display:none}.xl\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1536px){.\32 xl\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.\32 xl\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.\32 xl\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.\32 xl\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.\32 xl\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.\32 xl\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.\32 xl\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer:not(.drawer-instant){transition:none}}@media (width<1536px){.\32 xl\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .\32 xl\:drawer:not(.drawer-instant):where(.drawer-start),.\32 xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .\32 xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant):where(.drawer-bottom),.\32 xl\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1536px){.\32 xl\:drawer[open]{visibility:visible;transform:none}}@media (width>=1536px){.\32 xl\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer{transition:none}}@media (width>=1536px){.\32 xl\:drawer .drawer-header{display:none}.\32 xl\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}.drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}@media (prefers-reduced-motion:reduce){.drawer:not(.drawer-instant){transition:none}}.drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start),.drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.drawer:not(.drawer-instant):where(.drawer-bottom),.drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s}@media (prefers-reduced-motion:reduce){.drawer:not(.drawer-instant)[open]{transition:none}}.drawer:not(.drawer-instant)[open]{transform:none}.drawer[open]{visibility:visible;transform:none}.sm\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.sm\:drawer::backdrop{transition:none}}.md\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.md\:drawer::backdrop{transition:none}}.lg\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.lg\:drawer::backdrop{transition:none}}.xl\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.xl\:drawer::backdrop{transition:none}}.\32 xl\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.\32 xl\:drawer::backdrop{transition:none}}.drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.drawer::backdrop{transition:none}}@starting-style{.sm\:drawer::backdrop,.md\:drawer::backdrop,.lg\:drawer::backdrop,.xl\:drawer::backdrop,.\32 xl\:drawer::backdrop,.drawer::backdrop{backdrop-filter:blur();background-color:#0000}}.drawer-static{transform:scale(1.02)}.drawer-translucent{background-color:color-mix(in oklch, var(--bs-drawer-bg) 80%, transparent);backdrop-filter:blur(5px)saturate(180%)}.drawer-sheet{width:100vw;margin-inline:auto;margin-bottom:calc(-1 * var(--bs-drawer-border-width));border-end-end-radius:0;border-end-start-radius:0;bottom:0;left:0;right:0}@media (width>=1024px){.drawer-sheet{max-width:var(--bs-drawer-sheet-width,760px)}}.drawer-header{padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);flex-shrink:0;align-items:center;display:flex}.drawer-header .btn-close{margin-block:calc(-.5 * var(--bs-drawer-padding-y));margin-inline-start:auto}.drawer-title{line-height:var(--bs-drawer-title-line-height);margin-bottom:0}.drawer-body{gap:var(--bs-drawer-padding-y);padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.drawer-footer{padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);border-block-start:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.drawer-fit-content{inset-block-end:auto}.pagination{--bs-pagination-min-height:var(--bs-btn-input-min-height);--bs-pagination-padding-x:var(--bs-btn-input-padding-x);--bs-pagination-padding-y:var(--bs-btn-input-padding-y);--bs-pagination-font-size:var(--bs-btn-input-font-size);--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-bg-body);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-btn-input-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-bg-1);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-bg-2);--bs-pagination-active-color:var(--bs-primary-contrast);--bs-pagination-active-bg:var(--bs-primary-bg);--bs-pagination-active-border-color:var(--bs-primary-bg);--bs-pagination-disabled-color:var(--bs-fg-3);--bs-pagination-disabled-bg:var(--bs-bg-2);--bs-pagination-disabled-border-color:var(--bs-border-color);padding-inline-start:0;list-style-type:"";display:flex}.page-link{min-height:var(--bs-pagination-min-height);padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);justify-content:center;align-items:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus-visible{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);background-image:var(--bs-gradient);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-inline-start:calc(-1 * var(--bs-pagination-border-width))}.page-item:first-child .page-link{border-start-start-radius:var(--bs-pagination-border-radius);border-end-start-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-start-end-radius:var(--bs-pagination-border-radius);border-end-end-radius:var(--bs-pagination-border-radius)}.pagination-sm{--bs-pagination-min-height:var(--bs-btn-input-sm-min-height);--bs-pagination-padding-y:var(--bs-btn-input-sm-padding-y);--bs-pagination-padding-x:var(--bs-btn-input-sm-padding-x);--bs-pagination-font-size:var(--bs-btn-input-sm-font-size);--bs-pagination-border-radius:var(--bs-btn-input-sm-border-radius)}.pagination-lg{--bs-pagination-min-height:var(--bs-btn-input-lg-min-height);--bs-pagination-padding-y:var(--bs-btn-input-lg-padding-y);--bs-pagination-padding-x:var(--bs-btn-input-lg-padding-x);--bs-pagination-font-size:var(--bs-btn-input-lg-font-size);--bs-pagination-border-radius:var(--bs-btn-input-lg-border-radius)}.placeholder{--bs-placeholder-opacity-max:.5;--bs-placeholder-opacity-min:.2;vertical-align:middle;cursor:wait;min-height:1em;opacity:var(--bs-placeholder-opacity-max);background-color:currentColor;display:inline-block}.placeholder.btn:before{content:"";display:inline-block}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:2s ease-in-out infinite placeholder-glow}@keyframes placeholder-glow{50%{opacity:var(--bs-placeholder-opacity-min)}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgb(0, 0, 0, calc(1 - var(--bs-placeholder-opacity-min))) 75%, #000 95%);animation:2s linear infinite placeholder-wave;mask-size:200% 100%}@keyframes placeholder-wave{to{mask-position:-200% 0}}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:280px;--bs-popover-font-size:var(--bs-font-size-sm);--bs-popover-bg:var(--bs-bg-body);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-radius-7);--bs-popover-inner-border-radius:calc(var(--bs-radius-7) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:var(--bs-spacer);--bs-popover-header-padding-y:var(--bs-spacer-3);--bs-popover-header-font-size:var(--bs-font-size-sm);--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-bg-1);--bs-popover-body-padding-x:var(--bs-spacer);--bs-popover-body-padding-y:var(--bs-spacer-3);--bs-popover-body-color:var(--bs-fg-body);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);max-width:var(--bs-popover-max-width);font-family:var(--bs-body-font-family);font-style:normal;font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius);box-shadow:var(--bs-popover-box-shadow);background-clip:padding-box;text-decoration:none;display:block}.popover .popover-arrow{width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height);display:block}.popover .popover-arrow:before,.popover .popover-arrow:after{content:"";border:0 solid #0000;display:block;position:absolute}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:before{border-block-start-color:var(--bs-popover-arrow-border);bottom:0}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-block-start-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:before{border-inline-end-color:var(--bs-popover-arrow-border);left:0}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-inline-end-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:before{border-block-end-color:var(--bs-popover-arrow-border);top:0}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-block-end-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow:has(+.popover-header):after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:has(+.popover-header):after{border-block-end-color:var(--bs-popover-header-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-bs-placement^=bottom] .popover-header:before{width:var(--bs-popover-arrow-width);content:"";border-block-end:var(--bs-popover-border-width) solid var(--bs-popover-header-bg);margin-inline-start:calc(-.5 * var(--bs-popover-arrow-width));display:block;position:absolute;top:0;left:50%}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:before{border-inline-start-color:var(--bs-popover-arrow-border);right:0}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-inline-start-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-block-end:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-start-start-radius:var(--bs-popover-inner-border-radius);border-start-end-radius:var(--bs-popover-inner-border-radius);margin-bottom:0}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}@keyframes progress-bar-stripes{0%{background-position-x:var(--bs-progress-height)}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:var(--bs-font-size-sm);--bs-progress-bg:var(--bs-bg-2);--bs-progress-border-radius:var(--bs-radius-5);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:var(--bs-white);--bs-progress-bar-bg:var(--bs-primary-bg);--bs-progress-bar-transition:width .6s ease;--bs-progress-bar-animation:progress-bar-stripes 1s linear infinite;height:var(--bs-progress-height);font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius);box-shadow:var(--bs-progress-box-shadow);display:flex;overflow:hidden}.progress-bar{color:var(--bs-theme-contrast,var(--bs-progress-bar-color));text-align:center;white-space:nowrap;background-color:var(--bs-theme-bg,var(--bs-progress-bar-bg));transition:var(--bs-progress-bar-transition);flex-direction:column;justify-content:center;display:flex;overflow:hidden}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:var(--bs-progress-bar-animation)}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.spinner-grow,.spinner-border{width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);border-radius:50%;flex-shrink:0;display:inline-block}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-inline-end-color:#0000}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-grow;opacity:0;background-color:currentColor}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.stepper{--bs-stepper-size:2rem;--bs-stepper-gap:1rem;--bs-stepper-font-size:var(--bs-font-size-sm);--bs-stepper-text-gap:.5rem;--bs-stepper-track-size:.125rem;--bs-stepper-bg:var(--bs-bg-2);--bs-stepper-active-color:var(--bs-primary-contrast);--bs-stepper-active-bg:var(--bs-primary-bg);gap:var(--bs-stepper-gap);counter-reset:stepper;grid-auto-rows:1fr;grid-auto-flow:row;padding-inline-start:0;list-style-type:"";display:grid}.stepper-item{grid-template-rows:auto;grid-template-columns:var(--bs-stepper-size) auto;gap:var(--bs-stepper-text-gap);align-items:var(--bs-stepper-align-items,center);text-decoration:none;display:grid;position:relative}.stepper-item:before{z-index:1;width:var(--bs-stepper-size);height:var(--bs-stepper-size);font-size:var(--bs-stepper-font-size);text-align:center;content:counter(stepper);counter-increment:stepper;background-color:var(--bs-stepper-bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:.5rem;font-weight:600;line-height:1;display:flex;position:relative}.stepper-item:after{width:var(--bs-stepper-track-size);height:calc(100% + var(--bs-stepper-gap));content:"";background-color:var(--bs-stepper-bg);position:absolute;inset-block:50% 100%;inset-inline-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5)}.stepper-item:last-child:after{display:none}.stepper-item.active:before,.stepper-item.active:after{color:var(--bs-theme-contrast,var(--bs-stepper-active-color));background-color:var(--bs-theme-bg,var(--bs-stepper-active-bg))}.stepper-item.active:not(:has(+.stepper-item.active)):after{background-color:var(--bs-stepper-bg)}.stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.stepper-horizontal .stepper-item:last-child:after{right:100%}@container (width>=576px){.sm\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.sm\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.sm\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.sm\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=768px){.md\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.md\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.md\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.md\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1024px){.lg\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.lg\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.lg\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.lg\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1280px){.xl\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.xl\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.xl\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.xl\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1536px){.\32 xl\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.\32 xl\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.\32 xl\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.\32 xl\:stepper-horizontal .stepper-item:last-child:after{right:100%}}.stepper-overflow{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;overflow-x:auto;container-type:inline-size}.stepper-overflow>.stepper{width:max-content;min-width:100%}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:1rem;--bs-toast-padding-y:.75rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:var(--bs-font-size-sm);--bs-toast-bg:var(--bs-bg-body);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-fg-3);--bs-toast-header-bg:var(--bs-bg-1);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color,var(--bs-fg-body));pointer-events:auto;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width) solid var(--bs-theme-border,var(--bs-toast-border-color));box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius,var(--bs-radius-7));background-clip:padding-box;flex-direction:column;display:flex;overflow:hidden}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;z-index:var(--bs-toast-zindex);pointer-events:none;width:max-content;max-width:100%;position:absolute}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-theme-fg-emphasis,var(--bs-toast-header-color));background-color:var(--bs-theme-bg-subtle,var(--bs-toast-header-bg));border-block-end:var(--bs-toast-border-width,var(--bs-border-width)) solid var(--bs-theme-border,var(--bs-toast-header-border-color,var(--bs-border-color-translucent)));align-items:center;display:flex}.toast-header .btn-close{color:inherit;margin-inline-start:calc(.5 * var(--bs-toast-padding-x));margin-inline-end:calc(-.25 * var(--bs-toast-padding-x))}.toast-translucent{backdrop-filter:blur(5px)saturate(180%)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:var(--bs-spacer-3);--bs-tooltip-padding-y:calc(var(--bs-spacer) * .375);--bs-tooltip-font-size:var(--bs-font-size-sm);--bs-tooltip-color:var(--bs-bg-body);--bs-tooltip-bg:var(--bs-fg-body);--bs-tooltip-border-radius:var(--bs-radius-5);--bs-tooltip-opacity:.95;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);font-family:var(--bs-body-font-family);font-style:normal;font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0;text-decoration:none;display:block}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height);display:block}.tooltip .tooltip-arrow:before{content:"";border-style:solid;border-color:#0000;position:absolute}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow:before{border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-block-start-color:var(--bs-tooltip-bg);top:-1px}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow:before{border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-inline-end-color:var(--bs-tooltip-bg);right:-1px}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow:before{border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-block-end-color:var(--bs-tooltip-bg);bottom:-1px}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow:before{border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-inline-start-color:var(--bs-tooltip-bg);left:-1px}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}}@layer custom;@layer helpers{.focus-ring:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-theme-focus-ring,var(--bs-focus-ring-color))}.icon-link{-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity,.5));text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity,.5));text-underline-offset:.25em;backface-visibility:hidden;align-items:center;gap:.375rem;display:inline-flex}.icon-link>.bi{fill:currentColor;flex-shrink:0;width:1em;height:1em;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em, 0, 0))}.fixed-top{z-index:1030;position:fixed;inset:0 0 auto}.fixed-bottom{z-index:1030;position:fixed;inset:auto 0 0}.sticky-top{z-index:1020;position:sticky;top:0}.sticky-bottom{z-index:1020;position:sticky;bottom:0}@media (width>=576px){.sm\:sticky-top{z-index:1020;position:sticky;top:0}.sm\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=768px){.md\:sticky-top{z-index:1020;position:sticky;top:0}.md\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1024px){.lg\:sticky-top{z-index:1020;position:sticky;top:0}.lg\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1280px){.xl\:sticky-top{z-index:1020;position:sticky;top:0}.xl\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1536px){.\32 xl\:sticky-top{z-index:1020;position:sticky;top:0}.\32 xl\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}.stack-container{container-type:inline-size}[class*=hstack],[class*=vstack]{flex:var(--bs-stack-flex,1 1 auto);flex-direction:var(--bs-stack-direction,row);align-items:var(--bs-stack-align-items,center);align-self:var(--bs-stack-align-self,stretch);display:flex}.vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}@container (width>=576px){.sm\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.sm\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=768px){.md\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.md\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1024px){.lg\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.lg\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1280px){.xl\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.xl\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1536px){.\32 xl\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.\32 xl\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}.theme-primary{--bs-theme-base:var(--bs-primary-base);--bs-theme-fg:var(--bs-primary-fg);--bs-theme-fg-emphasis:var(--bs-primary-fg-emphasis);--bs-theme-bg:var(--bs-primary-bg);--bs-theme-bg-subtle:var(--bs-primary-bg-subtle);--bs-theme-bg-muted:var(--bs-primary-bg-muted);--bs-theme-border:var(--bs-primary-border);--bs-theme-focus-ring:var(--bs-primary-focus-ring);--bs-theme-contrast:var(--bs-primary-contrast)}.theme-accent{--bs-theme-base:var(--bs-accent-base);--bs-theme-fg:var(--bs-accent-fg);--bs-theme-fg-emphasis:var(--bs-accent-fg-emphasis);--bs-theme-bg:var(--bs-accent-bg);--bs-theme-bg-subtle:var(--bs-accent-bg-subtle);--bs-theme-bg-muted:var(--bs-accent-bg-muted);--bs-theme-border:var(--bs-accent-border);--bs-theme-focus-ring:var(--bs-accent-focus-ring);--bs-theme-contrast:var(--bs-accent-contrast)}.theme-success{--bs-theme-base:var(--bs-success-base);--bs-theme-fg:var(--bs-success-fg);--bs-theme-fg-emphasis:var(--bs-success-fg-emphasis);--bs-theme-bg:var(--bs-success-bg);--bs-theme-bg-subtle:var(--bs-success-bg-subtle);--bs-theme-bg-muted:var(--bs-success-bg-muted);--bs-theme-border:var(--bs-success-border);--bs-theme-focus-ring:var(--bs-success-focus-ring);--bs-theme-contrast:var(--bs-success-contrast)}.theme-danger{--bs-theme-base:var(--bs-danger-base);--bs-theme-fg:var(--bs-danger-fg);--bs-theme-fg-emphasis:var(--bs-danger-fg-emphasis);--bs-theme-bg:var(--bs-danger-bg);--bs-theme-bg-subtle:var(--bs-danger-bg-subtle);--bs-theme-bg-muted:var(--bs-danger-bg-muted);--bs-theme-border:var(--bs-danger-border);--bs-theme-focus-ring:var(--bs-danger-focus-ring);--bs-theme-contrast:var(--bs-danger-contrast)}.theme-warning{--bs-theme-base:var(--bs-warning-base);--bs-theme-fg:var(--bs-warning-fg);--bs-theme-fg-emphasis:var(--bs-warning-fg-emphasis);--bs-theme-bg:var(--bs-warning-bg);--bs-theme-bg-subtle:var(--bs-warning-bg-subtle);--bs-theme-bg-muted:var(--bs-warning-bg-muted);--bs-theme-border:var(--bs-warning-border);--bs-theme-focus-ring:var(--bs-warning-focus-ring);--bs-theme-contrast:var(--bs-warning-contrast)}.theme-info{--bs-theme-base:var(--bs-info-base);--bs-theme-fg:var(--bs-info-fg);--bs-theme-fg-emphasis:var(--bs-info-fg-emphasis);--bs-theme-bg:var(--bs-info-bg);--bs-theme-bg-subtle:var(--bs-info-bg-subtle);--bs-theme-bg-muted:var(--bs-info-bg-muted);--bs-theme-border:var(--bs-info-border);--bs-theme-focus-ring:var(--bs-info-focus-ring);--bs-theme-contrast:var(--bs-info-contrast)}.theme-inverse{--bs-theme-base:var(--bs-inverse-base);--bs-theme-fg:var(--bs-inverse-fg);--bs-theme-fg-emphasis:var(--bs-inverse-fg-emphasis);--bs-theme-bg:var(--bs-inverse-bg);--bs-theme-bg-subtle:var(--bs-inverse-bg-subtle);--bs-theme-bg-muted:var(--bs-inverse-bg-muted);--bs-theme-border:var(--bs-inverse-border);--bs-theme-focus-ring:var(--bs-inverse-focus-ring);--bs-theme-contrast:var(--bs-inverse-contrast)}.theme-secondary{--bs-theme-base:var(--bs-secondary-base);--bs-theme-fg:var(--bs-secondary-fg);--bs-theme-fg-emphasis:var(--bs-secondary-fg-emphasis);--bs-theme-bg:var(--bs-secondary-bg);--bs-theme-bg-subtle:var(--bs-secondary-bg-subtle);--bs-theme-bg-muted:var(--bs-secondary-bg-muted);--bs-theme-border:var(--bs-secondary-border);--bs-theme-focus-ring:var(--bs-secondary-focus-ring);--bs-theme-contrast:var(--bs-secondary-contrast)}.visually-hidden,.visually-hidden-focusable:not(:focus,:focus-within){clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus,:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus,:focus-within) *{overflow:hidden!important}.stretched-link:after{z-index:1;content:"";position:absolute;inset:0}.text-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vr{width:var(--bs-vr-border-width,var(--bs-border-width));background-color:var(--bs-border-color);align-self:stretch;min-height:1em;display:inline-block}}@layer utilities{.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-top}[class*=ratio-]{aspect-ratio:var(--bs-ratio)}.ratio-auto{--bs-ratio:auto}.ratio-1x1{--bs-ratio:1 / 1}.ratio-4x3{--bs-ratio:4 / 3}.ratio-16x9{--bs-ratio:16 / 9}.ratio-21x9{--bs-ratio:21 / 9}.float-start{float:inline-start}.float-end{float:inline-end}.float-none{float:none}.object-fit-contain{object-fit:contain}.object-fit-cover{object-fit:cover}.object-fit-fill{object-fit:fill}.object-fit-scale{object-fit:scale-down}.object-fit-none{object-fit:none}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-y-scroll{overflow-y:scroll}.contains-inline{container-type:inline-size}.contains-size{container-type:size}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-contents{display:contents}.d-flow-root{display:flow-root}.d-none{display:none}.shadow{box-shadow:var(--bs-box-shadow)}.shadow-xs{box-shadow:var(--bs-box-shadow-xs)}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)}.shadow-none{box-shadow:none}.position-static{position:static}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.top-0{top:0}.top-50{top:50%}.top-100{top:100%}.bottom-0{bottom:0}.bottom-50{bottom:50%}.bottom-100{bottom:100%}.start-0{inset-inline-start:0}.start-50{inset-inline-start:50%}.start-100{inset-inline-start:100%}.end-0{inset-inline-end:0}.end-50{inset-inline-end:50%}.end-100{inset-inline-end:100%}.translate-middle{transform:translate(-50%,-50%)}.translate-middle-x{transform:translate(-50%)}.translate-middle-y{transform:translateY(-50%)}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-0{border:0}.border-top{border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-top-0{border-block-start:0}.border-end{border-inline-end:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-end-0{border-inline-end:0}.border-bottom{border-block-end:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-bottom-0{border-block-end:0}.border-start{border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-start-0{border-inline-start:0}.border-y{border-block:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-y-0{border-block:0}.border-x{border-inline:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-x-0{border-inline:0}.border-primary{--bs-border-color:var(--bs-primary-bg);border-color:var(--bs-border-color)}.border-accent{--bs-border-color:var(--bs-accent-bg);border-color:var(--bs-border-color)}.border-success{--bs-border-color:var(--bs-success-bg);border-color:var(--bs-border-color)}.border-danger{--bs-border-color:var(--bs-danger-bg);border-color:var(--bs-border-color)}.border-warning{--bs-border-color:var(--bs-warning-bg);border-color:var(--bs-border-color)}.border-info{--bs-border-color:var(--bs-info-bg);border-color:var(--bs-border-color)}.border-inverse{--bs-border-color:var(--bs-inverse-bg);border-color:var(--bs-border-color)}.border-secondary{--bs-border-color:var(--bs-secondary-bg);border-color:var(--bs-border-color)}.border-bg{--bs-border-color:var(--bs-border-bg);border-color:var(--bs-border-color)}.border-body{--bs-border-color:var(--bs-border-body);border-color:var(--bs-border-color)}.border-muted{--bs-border-color:var(--bs-border-muted);border-color:var(--bs-border-color)}.border-subtle{--bs-border-color:var(--bs-border-subtle);border-color:var(--bs-border-color)}.border-emphasized{--bs-border-color:var(--bs-border-emphasized);border-color:var(--bs-border-color)}.border-white{--bs-border-color:var(--bs-border-white);border-color:var(--bs-border-color)}.border-black{--bs-border-color:var(--bs-border-black);border-color:var(--bs-border-color)}.border-subtle-primary{--bs-border-color:var(--bs-primary-border);border-color:var(--bs-border-color)}.border-subtle-accent{--bs-border-color:var(--bs-accent-border);border-color:var(--bs-border-color)}.border-subtle-success{--bs-border-color:var(--bs-success-border);border-color:var(--bs-border-color)}.border-subtle-danger{--bs-border-color:var(--bs-danger-border);border-color:var(--bs-border-color)}.border-subtle-warning{--bs-border-color:var(--bs-warning-border);border-color:var(--bs-border-color)}.border-subtle-info{--bs-border-color:var(--bs-info-border);border-color:var(--bs-border-color)}.border-subtle-inverse{--bs-border-color:var(--bs-inverse-border);border-color:var(--bs-border-color)}.border-subtle-secondary{--bs-border-color:var(--bs-secondary-border);border-color:var(--bs-border-color)}.border-1{border-width:1px}.border-2{border-width:2px}.border-3{border-width:3px}.border-4{border-width:4px}.border-5{border-width:5px}.border-10{border-color:color-mix(in oklch, var(--bs-border-color) 10%, transparent)}.border-20{border-color:color-mix(in oklch, var(--bs-border-color) 20%, transparent)}.border-30{border-color:color-mix(in oklch, var(--bs-border-color) 30%, transparent)}.border-40{border-color:color-mix(in oklch, var(--bs-border-color) 40%, transparent)}.border-50{border-color:color-mix(in oklch, var(--bs-border-color) 50%, transparent)}.border-60{border-color:color-mix(in oklch, var(--bs-border-color) 60%, transparent)}.border-70{border-color:color-mix(in oklch, var(--bs-border-color) 70%, transparent)}.border-80{border-color:color-mix(in oklch, var(--bs-border-color) 80%, transparent)}.border-90{border-color:color-mix(in oklch, var(--bs-border-color) 90%, transparent)}.border-100{border-color:var(--bs-border-color)}.w-1{width:1rem}.w-2{width:2rem}.w-3{width:3rem}.w-4{width:4rem}.w-5{width:5rem}.w-6{width:6rem}.w-7{width:7rem}.w-8{width:8rem}.w-9{width:9rem}.w-10{width:10rem}.w-11{width:11rem}.w-12{width:12rem}.w-25{width:25%}.w-50{width:50%}.w-75{width:75%}.w-100{width:100%}.w-auto{width:auto}.w-min{width:min-content}.w-max{width:max-content}.w-fit{width:fit-content}.max-w-100{max-width:100%}.min-w-0{min-width:0}.min-w-100{min-width:100%}.vw-100{width:100vw}.min-vw-100{min-width:100vw}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.h-auto{height:auto}.h-min{height:min-content}.h-max{height:max-content}.h-fit{height:fit-content}.max-h-100{max-height:100%}.min-h-0{min-height:0}.min-h-100{min-height:100%}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.flex-fill{flex:auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch stretch}.grid-cols-1{grid-template-columns:1fr}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}.grid-cols-6{grid-template-columns:repeat(6,1fr)}.grid-cols-fill{grid-column:1/-1}.grid-auto-flow-row{grid-auto-flow:row}.grid-auto-flow-column{grid-auto-flow:column}.grid-auto-flow-dense{grid-auto-flow:dense}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:.75rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-7{margin:2rem}.m-8{margin:2.5rem}.m-9{margin:3rem}.m-auto{margin:auto}.mx-0{margin-inline:0}.mx-1{margin-inline:.25rem}.mx-2{margin-inline:.5rem}.mx-3{margin-inline:.75rem}.mx-4{margin-inline:1rem}.mx-5{margin-inline:1.25rem}.mx-6{margin-inline:1.5rem}.mx-7{margin-inline:2rem}.mx-8{margin-inline:2.5rem}.mx-9{margin-inline:3rem}.mx-auto{margin-inline:auto}.my-0{margin-block:0}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-3{margin-block:.75rem}.my-4{margin-block:1rem}.my-5{margin-block:1.25rem}.my-6{margin-block:1.5rem}.my-7{margin-block:2rem}.my-8{margin-block:2.5rem}.my-9{margin-block:3rem}.my-auto{margin-block:auto}.mt-0{margin-block-start:0}.mt-1{margin-block-start:.25rem}.mt-2{margin-block-start:.5rem}.mt-3{margin-block-start:.75rem}.mt-4{margin-block-start:1rem}.mt-5{margin-block-start:1.25rem}.mt-6{margin-block-start:1.5rem}.mt-7{margin-block-start:2rem}.mt-8{margin-block-start:2.5rem}.mt-9{margin-block-start:3rem}.mt-auto{margin-block-start:auto}.me-0{margin-inline-end:0}.me-1{margin-inline-end:.25rem}.me-2{margin-inline-end:.5rem}.me-3{margin-inline-end:.75rem}.me-4{margin-inline-end:1rem}.me-5{margin-inline-end:1.25rem}.me-6{margin-inline-end:1.5rem}.me-7{margin-inline-end:2rem}.me-8{margin-inline-end:2.5rem}.me-9{margin-inline-end:3rem}.me--1{margin-inline-end:-.25rem}.me--2{margin-inline-end:-.5rem}.me-auto{margin-inline-end:auto}.mb-0{margin-block-end:0}.mb-1{margin-block-end:.25rem}.mb-2{margin-block-end:.5rem}.mb-3{margin-block-end:.75rem}.mb-4{margin-block-end:1rem}.mb-5{margin-block-end:1.25rem}.mb-6{margin-block-end:1.5rem}.mb-7{margin-block-end:2rem}.mb-8{margin-block-end:2.5rem}.mb-9{margin-block-end:3rem}.mb-auto{margin-block-end:auto}.ms-0{margin-inline-start:0}.ms-1{margin-inline-start:.25rem}.ms-2{margin-inline-start:.5rem}.ms-3{margin-inline-start:.75rem}.ms-4{margin-inline-start:1rem}.ms-5{margin-inline-start:1.25rem}.ms-6{margin-inline-start:1.5rem}.ms-7{margin-inline-start:2rem}.ms-8{margin-inline-start:2.5rem}.ms-9{margin-inline-start:3rem}.ms--1{margin-inline-start:-.25rem}.ms--2{margin-inline-start:-.5rem}.ms-auto{margin-inline-start:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:2rem}.p-8{padding:2.5rem}.p-9{padding:3rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-5{padding-inline:1.25rem}.px-6{padding-inline:1.5rem}.px-7{padding-inline:2rem}.px-8{padding-inline:2.5rem}.px-9{padding-inline:3rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:.75rem}.py-4{padding-block:1rem}.py-5{padding-block:1.25rem}.py-6{padding-block:1.5rem}.py-7{padding-block:2rem}.py-8{padding-block:2.5rem}.py-9{padding-block:3rem}.pt-0{padding-block-start:0}.pt-1{padding-block-start:.25rem}.pt-2{padding-block-start:.5rem}.pt-3{padding-block-start:.75rem}.pt-4{padding-block-start:1rem}.pt-5{padding-block-start:1.25rem}.pt-6{padding-block-start:1.5rem}.pt-7{padding-block-start:2rem}.pt-8{padding-block-start:2.5rem}.pt-9{padding-block-start:3rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-5{padding-inline-end:1.25rem}.pe-6{padding-inline-end:1.5rem}.pe-7{padding-inline-end:2rem}.pe-8{padding-inline-end:2.5rem}.pe-9{padding-inline-end:3rem}.pb-0{padding-block-end:0}.pb-1{padding-block-end:.25rem}.pb-2{padding-block-end:.5rem}.pb-3{padding-block-end:.75rem}.pb-4{padding-block-end:1rem}.pb-5{padding-block-end:1.25rem}.pb-6{padding-block-end:1.5rem}.pb-7{padding-block-end:2rem}.pb-8{padding-block-end:2.5rem}.pb-9{padding-block-end:3rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-5{padding-inline-start:1.25rem}.ps-6{padding-inline-start:1.5rem}.ps-7{padding-inline-start:2rem}.ps-8{padding-inline-start:2.5rem}.ps-9{padding-inline-start:3rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:2rem}.gap-8{gap:2.5rem}.gap-9{gap:3rem}.row-gap-0{row-gap:0}.row-gap-1{row-gap:.25rem}.row-gap-2{row-gap:.5rem}.row-gap-3{row-gap:.75rem}.row-gap-4{row-gap:1rem}.row-gap-5{row-gap:1.25rem}.row-gap-6{row-gap:1.5rem}.row-gap-7{row-gap:2rem}.row-gap-8{row-gap:2.5rem}.row-gap-9{row-gap:3rem}.column-gap-0{column-gap:0}.column-gap-1{column-gap:.25rem}.column-gap-2{column-gap:.5rem}.column-gap-3{column-gap:.75rem}.column-gap-4{column-gap:1rem}.column-gap-5{column-gap:1.25rem}.column-gap-6{column-gap:1.5rem}.column-gap-7{column-gap:2rem}.column-gap-8{column-gap:2.5rem}.column-gap-9{column-gap:3rem}:where(.space-x-0>:not(:last-child)){margin-inline-end:0}:where(.space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.space-y-0>:not(:last-child)){margin-block-end:0}:where(.space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.divide-x-0>:not(:first-child)){border-inline-start:0}:where(.divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.divide-y-0>:not(:first-child)){border-block-start:0}.font-monospace{font-family:var(--bs-font-mono)}.font-body{font-family:var(--bs-body-font-family)}.fs-xs{font-size:.75rem}.fs-sm{font-size:.875rem}.fs-md{font-size:1rem}.fs-lg{font-size:clamp(1.25rem,1rem + .625vw,1.5rem)}.fs-xl{font-size:clamp(1.5rem,1.1rem + .75vw,1.75rem)}.fs-2xl{font-size:clamp(1.75rem,1.3rem + 1vw,2rem)}.fs-3xl{font-size:clamp(2rem,1.5rem + 1.875vw,2.5rem)}.fs-4xl{font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem)}.fs-5xl{font-size:clamp(3rem,2rem + 5vw,4rem)}.fs-6xl{font-size:clamp(3.75rem,2.5rem + 6.25vw,5rem)}.text-xs{font-size:.75rem;line-height:1.25}.text-sm{font-size:.875rem;line-height:1.5}.text-md{font-size:1rem;line-height:1.5}.text-lg{font-size:clamp(1.25rem,1rem + .625vw,1.5rem);line-height:1.5}.text-xl{font-size:clamp(1.5rem,1.1rem + .75vw,1.75rem);line-height:1.42857}.text-2xl{font-size:clamp(1.75rem,1.3rem + 1vw,2rem);line-height:1.33333}.text-3xl{font-size:clamp(2rem,1.5rem + 1.875vw,2.5rem);line-height:1.2}.text-4xl{font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem);line-height:1.1}.text-5xl{font-size:clamp(3rem,2rem + 5vw,4rem);line-height:1.1}.text-6xl{font-size:clamp(3.75rem,2.5rem + 6.25vw,5rem);line-height:1}.fst-italic{font-style:italic}.fst-normal{font-style:normal}.fw-lighter{font-weight:lighter}.fw-light{font-weight:300}.fw-normal{font-weight:400}.fw-medium{font-weight:500}.fw-semibold{font-weight:600}.fw-bold{font-weight:700}.fw-bolder{font-weight:bolder}.lh-1{line-height:1}.lh-sm{line-height:1.25}.lh-base{line-height:1.5}.lh-lg{line-height:2}.text-start{text-align:start}.text-end{text-align:end}.text-center{text-align:center}.text-decoration-none{text-decoration:none}.text-decoration-underline{text-decoration:underline}.text-decoration-line-through{text-decoration:line-through}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-wrap{text-wrap:wrap}.text-nowrap{text-wrap:nowrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.text-break{word-wrap:break-word;word-break:break-word}.fg-primary{--bs-fg:var(--bs-primary-fg);color:var(--bs-fg)}.fg-accent{--bs-fg:var(--bs-accent-fg);color:var(--bs-fg)}.fg-success{--bs-fg:var(--bs-success-fg);color:var(--bs-fg)}.fg-danger{--bs-fg:var(--bs-danger-fg);color:var(--bs-fg)}.fg-warning{--bs-fg:var(--bs-warning-fg);color:var(--bs-fg)}.fg-info{--bs-fg:var(--bs-info-fg);color:var(--bs-fg)}.fg-inverse{--bs-fg:var(--bs-inverse-fg);color:var(--bs-fg)}.fg-secondary{--bs-fg:var(--bs-secondary-fg);color:var(--bs-fg)}.fg-body{--bs-fg:var(--bs-fg-body);color:var(--bs-fg)}.fg-1{--bs-fg:var(--bs-fg-1);color:var(--bs-fg)}.fg-2{--bs-fg:var(--bs-fg-2);color:var(--bs-fg)}.fg-3{--bs-fg:var(--bs-fg-3);color:var(--bs-fg)}.fg-4{--bs-fg:var(--bs-fg-4);color:var(--bs-fg)}.fg-bg{--bs-fg:var(--bs-fg-bg);color:var(--bs-fg)}.fg-white{--bs-fg:var(--bs-fg-white);color:var(--bs-fg)}.fg-black{--bs-fg:var(--bs-fg-black);color:var(--bs-fg)}.fg-reset{--bs-fg:inherit;color:var(--bs-fg)}.fg-emphasis-primary{--bs-fg:var(--bs-primary-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-accent{--bs-fg:var(--bs-accent-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-success{--bs-fg:var(--bs-success-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-danger{--bs-fg:var(--bs-danger-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-warning{--bs-fg:var(--bs-warning-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-info{--bs-fg:var(--bs-info-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-inverse{--bs-fg:var(--bs-inverse-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-secondary{--bs-fg:var(--bs-secondary-fg-emphasis);color:var(--bs-fg)}.fg-contrast-primary{--bs-fg:var(--bs-primary-contrast);color:var(--bs-fg)}.fg-contrast-accent{--bs-fg:var(--bs-accent-contrast);color:var(--bs-fg)}.fg-contrast-success{--bs-fg:var(--bs-success-contrast);color:var(--bs-fg)}.fg-contrast-danger{--bs-fg:var(--bs-danger-contrast);color:var(--bs-fg)}.fg-contrast-warning{--bs-fg:var(--bs-warning-contrast);color:var(--bs-fg)}.fg-contrast-info{--bs-fg:var(--bs-info-contrast);color:var(--bs-fg)}.fg-contrast-inverse{--bs-fg:var(--bs-inverse-contrast);color:var(--bs-fg)}.fg-contrast-secondary{--bs-fg:var(--bs-secondary-contrast);color:var(--bs-fg)}.fg-10{color:color-mix(in oklch, var(--bs-fg) 10%, transparent)}.fg-20{color:color-mix(in oklch, var(--bs-fg) 20%, transparent)}.fg-30{color:color-mix(in oklch, var(--bs-fg) 30%, transparent)}.fg-40{color:color-mix(in oklch, var(--bs-fg) 40%, transparent)}.fg-50{color:color-mix(in oklch, var(--bs-fg) 50%, transparent)}.fg-60{color:color-mix(in oklch, var(--bs-fg) 60%, transparent)}.fg-70{color:color-mix(in oklch, var(--bs-fg) 70%, transparent)}.fg-80{color:color-mix(in oklch, var(--bs-fg) 80%, transparent)}.fg-90{color:color-mix(in oklch, var(--bs-fg) 90%, transparent)}.fg-100{color:var(--bs-fg)}.link-10,.hover\:link-10:hover{color:color-mix(in oklch, var(--bs-link-color) 10%, transparent)}.link-20,.hover\:link-20:hover{color:color-mix(in oklch, var(--bs-link-color) 20%, transparent)}.link-30,.hover\:link-30:hover{color:color-mix(in oklch, var(--bs-link-color) 30%, transparent)}.link-40,.hover\:link-40:hover{color:color-mix(in oklch, var(--bs-link-color) 40%, transparent)}.link-50,.hover\:link-50:hover{color:color-mix(in oklch, var(--bs-link-color) 50%, transparent)}.link-60,.hover\:link-60:hover{color:color-mix(in oklch, var(--bs-link-color) 60%, transparent)}.link-70,.hover\:link-70:hover{color:color-mix(in oklch, var(--bs-link-color) 70%, transparent)}.link-80,.hover\:link-80:hover{color:color-mix(in oklch, var(--bs-link-color) 80%, transparent)}.link-90,.hover\:link-90:hover{color:color-mix(in oklch, var(--bs-link-color) 90%, transparent)}.link-100,.hover\:link-100:hover{color:var(--bs-link-color)}.underline-offset-1,.hover\:underline-offset-1:hover{text-underline-offset:.125em}.underline-offset-2,.hover\:underline-offset-2:hover{text-underline-offset:.25em}.underline-offset-3,.hover\:underline-offset-3:hover{text-underline-offset:.375em}.underline-primary{-webkit-text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400));text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400))}.underline-accent{-webkit-text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)));text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)))}.underline-success{-webkit-text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400));text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400))}.underline-danger{-webkit-text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400));text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400))}.underline-warning{-webkit-text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400))}.underline-info{-webkit-text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400))}.underline-inverse{-webkit-text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200));text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200))}.underline-secondary{-webkit-text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400));text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400))}.underline-10,.hover\:underline-10:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 10%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 10%, transparent)}.underline-20,.hover\:underline-20:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 20%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 20%, transparent)}.underline-30,.hover\:underline-30:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 30%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 30%, transparent)}.underline-40,.hover\:underline-40:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 40%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 40%, transparent)}.underline-50,.hover\:underline-50:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 50%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 50%, transparent)}.underline-60,.hover\:underline-60:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 60%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 60%, transparent)}.underline-70,.hover\:underline-70:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 70%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 70%, transparent)}.underline-80,.hover\:underline-80:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 80%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 80%, transparent)}.underline-90,.hover\:underline-90:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 90%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 90%, transparent)}.underline-100,.hover\:underline-100:hover{-webkit-text-decoration-color:var(--bs-link-color);text-decoration-color:var(--bs-link-color)}.underline-thickness-1,.hover\:underline-thickness-1:hover{text-decoration-thickness:1px}.underline-thickness-2,.hover\:underline-thickness-2:hover{text-decoration-thickness:2px}.underline-thickness-3,.hover\:underline-thickness-3:hover{text-decoration-thickness:3px}.underline-thickness-4,.hover\:underline-thickness-4:hover{text-decoration-thickness:4px}.underline-thickness-5,.hover\:underline-thickness-5:hover{text-decoration-thickness:5px}.bg-primary{--bs-bg:var(--bs-primary-bg);background-color:var(--bs-bg)}.bg-accent{--bs-bg:var(--bs-accent-bg);background-color:var(--bs-bg)}.bg-success{--bs-bg:var(--bs-success-bg);background-color:var(--bs-bg)}.bg-danger{--bs-bg:var(--bs-danger-bg);background-color:var(--bs-bg)}.bg-warning{--bs-bg:var(--bs-warning-bg);background-color:var(--bs-bg)}.bg-info{--bs-bg:var(--bs-info-bg);background-color:var(--bs-bg)}.bg-inverse{--bs-bg:var(--bs-inverse-bg);background-color:var(--bs-bg)}.bg-secondary{--bs-bg:var(--bs-secondary-bg);background-color:var(--bs-bg)}.bg-body{--bs-bg:var(--bs-bg-body);background-color:var(--bs-bg)}.bg-1{--bs-bg:var(--bs-bg-1);background-color:var(--bs-bg)}.bg-2{--bs-bg:var(--bs-bg-2);background-color:var(--bs-bg)}.bg-3{--bs-bg:var(--bs-bg-3);background-color:var(--bs-bg)}.bg-4{--bs-bg:var(--bs-bg-4);background-color:var(--bs-bg)}.bg-fg{--bs-bg:var(--bs-bg-fg);background-color:var(--bs-bg)}.bg-white{--bs-bg:var(--bs-bg-white);background-color:var(--bs-bg)}.bg-black{--bs-bg:var(--bs-bg-black);background-color:var(--bs-bg)}.bg-transparent{--bs-bg:var(--bs-bg-transparent);background-color:var(--bs-bg)}.bg-subtle-primary{--bs-bg:var(--bs-primary-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-accent{--bs-bg:var(--bs-accent-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-success{--bs-bg:var(--bs-success-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-danger{--bs-bg:var(--bs-danger-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-warning{--bs-bg:var(--bs-warning-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-info{--bs-bg:var(--bs-info-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-inverse{--bs-bg:var(--bs-inverse-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-secondary{--bs-bg:var(--bs-secondary-bg-subtle);background-color:var(--bs-bg)}.bg-muted-primary{--bs-bg:var(--bs-primary-bg-muted);background-color:var(--bs-bg)}.bg-muted-accent{--bs-bg:var(--bs-accent-bg-muted);background-color:var(--bs-bg)}.bg-muted-success{--bs-bg:var(--bs-success-bg-muted);background-color:var(--bs-bg)}.bg-muted-danger{--bs-bg:var(--bs-danger-bg-muted);background-color:var(--bs-bg)}.bg-muted-warning{--bs-bg:var(--bs-warning-bg-muted);background-color:var(--bs-bg)}.bg-muted-info{--bs-bg:var(--bs-info-bg-muted);background-color:var(--bs-bg)}.bg-muted-inverse{--bs-bg:var(--bs-inverse-bg-muted);background-color:var(--bs-bg)}.bg-muted-secondary{--bs-bg:var(--bs-secondary-bg-muted);background-color:var(--bs-bg)}.bg-10{background-color:color-mix(in oklch, var(--bs-bg) 10%, transparent)}.bg-20{background-color:color-mix(in oklch, var(--bs-bg) 20%, transparent)}.bg-30{background-color:color-mix(in oklch, var(--bs-bg) 30%, transparent)}.bg-40{background-color:color-mix(in oklch, var(--bs-bg) 40%, transparent)}.bg-50{background-color:color-mix(in oklch, var(--bs-bg) 50%, transparent)}.bg-60{background-color:color-mix(in oklch, var(--bs-bg) 60%, transparent)}.bg-70{background-color:color-mix(in oklch, var(--bs-bg) 70%, transparent)}.bg-80{background-color:color-mix(in oklch, var(--bs-bg) 80%, transparent)}.bg-90{background-color:color-mix(in oklch, var(--bs-bg) 90%, transparent)}.bg-100{background-color:var(--bs-bg)}.theme-contrast{background-color:var(--bs-theme-bg);color:var(--bs-theme-contrast)}.theme-subtle{background-color:var(--bs-theme-bg-subtle);color:var(--bs-theme-fg)}.theme-muted{background-color:var(--bs-theme-bg-muted);color:var(--bs-theme-fg-emphasis)}.theme-border{border:var(--bs-border-width) solid var(--bs-theme-border)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{-webkit-user-select:all;user-select:all}.user-select-auto{-webkit-user-select:auto;user-select:auto}.user-select-text{-webkit-user-select:text;user-select:text}.user-select-none{-webkit-user-select:none;user-select:none}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded-0{--bs-rounded-size:0;border-radius:var(--bs-rounded-size)}.rounded-1{--bs-rounded-size:.125rem;border-radius:var(--bs-rounded-size)}.rounded-2{--bs-rounded-size:.1875rem;border-radius:var(--bs-rounded-size)}.rounded-3{--bs-rounded-size:.25rem;border-radius:var(--bs-rounded-size)}.rounded-4{--bs-rounded-size:.375rem;border-radius:var(--bs-rounded-size)}.rounded-5{--bs-rounded-size:.5rem;border-radius:var(--bs-rounded-size)}.rounded-6{--bs-rounded-size:.625rem;border-radius:var(--bs-rounded-size)}.rounded-7{--bs-rounded-size:.75rem;border-radius:var(--bs-rounded-size)}.rounded-8{--bs-rounded-size:1rem;border-radius:var(--bs-rounded-size)}.rounded-9{--bs-rounded-size:1.5rem;border-radius:var(--bs-rounded-size)}.rounded{--bs-rounded-size:.5rem;border-radius:var(--bs-rounded-size)}.rounded-circle{--bs-rounded-size:50%;border-radius:var(--bs-rounded-size)}.rounded-pill{--bs-rounded-size:var(--bs-radius-pill);border-radius:var(--bs-rounded-size)}.rounded-size-0{--bs-rounded-size:0}.rounded-size-1{--bs-rounded-size:.125rem}.rounded-size-2{--bs-rounded-size:.1875rem}.rounded-size-3{--bs-rounded-size:.25rem}.rounded-size-4{--bs-rounded-size:.375rem}.rounded-size-5{--bs-rounded-size:.5rem}.rounded-size-6{--bs-rounded-size:.625rem}.rounded-size-7{--bs-rounded-size:.75rem}.rounded-size-8{--bs-rounded-size:1rem}.rounded-size-9{--bs-rounded-size:1.5rem}.rounded-size{--bs-rounded-size:.5rem}.rounded-size-circle{--bs-rounded-size:50%}.rounded-size-pill{--bs-rounded-size:var(--bs-radius-pill)}.rounded-top-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-top-1{border-start-start-radius:.125rem;border-start-end-radius:.125rem}.rounded-top-2{border-start-start-radius:.1875rem;border-start-end-radius:.1875rem}.rounded-top-3{border-start-start-radius:.25rem;border-start-end-radius:.25rem}.rounded-top-4{border-start-start-radius:.375rem;border-start-end-radius:.375rem}.rounded-top-5{border-start-start-radius:.5rem;border-start-end-radius:.5rem}.rounded-top-6{border-start-start-radius:.625rem;border-start-end-radius:.625rem}.rounded-top-7{border-start-start-radius:.75rem;border-start-end-radius:.75rem}.rounded-top-8{border-start-start-radius:1rem;border-start-end-radius:1rem}.rounded-top-9{border-start-start-radius:1.5rem;border-start-end-radius:1.5rem}.rounded-top{border-start-start-radius:var(--bs-rounded-size,var(--bs-radius-5));border-start-end-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-top-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-top-pill{border-start-start-radius:var(--bs-radius-pill);border-start-end-radius:var(--bs-radius-pill)}.rounded-end-0{border-start-end-radius:0;border-end-end-radius:0}.rounded-end-1{border-start-end-radius:.125rem;border-end-end-radius:.125rem}.rounded-end-2{border-start-end-radius:.1875rem;border-end-end-radius:.1875rem}.rounded-end-3{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-end-4{border-start-end-radius:.375rem;border-end-end-radius:.375rem}.rounded-end-5{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-end-6{border-start-end-radius:.625rem;border-end-end-radius:.625rem}.rounded-end-7{border-start-end-radius:.75rem;border-end-end-radius:.75rem}.rounded-end-8{border-start-end-radius:1rem;border-end-end-radius:1rem}.rounded-end-9{border-start-end-radius:1.5rem;border-end-end-radius:1.5rem}.rounded-end{border-start-end-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-end-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-end-circle{border-start-end-radius:50%;border-end-end-radius:50%}.rounded-end-pill{border-start-end-radius:var(--bs-radius-pill);border-end-end-radius:var(--bs-radius-pill)}.rounded-bottom-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-bottom-1{border-end-end-radius:.125rem;border-end-start-radius:.125rem}.rounded-bottom-2{border-end-end-radius:.1875rem;border-end-start-radius:.1875rem}.rounded-bottom-3{border-end-end-radius:.25rem;border-end-start-radius:.25rem}.rounded-bottom-4{border-end-end-radius:.375rem;border-end-start-radius:.375rem}.rounded-bottom-5{border-end-end-radius:.5rem;border-end-start-radius:.5rem}.rounded-bottom-6{border-end-end-radius:.625rem;border-end-start-radius:.625rem}.rounded-bottom-7{border-end-end-radius:.75rem;border-end-start-radius:.75rem}.rounded-bottom-8{border-end-end-radius:1rem;border-end-start-radius:1rem}.rounded-bottom-9{border-end-end-radius:1.5rem;border-end-start-radius:1.5rem}.rounded-bottom{border-end-end-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-start-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-bottom-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-bottom-pill{border-end-end-radius:var(--bs-radius-pill);border-end-start-radius:var(--bs-radius-pill)}.rounded-start-0{border-start-start-radius:0;border-end-start-radius:0}.rounded-start-1{border-start-start-radius:.125rem;border-end-start-radius:.125rem}.rounded-start-2{border-start-start-radius:.1875rem;border-end-start-radius:.1875rem}.rounded-start-3{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-start-4{border-start-start-radius:.375rem;border-end-start-radius:.375rem}.rounded-start-5{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.rounded-start-6{border-start-start-radius:.625rem;border-end-start-radius:.625rem}.rounded-start-7{border-start-start-radius:.75rem;border-end-start-radius:.75rem}.rounded-start-8{border-start-start-radius:1rem;border-end-start-radius:1rem}.rounded-start-9{border-start-start-radius:1.5rem;border-end-start-radius:1.5rem}.rounded-start{border-start-start-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-start-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-start-circle{border-start-start-radius:50%;border-end-start-radius:50%}.rounded-start-pill{border-start-start-radius:var(--bs-radius-pill);border-end-start-radius:var(--bs-radius-pill)}.visible{visibility:visible}.invisible{visibility:hidden}.z-n1{z-index:-1}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}@media (width>=576px){.sm\:float-start{float:inline-start}.sm\:float-end{float:inline-end}.sm\:float-none{float:none}.sm\:object-fit-contain{object-fit:contain}.sm\:object-fit-cover{object-fit:cover}.sm\:object-fit-fill{object-fit:fill}.sm\:object-fit-scale{object-fit:scale-down}.sm\:object-fit-none{object-fit:none}.sm\:d-inline{display:inline}.sm\:d-inline-block{display:inline-block}.sm\:d-block{display:block}.sm\:d-grid{display:grid}.sm\:d-inline-grid{display:inline-grid}.sm\:d-table{display:table}.sm\:d-table-row{display:table-row}.sm\:d-table-cell{display:table-cell}.sm\:d-flex{display:flex}.sm\:d-inline-flex{display:inline-flex}.sm\:d-contents{display:contents}.sm\:d-flow-root{display:flow-root}.sm\:d-none{display:none}.sm\:flex-fill{flex:auto}.sm\:flex-row{flex-direction:row}.sm\:flex-column{flex-direction:column}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-column-reverse{flex-direction:column-reverse}.sm\:flex-grow-0{flex-grow:0}.sm\:flex-grow-1{flex-grow:1}.sm\:flex-shrink-0{flex-shrink:0}.sm\:flex-shrink-1{flex-shrink:1}.sm\:flex-wrap{flex-wrap:wrap}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:flex-wrap-reverse{flex-wrap:wrap-reverse}.sm\:justify-content-start{justify-content:flex-start}.sm\:justify-content-end{justify-content:flex-end}.sm\:justify-content-center{justify-content:center}.sm\:justify-content-between{justify-content:space-between}.sm\:justify-content-around{justify-content:space-around}.sm\:justify-content-evenly{justify-content:space-evenly}.sm\:justify-items-start{justify-items:start}.sm\:justify-items-end{justify-items:end}.sm\:justify-items-center{justify-items:center}.sm\:justify-items-stretch{justify-items:stretch}.sm\:justify-self-start{justify-self:start}.sm\:justify-self-end{justify-self:end}.sm\:justify-self-center{justify-self:center}.sm\:align-items-start{align-items:flex-start}.sm\:align-items-end{align-items:flex-end}.sm\:align-items-center{align-items:center}.sm\:align-items-baseline{align-items:baseline}.sm\:align-items-stretch{align-items:stretch}.sm\:align-content-start{align-content:flex-start}.sm\:align-content-end{align-content:flex-end}.sm\:align-content-center{align-content:center}.sm\:align-content-between{align-content:space-between}.sm\:align-content-around{align-content:space-around}.sm\:align-content-stretch{align-content:stretch}.sm\:align-self-auto{align-self:auto}.sm\:align-self-start{align-self:flex-start}.sm\:align-self-end{align-self:flex-end}.sm\:align-self-center{align-self:center}.sm\:align-self-baseline{align-self:baseline}.sm\:align-self-stretch{align-self:stretch}.sm\:place-items-start{place-items:start}.sm\:place-items-end{place-items:end}.sm\:place-items-center{place-items:center}.sm\:place-items-stretch{place-items:stretch stretch}.sm\:grid-cols-1{grid-template-columns:1fr}.sm\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.sm\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.sm\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.sm\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.sm\:grid-cols-fill{grid-column:1/-1}.sm\:grid-auto-flow-row{grid-auto-flow:row}.sm\:grid-auto-flow-column{grid-auto-flow:column}.sm\:grid-auto-flow-dense{grid-auto-flow:dense}.sm\:order-first{order:-1}.sm\:order-0{order:0}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:order-3{order:3}.sm\:order-4{order:4}.sm\:order-5{order:5}.sm\:order-last{order:6}.sm\:m-0{margin:0}.sm\:m-1{margin:.25rem}.sm\:m-2{margin:.5rem}.sm\:m-3{margin:.75rem}.sm\:m-4{margin:1rem}.sm\:m-5{margin:1.25rem}.sm\:m-6{margin:1.5rem}.sm\:m-7{margin:2rem}.sm\:m-8{margin:2.5rem}.sm\:m-9{margin:3rem}.sm\:m-auto{margin:auto}.sm\:mx-0{margin-inline:0}.sm\:mx-1{margin-inline:.25rem}.sm\:mx-2{margin-inline:.5rem}.sm\:mx-3{margin-inline:.75rem}.sm\:mx-4{margin-inline:1rem}.sm\:mx-5{margin-inline:1.25rem}.sm\:mx-6{margin-inline:1.5rem}.sm\:mx-7{margin-inline:2rem}.sm\:mx-8{margin-inline:2.5rem}.sm\:mx-9{margin-inline:3rem}.sm\:mx-auto{margin-inline:auto}.sm\:my-0{margin-block:0}.sm\:my-1{margin-block:.25rem}.sm\:my-2{margin-block:.5rem}.sm\:my-3{margin-block:.75rem}.sm\:my-4{margin-block:1rem}.sm\:my-5{margin-block:1.25rem}.sm\:my-6{margin-block:1.5rem}.sm\:my-7{margin-block:2rem}.sm\:my-8{margin-block:2.5rem}.sm\:my-9{margin-block:3rem}.sm\:my-auto{margin-block:auto}.sm\:mt-0{margin-block-start:0}.sm\:mt-1{margin-block-start:.25rem}.sm\:mt-2{margin-block-start:.5rem}.sm\:mt-3{margin-block-start:.75rem}.sm\:mt-4{margin-block-start:1rem}.sm\:mt-5{margin-block-start:1.25rem}.sm\:mt-6{margin-block-start:1.5rem}.sm\:mt-7{margin-block-start:2rem}.sm\:mt-8{margin-block-start:2.5rem}.sm\:mt-9{margin-block-start:3rem}.sm\:mt-auto{margin-block-start:auto}.sm\:me-0{margin-inline-end:0}.sm\:me-1{margin-inline-end:.25rem}.sm\:me-2{margin-inline-end:.5rem}.sm\:me-3{margin-inline-end:.75rem}.sm\:me-4{margin-inline-end:1rem}.sm\:me-5{margin-inline-end:1.25rem}.sm\:me-6{margin-inline-end:1.5rem}.sm\:me-7{margin-inline-end:2rem}.sm\:me-8{margin-inline-end:2.5rem}.sm\:me-9{margin-inline-end:3rem}.sm\:me--1{margin-inline-end:-.25rem}.sm\:me--2{margin-inline-end:-.5rem}.sm\:me-auto{margin-inline-end:auto}.sm\:mb-0{margin-block-end:0}.sm\:mb-1{margin-block-end:.25rem}.sm\:mb-2{margin-block-end:.5rem}.sm\:mb-3{margin-block-end:.75rem}.sm\:mb-4{margin-block-end:1rem}.sm\:mb-5{margin-block-end:1.25rem}.sm\:mb-6{margin-block-end:1.5rem}.sm\:mb-7{margin-block-end:2rem}.sm\:mb-8{margin-block-end:2.5rem}.sm\:mb-9{margin-block-end:3rem}.sm\:mb-auto{margin-block-end:auto}.sm\:ms-0{margin-inline-start:0}.sm\:ms-1{margin-inline-start:.25rem}.sm\:ms-2{margin-inline-start:.5rem}.sm\:ms-3{margin-inline-start:.75rem}.sm\:ms-4{margin-inline-start:1rem}.sm\:ms-5{margin-inline-start:1.25rem}.sm\:ms-6{margin-inline-start:1.5rem}.sm\:ms-7{margin-inline-start:2rem}.sm\:ms-8{margin-inline-start:2.5rem}.sm\:ms-9{margin-inline-start:3rem}.sm\:ms--1{margin-inline-start:-.25rem}.sm\:ms--2{margin-inline-start:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:p-0{padding:0}.sm\:p-1{padding:.25rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-5{padding:1.25rem}.sm\:p-6{padding:1.5rem}.sm\:p-7{padding:2rem}.sm\:p-8{padding:2.5rem}.sm\:p-9{padding:3rem}.sm\:px-0{padding-inline:0}.sm\:px-1{padding-inline:.25rem}.sm\:px-2{padding-inline:.5rem}.sm\:px-3{padding-inline:.75rem}.sm\:px-4{padding-inline:1rem}.sm\:px-5{padding-inline:1.25rem}.sm\:px-6{padding-inline:1.5rem}.sm\:px-7{padding-inline:2rem}.sm\:px-8{padding-inline:2.5rem}.sm\:px-9{padding-inline:3rem}.sm\:py-0{padding-block:0}.sm\:py-1{padding-block:.25rem}.sm\:py-2{padding-block:.5rem}.sm\:py-3{padding-block:.75rem}.sm\:py-4{padding-block:1rem}.sm\:py-5{padding-block:1.25rem}.sm\:py-6{padding-block:1.5rem}.sm\:py-7{padding-block:2rem}.sm\:py-8{padding-block:2.5rem}.sm\:py-9{padding-block:3rem}.sm\:pt-0{padding-block-start:0}.sm\:pt-1{padding-block-start:.25rem}.sm\:pt-2{padding-block-start:.5rem}.sm\:pt-3{padding-block-start:.75rem}.sm\:pt-4{padding-block-start:1rem}.sm\:pt-5{padding-block-start:1.25rem}.sm\:pt-6{padding-block-start:1.5rem}.sm\:pt-7{padding-block-start:2rem}.sm\:pt-8{padding-block-start:2.5rem}.sm\:pt-9{padding-block-start:3rem}.sm\:pe-0{padding-inline-end:0}.sm\:pe-1{padding-inline-end:.25rem}.sm\:pe-2{padding-inline-end:.5rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-4{padding-inline-end:1rem}.sm\:pe-5{padding-inline-end:1.25rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:pe-7{padding-inline-end:2rem}.sm\:pe-8{padding-inline-end:2.5rem}.sm\:pe-9{padding-inline-end:3rem}.sm\:pb-0{padding-block-end:0}.sm\:pb-1{padding-block-end:.25rem}.sm\:pb-2{padding-block-end:.5rem}.sm\:pb-3{padding-block-end:.75rem}.sm\:pb-4{padding-block-end:1rem}.sm\:pb-5{padding-block-end:1.25rem}.sm\:pb-6{padding-block-end:1.5rem}.sm\:pb-7{padding-block-end:2rem}.sm\:pb-8{padding-block-end:2.5rem}.sm\:pb-9{padding-block-end:3rem}.sm\:ps-0{padding-inline-start:0}.sm\:ps-1{padding-inline-start:.25rem}.sm\:ps-2{padding-inline-start:.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-4{padding-inline-start:1rem}.sm\:ps-5{padding-inline-start:1.25rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:ps-7{padding-inline-start:2rem}.sm\:ps-8{padding-inline-start:2.5rem}.sm\:ps-9{padding-inline-start:3rem}.sm\:gap-0{gap:0}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-5{gap:1.25rem}.sm\:gap-6{gap:1.5rem}.sm\:gap-7{gap:2rem}.sm\:gap-8{gap:2.5rem}.sm\:gap-9{gap:3rem}.sm\:row-gap-0{row-gap:0}.sm\:row-gap-1{row-gap:.25rem}.sm\:row-gap-2{row-gap:.5rem}.sm\:row-gap-3{row-gap:.75rem}.sm\:row-gap-4{row-gap:1rem}.sm\:row-gap-5{row-gap:1.25rem}.sm\:row-gap-6{row-gap:1.5rem}.sm\:row-gap-7{row-gap:2rem}.sm\:row-gap-8{row-gap:2.5rem}.sm\:row-gap-9{row-gap:3rem}.sm\:column-gap-0{column-gap:0}.sm\:column-gap-1{column-gap:.25rem}.sm\:column-gap-2{column-gap:.5rem}.sm\:column-gap-3{column-gap:.75rem}.sm\:column-gap-4{column-gap:1rem}.sm\:column-gap-5{column-gap:1.25rem}.sm\:column-gap-6{column-gap:1.5rem}.sm\:column-gap-7{column-gap:2rem}.sm\:column-gap-8{column-gap:2.5rem}.sm\:column-gap-9{column-gap:3rem}:where(.sm\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.sm\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.sm\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.sm\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.sm\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.sm\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.sm\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.sm\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.sm\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.sm\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.sm\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.sm\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.sm\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.sm\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.sm\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.sm\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.sm\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.sm\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.sm\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.sm\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.sm\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.sm\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.sm\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.sm\:divide-y-0>:not(:first-child)){border-block-start:0}.sm\:text-start{text-align:start}.sm\:text-end{text-align:end}.sm\:text-center{text-align:center}}@media (width>=768px){.md\:float-start{float:inline-start}.md\:float-end{float:inline-end}.md\:float-none{float:none}.md\:object-fit-contain{object-fit:contain}.md\:object-fit-cover{object-fit:cover}.md\:object-fit-fill{object-fit:fill}.md\:object-fit-scale{object-fit:scale-down}.md\:object-fit-none{object-fit:none}.md\:d-inline{display:inline}.md\:d-inline-block{display:inline-block}.md\:d-block{display:block}.md\:d-grid{display:grid}.md\:d-inline-grid{display:inline-grid}.md\:d-table{display:table}.md\:d-table-row{display:table-row}.md\:d-table-cell{display:table-cell}.md\:d-flex{display:flex}.md\:d-inline-flex{display:inline-flex}.md\:d-contents{display:contents}.md\:d-flow-root{display:flow-root}.md\:d-none{display:none}.md\:flex-fill{flex:auto}.md\:flex-row{flex-direction:row}.md\:flex-column{flex-direction:column}.md\:flex-row-reverse{flex-direction:row-reverse}.md\:flex-column-reverse{flex-direction:column-reverse}.md\:flex-grow-0{flex-grow:0}.md\:flex-grow-1{flex-grow:1}.md\:flex-shrink-0{flex-shrink:0}.md\:flex-shrink-1{flex-shrink:1}.md\:flex-wrap{flex-wrap:wrap}.md\:flex-nowrap{flex-wrap:nowrap}.md\:flex-wrap-reverse{flex-wrap:wrap-reverse}.md\:justify-content-start{justify-content:flex-start}.md\:justify-content-end{justify-content:flex-end}.md\:justify-content-center{justify-content:center}.md\:justify-content-between{justify-content:space-between}.md\:justify-content-around{justify-content:space-around}.md\:justify-content-evenly{justify-content:space-evenly}.md\:justify-items-start{justify-items:start}.md\:justify-items-end{justify-items:end}.md\:justify-items-center{justify-items:center}.md\:justify-items-stretch{justify-items:stretch}.md\:justify-self-start{justify-self:start}.md\:justify-self-end{justify-self:end}.md\:justify-self-center{justify-self:center}.md\:align-items-start{align-items:flex-start}.md\:align-items-end{align-items:flex-end}.md\:align-items-center{align-items:center}.md\:align-items-baseline{align-items:baseline}.md\:align-items-stretch{align-items:stretch}.md\:align-content-start{align-content:flex-start}.md\:align-content-end{align-content:flex-end}.md\:align-content-center{align-content:center}.md\:align-content-between{align-content:space-between}.md\:align-content-around{align-content:space-around}.md\:align-content-stretch{align-content:stretch}.md\:align-self-auto{align-self:auto}.md\:align-self-start{align-self:flex-start}.md\:align-self-end{align-self:flex-end}.md\:align-self-center{align-self:center}.md\:align-self-baseline{align-self:baseline}.md\:align-self-stretch{align-self:stretch}.md\:place-items-start{place-items:start}.md\:place-items-end{place-items:end}.md\:place-items-center{place-items:center}.md\:place-items-stretch{place-items:stretch stretch}.md\:grid-cols-1{grid-template-columns:1fr}.md\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.md\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.md\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.md\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.md\:grid-cols-fill{grid-column:1/-1}.md\:grid-auto-flow-row{grid-auto-flow:row}.md\:grid-auto-flow-column{grid-auto-flow:column}.md\:grid-auto-flow-dense{grid-auto-flow:dense}.md\:order-first{order:-1}.md\:order-0{order:0}.md\:order-1{order:1}.md\:order-2{order:2}.md\:order-3{order:3}.md\:order-4{order:4}.md\:order-5{order:5}.md\:order-last{order:6}.md\:m-0{margin:0}.md\:m-1{margin:.25rem}.md\:m-2{margin:.5rem}.md\:m-3{margin:.75rem}.md\:m-4{margin:1rem}.md\:m-5{margin:1.25rem}.md\:m-6{margin:1.5rem}.md\:m-7{margin:2rem}.md\:m-8{margin:2.5rem}.md\:m-9{margin:3rem}.md\:m-auto{margin:auto}.md\:mx-0{margin-inline:0}.md\:mx-1{margin-inline:.25rem}.md\:mx-2{margin-inline:.5rem}.md\:mx-3{margin-inline:.75rem}.md\:mx-4{margin-inline:1rem}.md\:mx-5{margin-inline:1.25rem}.md\:mx-6{margin-inline:1.5rem}.md\:mx-7{margin-inline:2rem}.md\:mx-8{margin-inline:2.5rem}.md\:mx-9{margin-inline:3rem}.md\:mx-auto{margin-inline:auto}.md\:my-0{margin-block:0}.md\:my-1{margin-block:.25rem}.md\:my-2{margin-block:.5rem}.md\:my-3{margin-block:.75rem}.md\:my-4{margin-block:1rem}.md\:my-5{margin-block:1.25rem}.md\:my-6{margin-block:1.5rem}.md\:my-7{margin-block:2rem}.md\:my-8{margin-block:2.5rem}.md\:my-9{margin-block:3rem}.md\:my-auto{margin-block:auto}.md\:mt-0{margin-block-start:0}.md\:mt-1{margin-block-start:.25rem}.md\:mt-2{margin-block-start:.5rem}.md\:mt-3{margin-block-start:.75rem}.md\:mt-4{margin-block-start:1rem}.md\:mt-5{margin-block-start:1.25rem}.md\:mt-6{margin-block-start:1.5rem}.md\:mt-7{margin-block-start:2rem}.md\:mt-8{margin-block-start:2.5rem}.md\:mt-9{margin-block-start:3rem}.md\:mt-auto{margin-block-start:auto}.md\:me-0{margin-inline-end:0}.md\:me-1{margin-inline-end:.25rem}.md\:me-2{margin-inline-end:.5rem}.md\:me-3{margin-inline-end:.75rem}.md\:me-4{margin-inline-end:1rem}.md\:me-5{margin-inline-end:1.25rem}.md\:me-6{margin-inline-end:1.5rem}.md\:me-7{margin-inline-end:2rem}.md\:me-8{margin-inline-end:2.5rem}.md\:me-9{margin-inline-end:3rem}.md\:me--1{margin-inline-end:-.25rem}.md\:me--2{margin-inline-end:-.5rem}.md\:me-auto{margin-inline-end:auto}.md\:mb-0{margin-block-end:0}.md\:mb-1{margin-block-end:.25rem}.md\:mb-2{margin-block-end:.5rem}.md\:mb-3{margin-block-end:.75rem}.md\:mb-4{margin-block-end:1rem}.md\:mb-5{margin-block-end:1.25rem}.md\:mb-6{margin-block-end:1.5rem}.md\:mb-7{margin-block-end:2rem}.md\:mb-8{margin-block-end:2.5rem}.md\:mb-9{margin-block-end:3rem}.md\:mb-auto{margin-block-end:auto}.md\:ms-0{margin-inline-start:0}.md\:ms-1{margin-inline-start:.25rem}.md\:ms-2{margin-inline-start:.5rem}.md\:ms-3{margin-inline-start:.75rem}.md\:ms-4{margin-inline-start:1rem}.md\:ms-5{margin-inline-start:1.25rem}.md\:ms-6{margin-inline-start:1.5rem}.md\:ms-7{margin-inline-start:2rem}.md\:ms-8{margin-inline-start:2.5rem}.md\:ms-9{margin-inline-start:3rem}.md\:ms--1{margin-inline-start:-.25rem}.md\:ms--2{margin-inline-start:-.5rem}.md\:ms-auto{margin-inline-start:auto}.md\:p-0{padding:0}.md\:p-1{padding:.25rem}.md\:p-2{padding:.5rem}.md\:p-3{padding:.75rem}.md\:p-4{padding:1rem}.md\:p-5{padding:1.25rem}.md\:p-6{padding:1.5rem}.md\:p-7{padding:2rem}.md\:p-8{padding:2.5rem}.md\:p-9{padding:3rem}.md\:px-0{padding-inline:0}.md\:px-1{padding-inline:.25rem}.md\:px-2{padding-inline:.5rem}.md\:px-3{padding-inline:.75rem}.md\:px-4{padding-inline:1rem}.md\:px-5{padding-inline:1.25rem}.md\:px-6{padding-inline:1.5rem}.md\:px-7{padding-inline:2rem}.md\:px-8{padding-inline:2.5rem}.md\:px-9{padding-inline:3rem}.md\:py-0{padding-block:0}.md\:py-1{padding-block:.25rem}.md\:py-2{padding-block:.5rem}.md\:py-3{padding-block:.75rem}.md\:py-4{padding-block:1rem}.md\:py-5{padding-block:1.25rem}.md\:py-6{padding-block:1.5rem}.md\:py-7{padding-block:2rem}.md\:py-8{padding-block:2.5rem}.md\:py-9{padding-block:3rem}.md\:pt-0{padding-block-start:0}.md\:pt-1{padding-block-start:.25rem}.md\:pt-2{padding-block-start:.5rem}.md\:pt-3{padding-block-start:.75rem}.md\:pt-4{padding-block-start:1rem}.md\:pt-5{padding-block-start:1.25rem}.md\:pt-6{padding-block-start:1.5rem}.md\:pt-7{padding-block-start:2rem}.md\:pt-8{padding-block-start:2.5rem}.md\:pt-9{padding-block-start:3rem}.md\:pe-0{padding-inline-end:0}.md\:pe-1{padding-inline-end:.25rem}.md\:pe-2{padding-inline-end:.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-4{padding-inline-end:1rem}.md\:pe-5{padding-inline-end:1.25rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:pe-7{padding-inline-end:2rem}.md\:pe-8{padding-inline-end:2.5rem}.md\:pe-9{padding-inline-end:3rem}.md\:pb-0{padding-block-end:0}.md\:pb-1{padding-block-end:.25rem}.md\:pb-2{padding-block-end:.5rem}.md\:pb-3{padding-block-end:.75rem}.md\:pb-4{padding-block-end:1rem}.md\:pb-5{padding-block-end:1.25rem}.md\:pb-6{padding-block-end:1.5rem}.md\:pb-7{padding-block-end:2rem}.md\:pb-8{padding-block-end:2.5rem}.md\:pb-9{padding-block-end:3rem}.md\:ps-0{padding-inline-start:0}.md\:ps-1{padding-inline-start:.25rem}.md\:ps-2{padding-inline-start:.5rem}.md\:ps-3{padding-inline-start:.75rem}.md\:ps-4{padding-inline-start:1rem}.md\:ps-5{padding-inline-start:1.25rem}.md\:ps-6{padding-inline-start:1.5rem}.md\:ps-7{padding-inline-start:2rem}.md\:ps-8{padding-inline-start:2.5rem}.md\:ps-9{padding-inline-start:3rem}.md\:gap-0{gap:0}.md\:gap-1{gap:.25rem}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-5{gap:1.25rem}.md\:gap-6{gap:1.5rem}.md\:gap-7{gap:2rem}.md\:gap-8{gap:2.5rem}.md\:gap-9{gap:3rem}.md\:row-gap-0{row-gap:0}.md\:row-gap-1{row-gap:.25rem}.md\:row-gap-2{row-gap:.5rem}.md\:row-gap-3{row-gap:.75rem}.md\:row-gap-4{row-gap:1rem}.md\:row-gap-5{row-gap:1.25rem}.md\:row-gap-6{row-gap:1.5rem}.md\:row-gap-7{row-gap:2rem}.md\:row-gap-8{row-gap:2.5rem}.md\:row-gap-9{row-gap:3rem}.md\:column-gap-0{column-gap:0}.md\:column-gap-1{column-gap:.25rem}.md\:column-gap-2{column-gap:.5rem}.md\:column-gap-3{column-gap:.75rem}.md\:column-gap-4{column-gap:1rem}.md\:column-gap-5{column-gap:1.25rem}.md\:column-gap-6{column-gap:1.5rem}.md\:column-gap-7{column-gap:2rem}.md\:column-gap-8{column-gap:2.5rem}.md\:column-gap-9{column-gap:3rem}:where(.md\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.md\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.md\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.md\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.md\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.md\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.md\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.md\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.md\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.md\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.md\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.md\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.md\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.md\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.md\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.md\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.md\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.md\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.md\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.md\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.md\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.md\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.md\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.md\:divide-y-0>:not(:first-child)){border-block-start:0}.md\:text-start{text-align:start}.md\:text-end{text-align:end}.md\:text-center{text-align:center}}@media (width>=1024px){.lg\:float-start{float:inline-start}.lg\:float-end{float:inline-end}.lg\:float-none{float:none}.lg\:object-fit-contain{object-fit:contain}.lg\:object-fit-cover{object-fit:cover}.lg\:object-fit-fill{object-fit:fill}.lg\:object-fit-scale{object-fit:scale-down}.lg\:object-fit-none{object-fit:none}.lg\:d-inline{display:inline}.lg\:d-inline-block{display:inline-block}.lg\:d-block{display:block}.lg\:d-grid{display:grid}.lg\:d-inline-grid{display:inline-grid}.lg\:d-table{display:table}.lg\:d-table-row{display:table-row}.lg\:d-table-cell{display:table-cell}.lg\:d-flex{display:flex}.lg\:d-inline-flex{display:inline-flex}.lg\:d-contents{display:contents}.lg\:d-flow-root{display:flow-root}.lg\:d-none{display:none}.lg\:flex-fill{flex:auto}.lg\:flex-row{flex-direction:row}.lg\:flex-column{flex-direction:column}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:flex-column-reverse{flex-direction:column-reverse}.lg\:flex-grow-0{flex-grow:0}.lg\:flex-grow-1{flex-grow:1}.lg\:flex-shrink-0{flex-shrink:0}.lg\:flex-shrink-1{flex-shrink:1}.lg\:flex-wrap{flex-wrap:wrap}.lg\:flex-nowrap{flex-wrap:nowrap}.lg\:flex-wrap-reverse{flex-wrap:wrap-reverse}.lg\:justify-content-start{justify-content:flex-start}.lg\:justify-content-end{justify-content:flex-end}.lg\:justify-content-center{justify-content:center}.lg\:justify-content-between{justify-content:space-between}.lg\:justify-content-around{justify-content:space-around}.lg\:justify-content-evenly{justify-content:space-evenly}.lg\:justify-items-start{justify-items:start}.lg\:justify-items-end{justify-items:end}.lg\:justify-items-center{justify-items:center}.lg\:justify-items-stretch{justify-items:stretch}.lg\:justify-self-start{justify-self:start}.lg\:justify-self-end{justify-self:end}.lg\:justify-self-center{justify-self:center}.lg\:align-items-start{align-items:flex-start}.lg\:align-items-end{align-items:flex-end}.lg\:align-items-center{align-items:center}.lg\:align-items-baseline{align-items:baseline}.lg\:align-items-stretch{align-items:stretch}.lg\:align-content-start{align-content:flex-start}.lg\:align-content-end{align-content:flex-end}.lg\:align-content-center{align-content:center}.lg\:align-content-between{align-content:space-between}.lg\:align-content-around{align-content:space-around}.lg\:align-content-stretch{align-content:stretch}.lg\:align-self-auto{align-self:auto}.lg\:align-self-start{align-self:flex-start}.lg\:align-self-end{align-self:flex-end}.lg\:align-self-center{align-self:center}.lg\:align-self-baseline{align-self:baseline}.lg\:align-self-stretch{align-self:stretch}.lg\:place-items-start{place-items:start}.lg\:place-items-end{place-items:end}.lg\:place-items-center{place-items:center}.lg\:place-items-stretch{place-items:stretch stretch}.lg\:grid-cols-1{grid-template-columns:1fr}.lg\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.lg\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.lg\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.lg\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.lg\:grid-cols-fill{grid-column:1/-1}.lg\:grid-auto-flow-row{grid-auto-flow:row}.lg\:grid-auto-flow-column{grid-auto-flow:column}.lg\:grid-auto-flow-dense{grid-auto-flow:dense}.lg\:order-first{order:-1}.lg\:order-0{order:0}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:order-3{order:3}.lg\:order-4{order:4}.lg\:order-5{order:5}.lg\:order-last{order:6}.lg\:m-0{margin:0}.lg\:m-1{margin:.25rem}.lg\:m-2{margin:.5rem}.lg\:m-3{margin:.75rem}.lg\:m-4{margin:1rem}.lg\:m-5{margin:1.25rem}.lg\:m-6{margin:1.5rem}.lg\:m-7{margin:2rem}.lg\:m-8{margin:2.5rem}.lg\:m-9{margin:3rem}.lg\:m-auto{margin:auto}.lg\:mx-0{margin-inline:0}.lg\:mx-1{margin-inline:.25rem}.lg\:mx-2{margin-inline:.5rem}.lg\:mx-3{margin-inline:.75rem}.lg\:mx-4{margin-inline:1rem}.lg\:mx-5{margin-inline:1.25rem}.lg\:mx-6{margin-inline:1.5rem}.lg\:mx-7{margin-inline:2rem}.lg\:mx-8{margin-inline:2.5rem}.lg\:mx-9{margin-inline:3rem}.lg\:mx-auto{margin-inline:auto}.lg\:my-0{margin-block:0}.lg\:my-1{margin-block:.25rem}.lg\:my-2{margin-block:.5rem}.lg\:my-3{margin-block:.75rem}.lg\:my-4{margin-block:1rem}.lg\:my-5{margin-block:1.25rem}.lg\:my-6{margin-block:1.5rem}.lg\:my-7{margin-block:2rem}.lg\:my-8{margin-block:2.5rem}.lg\:my-9{margin-block:3rem}.lg\:my-auto{margin-block:auto}.lg\:mt-0{margin-block-start:0}.lg\:mt-1{margin-block-start:.25rem}.lg\:mt-2{margin-block-start:.5rem}.lg\:mt-3{margin-block-start:.75rem}.lg\:mt-4{margin-block-start:1rem}.lg\:mt-5{margin-block-start:1.25rem}.lg\:mt-6{margin-block-start:1.5rem}.lg\:mt-7{margin-block-start:2rem}.lg\:mt-8{margin-block-start:2.5rem}.lg\:mt-9{margin-block-start:3rem}.lg\:mt-auto{margin-block-start:auto}.lg\:me-0{margin-inline-end:0}.lg\:me-1{margin-inline-end:.25rem}.lg\:me-2{margin-inline-end:.5rem}.lg\:me-3{margin-inline-end:.75rem}.lg\:me-4{margin-inline-end:1rem}.lg\:me-5{margin-inline-end:1.25rem}.lg\:me-6{margin-inline-end:1.5rem}.lg\:me-7{margin-inline-end:2rem}.lg\:me-8{margin-inline-end:2.5rem}.lg\:me-9{margin-inline-end:3rem}.lg\:me--1{margin-inline-end:-.25rem}.lg\:me--2{margin-inline-end:-.5rem}.lg\:me-auto{margin-inline-end:auto}.lg\:mb-0{margin-block-end:0}.lg\:mb-1{margin-block-end:.25rem}.lg\:mb-2{margin-block-end:.5rem}.lg\:mb-3{margin-block-end:.75rem}.lg\:mb-4{margin-block-end:1rem}.lg\:mb-5{margin-block-end:1.25rem}.lg\:mb-6{margin-block-end:1.5rem}.lg\:mb-7{margin-block-end:2rem}.lg\:mb-8{margin-block-end:2.5rem}.lg\:mb-9{margin-block-end:3rem}.lg\:mb-auto{margin-block-end:auto}.lg\:ms-0{margin-inline-start:0}.lg\:ms-1{margin-inline-start:.25rem}.lg\:ms-2{margin-inline-start:.5rem}.lg\:ms-3{margin-inline-start:.75rem}.lg\:ms-4{margin-inline-start:1rem}.lg\:ms-5{margin-inline-start:1.25rem}.lg\:ms-6{margin-inline-start:1.5rem}.lg\:ms-7{margin-inline-start:2rem}.lg\:ms-8{margin-inline-start:2.5rem}.lg\:ms-9{margin-inline-start:3rem}.lg\:ms--1{margin-inline-start:-.25rem}.lg\:ms--2{margin-inline-start:-.5rem}.lg\:ms-auto{margin-inline-start:auto}.lg\:p-0{padding:0}.lg\:p-1{padding:.25rem}.lg\:p-2{padding:.5rem}.lg\:p-3{padding:.75rem}.lg\:p-4{padding:1rem}.lg\:p-5{padding:1.25rem}.lg\:p-6{padding:1.5rem}.lg\:p-7{padding:2rem}.lg\:p-8{padding:2.5rem}.lg\:p-9{padding:3rem}.lg\:px-0{padding-inline:0}.lg\:px-1{padding-inline:.25rem}.lg\:px-2{padding-inline:.5rem}.lg\:px-3{padding-inline:.75rem}.lg\:px-4{padding-inline:1rem}.lg\:px-5{padding-inline:1.25rem}.lg\:px-6{padding-inline:1.5rem}.lg\:px-7{padding-inline:2rem}.lg\:px-8{padding-inline:2.5rem}.lg\:px-9{padding-inline:3rem}.lg\:py-0{padding-block:0}.lg\:py-1{padding-block:.25rem}.lg\:py-2{padding-block:.5rem}.lg\:py-3{padding-block:.75rem}.lg\:py-4{padding-block:1rem}.lg\:py-5{padding-block:1.25rem}.lg\:py-6{padding-block:1.5rem}.lg\:py-7{padding-block:2rem}.lg\:py-8{padding-block:2.5rem}.lg\:py-9{padding-block:3rem}.lg\:pt-0{padding-block-start:0}.lg\:pt-1{padding-block-start:.25rem}.lg\:pt-2{padding-block-start:.5rem}.lg\:pt-3{padding-block-start:.75rem}.lg\:pt-4{padding-block-start:1rem}.lg\:pt-5{padding-block-start:1.25rem}.lg\:pt-6{padding-block-start:1.5rem}.lg\:pt-7{padding-block-start:2rem}.lg\:pt-8{padding-block-start:2.5rem}.lg\:pt-9{padding-block-start:3rem}.lg\:pe-0{padding-inline-end:0}.lg\:pe-1{padding-inline-end:.25rem}.lg\:pe-2{padding-inline-end:.5rem}.lg\:pe-3{padding-inline-end:.75rem}.lg\:pe-4{padding-inline-end:1rem}.lg\:pe-5{padding-inline-end:1.25rem}.lg\:pe-6{padding-inline-end:1.5rem}.lg\:pe-7{padding-inline-end:2rem}.lg\:pe-8{padding-inline-end:2.5rem}.lg\:pe-9{padding-inline-end:3rem}.lg\:pb-0{padding-block-end:0}.lg\:pb-1{padding-block-end:.25rem}.lg\:pb-2{padding-block-end:.5rem}.lg\:pb-3{padding-block-end:.75rem}.lg\:pb-4{padding-block-end:1rem}.lg\:pb-5{padding-block-end:1.25rem}.lg\:pb-6{padding-block-end:1.5rem}.lg\:pb-7{padding-block-end:2rem}.lg\:pb-8{padding-block-end:2.5rem}.lg\:pb-9{padding-block-end:3rem}.lg\:ps-0{padding-inline-start:0}.lg\:ps-1{padding-inline-start:.25rem}.lg\:ps-2{padding-inline-start:.5rem}.lg\:ps-3{padding-inline-start:.75rem}.lg\:ps-4{padding-inline-start:1rem}.lg\:ps-5{padding-inline-start:1.25rem}.lg\:ps-6{padding-inline-start:1.5rem}.lg\:ps-7{padding-inline-start:2rem}.lg\:ps-8{padding-inline-start:2.5rem}.lg\:ps-9{padding-inline-start:3rem}.lg\:gap-0{gap:0}.lg\:gap-1{gap:.25rem}.lg\:gap-2{gap:.5rem}.lg\:gap-3{gap:.75rem}.lg\:gap-4{gap:1rem}.lg\:gap-5{gap:1.25rem}.lg\:gap-6{gap:1.5rem}.lg\:gap-7{gap:2rem}.lg\:gap-8{gap:2.5rem}.lg\:gap-9{gap:3rem}.lg\:row-gap-0{row-gap:0}.lg\:row-gap-1{row-gap:.25rem}.lg\:row-gap-2{row-gap:.5rem}.lg\:row-gap-3{row-gap:.75rem}.lg\:row-gap-4{row-gap:1rem}.lg\:row-gap-5{row-gap:1.25rem}.lg\:row-gap-6{row-gap:1.5rem}.lg\:row-gap-7{row-gap:2rem}.lg\:row-gap-8{row-gap:2.5rem}.lg\:row-gap-9{row-gap:3rem}.lg\:column-gap-0{column-gap:0}.lg\:column-gap-1{column-gap:.25rem}.lg\:column-gap-2{column-gap:.5rem}.lg\:column-gap-3{column-gap:.75rem}.lg\:column-gap-4{column-gap:1rem}.lg\:column-gap-5{column-gap:1.25rem}.lg\:column-gap-6{column-gap:1.5rem}.lg\:column-gap-7{column-gap:2rem}.lg\:column-gap-8{column-gap:2.5rem}.lg\:column-gap-9{column-gap:3rem}:where(.lg\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.lg\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.lg\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.lg\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.lg\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.lg\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.lg\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.lg\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.lg\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.lg\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.lg\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.lg\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.lg\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.lg\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.lg\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.lg\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.lg\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.lg\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.lg\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.lg\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.lg\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.lg\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.lg\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.lg\:divide-y-0>:not(:first-child)){border-block-start:0}.lg\:text-start{text-align:start}.lg\:text-end{text-align:end}.lg\:text-center{text-align:center}}@media (width>=1280px){.xl\:float-start{float:inline-start}.xl\:float-end{float:inline-end}.xl\:float-none{float:none}.xl\:object-fit-contain{object-fit:contain}.xl\:object-fit-cover{object-fit:cover}.xl\:object-fit-fill{object-fit:fill}.xl\:object-fit-scale{object-fit:scale-down}.xl\:object-fit-none{object-fit:none}.xl\:d-inline{display:inline}.xl\:d-inline-block{display:inline-block}.xl\:d-block{display:block}.xl\:d-grid{display:grid}.xl\:d-inline-grid{display:inline-grid}.xl\:d-table{display:table}.xl\:d-table-row{display:table-row}.xl\:d-table-cell{display:table-cell}.xl\:d-flex{display:flex}.xl\:d-inline-flex{display:inline-flex}.xl\:d-contents{display:contents}.xl\:d-flow-root{display:flow-root}.xl\:d-none{display:none}.xl\:flex-fill{flex:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-column{flex-direction:column}.xl\:flex-row-reverse{flex-direction:row-reverse}.xl\:flex-column-reverse{flex-direction:column-reverse}.xl\:flex-grow-0{flex-grow:0}.xl\:flex-grow-1{flex-grow:1}.xl\:flex-shrink-0{flex-shrink:0}.xl\:flex-shrink-1{flex-shrink:1}.xl\:flex-wrap{flex-wrap:wrap}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:flex-wrap-reverse{flex-wrap:wrap-reverse}.xl\:justify-content-start{justify-content:flex-start}.xl\:justify-content-end{justify-content:flex-end}.xl\:justify-content-center{justify-content:center}.xl\:justify-content-between{justify-content:space-between}.xl\:justify-content-around{justify-content:space-around}.xl\:justify-content-evenly{justify-content:space-evenly}.xl\:justify-items-start{justify-items:start}.xl\:justify-items-end{justify-items:end}.xl\:justify-items-center{justify-items:center}.xl\:justify-items-stretch{justify-items:stretch}.xl\:justify-self-start{justify-self:start}.xl\:justify-self-end{justify-self:end}.xl\:justify-self-center{justify-self:center}.xl\:align-items-start{align-items:flex-start}.xl\:align-items-end{align-items:flex-end}.xl\:align-items-center{align-items:center}.xl\:align-items-baseline{align-items:baseline}.xl\:align-items-stretch{align-items:stretch}.xl\:align-content-start{align-content:flex-start}.xl\:align-content-end{align-content:flex-end}.xl\:align-content-center{align-content:center}.xl\:align-content-between{align-content:space-between}.xl\:align-content-around{align-content:space-around}.xl\:align-content-stretch{align-content:stretch}.xl\:align-self-auto{align-self:auto}.xl\:align-self-start{align-self:flex-start}.xl\:align-self-end{align-self:flex-end}.xl\:align-self-center{align-self:center}.xl\:align-self-baseline{align-self:baseline}.xl\:align-self-stretch{align-self:stretch}.xl\:place-items-start{place-items:start}.xl\:place-items-end{place-items:end}.xl\:place-items-center{place-items:center}.xl\:place-items-stretch{place-items:stretch stretch}.xl\:grid-cols-1{grid-template-columns:1fr}.xl\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.xl\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.xl\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.xl\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.xl\:grid-cols-fill{grid-column:1/-1}.xl\:grid-auto-flow-row{grid-auto-flow:row}.xl\:grid-auto-flow-column{grid-auto-flow:column}.xl\:grid-auto-flow-dense{grid-auto-flow:dense}.xl\:order-first{order:-1}.xl\:order-0{order:0}.xl\:order-1{order:1}.xl\:order-2{order:2}.xl\:order-3{order:3}.xl\:order-4{order:4}.xl\:order-5{order:5}.xl\:order-last{order:6}.xl\:m-0{margin:0}.xl\:m-1{margin:.25rem}.xl\:m-2{margin:.5rem}.xl\:m-3{margin:.75rem}.xl\:m-4{margin:1rem}.xl\:m-5{margin:1.25rem}.xl\:m-6{margin:1.5rem}.xl\:m-7{margin:2rem}.xl\:m-8{margin:2.5rem}.xl\:m-9{margin:3rem}.xl\:m-auto{margin:auto}.xl\:mx-0{margin-inline:0}.xl\:mx-1{margin-inline:.25rem}.xl\:mx-2{margin-inline:.5rem}.xl\:mx-3{margin-inline:.75rem}.xl\:mx-4{margin-inline:1rem}.xl\:mx-5{margin-inline:1.25rem}.xl\:mx-6{margin-inline:1.5rem}.xl\:mx-7{margin-inline:2rem}.xl\:mx-8{margin-inline:2.5rem}.xl\:mx-9{margin-inline:3rem}.xl\:mx-auto{margin-inline:auto}.xl\:my-0{margin-block:0}.xl\:my-1{margin-block:.25rem}.xl\:my-2{margin-block:.5rem}.xl\:my-3{margin-block:.75rem}.xl\:my-4{margin-block:1rem}.xl\:my-5{margin-block:1.25rem}.xl\:my-6{margin-block:1.5rem}.xl\:my-7{margin-block:2rem}.xl\:my-8{margin-block:2.5rem}.xl\:my-9{margin-block:3rem}.xl\:my-auto{margin-block:auto}.xl\:mt-0{margin-block-start:0}.xl\:mt-1{margin-block-start:.25rem}.xl\:mt-2{margin-block-start:.5rem}.xl\:mt-3{margin-block-start:.75rem}.xl\:mt-4{margin-block-start:1rem}.xl\:mt-5{margin-block-start:1.25rem}.xl\:mt-6{margin-block-start:1.5rem}.xl\:mt-7{margin-block-start:2rem}.xl\:mt-8{margin-block-start:2.5rem}.xl\:mt-9{margin-block-start:3rem}.xl\:mt-auto{margin-block-start:auto}.xl\:me-0{margin-inline-end:0}.xl\:me-1{margin-inline-end:.25rem}.xl\:me-2{margin-inline-end:.5rem}.xl\:me-3{margin-inline-end:.75rem}.xl\:me-4{margin-inline-end:1rem}.xl\:me-5{margin-inline-end:1.25rem}.xl\:me-6{margin-inline-end:1.5rem}.xl\:me-7{margin-inline-end:2rem}.xl\:me-8{margin-inline-end:2.5rem}.xl\:me-9{margin-inline-end:3rem}.xl\:me--1{margin-inline-end:-.25rem}.xl\:me--2{margin-inline-end:-.5rem}.xl\:me-auto{margin-inline-end:auto}.xl\:mb-0{margin-block-end:0}.xl\:mb-1{margin-block-end:.25rem}.xl\:mb-2{margin-block-end:.5rem}.xl\:mb-3{margin-block-end:.75rem}.xl\:mb-4{margin-block-end:1rem}.xl\:mb-5{margin-block-end:1.25rem}.xl\:mb-6{margin-block-end:1.5rem}.xl\:mb-7{margin-block-end:2rem}.xl\:mb-8{margin-block-end:2.5rem}.xl\:mb-9{margin-block-end:3rem}.xl\:mb-auto{margin-block-end:auto}.xl\:ms-0{margin-inline-start:0}.xl\:ms-1{margin-inline-start:.25rem}.xl\:ms-2{margin-inline-start:.5rem}.xl\:ms-3{margin-inline-start:.75rem}.xl\:ms-4{margin-inline-start:1rem}.xl\:ms-5{margin-inline-start:1.25rem}.xl\:ms-6{margin-inline-start:1.5rem}.xl\:ms-7{margin-inline-start:2rem}.xl\:ms-8{margin-inline-start:2.5rem}.xl\:ms-9{margin-inline-start:3rem}.xl\:ms--1{margin-inline-start:-.25rem}.xl\:ms--2{margin-inline-start:-.5rem}.xl\:ms-auto{margin-inline-start:auto}.xl\:p-0{padding:0}.xl\:p-1{padding:.25rem}.xl\:p-2{padding:.5rem}.xl\:p-3{padding:.75rem}.xl\:p-4{padding:1rem}.xl\:p-5{padding:1.25rem}.xl\:p-6{padding:1.5rem}.xl\:p-7{padding:2rem}.xl\:p-8{padding:2.5rem}.xl\:p-9{padding:3rem}.xl\:px-0{padding-inline:0}.xl\:px-1{padding-inline:.25rem}.xl\:px-2{padding-inline:.5rem}.xl\:px-3{padding-inline:.75rem}.xl\:px-4{padding-inline:1rem}.xl\:px-5{padding-inline:1.25rem}.xl\:px-6{padding-inline:1.5rem}.xl\:px-7{padding-inline:2rem}.xl\:px-8{padding-inline:2.5rem}.xl\:px-9{padding-inline:3rem}.xl\:py-0{padding-block:0}.xl\:py-1{padding-block:.25rem}.xl\:py-2{padding-block:.5rem}.xl\:py-3{padding-block:.75rem}.xl\:py-4{padding-block:1rem}.xl\:py-5{padding-block:1.25rem}.xl\:py-6{padding-block:1.5rem}.xl\:py-7{padding-block:2rem}.xl\:py-8{padding-block:2.5rem}.xl\:py-9{padding-block:3rem}.xl\:pt-0{padding-block-start:0}.xl\:pt-1{padding-block-start:.25rem}.xl\:pt-2{padding-block-start:.5rem}.xl\:pt-3{padding-block-start:.75rem}.xl\:pt-4{padding-block-start:1rem}.xl\:pt-5{padding-block-start:1.25rem}.xl\:pt-6{padding-block-start:1.5rem}.xl\:pt-7{padding-block-start:2rem}.xl\:pt-8{padding-block-start:2.5rem}.xl\:pt-9{padding-block-start:3rem}.xl\:pe-0{padding-inline-end:0}.xl\:pe-1{padding-inline-end:.25rem}.xl\:pe-2{padding-inline-end:.5rem}.xl\:pe-3{padding-inline-end:.75rem}.xl\:pe-4{padding-inline-end:1rem}.xl\:pe-5{padding-inline-end:1.25rem}.xl\:pe-6{padding-inline-end:1.5rem}.xl\:pe-7{padding-inline-end:2rem}.xl\:pe-8{padding-inline-end:2.5rem}.xl\:pe-9{padding-inline-end:3rem}.xl\:pb-0{padding-block-end:0}.xl\:pb-1{padding-block-end:.25rem}.xl\:pb-2{padding-block-end:.5rem}.xl\:pb-3{padding-block-end:.75rem}.xl\:pb-4{padding-block-end:1rem}.xl\:pb-5{padding-block-end:1.25rem}.xl\:pb-6{padding-block-end:1.5rem}.xl\:pb-7{padding-block-end:2rem}.xl\:pb-8{padding-block-end:2.5rem}.xl\:pb-9{padding-block-end:3rem}.xl\:ps-0{padding-inline-start:0}.xl\:ps-1{padding-inline-start:.25rem}.xl\:ps-2{padding-inline-start:.5rem}.xl\:ps-3{padding-inline-start:.75rem}.xl\:ps-4{padding-inline-start:1rem}.xl\:ps-5{padding-inline-start:1.25rem}.xl\:ps-6{padding-inline-start:1.5rem}.xl\:ps-7{padding-inline-start:2rem}.xl\:ps-8{padding-inline-start:2.5rem}.xl\:ps-9{padding-inline-start:3rem}.xl\:gap-0{gap:0}.xl\:gap-1{gap:.25rem}.xl\:gap-2{gap:.5rem}.xl\:gap-3{gap:.75rem}.xl\:gap-4{gap:1rem}.xl\:gap-5{gap:1.25rem}.xl\:gap-6{gap:1.5rem}.xl\:gap-7{gap:2rem}.xl\:gap-8{gap:2.5rem}.xl\:gap-9{gap:3rem}.xl\:row-gap-0{row-gap:0}.xl\:row-gap-1{row-gap:.25rem}.xl\:row-gap-2{row-gap:.5rem}.xl\:row-gap-3{row-gap:.75rem}.xl\:row-gap-4{row-gap:1rem}.xl\:row-gap-5{row-gap:1.25rem}.xl\:row-gap-6{row-gap:1.5rem}.xl\:row-gap-7{row-gap:2rem}.xl\:row-gap-8{row-gap:2.5rem}.xl\:row-gap-9{row-gap:3rem}.xl\:column-gap-0{column-gap:0}.xl\:column-gap-1{column-gap:.25rem}.xl\:column-gap-2{column-gap:.5rem}.xl\:column-gap-3{column-gap:.75rem}.xl\:column-gap-4{column-gap:1rem}.xl\:column-gap-5{column-gap:1.25rem}.xl\:column-gap-6{column-gap:1.5rem}.xl\:column-gap-7{column-gap:2rem}.xl\:column-gap-8{column-gap:2.5rem}.xl\:column-gap-9{column-gap:3rem}:where(.xl\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.xl\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.xl\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.xl\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.xl\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.xl\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.xl\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.xl\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.xl\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.xl\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.xl\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.xl\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.xl\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.xl\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.xl\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.xl\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.xl\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.xl\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.xl\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.xl\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.xl\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.xl\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.xl\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.xl\:divide-y-0>:not(:first-child)){border-block-start:0}.xl\:text-start{text-align:start}.xl\:text-end{text-align:end}.xl\:text-center{text-align:center}}@media (width>=1536px){.\32 xl\:float-start{float:inline-start}.\32 xl\:float-end{float:inline-end}.\32 xl\:float-none{float:none}.\32 xl\:object-fit-contain{object-fit:contain}.\32 xl\:object-fit-cover{object-fit:cover}.\32 xl\:object-fit-fill{object-fit:fill}.\32 xl\:object-fit-scale{object-fit:scale-down}.\32 xl\:object-fit-none{object-fit:none}.\32 xl\:d-inline{display:inline}.\32 xl\:d-inline-block{display:inline-block}.\32 xl\:d-block{display:block}.\32 xl\:d-grid{display:grid}.\32 xl\:d-inline-grid{display:inline-grid}.\32 xl\:d-table{display:table}.\32 xl\:d-table-row{display:table-row}.\32 xl\:d-table-cell{display:table-cell}.\32 xl\:d-flex{display:flex}.\32 xl\:d-inline-flex{display:inline-flex}.\32 xl\:d-contents{display:contents}.\32 xl\:d-flow-root{display:flow-root}.\32 xl\:d-none{display:none}.\32 xl\:flex-fill{flex:auto}.\32 xl\:flex-row{flex-direction:row}.\32 xl\:flex-column{flex-direction:column}.\32 xl\:flex-row-reverse{flex-direction:row-reverse}.\32 xl\:flex-column-reverse{flex-direction:column-reverse}.\32 xl\:flex-grow-0{flex-grow:0}.\32 xl\:flex-grow-1{flex-grow:1}.\32 xl\:flex-shrink-0{flex-shrink:0}.\32 xl\:flex-shrink-1{flex-shrink:1}.\32 xl\:flex-wrap{flex-wrap:wrap}.\32 xl\:flex-nowrap{flex-wrap:nowrap}.\32 xl\:flex-wrap-reverse{flex-wrap:wrap-reverse}.\32 xl\:justify-content-start{justify-content:flex-start}.\32 xl\:justify-content-end{justify-content:flex-end}.\32 xl\:justify-content-center{justify-content:center}.\32 xl\:justify-content-between{justify-content:space-between}.\32 xl\:justify-content-around{justify-content:space-around}.\32 xl\:justify-content-evenly{justify-content:space-evenly}.\32 xl\:justify-items-start{justify-items:start}.\32 xl\:justify-items-end{justify-items:end}.\32 xl\:justify-items-center{justify-items:center}.\32 xl\:justify-items-stretch{justify-items:stretch}.\32 xl\:justify-self-start{justify-self:start}.\32 xl\:justify-self-end{justify-self:end}.\32 xl\:justify-self-center{justify-self:center}.\32 xl\:align-items-start{align-items:flex-start}.\32 xl\:align-items-end{align-items:flex-end}.\32 xl\:align-items-center{align-items:center}.\32 xl\:align-items-baseline{align-items:baseline}.\32 xl\:align-items-stretch{align-items:stretch}.\32 xl\:align-content-start{align-content:flex-start}.\32 xl\:align-content-end{align-content:flex-end}.\32 xl\:align-content-center{align-content:center}.\32 xl\:align-content-between{align-content:space-between}.\32 xl\:align-content-around{align-content:space-around}.\32 xl\:align-content-stretch{align-content:stretch}.\32 xl\:align-self-auto{align-self:auto}.\32 xl\:align-self-start{align-self:flex-start}.\32 xl\:align-self-end{align-self:flex-end}.\32 xl\:align-self-center{align-self:center}.\32 xl\:align-self-baseline{align-self:baseline}.\32 xl\:align-self-stretch{align-self:stretch}.\32 xl\:place-items-start{place-items:start}.\32 xl\:place-items-end{place-items:end}.\32 xl\:place-items-center{place-items:center}.\32 xl\:place-items-stretch{place-items:stretch stretch}.\32 xl\:grid-cols-1{grid-template-columns:1fr}.\32 xl\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.\32 xl\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.\32 xl\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.\32 xl\:grid-cols-fill{grid-column:1/-1}.\32 xl\:grid-auto-flow-row{grid-auto-flow:row}.\32 xl\:grid-auto-flow-column{grid-auto-flow:column}.\32 xl\:grid-auto-flow-dense{grid-auto-flow:dense}.\32 xl\:order-first{order:-1}.\32 xl\:order-0{order:0}.\32 xl\:order-1{order:1}.\32 xl\:order-2{order:2}.\32 xl\:order-3{order:3}.\32 xl\:order-4{order:4}.\32 xl\:order-5{order:5}.\32 xl\:order-last{order:6}.\32 xl\:m-0{margin:0}.\32 xl\:m-1{margin:.25rem}.\32 xl\:m-2{margin:.5rem}.\32 xl\:m-3{margin:.75rem}.\32 xl\:m-4{margin:1rem}.\32 xl\:m-5{margin:1.25rem}.\32 xl\:m-6{margin:1.5rem}.\32 xl\:m-7{margin:2rem}.\32 xl\:m-8{margin:2.5rem}.\32 xl\:m-9{margin:3rem}.\32 xl\:m-auto{margin:auto}.\32 xl\:mx-0{margin-inline:0}.\32 xl\:mx-1{margin-inline:.25rem}.\32 xl\:mx-2{margin-inline:.5rem}.\32 xl\:mx-3{margin-inline:.75rem}.\32 xl\:mx-4{margin-inline:1rem}.\32 xl\:mx-5{margin-inline:1.25rem}.\32 xl\:mx-6{margin-inline:1.5rem}.\32 xl\:mx-7{margin-inline:2rem}.\32 xl\:mx-8{margin-inline:2.5rem}.\32 xl\:mx-9{margin-inline:3rem}.\32 xl\:mx-auto{margin-inline:auto}.\32 xl\:my-0{margin-block:0}.\32 xl\:my-1{margin-block:.25rem}.\32 xl\:my-2{margin-block:.5rem}.\32 xl\:my-3{margin-block:.75rem}.\32 xl\:my-4{margin-block:1rem}.\32 xl\:my-5{margin-block:1.25rem}.\32 xl\:my-6{margin-block:1.5rem}.\32 xl\:my-7{margin-block:2rem}.\32 xl\:my-8{margin-block:2.5rem}.\32 xl\:my-9{margin-block:3rem}.\32 xl\:my-auto{margin-block:auto}.\32 xl\:mt-0{margin-block-start:0}.\32 xl\:mt-1{margin-block-start:.25rem}.\32 xl\:mt-2{margin-block-start:.5rem}.\32 xl\:mt-3{margin-block-start:.75rem}.\32 xl\:mt-4{margin-block-start:1rem}.\32 xl\:mt-5{margin-block-start:1.25rem}.\32 xl\:mt-6{margin-block-start:1.5rem}.\32 xl\:mt-7{margin-block-start:2rem}.\32 xl\:mt-8{margin-block-start:2.5rem}.\32 xl\:mt-9{margin-block-start:3rem}.\32 xl\:mt-auto{margin-block-start:auto}.\32 xl\:me-0{margin-inline-end:0}.\32 xl\:me-1{margin-inline-end:.25rem}.\32 xl\:me-2{margin-inline-end:.5rem}.\32 xl\:me-3{margin-inline-end:.75rem}.\32 xl\:me-4{margin-inline-end:1rem}.\32 xl\:me-5{margin-inline-end:1.25rem}.\32 xl\:me-6{margin-inline-end:1.5rem}.\32 xl\:me-7{margin-inline-end:2rem}.\32 xl\:me-8{margin-inline-end:2.5rem}.\32 xl\:me-9{margin-inline-end:3rem}.\32 xl\:me--1{margin-inline-end:-.25rem}.\32 xl\:me--2{margin-inline-end:-.5rem}.\32 xl\:me-auto{margin-inline-end:auto}.\32 xl\:mb-0{margin-block-end:0}.\32 xl\:mb-1{margin-block-end:.25rem}.\32 xl\:mb-2{margin-block-end:.5rem}.\32 xl\:mb-3{margin-block-end:.75rem}.\32 xl\:mb-4{margin-block-end:1rem}.\32 xl\:mb-5{margin-block-end:1.25rem}.\32 xl\:mb-6{margin-block-end:1.5rem}.\32 xl\:mb-7{margin-block-end:2rem}.\32 xl\:mb-8{margin-block-end:2.5rem}.\32 xl\:mb-9{margin-block-end:3rem}.\32 xl\:mb-auto{margin-block-end:auto}.\32 xl\:ms-0{margin-inline-start:0}.\32 xl\:ms-1{margin-inline-start:.25rem}.\32 xl\:ms-2{margin-inline-start:.5rem}.\32 xl\:ms-3{margin-inline-start:.75rem}.\32 xl\:ms-4{margin-inline-start:1rem}.\32 xl\:ms-5{margin-inline-start:1.25rem}.\32 xl\:ms-6{margin-inline-start:1.5rem}.\32 xl\:ms-7{margin-inline-start:2rem}.\32 xl\:ms-8{margin-inline-start:2.5rem}.\32 xl\:ms-9{margin-inline-start:3rem}.\32 xl\:ms--1{margin-inline-start:-.25rem}.\32 xl\:ms--2{margin-inline-start:-.5rem}.\32 xl\:ms-auto{margin-inline-start:auto}.\32 xl\:p-0{padding:0}.\32 xl\:p-1{padding:.25rem}.\32 xl\:p-2{padding:.5rem}.\32 xl\:p-3{padding:.75rem}.\32 xl\:p-4{padding:1rem}.\32 xl\:p-5{padding:1.25rem}.\32 xl\:p-6{padding:1.5rem}.\32 xl\:p-7{padding:2rem}.\32 xl\:p-8{padding:2.5rem}.\32 xl\:p-9{padding:3rem}.\32 xl\:px-0{padding-inline:0}.\32 xl\:px-1{padding-inline:.25rem}.\32 xl\:px-2{padding-inline:.5rem}.\32 xl\:px-3{padding-inline:.75rem}.\32 xl\:px-4{padding-inline:1rem}.\32 xl\:px-5{padding-inline:1.25rem}.\32 xl\:px-6{padding-inline:1.5rem}.\32 xl\:px-7{padding-inline:2rem}.\32 xl\:px-8{padding-inline:2.5rem}.\32 xl\:px-9{padding-inline:3rem}.\32 xl\:py-0{padding-block:0}.\32 xl\:py-1{padding-block:.25rem}.\32 xl\:py-2{padding-block:.5rem}.\32 xl\:py-3{padding-block:.75rem}.\32 xl\:py-4{padding-block:1rem}.\32 xl\:py-5{padding-block:1.25rem}.\32 xl\:py-6{padding-block:1.5rem}.\32 xl\:py-7{padding-block:2rem}.\32 xl\:py-8{padding-block:2.5rem}.\32 xl\:py-9{padding-block:3rem}.\32 xl\:pt-0{padding-block-start:0}.\32 xl\:pt-1{padding-block-start:.25rem}.\32 xl\:pt-2{padding-block-start:.5rem}.\32 xl\:pt-3{padding-block-start:.75rem}.\32 xl\:pt-4{padding-block-start:1rem}.\32 xl\:pt-5{padding-block-start:1.25rem}.\32 xl\:pt-6{padding-block-start:1.5rem}.\32 xl\:pt-7{padding-block-start:2rem}.\32 xl\:pt-8{padding-block-start:2.5rem}.\32 xl\:pt-9{padding-block-start:3rem}.\32 xl\:pe-0{padding-inline-end:0}.\32 xl\:pe-1{padding-inline-end:.25rem}.\32 xl\:pe-2{padding-inline-end:.5rem}.\32 xl\:pe-3{padding-inline-end:.75rem}.\32 xl\:pe-4{padding-inline-end:1rem}.\32 xl\:pe-5{padding-inline-end:1.25rem}.\32 xl\:pe-6{padding-inline-end:1.5rem}.\32 xl\:pe-7{padding-inline-end:2rem}.\32 xl\:pe-8{padding-inline-end:2.5rem}.\32 xl\:pe-9{padding-inline-end:3rem}.\32 xl\:pb-0{padding-block-end:0}.\32 xl\:pb-1{padding-block-end:.25rem}.\32 xl\:pb-2{padding-block-end:.5rem}.\32 xl\:pb-3{padding-block-end:.75rem}.\32 xl\:pb-4{padding-block-end:1rem}.\32 xl\:pb-5{padding-block-end:1.25rem}.\32 xl\:pb-6{padding-block-end:1.5rem}.\32 xl\:pb-7{padding-block-end:2rem}.\32 xl\:pb-8{padding-block-end:2.5rem}.\32 xl\:pb-9{padding-block-end:3rem}.\32 xl\:ps-0{padding-inline-start:0}.\32 xl\:ps-1{padding-inline-start:.25rem}.\32 xl\:ps-2{padding-inline-start:.5rem}.\32 xl\:ps-3{padding-inline-start:.75rem}.\32 xl\:ps-4{padding-inline-start:1rem}.\32 xl\:ps-5{padding-inline-start:1.25rem}.\32 xl\:ps-6{padding-inline-start:1.5rem}.\32 xl\:ps-7{padding-inline-start:2rem}.\32 xl\:ps-8{padding-inline-start:2.5rem}.\32 xl\:ps-9{padding-inline-start:3rem}.\32 xl\:gap-0{gap:0}.\32 xl\:gap-1{gap:.25rem}.\32 xl\:gap-2{gap:.5rem}.\32 xl\:gap-3{gap:.75rem}.\32 xl\:gap-4{gap:1rem}.\32 xl\:gap-5{gap:1.25rem}.\32 xl\:gap-6{gap:1.5rem}.\32 xl\:gap-7{gap:2rem}.\32 xl\:gap-8{gap:2.5rem}.\32 xl\:gap-9{gap:3rem}.\32 xl\:row-gap-0{row-gap:0}.\32 xl\:row-gap-1{row-gap:.25rem}.\32 xl\:row-gap-2{row-gap:.5rem}.\32 xl\:row-gap-3{row-gap:.75rem}.\32 xl\:row-gap-4{row-gap:1rem}.\32 xl\:row-gap-5{row-gap:1.25rem}.\32 xl\:row-gap-6{row-gap:1.5rem}.\32 xl\:row-gap-7{row-gap:2rem}.\32 xl\:row-gap-8{row-gap:2.5rem}.\32 xl\:row-gap-9{row-gap:3rem}.\32 xl\:column-gap-0{column-gap:0}.\32 xl\:column-gap-1{column-gap:.25rem}.\32 xl\:column-gap-2{column-gap:.5rem}.\32 xl\:column-gap-3{column-gap:.75rem}.\32 xl\:column-gap-4{column-gap:1rem}.\32 xl\:column-gap-5{column-gap:1.25rem}.\32 xl\:column-gap-6{column-gap:1.5rem}.\32 xl\:column-gap-7{column-gap:2rem}.\32 xl\:column-gap-8{column-gap:2.5rem}.\32 xl\:column-gap-9{column-gap:3rem}:where(.\32 xl\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.\32 xl\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.\32 xl\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.\32 xl\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.\32 xl\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.\32 xl\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.\32 xl\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.\32 xl\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.\32 xl\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.\32 xl\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.\32 xl\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.\32 xl\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.\32 xl\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.\32 xl\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.\32 xl\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.\32 xl\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.\32 xl\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.\32 xl\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.\32 xl\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.\32 xl\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.\32 xl\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.\32 xl\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.\32 xl\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.\32 xl\:divide-y-0>:not(:first-child)){border-block-start:0}.\32 xl\:text-start{text-align:start}.\32 xl\:text-end{text-align:end}.\32 xl\:text-center{text-align:center}}}:root{--bs-black:#000;--bs-white:#fff;--bs-gradient:linear-gradient(180deg, color-mix(var(--bs-white) 15%, transparent), color-mix(var(--bs-white) 0%, transparent));--bs-font-weight-lighter:lighter;--bs-font-weight-light:300;--bs-font-weight-normal:400;--bs-font-weight-medium:500;--bs-font-weight-semibold:600;--bs-font-weight-bold:700;--bs-font-weight-bolder:bolder;--bs-body-font-family:system-ui;--bs-body-font-size:var(--bs-font-size-base);--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-heading-color:inherit;--bs-hr-border-color:var(--bs-border-color);--bs-link-color:light-dark(var(--bs-primary-base),var(--bs-primary-fg));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch, var(--bs-link-color) 90%, #000);--bs-font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Mono", Consolas, "Liberation Mono", monospace;--bs-code-font-size:95%;--bs-code-color:var(--bs-fg-2);--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch, var(--bs-fg-body) 15%, transparent);--bs-box-shadow-xs:0 .0625rem .1875rem #00000013;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-spacer:1rem;--bs-focus-ring-width:3px;--bs-focus-ring-offset:1px;--bs-focus-ring-color:var(--bs-primary-focus-ring);--bs-focus-ring:var(--bs-focus-ring-width) solid var(--bs-focus-ring-color);--bs-control-checked-bg:var(--bs-primary-base);--bs-control-checked-border-color:var(--bs-control-checked-bg);--bs-control-active-bg:var(--bs-primary-base);--bs-control-active-border-color:var(--bs-control-active-bg);--bs-control-disabled-bg:var(--bs-bg-3);--bs-control-disabled-opacity:.65;--bs-btn-input-fg:var(--bs-fg-body);--bs-btn-input-bg:var(--bs-bg-body);--bs-btn-input-min-height:2.375rem;--bs-btn-input-padding-y:.375rem;--bs-btn-input-padding-x:.75rem;--bs-btn-input-font-size:var(--bs-font-size-base);--bs-btn-input-line-height:var(--bs-line-height-base);--bs-btn-input-border-radius:var(--bs-radius-5);--bs-btn-input-xs-min-height:1.5rem;--bs-btn-input-xs-padding-y:.125rem;--bs-btn-input-xs-padding-x:.5rem;--bs-btn-input-xs-font-size:var(--bs-font-size-xs);--bs-btn-input-xs-line-height:1.125;--bs-btn-input-xs-border-radius:var(--bs-radius-5);--bs-btn-input-sm-min-height:2rem;--bs-btn-input-sm-padding-y:.25rem;--bs-btn-input-sm-padding-x:.625rem;--bs-btn-input-sm-font-size:var(--bs-font-size-sm);--bs-btn-input-sm-line-height:var(--bs-line-height-sm);--bs-btn-input-sm-border-radius:var(--bs-radius-5);--bs-btn-input-lg-min-height:2.75rem;--bs-btn-input-lg-padding-y:.5rem;--bs-btn-input-lg-padding-x:1rem;--bs-btn-input-lg-font-size:var(--bs-font-size-md);--bs-btn-input-lg-line-height:var(--bs-line-height-md);--bs-btn-input-lg-border-radius:var(--bs-radius-7);--bs-font-size-xs:.75rem;--bs-line-height-xs:1.25;--bs-font-size-sm:.875rem;--bs-line-height-sm:1.5;--bs-font-size-md:1rem;--bs-line-height-md:1.5;--bs-font-size-lg:clamp(1.25rem, 1rem + .625vw, 1.5rem);--bs-line-height-lg:1.5;--bs-font-size-xl:clamp(1.5rem, 1.1rem + .75vw, 1.75rem);--bs-line-height-xl:1.42857;--bs-font-size-2xl:clamp(1.75rem, 1.3rem + 1vw, 2rem);--bs-line-height-2xl:1.33333;--bs-font-size-3xl:clamp(2rem, 1.5rem + 1.875vw, 2.5rem);--bs-line-height-3xl:1.2;--bs-font-size-4xl:clamp(2.25rem, 1.75rem + 2.5vw, 3rem);--bs-line-height-4xl:1.1;--bs-font-size-5xl:clamp(3rem, 2rem + 5vw, 4rem);--bs-line-height-5xl:1.1;--bs-font-size-6xl:clamp(3.75rem, 2.5rem + 6.25vw, 5rem);--bs-line-height-6xl:1;--bs-primary-base:var(--bs-blue-500);--bs-primary-fg:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-fg-emphasis:light-dark(var(--bs-blue-800),var(--bs-blue-200));--bs-primary-bg:var(--bs-blue-500);--bs-primary-bg-subtle:light-dark(var(--bs-blue-100),var(--bs-blue-900));--bs-primary-bg-muted:light-dark(var(--bs-blue-200),var(--bs-blue-800));--bs-primary-border:light-dark(var(--bs-blue-300),var(--bs-blue-600));--bs-primary-focus-ring:light-dark(color-mix(in oklch, var(--bs-blue-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-blue-500) 75%, var(--bs-bg-body)));--bs-primary-contrast:var(--bs-white);--bs-accent-base:var(--bs-indigo-500);--bs-accent-fg:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)));--bs-accent-fg-emphasis:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));--bs-accent-bg:var(--bs-indigo-500);--bs-accent-bg-subtle:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));--bs-accent-bg-muted:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));--bs-accent-border:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));--bs-accent-focus-ring:light-dark(color-mix(in oklch, var(--bs-indigo-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-indigo-500) 75%, var(--bs-bg-body)));--bs-accent-contrast:var(--bs-white);--bs-success-base:var(--bs-green-500);--bs-success-fg:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-fg-emphasis:light-dark(var(--bs-green-800),var(--bs-green-300));--bs-success-bg:var(--bs-green-500);--bs-success-bg-subtle:light-dark(var(--bs-green-100),var(--bs-green-900));--bs-success-bg-muted:light-dark(var(--bs-green-200),var(--bs-green-800));--bs-success-border:light-dark(var(--bs-green-300),var(--bs-green-600));--bs-success-focus-ring:light-dark(color-mix(in oklch, var(--bs-green-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-green-500) 75%, var(--bs-bg-body)));--bs-success-contrast:var(--bs-white);--bs-danger-base:var(--bs-red-500);--bs-danger-fg:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-fg-emphasis:light-dark(var(--bs-red-800),var(--bs-red-300));--bs-danger-bg:var(--bs-red-500);--bs-danger-bg-subtle:light-dark(var(--bs-red-100),var(--bs-red-900));--bs-danger-bg-muted:light-dark(var(--bs-red-200),var(--bs-red-800));--bs-danger-border:light-dark(var(--bs-red-300),var(--bs-red-600));--bs-danger-focus-ring:light-dark(color-mix(in oklch, var(--bs-red-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-red-500) 75%, var(--bs-bg-body)));--bs-danger-contrast:var(--bs-white);--bs-warning-base:var(--bs-yellow-500);--bs-warning-fg:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-fg-emphasis:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));--bs-warning-bg:var(--bs-yellow-500);--bs-warning-bg-subtle:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));--bs-warning-bg-muted:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));--bs-warning-border:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));--bs-warning-focus-ring:light-dark(color-mix(in oklch, var(--bs-yellow-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-yellow-400) 85%, var(--bs-bg-body)));--bs-warning-contrast:var(--bs-gray-900);--bs-info-base:var(--bs-cyan-500);--bs-info-fg:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-fg-emphasis:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));--bs-info-bg:var(--bs-cyan-500);--bs-info-bg-subtle:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));--bs-info-bg-muted:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));--bs-info-border:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));--bs-info-focus-ring:light-dark(color-mix(in oklch, var(--bs-cyan-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-cyan-500) 75%, var(--bs-bg-body)));--bs-info-contrast:var(--bs-gray-900);--bs-inverse-base:var(--bs-gray-900);--bs-inverse-fg:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-fg-emphasis:light-dark(var(--bs-gray-975),var(--bs-white));--bs-inverse-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));--bs-inverse-bg-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-inverse-bg-muted:light-dark(var(--bs-gray-200),var(--bs-gray-300));--bs-inverse-border:light-dark(var(--bs-gray-400),var(--bs-gray-100));--bs-inverse-focus-ring:color-mix(in oklch, light-dark(var(--bs-gray-900),var(--bs-gray-100)) 50%, var(--bs-bg-body));--bs-inverse-contrast:light-dark(var(--bs-white),var(--bs-gray-900));--bs-secondary-base:var(--bs-gray-200);--bs-secondary-fg:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-fg-emphasis:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-secondary-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));--bs-secondary-bg-subtle:light-dark(var(--bs-gray-050),var(--bs-gray-800));--bs-secondary-bg-muted:light-dark(var(--bs-gray-100),var(--bs-gray-700));--bs-secondary-border:light-dark(var(--bs-gray-300),var(--bs-gray-600));--bs-secondary-focus-ring:color-mix(in oklch, light-dark(var(--bs-gray-500),var(--bs-gray-300)) 50%, var(--bs-bg-body));--bs-secondary-contrast:light-dark(var(--bs-gray-900),var(--bs-white));--bs-bg-body:light-dark(var(--bs-white),var(--bs-gray-975));--bs-bg-1:light-dark(var(--bs-gray-025),var(--bs-gray-950));--bs-bg-2:light-dark(var(--bs-gray-050),var(--bs-gray-900));--bs-bg-3:light-dark(var(--bs-gray-100),var(--bs-gray-800));--bs-bg-4:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-bg-fg:var(--bs-fg-body);--bs-bg-white:var(--bs-white);--bs-bg-black:var(--bs-black);--bs-bg-transparent:transparent;--bs-bg-inherit:inherit;--bs-fg-body:light-dark(var(--bs-gray-900),var(--bs-gray-050));--bs-fg-1:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-fg-2:light-dark(var(--bs-gray-700),var(--bs-gray-300));--bs-fg-3:light-dark(var(--bs-gray-600),var(--bs-gray-500));--bs-fg-4:light-dark(var(--bs-gray-500),var(--bs-gray-600));--bs-fg-bg:var(--bs-bg-body);--bs-fg-white:var(--bs-white);--bs-fg-black:var(--bs-black);--bs-fg-inherit:inherit;--bs-border-bg:var(--bs-bg-body);--bs-border-body:light-dark(var(--bs-gray-300),var(--bs-gray-800));--bs-border-muted:light-dark(var(--bs-gray-200),var(--bs-gray-800));--bs-border-subtle:light-dark(color-mix(in oklch, var(--bs-gray-100), var(--bs-gray-200)),var(--bs-gray-900));--bs-border-emphasized:light-dark(var(--bs-gray-400),var(--bs-gray-600));--bs-border-white:var(--bs-white);--bs-border-black:var(--bs-black);--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px;--bs-spacer-0:0;--bs-spacer-1:.25rem;--bs-spacer-2:.5rem;--bs-spacer-3:.75rem;--bs-spacer-4:1rem;--bs-spacer-5:1.25rem;--bs-spacer-6:1.5rem;--bs-spacer-7:2rem;--bs-spacer-8:2.5rem;--bs-spacer-9:3rem;--bs-radius-0:0;--bs-radius-1:.125rem;--bs-radius-2:.1875rem;--bs-radius-3:.25rem;--bs-radius-4:.375rem;--bs-radius-5:.5rem;--bs-radius-6:.625rem;--bs-radius-7:.75rem;--bs-radius-8:1rem;--bs-radius-9:1.5rem;--bs-radius-pill:50rem;color-scheme:light dark;scrollbar-gutter:stable}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}@keyframes otp-caret-blink{0%,to{opacity:1}50%{opacity:0}}.drawer,.\32 xl\:drawer,.xl\:drawer,.lg\:drawer,.md\:drawer,.sm\:drawer{--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;--bs-drawer-backdrop-bg:color-mix(in oklch, var(--bs-bg-body) 25%, transparent);--bs-drawer-backdrop-blur:8px}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;transition:height .35s;overflow:hidden}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}
+:root{--bs-blue-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .24 240));--bs-blue-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .24 240));--bs-blue-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .24 240));--bs-blue-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .24 240));--bs-blue-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .24 240));--bs-blue-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .24 240));--bs-blue-500:oklch(60% .24 240);--bs-blue-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .24 240));--bs-blue-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .24 240));--bs-blue-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .24 240));--bs-blue-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .24 240));--bs-blue-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .24 240));--bs-blue-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .24 240));--bs-indigo-025:color-mix(in lab, var(--bs-white) 94%, oklch(56% .26 288));--bs-indigo-050:color-mix(in lab, var(--bs-white) 90%, oklch(56% .26 288));--bs-indigo-100:color-mix(in lab, var(--bs-white) 80%, oklch(56% .26 288));--bs-indigo-200:color-mix(in lab, var(--bs-white) 60%, oklch(56% .26 288));--bs-indigo-300:color-mix(in lab, var(--bs-white) 40%, oklch(56% .26 288));--bs-indigo-400:color-mix(in lab, var(--bs-white) 20%, oklch(56% .26 288));--bs-indigo-500:oklch(56% .26 288);--bs-indigo-600:color-mix(in lab, var(--bs-black) 16%, oklch(56% .26 288));--bs-indigo-700:color-mix(in lab, var(--bs-black) 32%, oklch(56% .26 288));--bs-indigo-800:color-mix(in lab, var(--bs-black) 48%, oklch(56% .26 288));--bs-indigo-900:color-mix(in lab, var(--bs-black) 64%, oklch(56% .26 288));--bs-indigo-950:color-mix(in lab, var(--bs-black) 76%, oklch(56% .26 288));--bs-indigo-975:color-mix(in lab, var(--bs-black) 88%, oklch(56% .26 288));--bs-violet-025:color-mix(in lab, var(--bs-white) 94%, oklch(56% .24 300));--bs-violet-050:color-mix(in lab, var(--bs-white) 90%, oklch(56% .24 300));--bs-violet-100:color-mix(in lab, var(--bs-white) 80%, oklch(56% .24 300));--bs-violet-200:color-mix(in lab, var(--bs-white) 60%, oklch(56% .24 300));--bs-violet-300:color-mix(in lab, var(--bs-white) 40%, oklch(56% .24 300));--bs-violet-400:color-mix(in lab, var(--bs-white) 20%, oklch(56% .24 300));--bs-violet-500:oklch(56% .24 300);--bs-violet-600:color-mix(in lab, var(--bs-black) 16%, oklch(56% .24 300));--bs-violet-700:color-mix(in lab, var(--bs-black) 32%, oklch(56% .24 300));--bs-violet-800:color-mix(in lab, var(--bs-black) 48%, oklch(56% .24 300));--bs-violet-900:color-mix(in lab, var(--bs-black) 64%, oklch(56% .24 300));--bs-violet-950:color-mix(in lab, var(--bs-black) 76%, oklch(56% .24 300));--bs-violet-975:color-mix(in lab, var(--bs-black) 88%, oklch(56% .24 300));--bs-purple-025:color-mix(in lab, var(--bs-white) 94%, oklch(56% .24 320));--bs-purple-050:color-mix(in lab, var(--bs-white) 90%, oklch(56% .24 320));--bs-purple-100:color-mix(in lab, var(--bs-white) 80%, oklch(56% .24 320));--bs-purple-200:color-mix(in lab, var(--bs-white) 60%, oklch(56% .24 320));--bs-purple-300:color-mix(in lab, var(--bs-white) 40%, oklch(56% .24 320));--bs-purple-400:color-mix(in lab, var(--bs-white) 20%, oklch(56% .24 320));--bs-purple-500:oklch(56% .24 320);--bs-purple-600:color-mix(in lab, var(--bs-black) 16%, oklch(56% .24 320));--bs-purple-700:color-mix(in lab, var(--bs-black) 32%, oklch(56% .24 320));--bs-purple-800:color-mix(in lab, var(--bs-black) 48%, oklch(56% .24 320));--bs-purple-900:color-mix(in lab, var(--bs-black) 64%, oklch(56% .24 320));--bs-purple-950:color-mix(in lab, var(--bs-black) 76%, oklch(56% .24 320));--bs-purple-975:color-mix(in lab, var(--bs-black) 88%, oklch(56% .24 320));--bs-pink-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .22 4));--bs-pink-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .22 4));--bs-pink-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .22 4));--bs-pink-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .22 4));--bs-pink-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .22 4));--bs-pink-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .22 4));--bs-pink-500:oklch(60% .22 4);--bs-pink-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .22 4));--bs-pink-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .22 4));--bs-pink-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .22 4));--bs-pink-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .22 4));--bs-pink-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .22 4));--bs-pink-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .22 4));--bs-red-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .22 20));--bs-red-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .22 20));--bs-red-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .22 20));--bs-red-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .22 20));--bs-red-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .22 20));--bs-red-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .22 20));--bs-red-500:oklch(60% .22 20);--bs-red-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .22 20));--bs-red-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .22 20));--bs-red-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .22 20));--bs-red-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .22 20));--bs-red-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .22 20));--bs-red-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .22 20));--bs-orange-025:color-mix(in lab, var(--bs-white) 94%, oklch(70% .22 52));--bs-orange-050:color-mix(in lab, var(--bs-white) 90%, oklch(70% .22 52));--bs-orange-100:color-mix(in lab, var(--bs-white) 80%, oklch(70% .22 52));--bs-orange-200:color-mix(in lab, var(--bs-white) 60%, oklch(70% .22 52));--bs-orange-300:color-mix(in lab, var(--bs-white) 40%, oklch(70% .22 52));--bs-orange-400:color-mix(in lab, var(--bs-white) 20%, oklch(70% .22 52));--bs-orange-500:oklch(70% .22 52);--bs-orange-600:color-mix(in lab, var(--bs-black) 16%, oklch(70% .22 52));--bs-orange-700:color-mix(in lab, var(--bs-black) 32%, oklch(70% .22 52));--bs-orange-800:color-mix(in lab, var(--bs-black) 48%, oklch(70% .22 52));--bs-orange-900:color-mix(in lab, var(--bs-black) 64%, oklch(70% .22 52));--bs-orange-950:color-mix(in lab, var(--bs-black) 76%, oklch(70% .22 52));--bs-orange-975:color-mix(in lab, var(--bs-black) 88%, oklch(70% .22 52));--bs-amber-025:color-mix(in lab, var(--bs-white) 94%, oklch(79% .2 78));--bs-amber-050:color-mix(in lab, var(--bs-white) 90%, oklch(79% .2 78));--bs-amber-100:color-mix(in lab, var(--bs-white) 80%, oklch(79% .2 78));--bs-amber-200:color-mix(in lab, var(--bs-white) 60%, oklch(79% .2 78));--bs-amber-300:color-mix(in lab, var(--bs-white) 40%, oklch(79% .2 78));--bs-amber-400:color-mix(in lab, var(--bs-white) 20%, oklch(79% .2 78));--bs-amber-500:oklch(79% .2 78);--bs-amber-600:color-mix(in lab, var(--bs-black) 16%, oklch(79% .2 78));--bs-amber-700:color-mix(in lab, var(--bs-black) 32%, oklch(79% .2 78));--bs-amber-800:color-mix(in lab, var(--bs-black) 48%, oklch(79% .2 78));--bs-amber-900:color-mix(in lab, var(--bs-black) 64%, oklch(79% .2 78));--bs-amber-950:color-mix(in lab, var(--bs-black) 76%, oklch(79% .2 78));--bs-amber-975:color-mix(in lab, var(--bs-black) 88%, oklch(79% .2 78));--bs-yellow-025:color-mix(in lab, var(--bs-white) 94%, oklch(88% .24 88));--bs-yellow-050:color-mix(in lab, var(--bs-white) 90%, oklch(88% .24 88));--bs-yellow-100:color-mix(in lab, var(--bs-white) 80%, oklch(88% .24 88));--bs-yellow-200:color-mix(in lab, var(--bs-white) 60%, oklch(88% .24 88));--bs-yellow-300:color-mix(in lab, var(--bs-white) 40%, oklch(88% .24 88));--bs-yellow-400:color-mix(in lab, var(--bs-white) 20%, oklch(88% .24 88));--bs-yellow-500:oklch(88% .24 88);--bs-yellow-600:color-mix(in lab, var(--bs-black) 16%, oklch(88% .24 88));--bs-yellow-700:color-mix(in lab, var(--bs-black) 32%, oklch(88% .24 88));--bs-yellow-800:color-mix(in lab, var(--bs-black) 48%, oklch(88% .24 88));--bs-yellow-900:color-mix(in lab, var(--bs-black) 64%, oklch(88% .24 88));--bs-yellow-950:color-mix(in lab, var(--bs-black) 76%, oklch(88% .24 88));--bs-yellow-975:color-mix(in lab, var(--bs-black) 88%, oklch(88% .24 88));--bs-lime-025:color-mix(in lab, var(--bs-white) 94%, oklch(65% .24 135));--bs-lime-050:color-mix(in lab, var(--bs-white) 90%, oklch(65% .24 135));--bs-lime-100:color-mix(in lab, var(--bs-white) 80%, oklch(65% .24 135));--bs-lime-200:color-mix(in lab, var(--bs-white) 60%, oklch(65% .24 135));--bs-lime-300:color-mix(in lab, var(--bs-white) 40%, oklch(65% .24 135));--bs-lime-400:color-mix(in lab, var(--bs-white) 20%, oklch(65% .24 135));--bs-lime-500:oklch(65% .24 135);--bs-lime-600:color-mix(in lab, var(--bs-black) 16%, oklch(65% .24 135));--bs-lime-700:color-mix(in lab, var(--bs-black) 32%, oklch(65% .24 135));--bs-lime-800:color-mix(in lab, var(--bs-black) 48%, oklch(65% .24 135));--bs-lime-900:color-mix(in lab, var(--bs-black) 64%, oklch(65% .24 135));--bs-lime-950:color-mix(in lab, var(--bs-black) 76%, oklch(65% .24 135));--bs-lime-975:color-mix(in lab, var(--bs-black) 88%, oklch(65% .24 135));--bs-green-025:color-mix(in lab, var(--bs-white) 94%, oklch(64% .22 160));--bs-green-050:color-mix(in lab, var(--bs-white) 90%, oklch(64% .22 160));--bs-green-100:color-mix(in lab, var(--bs-white) 80%, oklch(64% .22 160));--bs-green-200:color-mix(in lab, var(--bs-white) 60%, oklch(64% .22 160));--bs-green-300:color-mix(in lab, var(--bs-white) 40%, oklch(64% .22 160));--bs-green-400:color-mix(in lab, var(--bs-white) 20%, oklch(64% .22 160));--bs-green-500:oklch(64% .22 160);--bs-green-600:color-mix(in lab, var(--bs-black) 16%, oklch(64% .22 160));--bs-green-700:color-mix(in lab, var(--bs-black) 32%, oklch(64% .22 160));--bs-green-800:color-mix(in lab, var(--bs-black) 48%, oklch(64% .22 160));--bs-green-900:color-mix(in lab, var(--bs-black) 64%, oklch(64% .22 160));--bs-green-950:color-mix(in lab, var(--bs-black) 76%, oklch(64% .22 160));--bs-green-975:color-mix(in lab, var(--bs-black) 88%, oklch(64% .22 160));--bs-teal-025:color-mix(in lab, var(--bs-white) 94%, oklch(68% .22 190));--bs-teal-050:color-mix(in lab, var(--bs-white) 90%, oklch(68% .22 190));--bs-teal-100:color-mix(in lab, var(--bs-white) 80%, oklch(68% .22 190));--bs-teal-200:color-mix(in lab, var(--bs-white) 60%, oklch(68% .22 190));--bs-teal-300:color-mix(in lab, var(--bs-white) 40%, oklch(68% .22 190));--bs-teal-400:color-mix(in lab, var(--bs-white) 20%, oklch(68% .22 190));--bs-teal-500:oklch(68% .22 190);--bs-teal-600:color-mix(in lab, var(--bs-black) 16%, oklch(68% .22 190));--bs-teal-700:color-mix(in lab, var(--bs-black) 32%, oklch(68% .22 190));--bs-teal-800:color-mix(in lab, var(--bs-black) 48%, oklch(68% .22 190));--bs-teal-900:color-mix(in lab, var(--bs-black) 64%, oklch(68% .22 190));--bs-teal-950:color-mix(in lab, var(--bs-black) 76%, oklch(68% .22 190));--bs-teal-975:color-mix(in lab, var(--bs-black) 88%, oklch(68% .22 190));--bs-cyan-025:color-mix(in lab, var(--bs-white) 94%, oklch(69% .22 220));--bs-cyan-050:color-mix(in lab, var(--bs-white) 90%, oklch(69% .22 220));--bs-cyan-100:color-mix(in lab, var(--bs-white) 80%, oklch(69% .22 220));--bs-cyan-200:color-mix(in lab, var(--bs-white) 60%, oklch(69% .22 220));--bs-cyan-300:color-mix(in lab, var(--bs-white) 40%, oklch(69% .22 220));--bs-cyan-400:color-mix(in lab, var(--bs-white) 20%, oklch(69% .22 220));--bs-cyan-500:oklch(69% .22 220);--bs-cyan-600:color-mix(in lab, var(--bs-black) 16%, oklch(69% .22 220));--bs-cyan-700:color-mix(in lab, var(--bs-black) 32%, oklch(69% .22 220));--bs-cyan-800:color-mix(in lab, var(--bs-black) 48%, oklch(69% .22 220));--bs-cyan-900:color-mix(in lab, var(--bs-black) 64%, oklch(69% .22 220));--bs-cyan-950:color-mix(in lab, var(--bs-black) 76%, oklch(69% .22 220));--bs-cyan-975:color-mix(in lab, var(--bs-black) 88%, oklch(69% .22 220));--bs-brown-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .12 54));--bs-brown-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .12 54));--bs-brown-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .12 54));--bs-brown-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .12 54));--bs-brown-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .12 54));--bs-brown-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .12 54));--bs-brown-500:oklch(60% .12 54);--bs-brown-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .12 54));--bs-brown-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .12 54));--bs-brown-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .12 54));--bs-brown-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .12 54));--bs-brown-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .12 54));--bs-brown-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .12 54));--bs-gray-025:color-mix(in lab, var(--bs-white) 94%, oklch(60% .02 245));--bs-gray-050:color-mix(in lab, var(--bs-white) 90%, oklch(60% .02 245));--bs-gray-100:color-mix(in lab, var(--bs-white) 80%, oklch(60% .02 245));--bs-gray-200:color-mix(in lab, var(--bs-white) 60%, oklch(60% .02 245));--bs-gray-300:color-mix(in lab, var(--bs-white) 40%, oklch(60% .02 245));--bs-gray-400:color-mix(in lab, var(--bs-white) 20%, oklch(60% .02 245));--bs-gray-500:oklch(60% .02 245);--bs-gray-600:color-mix(in lab, var(--bs-black) 16%, oklch(60% .02 245));--bs-gray-700:color-mix(in lab, var(--bs-black) 32%, oklch(60% .02 245));--bs-gray-800:color-mix(in lab, var(--bs-black) 48%, oklch(60% .02 245));--bs-gray-900:color-mix(in lab, var(--bs-black) 64%, oklch(60% .02 245));--bs-gray-950:color-mix(in lab, var(--bs-black) 76%, oklch(60% .02 245));--bs-gray-975:color-mix(in lab, var(--bs-black) 88%, oklch(60% .02 245));--bs-pewter-025:color-mix(in lab, var(--bs-white) 94%, oklch(65% .01 290));--bs-pewter-050:color-mix(in lab, var(--bs-white) 90%, oklch(65% .01 290));--bs-pewter-100:color-mix(in lab, var(--bs-white) 80%, oklch(65% .01 290));--bs-pewter-200:color-mix(in lab, var(--bs-white) 60%, oklch(65% .01 290));--bs-pewter-300:color-mix(in lab, var(--bs-white) 40%, oklch(65% .01 290));--bs-pewter-400:color-mix(in lab, var(--bs-white) 20%, oklch(65% .01 290));--bs-pewter-500:oklch(65% .01 290);--bs-pewter-600:color-mix(in lab, var(--bs-black) 16%, oklch(65% .01 290));--bs-pewter-700:color-mix(in lab, var(--bs-black) 32%, oklch(65% .01 290));--bs-pewter-800:color-mix(in lab, var(--bs-black) 48%, oklch(65% .01 290));--bs-pewter-900:color-mix(in lab, var(--bs-black) 64%, oklch(65% .01 290));--bs-pewter-950:color-mix(in lab, var(--bs-black) 76%, oklch(65% .01 290));--bs-pewter-975:color-mix(in lab, var(--bs-black) 88%, oklch(65% .01 290))}@layer colors,theme,config,root;@layer reboot{*,:before,:after{box-sizing:border-box}:root{accent-color:var(--bs-primary-base)}iframe{color-scheme:light dark;border:0}body{font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-fg-body);text-align:var(--bs-body-text-align);background-color:var(--bs-bg-body);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;margin:0}hr{margin:var(--bs-hr-margin-y,var(--bs-spacer)) 0;border:0;border-block-start:var(--bs-border-width) solid var(--bs-hr-border-color)}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:var(--bs-spacer-2);color:var(--bs-heading-color);font-weight:500;line-height:1.2}h1,.h1{font-size:var(--bs-font-size-3xl)}h2,.h2{font-size:var(--bs-font-size-2xl)}h3,.h3{font-size:var(--bs-font-size-xl)}h4,.h4{font-size:var(--bs-font-size-lg)}h5,.h5{font-size:var(--bs-font-size-md)}h6,.h6{font-size:var(--bs-font-size-sm)}p{margin-top:0;margin-bottom:1rem}abbr[title]{cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}address{font-style:normal;line-height:inherit;margin-bottom:1rem}ol,ul{padding-inline-start:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-inline-start:0;margin-bottom:.5rem}blockquote{margin:0 0 1rem}blockquote>*{margin-block:0}b,strong{font-weight:bolder}small,.small{font-size:var(--bs-small-font-size,87.5%)}mark,.mark{--bs-mark-padding:.1875em;--bs-mark-color:var(--bs-fg-body);--bs-mark-bg:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));padding:var(--bs-mark-padding);color:var(--bs-mark-color);background-color:var(--bs-mark-bg)}sub,sup{font-size:var(--bs-sub-sup-font-size,.75em);vertical-align:baseline;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}a{color:var(--bs-theme-fg,var(--bs-link-color));-webkit-text-decoration:var(--bs-link-decoration);-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);text-underline-offset:.2em}a:hover{color:var(--bs-theme-fg-emphasis,var(--bs-link-hover-color));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));-webkit-text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration));text-decoration:var(--bs-link-hover-decoration,var(--bs-link-decoration))}a:not([href],[class]),a:not([href],[class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-mono);font-size:1em}pre{font-size:var(--bs-code-font-size);color:var(--bs-code-color,inherit);margin-top:0;margin-bottom:1rem;display:block;overflow:auto}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:var(--bs-code-font-size);color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{--bs-kbd-padding-y:.125rem;--bs-kbd-padding-x:.25rem;--bs-kbd-font-size:var(--bs-font-size-xs);--bs-kbd-color:var(--bs-bg-body);--bs-kbd-bg:var(--bs-fg-2);--bs-kbd-border-radius:var(--bs-radius-5);padding:var(--bs-kbd-padding-y) var(--bs-kbd-padding-x);font-size:var(--bs-kbd-font-size);color:var(--bs-kbd-color);background-color:var(--bs-kbd-bg);border-radius:var(--bs-kbd-border-radius)}kbd kbd{font-size:1em;font-weight:inherit;padding:0}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{color:var(--bs-fg-3);text-align:start;padding-block:.5rem}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{font-family:inherit;font-size:inherit;line-height:inherit;margin:0}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date],[type=datetime-local],[type=month],[type=week],[type=time])::-webkit-calendar-picker-indicator{display:none!important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}textarea{resize:vertical}fieldset{border:0;min-width:0;margin:0;padding:0}legend{float:inline-start;width:100%;font-size:1.5rem;line-height:inherit;margin-bottom:.5rem;padding:0}legend+*{clear:inline-start}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit-text{padding:0}::-webkit-datetime-edit-millisecond-field{padding:0}::-webkit-datetime-edit-second-field{padding:0}::-webkit-datetime-edit-minute-field{padding:0}::-webkit-datetime-edit-hour-field{padding:0}::-webkit-datetime-edit-meridiem-field{padding:0}::-webkit-datetime-edit-ampm-field{padding:0}::-webkit-datetime-edit-day-field{padding:0}::-webkit-datetime-edit-week-field{padding:0}::-webkit-datetime-edit-month-field{padding:0}::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button{cursor:pointer;filter:grayscale()}[type=tel],[type=url],[type=email],[type=number]{direction:ltr}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{cursor:pointer;display:list-item}progress{vertical-align:baseline}[hidden]{display:none!important}}@layer layout{.container,.container-fluid,.\32 xl\:container,.xl\:container,.lg\:container,.md\:container,.sm\:container{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-inline:calc(var(--bs-gutter-x) * .5);margin-inline:auto}@media (width>=576px){.sm\:container,.container{max-width:540px}}@media (width>=768px){.md\:container,.sm\:container,.container{max-width:720px}}@media (width>=1024px){.lg\:container,.md\:container,.sm\:container,.container{max-width:960px}}@media (width>=1280px){.xl\:container,.lg\:container,.md\:container,.sm\:container,.container{max-width:1200px}}@media (width>=1536px){.\32 xl\:container,.xl\:container,.lg\:container,.md\:container,.sm\:container,.container{max-width:1440px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;margin-inline:calc(-.5 * var(--bs-gutter-x));margin-top:calc(-1 * var(--bs-gutter-y));flex-wrap:wrap;display:flex}.row>*{width:100%;max-width:100%;padding-inline:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y);flex-shrink:0}.col{flex:1 0 0}.row-cols-auto>*{flex:none;width:auto}.row-cols-1>*{flex:none;width:100%}.row-cols-2>*{flex:none;width:50%}.row-cols-3>*{flex:none;width:33.3333%}.row-cols-4>*{flex:none;width:25%}.row-cols-5>*{flex:none;width:20%}.row-cols-6>*{flex:none;width:16.6667%}.col-auto{flex:none;width:auto}.col-1{flex:none;width:8.33333%}.col-2{flex:none;width:16.6667%}.col-3{flex:none;width:25%}.col-4{flex:none;width:33.3333%}.col-5{flex:none;width:41.6667%}.col-6{flex:none;width:50%}.col-7{flex:none;width:58.3333%}.col-8{flex:none;width:66.6667%}.col-9{flex:none;width:75%}.col-10{flex:none;width:83.3333%}.col-11{flex:none;width:91.6667%}.col-12{flex:none;width:100%}.offset-1{margin-inline-start:8.33333%}.offset-2{margin-inline-start:16.6667%}.offset-3{margin-inline-start:25%}.offset-4{margin-inline-start:33.3333%}.offset-5{margin-inline-start:41.6667%}.offset-6{margin-inline-start:50%}.offset-7{margin-inline-start:58.3333%}.offset-8{margin-inline-start:66.6667%}.offset-9{margin-inline-start:75%}.offset-10{margin-inline-start:83.3333%}.offset-11{margin-inline-start:91.6667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:.25rem}.g-1,.gy-1{--bs-gutter-y:.25rem}.g-2,.gx-2{--bs-gutter-x:.5rem}.g-2,.gy-2{--bs-gutter-y:.5rem}.g-3,.gx-3{--bs-gutter-x:.75rem}.g-3,.gy-3{--bs-gutter-y:.75rem}.g-4,.gx-4{--bs-gutter-x:1rem}.g-4,.gy-4{--bs-gutter-y:1rem}.g-5,.gx-5{--bs-gutter-x:1.25rem}.g-5,.gy-5{--bs-gutter-y:1.25rem}.g-6,.gx-6{--bs-gutter-x:1.5rem}.g-6,.gy-6{--bs-gutter-y:1.5rem}.g-7,.gx-7{--bs-gutter-x:2rem}.g-7,.gy-7{--bs-gutter-y:2rem}.g-8,.gx-8{--bs-gutter-x:2.5rem}.g-8,.gy-8{--bs-gutter-y:2.5rem}.g-9,.gx-9{--bs-gutter-x:3rem}.g-9,.gy-9{--bs-gutter-y:3rem}@media (width>=576px){.sm\:col{flex:1 0 0}.sm\:row-cols-auto>*{flex:none;width:auto}.sm\:row-cols-1>*{flex:none;width:100%}.sm\:row-cols-2>*{flex:none;width:50%}.sm\:row-cols-3>*{flex:none;width:33.3333%}.sm\:row-cols-4>*{flex:none;width:25%}.sm\:row-cols-5>*{flex:none;width:20%}.sm\:row-cols-6>*{flex:none;width:16.6667%}.sm\:col-auto{flex:none;width:auto}.sm\:col-1{flex:none;width:8.33333%}.sm\:col-2{flex:none;width:16.6667%}.sm\:col-3{flex:none;width:25%}.sm\:col-4{flex:none;width:33.3333%}.sm\:col-5{flex:none;width:41.6667%}.sm\:col-6{flex:none;width:50%}.sm\:col-7{flex:none;width:58.3333%}.sm\:col-8{flex:none;width:66.6667%}.sm\:col-9{flex:none;width:75%}.sm\:col-10{flex:none;width:83.3333%}.sm\:col-11{flex:none;width:91.6667%}.sm\:col-12{flex:none;width:100%}.sm\:offset-0{margin-inline-start:0}.sm\:offset-1{margin-inline-start:8.33333%}.sm\:offset-2{margin-inline-start:16.6667%}.sm\:offset-3{margin-inline-start:25%}.sm\:offset-4{margin-inline-start:33.3333%}.sm\:offset-5{margin-inline-start:41.6667%}.sm\:offset-6{margin-inline-start:50%}.sm\:offset-7{margin-inline-start:58.3333%}.sm\:offset-8{margin-inline-start:66.6667%}.sm\:offset-9{margin-inline-start:75%}.sm\:offset-10{margin-inline-start:83.3333%}.sm\:offset-11{margin-inline-start:91.6667%}.sm\:g-0,.sm\:gx-0{--bs-gutter-x:0}.sm\:g-0,.sm\:gy-0{--bs-gutter-y:0}.sm\:g-1,.sm\:gx-1{--bs-gutter-x:.25rem}.sm\:g-1,.sm\:gy-1{--bs-gutter-y:.25rem}.sm\:g-2,.sm\:gx-2{--bs-gutter-x:.5rem}.sm\:g-2,.sm\:gy-2{--bs-gutter-y:.5rem}.sm\:g-3,.sm\:gx-3{--bs-gutter-x:.75rem}.sm\:g-3,.sm\:gy-3{--bs-gutter-y:.75rem}.sm\:g-4,.sm\:gx-4{--bs-gutter-x:1rem}.sm\:g-4,.sm\:gy-4{--bs-gutter-y:1rem}.sm\:g-5,.sm\:gx-5{--bs-gutter-x:1.25rem}.sm\:g-5,.sm\:gy-5{--bs-gutter-y:1.25rem}.sm\:g-6,.sm\:gx-6{--bs-gutter-x:1.5rem}.sm\:g-6,.sm\:gy-6{--bs-gutter-y:1.5rem}.sm\:g-7,.sm\:gx-7{--bs-gutter-x:2rem}.sm\:g-7,.sm\:gy-7{--bs-gutter-y:2rem}.sm\:g-8,.sm\:gx-8{--bs-gutter-x:2.5rem}.sm\:g-8,.sm\:gy-8{--bs-gutter-y:2.5rem}.sm\:g-9,.sm\:gx-9{--bs-gutter-x:3rem}.sm\:g-9,.sm\:gy-9{--bs-gutter-y:3rem}}@media (width>=768px){.md\:col{flex:1 0 0}.md\:row-cols-auto>*{flex:none;width:auto}.md\:row-cols-1>*{flex:none;width:100%}.md\:row-cols-2>*{flex:none;width:50%}.md\:row-cols-3>*{flex:none;width:33.3333%}.md\:row-cols-4>*{flex:none;width:25%}.md\:row-cols-5>*{flex:none;width:20%}.md\:row-cols-6>*{flex:none;width:16.6667%}.md\:col-auto{flex:none;width:auto}.md\:col-1{flex:none;width:8.33333%}.md\:col-2{flex:none;width:16.6667%}.md\:col-3{flex:none;width:25%}.md\:col-4{flex:none;width:33.3333%}.md\:col-5{flex:none;width:41.6667%}.md\:col-6{flex:none;width:50%}.md\:col-7{flex:none;width:58.3333%}.md\:col-8{flex:none;width:66.6667%}.md\:col-9{flex:none;width:75%}.md\:col-10{flex:none;width:83.3333%}.md\:col-11{flex:none;width:91.6667%}.md\:col-12{flex:none;width:100%}.md\:offset-0{margin-inline-start:0}.md\:offset-1{margin-inline-start:8.33333%}.md\:offset-2{margin-inline-start:16.6667%}.md\:offset-3{margin-inline-start:25%}.md\:offset-4{margin-inline-start:33.3333%}.md\:offset-5{margin-inline-start:41.6667%}.md\:offset-6{margin-inline-start:50%}.md\:offset-7{margin-inline-start:58.3333%}.md\:offset-8{margin-inline-start:66.6667%}.md\:offset-9{margin-inline-start:75%}.md\:offset-10{margin-inline-start:83.3333%}.md\:offset-11{margin-inline-start:91.6667%}.md\:g-0,.md\:gx-0{--bs-gutter-x:0}.md\:g-0,.md\:gy-0{--bs-gutter-y:0}.md\:g-1,.md\:gx-1{--bs-gutter-x:.25rem}.md\:g-1,.md\:gy-1{--bs-gutter-y:.25rem}.md\:g-2,.md\:gx-2{--bs-gutter-x:.5rem}.md\:g-2,.md\:gy-2{--bs-gutter-y:.5rem}.md\:g-3,.md\:gx-3{--bs-gutter-x:.75rem}.md\:g-3,.md\:gy-3{--bs-gutter-y:.75rem}.md\:g-4,.md\:gx-4{--bs-gutter-x:1rem}.md\:g-4,.md\:gy-4{--bs-gutter-y:1rem}.md\:g-5,.md\:gx-5{--bs-gutter-x:1.25rem}.md\:g-5,.md\:gy-5{--bs-gutter-y:1.25rem}.md\:g-6,.md\:gx-6{--bs-gutter-x:1.5rem}.md\:g-6,.md\:gy-6{--bs-gutter-y:1.5rem}.md\:g-7,.md\:gx-7{--bs-gutter-x:2rem}.md\:g-7,.md\:gy-7{--bs-gutter-y:2rem}.md\:g-8,.md\:gx-8{--bs-gutter-x:2.5rem}.md\:g-8,.md\:gy-8{--bs-gutter-y:2.5rem}.md\:g-9,.md\:gx-9{--bs-gutter-x:3rem}.md\:g-9,.md\:gy-9{--bs-gutter-y:3rem}}@media (width>=1024px){.lg\:col{flex:1 0 0}.lg\:row-cols-auto>*{flex:none;width:auto}.lg\:row-cols-1>*{flex:none;width:100%}.lg\:row-cols-2>*{flex:none;width:50%}.lg\:row-cols-3>*{flex:none;width:33.3333%}.lg\:row-cols-4>*{flex:none;width:25%}.lg\:row-cols-5>*{flex:none;width:20%}.lg\:row-cols-6>*{flex:none;width:16.6667%}.lg\:col-auto{flex:none;width:auto}.lg\:col-1{flex:none;width:8.33333%}.lg\:col-2{flex:none;width:16.6667%}.lg\:col-3{flex:none;width:25%}.lg\:col-4{flex:none;width:33.3333%}.lg\:col-5{flex:none;width:41.6667%}.lg\:col-6{flex:none;width:50%}.lg\:col-7{flex:none;width:58.3333%}.lg\:col-8{flex:none;width:66.6667%}.lg\:col-9{flex:none;width:75%}.lg\:col-10{flex:none;width:83.3333%}.lg\:col-11{flex:none;width:91.6667%}.lg\:col-12{flex:none;width:100%}.lg\:offset-0{margin-inline-start:0}.lg\:offset-1{margin-inline-start:8.33333%}.lg\:offset-2{margin-inline-start:16.6667%}.lg\:offset-3{margin-inline-start:25%}.lg\:offset-4{margin-inline-start:33.3333%}.lg\:offset-5{margin-inline-start:41.6667%}.lg\:offset-6{margin-inline-start:50%}.lg\:offset-7{margin-inline-start:58.3333%}.lg\:offset-8{margin-inline-start:66.6667%}.lg\:offset-9{margin-inline-start:75%}.lg\:offset-10{margin-inline-start:83.3333%}.lg\:offset-11{margin-inline-start:91.6667%}.lg\:g-0,.lg\:gx-0{--bs-gutter-x:0}.lg\:g-0,.lg\:gy-0{--bs-gutter-y:0}.lg\:g-1,.lg\:gx-1{--bs-gutter-x:.25rem}.lg\:g-1,.lg\:gy-1{--bs-gutter-y:.25rem}.lg\:g-2,.lg\:gx-2{--bs-gutter-x:.5rem}.lg\:g-2,.lg\:gy-2{--bs-gutter-y:.5rem}.lg\:g-3,.lg\:gx-3{--bs-gutter-x:.75rem}.lg\:g-3,.lg\:gy-3{--bs-gutter-y:.75rem}.lg\:g-4,.lg\:gx-4{--bs-gutter-x:1rem}.lg\:g-4,.lg\:gy-4{--bs-gutter-y:1rem}.lg\:g-5,.lg\:gx-5{--bs-gutter-x:1.25rem}.lg\:g-5,.lg\:gy-5{--bs-gutter-y:1.25rem}.lg\:g-6,.lg\:gx-6{--bs-gutter-x:1.5rem}.lg\:g-6,.lg\:gy-6{--bs-gutter-y:1.5rem}.lg\:g-7,.lg\:gx-7{--bs-gutter-x:2rem}.lg\:g-7,.lg\:gy-7{--bs-gutter-y:2rem}.lg\:g-8,.lg\:gx-8{--bs-gutter-x:2.5rem}.lg\:g-8,.lg\:gy-8{--bs-gutter-y:2.5rem}.lg\:g-9,.lg\:gx-9{--bs-gutter-x:3rem}.lg\:g-9,.lg\:gy-9{--bs-gutter-y:3rem}}@media (width>=1280px){.xl\:col{flex:1 0 0}.xl\:row-cols-auto>*{flex:none;width:auto}.xl\:row-cols-1>*{flex:none;width:100%}.xl\:row-cols-2>*{flex:none;width:50%}.xl\:row-cols-3>*{flex:none;width:33.3333%}.xl\:row-cols-4>*{flex:none;width:25%}.xl\:row-cols-5>*{flex:none;width:20%}.xl\:row-cols-6>*{flex:none;width:16.6667%}.xl\:col-auto{flex:none;width:auto}.xl\:col-1{flex:none;width:8.33333%}.xl\:col-2{flex:none;width:16.6667%}.xl\:col-3{flex:none;width:25%}.xl\:col-4{flex:none;width:33.3333%}.xl\:col-5{flex:none;width:41.6667%}.xl\:col-6{flex:none;width:50%}.xl\:col-7{flex:none;width:58.3333%}.xl\:col-8{flex:none;width:66.6667%}.xl\:col-9{flex:none;width:75%}.xl\:col-10{flex:none;width:83.3333%}.xl\:col-11{flex:none;width:91.6667%}.xl\:col-12{flex:none;width:100%}.xl\:offset-0{margin-inline-start:0}.xl\:offset-1{margin-inline-start:8.33333%}.xl\:offset-2{margin-inline-start:16.6667%}.xl\:offset-3{margin-inline-start:25%}.xl\:offset-4{margin-inline-start:33.3333%}.xl\:offset-5{margin-inline-start:41.6667%}.xl\:offset-6{margin-inline-start:50%}.xl\:offset-7{margin-inline-start:58.3333%}.xl\:offset-8{margin-inline-start:66.6667%}.xl\:offset-9{margin-inline-start:75%}.xl\:offset-10{margin-inline-start:83.3333%}.xl\:offset-11{margin-inline-start:91.6667%}.xl\:g-0,.xl\:gx-0{--bs-gutter-x:0}.xl\:g-0,.xl\:gy-0{--bs-gutter-y:0}.xl\:g-1,.xl\:gx-1{--bs-gutter-x:.25rem}.xl\:g-1,.xl\:gy-1{--bs-gutter-y:.25rem}.xl\:g-2,.xl\:gx-2{--bs-gutter-x:.5rem}.xl\:g-2,.xl\:gy-2{--bs-gutter-y:.5rem}.xl\:g-3,.xl\:gx-3{--bs-gutter-x:.75rem}.xl\:g-3,.xl\:gy-3{--bs-gutter-y:.75rem}.xl\:g-4,.xl\:gx-4{--bs-gutter-x:1rem}.xl\:g-4,.xl\:gy-4{--bs-gutter-y:1rem}.xl\:g-5,.xl\:gx-5{--bs-gutter-x:1.25rem}.xl\:g-5,.xl\:gy-5{--bs-gutter-y:1.25rem}.xl\:g-6,.xl\:gx-6{--bs-gutter-x:1.5rem}.xl\:g-6,.xl\:gy-6{--bs-gutter-y:1.5rem}.xl\:g-7,.xl\:gx-7{--bs-gutter-x:2rem}.xl\:g-7,.xl\:gy-7{--bs-gutter-y:2rem}.xl\:g-8,.xl\:gx-8{--bs-gutter-x:2.5rem}.xl\:g-8,.xl\:gy-8{--bs-gutter-y:2.5rem}.xl\:g-9,.xl\:gx-9{--bs-gutter-x:3rem}.xl\:g-9,.xl\:gy-9{--bs-gutter-y:3rem}}@media (width>=1536px){.\32 xl\:col{flex:1 0 0}.\32 xl\:row-cols-auto>*{flex:none;width:auto}.\32 xl\:row-cols-1>*{flex:none;width:100%}.\32 xl\:row-cols-2>*{flex:none;width:50%}.\32 xl\:row-cols-3>*{flex:none;width:33.3333%}.\32 xl\:row-cols-4>*{flex:none;width:25%}.\32 xl\:row-cols-5>*{flex:none;width:20%}.\32 xl\:row-cols-6>*{flex:none;width:16.6667%}.\32 xl\:col-auto{flex:none;width:auto}.\32 xl\:col-1{flex:none;width:8.33333%}.\32 xl\:col-2{flex:none;width:16.6667%}.\32 xl\:col-3{flex:none;width:25%}.\32 xl\:col-4{flex:none;width:33.3333%}.\32 xl\:col-5{flex:none;width:41.6667%}.\32 xl\:col-6{flex:none;width:50%}.\32 xl\:col-7{flex:none;width:58.3333%}.\32 xl\:col-8{flex:none;width:66.6667%}.\32 xl\:col-9{flex:none;width:75%}.\32 xl\:col-10{flex:none;width:83.3333%}.\32 xl\:col-11{flex:none;width:91.6667%}.\32 xl\:col-12{flex:none;width:100%}.\32 xl\:offset-0{margin-inline-start:0}.\32 xl\:offset-1{margin-inline-start:8.33333%}.\32 xl\:offset-2{margin-inline-start:16.6667%}.\32 xl\:offset-3{margin-inline-start:25%}.\32 xl\:offset-4{margin-inline-start:33.3333%}.\32 xl\:offset-5{margin-inline-start:41.6667%}.\32 xl\:offset-6{margin-inline-start:50%}.\32 xl\:offset-7{margin-inline-start:58.3333%}.\32 xl\:offset-8{margin-inline-start:66.6667%}.\32 xl\:offset-9{margin-inline-start:75%}.\32 xl\:offset-10{margin-inline-start:83.3333%}.\32 xl\:offset-11{margin-inline-start:91.6667%}.\32 xl\:g-0,.\32 xl\:gx-0{--bs-gutter-x:0}.\32 xl\:g-0,.\32 xl\:gy-0{--bs-gutter-y:0}.\32 xl\:g-1,.\32 xl\:gx-1{--bs-gutter-x:.25rem}.\32 xl\:g-1,.\32 xl\:gy-1{--bs-gutter-y:.25rem}.\32 xl\:g-2,.\32 xl\:gx-2{--bs-gutter-x:.5rem}.\32 xl\:g-2,.\32 xl\:gy-2{--bs-gutter-y:.5rem}.\32 xl\:g-3,.\32 xl\:gx-3{--bs-gutter-x:.75rem}.\32 xl\:g-3,.\32 xl\:gy-3{--bs-gutter-y:.75rem}.\32 xl\:g-4,.\32 xl\:gx-4{--bs-gutter-x:1rem}.\32 xl\:g-4,.\32 xl\:gy-4{--bs-gutter-y:1rem}.\32 xl\:g-5,.\32 xl\:gx-5{--bs-gutter-x:1.25rem}.\32 xl\:g-5,.\32 xl\:gy-5{--bs-gutter-y:1.25rem}.\32 xl\:g-6,.\32 xl\:gx-6{--bs-gutter-x:1.5rem}.\32 xl\:g-6,.\32 xl\:gy-6{--bs-gutter-y:1.5rem}.\32 xl\:g-7,.\32 xl\:gx-7{--bs-gutter-x:2rem}.\32 xl\:g-7,.\32 xl\:gy-7{--bs-gutter-y:2rem}.\32 xl\:g-8,.\32 xl\:gx-8{--bs-gutter-x:2.5rem}.\32 xl\:g-8,.\32 xl\:gy-8{--bs-gutter-y:2.5rem}.\32 xl\:g-9,.\32 xl\:gx-9{--bs-gutter-x:3rem}.\32 xl\:g-9,.\32 xl\:gy-9{--bs-gutter-y:3rem}}.grid{--bs-columns:12;--bs-rows:1;--bs-gap:1.5rem;grid-template-rows:repeat(var(--bs-rows), 1fr);grid-template-columns:repeat(var(--bs-columns), 1fr);gap:var(--bs-gap);display:grid}.g-col-1{grid-column:auto/span 1}.g-col-2{grid-column:auto/span 2}.g-col-3{grid-column:auto/span 3}.g-col-4{grid-column:auto/span 4}.g-col-5{grid-column:auto/span 5}.g-col-6{grid-column:auto/span 6}.g-col-7{grid-column:auto/span 7}.g-col-8{grid-column:auto/span 8}.g-col-9{grid-column:auto/span 9}.g-col-10{grid-column:auto/span 10}.g-col-11{grid-column:auto/span 11}.g-col-12{grid-column:auto/span 12}.g-start-1{grid-column-start:1}.g-start-2{grid-column-start:2}.g-start-3{grid-column-start:3}.g-start-4{grid-column-start:4}.g-start-5{grid-column-start:5}.g-start-6{grid-column-start:6}.g-start-7{grid-column-start:7}.g-start-8{grid-column-start:8}.g-start-9{grid-column-start:9}.g-start-10{grid-column-start:10}.g-start-11{grid-column-start:11}@media (width>=576px){.sm\:g-col-1{grid-column:auto/span 1}.sm\:g-col-2{grid-column:auto/span 2}.sm\:g-col-3{grid-column:auto/span 3}.sm\:g-col-4{grid-column:auto/span 4}.sm\:g-col-5{grid-column:auto/span 5}.sm\:g-col-6{grid-column:auto/span 6}.sm\:g-col-7{grid-column:auto/span 7}.sm\:g-col-8{grid-column:auto/span 8}.sm\:g-col-9{grid-column:auto/span 9}.sm\:g-col-10{grid-column:auto/span 10}.sm\:g-col-11{grid-column:auto/span 11}.sm\:g-col-12{grid-column:auto/span 12}.sm\:g-start-1{grid-column-start:1}.sm\:g-start-2{grid-column-start:2}.sm\:g-start-3{grid-column-start:3}.sm\:g-start-4{grid-column-start:4}.sm\:g-start-5{grid-column-start:5}.sm\:g-start-6{grid-column-start:6}.sm\:g-start-7{grid-column-start:7}.sm\:g-start-8{grid-column-start:8}.sm\:g-start-9{grid-column-start:9}.sm\:g-start-10{grid-column-start:10}.sm\:g-start-11{grid-column-start:11}}@media (width>=768px){.md\:g-col-1{grid-column:auto/span 1}.md\:g-col-2{grid-column:auto/span 2}.md\:g-col-3{grid-column:auto/span 3}.md\:g-col-4{grid-column:auto/span 4}.md\:g-col-5{grid-column:auto/span 5}.md\:g-col-6{grid-column:auto/span 6}.md\:g-col-7{grid-column:auto/span 7}.md\:g-col-8{grid-column:auto/span 8}.md\:g-col-9{grid-column:auto/span 9}.md\:g-col-10{grid-column:auto/span 10}.md\:g-col-11{grid-column:auto/span 11}.md\:g-col-12{grid-column:auto/span 12}.md\:g-start-1{grid-column-start:1}.md\:g-start-2{grid-column-start:2}.md\:g-start-3{grid-column-start:3}.md\:g-start-4{grid-column-start:4}.md\:g-start-5{grid-column-start:5}.md\:g-start-6{grid-column-start:6}.md\:g-start-7{grid-column-start:7}.md\:g-start-8{grid-column-start:8}.md\:g-start-9{grid-column-start:9}.md\:g-start-10{grid-column-start:10}.md\:g-start-11{grid-column-start:11}}@media (width>=1024px){.lg\:g-col-1{grid-column:auto/span 1}.lg\:g-col-2{grid-column:auto/span 2}.lg\:g-col-3{grid-column:auto/span 3}.lg\:g-col-4{grid-column:auto/span 4}.lg\:g-col-5{grid-column:auto/span 5}.lg\:g-col-6{grid-column:auto/span 6}.lg\:g-col-7{grid-column:auto/span 7}.lg\:g-col-8{grid-column:auto/span 8}.lg\:g-col-9{grid-column:auto/span 9}.lg\:g-col-10{grid-column:auto/span 10}.lg\:g-col-11{grid-column:auto/span 11}.lg\:g-col-12{grid-column:auto/span 12}.lg\:g-start-1{grid-column-start:1}.lg\:g-start-2{grid-column-start:2}.lg\:g-start-3{grid-column-start:3}.lg\:g-start-4{grid-column-start:4}.lg\:g-start-5{grid-column-start:5}.lg\:g-start-6{grid-column-start:6}.lg\:g-start-7{grid-column-start:7}.lg\:g-start-8{grid-column-start:8}.lg\:g-start-9{grid-column-start:9}.lg\:g-start-10{grid-column-start:10}.lg\:g-start-11{grid-column-start:11}}@media (width>=1280px){.xl\:g-col-1{grid-column:auto/span 1}.xl\:g-col-2{grid-column:auto/span 2}.xl\:g-col-3{grid-column:auto/span 3}.xl\:g-col-4{grid-column:auto/span 4}.xl\:g-col-5{grid-column:auto/span 5}.xl\:g-col-6{grid-column:auto/span 6}.xl\:g-col-7{grid-column:auto/span 7}.xl\:g-col-8{grid-column:auto/span 8}.xl\:g-col-9{grid-column:auto/span 9}.xl\:g-col-10{grid-column:auto/span 10}.xl\:g-col-11{grid-column:auto/span 11}.xl\:g-col-12{grid-column:auto/span 12}.xl\:g-start-1{grid-column-start:1}.xl\:g-start-2{grid-column-start:2}.xl\:g-start-3{grid-column-start:3}.xl\:g-start-4{grid-column-start:4}.xl\:g-start-5{grid-column-start:5}.xl\:g-start-6{grid-column-start:6}.xl\:g-start-7{grid-column-start:7}.xl\:g-start-8{grid-column-start:8}.xl\:g-start-9{grid-column-start:9}.xl\:g-start-10{grid-column-start:10}.xl\:g-start-11{grid-column-start:11}}@media (width>=1536px){.\32 xl\:g-col-1{grid-column:auto/span 1}.\32 xl\:g-col-2{grid-column:auto/span 2}.\32 xl\:g-col-3{grid-column:auto/span 3}.\32 xl\:g-col-4{grid-column:auto/span 4}.\32 xl\:g-col-5{grid-column:auto/span 5}.\32 xl\:g-col-6{grid-column:auto/span 6}.\32 xl\:g-col-7{grid-column:auto/span 7}.\32 xl\:g-col-8{grid-column:auto/span 8}.\32 xl\:g-col-9{grid-column:auto/span 9}.\32 xl\:g-col-10{grid-column:auto/span 10}.\32 xl\:g-col-11{grid-column:auto/span 11}.\32 xl\:g-col-12{grid-column:auto/span 12}.\32 xl\:g-start-1{grid-column-start:1}.\32 xl\:g-start-2{grid-column-start:2}.\32 xl\:g-start-3{grid-column-start:3}.\32 xl\:g-start-4{grid-column-start:4}.\32 xl\:g-start-5{grid-column-start:5}.\32 xl\:g-start-6{grid-column-start:6}.\32 xl\:g-start-7{grid-column-start:7}.\32 xl\:g-start-8{grid-column-start:8}.\32 xl\:g-start-9{grid-column-start:9}.\32 xl\:g-start-10{grid-column-start:10}.\32 xl\:g-start-11{grid-column-start:11}}.grid-cols-subgrid{grid-template-columns:subgrid}.grid-fill{--bs-gap:1.5rem;gap:var(--bs-gap);grid-template-columns:repeat(auto-fit,minmax(0,1fr));grid-auto-flow:row;display:grid}}@layer content{.list-unstyled,.list-inline{padding-inline-start:0;list-style-type:""}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-inline-end:var(--bs-list-inline-padding,var(--bs-spacer)/2)}.initialism{font-size:var(--bs-initialism-font-size,var(--bs-font-size-xs));text-transform:uppercase}.blockquote{--bs-blockquote-gap:calc(var(--bs-spacer) / 2);--bs-blockquote-padding-x:var(--bs-spacer);--bs-blockquote-margin-y:1rem;--bs-blockquote-font-size:var(--bs-font-size-md);--bs-blockquote-border-width:.25rem;--bs-blockquote-border-color:var(--bs-border-color);--bs-blockquote-footer-font-size:var(--bs-font-size-sm);--bs-blockquote-footer-color:var(--bs-fg-3);gap:var(--bs-blockquote-gap);margin-bottom:var(--bs-blockquote-margin-y);font-size:var(--bs-blockquote-font-size);border-inline-start:var(--bs-blockquote-border-width) solid var(--bs-blockquote-border-color);flex-direction:column;padding-inline-start:var(--bs-blockquote-padding-x);display:flex}.blockquote>*,figure.blockquote blockquote{margin-bottom:0}.blockquote-footer{font-size:var(--bs-blockquote-footer-font-size);color:var(--bs-blockquote-footer-color)}.blockquote-footer:before{content:"— "}.table{--bs-table-cell-padding-y:.5rem;--bs-table-cell-padding-x:.5rem;--bs-table-cell-vertical-align:top;--bs-table-color:var(--bs-fg-body);--bs-table-bg:var(--bs-bg-body);--bs-table-accent-bg:transparent;--bs-table-border-width:var(--bs-border-width);--bs-table-border-color:var(--bs-border-color);--bs-table-group-separator-color:currentcolor;--bs-table-striped-color:var(--bs-table-color);--bs-table-striped-bg-factor:5%;--bs-table-striped-bg:color-mix(in srgb, var(--bs-table-color) var(--bs-table-striped-bg-factor), transparent);--bs-table-active-color:var(--bs-table-color);--bs-table-active-bg-factor:10%;--bs-table-active-bg:color-mix(in srgb, var(--bs-table-color) var(--bs-table-active-bg-factor), transparent);--bs-table-hover-color:var(--bs-table-color);--bs-table-hover-bg-factor:7.5%;--bs-table-hover-bg:color-mix(in srgb, var(--bs-table-color) var(--bs-table-hover-bg-factor), transparent);--bs-table-color-type:initial;--bs-table-bg-type:initial;--bs-table-color-state:initial;--bs-table-bg-state:initial;width:100%;margin-bottom:var(--bs-spacer);vertical-align:var(--bs-table-cell-vertical-align);border-color:var(--bs-theme-border,var(--bs-table-border-color))}.table>:not(caption)>*>*{padding:var(--bs-table-cell-padding-y) var(--bs-table-cell-padding-x);color:var(--bs-table-color-state,var(--bs-table-color-type,var(--bs-theme-fg,var(--bs-table-color))));background-color:var(--bs-theme-bg-subtle,var(--bs-table-bg));border-block-end-width:var(--bs-table-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state,var(--bs-table-bg-type,var(--bs-theme-bg-subtle,var(--bs-table-accent-bg))))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-block-start:calc(var(--bs-table-border-width) * 2) solid var(--bs-table-group-separator-color)}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{--bs-table-cell-padding-y:.25rem;--bs-table-cell-padding-x:.25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-table-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-table-border-width)}.table-borderless>:not(caption)>*>*{border-block-end-width:0}.table-borderless>:not(:first-child){border-block-start-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*,.table-striped-columns>:not(caption)>tr>:nth-child(2n){--bs-table-color-type:var(--bs-theme-fg,var(--bs-table-striped-color));--bs-table-bg-type:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-striped-bg-factor), transparent)}.table-active{--bs-table-color-state:var(--bs-theme-fg,var(--bs-table-active-color));--bs-table-bg-state:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-active-bg-factor), transparent)}.table-hover>tbody>tr:hover>*{--bs-table-color-state:var(--bs-theme-fg,var(--bs-table-hover-color));--bs-table-bg-state:color-mix(in srgb, var(--bs-theme-fg,var(--bs-table-color)) var(--bs-table-hover-bg-factor), transparent)}.table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto;container-type:inline-size}.sm\:table-responsive{container-type:inline-size}@media (width<576px){.sm\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.md\:table-responsive{container-type:inline-size}@media (width<768px){.md\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.lg\:table-responsive{container-type:inline-size}@media (width<1024px){.lg\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.xl\:table-responsive{container-type:inline-size}@media (width<1280px){.xl\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.\32 xl\:table-responsive{container-type:inline-size}@media (width<1536px){.\32 xl\:table-responsive{-webkit-overflow-scrolling:touch;overflow-x:auto}}.table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}@container (width<576px){.sm\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sm\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.sm\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.sm\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.sm\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.sm\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.sm\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<768px){.md\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.md\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.md\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.md\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.md\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.md\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.md\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1024px){.lg\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.lg\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.lg\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.lg\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.lg\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.lg\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.lg\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1280px){.xl\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.xl\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.xl\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.xl\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.xl\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.xl\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.xl\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}@container (width<1536px){.\32 xl\:table-stacked>thead{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.\32 xl\:table-stacked>tbody>tr{padding-block:var(--bs-table-cell-padding-y);display:block}.\32 xl\:table-stacked>tbody>tr+tr{border-block-start:var(--bs-table-border-width) solid var(--bs-table-border-color)}.\32 xl\:table-stacked>tbody>tr>td{padding:calc(var(--bs-table-cell-padding-y) * .25) calc(var(--bs-table-cell-padding-x) * 2);border:0;display:block}.\32 xl\:table-stacked>tbody>tr>td:first-child{font-weight:var(--bs-font-weight-bold)}.\32 xl\:table-stacked>tbody>tr>td[data-cell]:not(:first-child):before{font-weight:var(--bs-font-weight-semibold);content:attr(data-cell);display:block}.\32 xl\:table-stacked>tbody>tr>td:not(:first-child)+td:before{margin-block-start:.25rem}}.img-fluid{max-width:100%;height:auto}.img-thumbnail{--bs-thumbnail-padding:.25rem;--bs-thumbnail-bg:var(--bs-bg-body);--bs-thumbnail-border-width:var(--bs-border-width);--bs-thumbnail-border-color:var(--bs-border-color);--bs-thumbnail-border-radius:var(--bs-radius-5);--bs-thumbnail-box-shadow:var(--bs-box-shadow-sm);padding:var(--bs-thumbnail-padding);background-color:var(--bs-thumbnail-bg);border:var(--bs-thumbnail-border-width) solid var(--bs-thumbnail-border-color);border-radius:var(--bs-thumbnail-border-radius);box-shadow:var(--bs-thumbnail-box-shadow);max-width:100%;height:auto}.figure{--bs-figure-gap:calc(var(--bs-spacer) * .5);--bs-figure-caption-font-size:var(--bs-font-size-sm);--bs-figure-caption-color:var(--bs-fg-3);gap:var(--bs-figure-gap);flex-direction:column;display:flex}.figure-caption{font-size:var(--bs-figure-caption-font-size);color:var(--bs-figure-caption-color)}.prose{--bs-content-font-size:1rem;--bs-content-line-height:1.5;--bs-content-gap:calc(var(--bs-content-font-size) * var(--bs-content-line-height));--bs-heading-color:light-dark(var(--bs-gray-900),var(--bs-white));gap:var(--bs-content-gap);max-width:1000px;font-size:var(--bs-content-font-size);line-height:var(--bs-content-line-height);flex-direction:column;margin-inline:auto;display:flex;position:relative}@media (width>=1024px){.prose{--bs-content-font-size:var(--bs-font-size-md);--bs-content-line-height:1.625}}.prose :where(p,ul,ol,dl,pre,table,blockquote):not(:where(.not-prose,.not-prose *)){margin-block:0}.prose :where(ul,ol):not([class],:where(.not-prose,.not-prose *)) li:not(:last-child){margin-bottom:calc(var(--bs-content-gap) / 4)}.prose :where(li ul,li ol):not(:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap) / 4)}.prose :where(hr):not(:where(.not-prose,.not-prose *)){margin:calc(var(--bs-content-gap) * 1.5) 0;border:0;border-block-start:var(--bs-border-width) solid var(--bs-hr-border-color)}.prose :where(h1,h2,h3,h4,h5,h6):not([class],:where(.not-prose,.not-prose *)){margin-top:0;margin-bottom:calc(var(--bs-content-gap) / -2);font-weight:500;line-height:1.25}.prose :where(h1,h2,h3,h4,h5,h6):not([class],:where(.not-prose,.not-prose *)) code{color:inherit;font-weight:600}.prose :where(h1,h2):not(:first-child,:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap) * .75)}.prose :where(h3,h4,h5,h6):not(:first-child,:where(.not-prose,.not-prose *)){margin-top:calc(var(--bs-content-gap) * .5)}.prose :where(h1):not(:where(.not-prose,.not-prose *)){font-size:2.25em;line-height:1.1}.prose :where(h2):not(:where(.not-prose,.not-prose *)){font-size:1.75em}.prose :where(h3):not(:where(.not-prose,.not-prose *)){font-size:1.5em}.prose :where(h4):not(:where(.not-prose,.not-prose *)){font-size:1.25em}.prose :where(h5):not(:where(.not-prose,.not-prose *)){font-size:1.125em}.prose :where(h6):not(:where(.not-prose,.not-prose *)){font-size:1em}.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)){color:var(--bs-link-color);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--bs-link-color) 25%, transparent);text-decoration-color:color-mix(in srgb, var(--bs-link-color) 25%, transparent);text-underline-offset:4px;transition:text-decoration-color .1s ease-in-out}@media (prefers-reduced-motion:reduce){.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)){transition:none}}.prose :where(a:not([class])):not(:where(.not-prose,.not-prose *)):hover{-webkit-text-decoration-color:var(--bs-link-hover-color);text-decoration-color:var(--bs-link-hover-color)}.prose :where(img):not(:where(.not-prose,.not-prose *)){max-width:100%}.prose :where(blockquote):not(:where(.not-prose,.not-prose *)){border-inline-start:4px solid var(--bs-border-color);margin:0;padding-inline-start:calc(var(--bs-content-gap) / 2)}.prose :where(table):not(:where(.not-prose,.not-prose *)){border-spacing:0;border-collapse:collapse;width:100%}.prose :where(table:not([class])):not(:where(.not-prose,.not-prose *)) td,.prose :where(table:not([class])):not(:where(.not-prose,.not-prose *)) th{text-align:inherit;border:1px solid var(--bs-border-color);padding:6px 12px}.prose :where(dt):not(:where(.not-prose,.not-prose *)){font-weight:500}.prose :where(video,img):not(:where(.not-prose,.not-prose *)){max-width:100%}}@layer forms{.form-label,.col-form-label{font-size:var(--bs-label-font-size,inherit);font-style:var(--bs-label-font-style,inherit);font-weight:var(--bs-label-font-weight,500);color:var(--bs-label-color,var(--bs-fg-body))}.form-label{margin-bottom:var(--bs-label-margin-bottom,calc(var(--bs-spacer) / 2))}.col-form-label{--bs-label-padding-y:calc(var(--bs-btn-input-padding-y) + var(--bs-border-width));padding-block:var(--bs-label-padding-y);margin-bottom:0}.col-form-label-lg{--bs-label-padding-y:calc(var(--bs-btn-input-lg-padding-y) + var(--bs-border-width));font-size:var(--bs-btn-input-lg-font-size)}.col-form-label-sm{--bs-label-padding-y:calc(var(--bs-btn-input-sm-padding-y) + var(--bs-border-width));font-size:var(--bs-btn-input-sm-font-size)}.form-text{--bs-form-text-margin-top:.25rem;--bs-form-text-font-size:var(--bs-font-size-sm);--bs-form-text-color:var(--bs-fg-2);font-size:var(--bs-form-text-font-size);font-style:var(--bs-form-text-font-style);font-weight:var(--bs-form-text-font-weight);color:var(--bs-form-text-color)}.form-control{--bs-control-min-height:var(--bs-btn-input-min-height);--bs-control-padding-y:var(--bs-btn-input-padding-y);--bs-control-padding-x:var(--bs-btn-input-padding-x);--bs-control-font-size:var(--bs-btn-input-font-size);--bs-control-line-height:var(--bs-btn-input-line-height);--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-radius-5);--bs-control-box-shadow:var(--bs-box-shadow-inset);--bs-control-action-bg:var(--bs-bg-1);--bs-control-action-hover-bg:var(--bs-bg-2);--bs-control-transition-property:border-color, box-shadow;--bs-control-transition-timing:.15s ease-in-out;--bs-control-transition:var(--bs-control-transition-property) var(--bs-control-transition-timing);--bs-control-placeholder-color:var(--bs-fg-3);--bs-control-disabled-color:var(--bs-control-fg);--bs-control-disabled-bg:var(--bs-bg-2);--bs-control-disabled-border-color:var(--bs-control-border-color);--bs-control-select-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");--bs-control-select-bg-position:right .75rem center;--bs-control-select-bg-size:16px 12px;--bs-control-select-bg-dark:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");width:100%;min-height:var(--bs-control-min-height);padding:var(--bs-control-padding-y) var(--bs-control-padding-x);font-size:var(--bs-control-font-size);line-height:var(--bs-control-line-height);color:var(--bs-control-fg);appearance:none;background-color:var(--bs-control-bg);border:var(--bs-control-border-width) solid var(--bs-control-border-color);border-radius:var(--bs-control-border-radius);box-shadow:var(--bs-control-box-shadow);transition:var(--bs-control-transition);background-clip:padding-box;display:flex}@media (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control:focus-visible{--bs-focus-ring-offset:-1px;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-control::placeholder{color:var(--bs-control-placeholder-color);opacity:1}.form-control:disabled{color:var(--bs-control-disabled-color);background-color:var(--bs-control-disabled-bg);border-color:var(--bs-control-disabled-border-color);opacity:1}.form-control::-webkit-datetime-edit{height:1.5rem;margin-bottom:-.125rem;padding:0;display:block}.form-control::-webkit-datetime-edit-fields-wrapper{height:1.5rem}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled,[readonly]){cursor:pointer}.form-control::file-selector-button{min-height:var(--bs-control-min-height);padding:var(--bs-control-padding-y) var(--bs-control-padding-x);margin:calc(var(--bs-control-padding-y) * -1) calc(var(--bs-control-padding-x) * -1);color:var(--bs-control-fg);pointer-events:none;background-color:var(--bs-control-action-bg);border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-control-border-width);transition:var(--bs-control-transition);border-radius:0;margin-inline-end:var(--bs-control-padding-x)}@media (prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled,[readonly])::file-selector-button{background-color:var(--bs-control-action-hover-bg)}.form-control-plaintext{--bs-control-min-height:var(--bs-btn-input-min-height);--bs-control-padding-y:var(--bs-btn-input-padding-y);--bs-control-padding-x:var(--bs-btn-input-padding-x);--bs-control-font-size:var(--bs-btn-input-font-size);--bs-control-line-height:var(--bs-btn-input-line-height);--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-radius-5);--bs-control-box-shadow:var(--bs-box-shadow-inset);--bs-control-action-bg:var(--bs-bg-1);--bs-control-action-hover-bg:var(--bs-bg-2);--bs-control-transition-property:border-color, box-shadow;--bs-control-transition-timing:.15s ease-in-out;--bs-control-transition:var(--bs-control-transition-property) var(--bs-control-transition-timing);--bs-control-placeholder-color:var(--bs-fg-3);--bs-control-disabled-color:var(--bs-control-fg);--bs-control-disabled-bg:var(--bs-bg-2);--bs-control-disabled-border-color:var(--bs-control-border-color);--bs-control-select-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");--bs-control-select-bg-position:right .75rem center;--bs-control-select-bg-size:16px 12px;--bs-control-select-bg-dark:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");width:100%;padding:var(--bs-control-padding-y) 0;line-height:var(--bs-control-line-height);color:var(--bs-control-fg);border:solid #0000;border-width:var(--bs-control-border-width) 0;background-color:#0000;margin-bottom:0;display:block}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-inline:0}select.form-control,.form-control-caret{background-image:var(--bs-control-select-bg);background-repeat:no-repeat;background-position:var(--bs-control-select-bg-position);background-size:var(--bs-control-select-bg-size);padding-inline-end:calc(var(--bs-control-padding-x) * 3)}select.form-control[multiple],select.form-control[size]:not([size="1"]),.form-control-caret[multiple],.form-control-caret[size]:not([size="1"]){background-image:none;padding-inline-end:var(--bs-control-padding-x)}[data-bs-theme=dark] select.form-control,[data-bs-theme=dark] .form-control-caret{background-image:var(--bs-control-select-bg-dark)}.form-control-sm{--bs-control-min-height:var(--bs-btn-input-sm-min-height);--bs-control-padding-y:var(--bs-btn-input-sm-padding-y);--bs-control-padding-x:var(--bs-btn-input-sm-padding-x);--bs-control-font-size:var(--bs-btn-input-sm-font-size);--bs-control-line-height:var(--bs-btn-input-sm-line-height);--bs-control-border-radius:var(--bs-btn-input-sm-border-radius)}.form-control-lg{--bs-control-min-height:var(--bs-btn-input-lg-min-height);--bs-control-padding-y:var(--bs-btn-input-lg-padding-y);--bs-control-padding-x:var(--bs-btn-input-lg-padding-x);--bs-control-font-size:var(--bs-btn-input-lg-font-size);--bs-control-line-height:var(--bs-btn-input-lg-line-height);--bs-control-border-radius:var(--bs-btn-input-lg-border-radius)}.form-control-color{width:var(--bs-control-min-height);padding:var(--bs-control-padding-y)}.form-control-color:not(:disabled,[readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border-radius:var(--bs-radius-5);border:0!important}.form-control-color::-webkit-color-swatch{border-radius:var(--bs-radius-5);border:0!important}.form-ghost{width:100%;font:inherit;color:inherit;appearance:none;background:0 0;border:0;padding:0;display:block}.form-ghost:focus{outline:0}.form-ghost::placeholder{color:var(--bs-fg-3);opacity:1}.form-ghost:disabled{color:var(--bs-fg-4);cursor:not-allowed}.check{--bs-check-size:1.25rem;--bs-check-margin-block:.125rem;--bs-check-bg:var(--bs-bg-body);--bs-check-border-color:var(--bs-border-color);--bs-check-border-radius:var(--bs-radius-5);--bs-check-icon-checked:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e");--bs-check-icon-indeterminate:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e");--bs-check-checked-bg:var(--bs-control-checked-bg);--bs-check-checked-border-color:var(--bs-control-checked-border-color);--bs-check-indeterminate-bg:var(--bs-control-checked-bg);--bs-check-indeterminate-border-color:var(--bs-control-checked-border-color);--bs-check-active-bg:var(--bs-control-active-bg);--bs-check-active-border-color:var(--bs-control-active-border-color);--bs-check-disabled-bg:var(--bs-control-disabled-bg);--bs-check-disabled-opacity:var(--bs-control-disabled-opacity);width:var(--bs-check-size);height:var(--bs-check-size);margin-block:var(--bs-check-margin-block);appearance:none;background-color:var(--bs-theme-bg,var(--bs-check-bg));border:1px solid var(--bs-theme-bg,var(--bs-check-border-color));border-radius:33%;flex-shrink:0;position:relative}.check:checked,.check:indeterminate{background-color:var(--bs-theme-bg,var(--bs-check-checked-bg));border-color:var(--bs-theme-bg,var(--bs-check-checked-border-color))}.check:checked:before,.check:indeterminate:before{pointer-events:none;content:"";background-color:var(--bs-theme-contrast,var(--bs-primary-contrast));position:absolute;inset:0;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.check:checked:before{mask-image:var(--bs-check-icon-checked)}.check:indeterminate:before{mask-image:var(--bs-check-icon-indeterminate)}.check:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:-1px}.check:disabled{--bs-check-bg:var(--bs-check-disabled-bg)}.check:disabled~label{color:var(--bs-fg-3);cursor:default}.check:disabled:checked{opacity:var(--bs-check-disabled-opacity)}.check-sm{--bs-check-size:1rem}.check-sm+label{font-size:var(--bs-font-size-sm)}.check-lg{--bs-check-size:1.5rem;--bs-check-margin-block:.375rem}.check-lg+label{font-size:var(--bs-font-size-lg)}.radio{--bs-radio-size:1.25rem;--bs-radio-margin-block:.125rem;--bs-radio-bg:var(--bs-bg-body);--bs-radio-border-color:var(--bs-border-color);--bs-radio-checked-bg:var(--bs-control-checked-bg);--bs-radio-checked-border-color:var(--bs-control-checked-border-color);--bs-radio-disabled-bg:var(--bs-control-disabled-bg);--bs-radio-disabled-opacity:var(--bs-control-disabled-opacity);width:var(--bs-radio-size);height:var(--bs-radio-size);margin-block:var(--bs-radio-margin-block);appearance:none;background-color:var(--bs-theme-bg,var(--bs-radio-bg));border:1px solid var(--bs-theme-bg,var(--bs-radio-border-color));border-radius:50%;flex-shrink:0;position:relative}.radio:checked{color:var(--bs-theme-contrast,var(--bs-primary-contrast));background-color:var(--bs-theme-bg,var(--bs-radio-checked-bg));border-color:var(--bs-theme-bg,var(--bs-radio-checked-border-color))}.radio:checked:before{inset:calc(var(--bs-radio-size) * .25);content:"";background-color:currentColor;border-radius:50%;position:absolute}.radio:disabled{--bs-radio-bg:var(--bs-radio-disabled-bg)}.radio:disabled~label{color:var(--bs-secondary-fg);cursor:default}.radio:disabled:checked{opacity:var(--bs-radio-disabled-opacity)}.radio:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.radio-sm{--bs-radio-size:1rem}.radio-sm+label{font-size:var(--bs-font-size-sm)}.radio-lg{--bs-radio-size:1.5rem;--bs-radio-margin-block:.375rem}.radio-lg+label{font-size:var(--bs-font-size-lg)}.switch{--bs-switch-height:1.25rem;--bs-switch-width:calc(var(--bs-switch-height) * 1.75);--bs-switch-padding:.0625rem;--bs-switch-margin-block:.125rem;--bs-switch-bg:var(--bs-bg-3);--bs-switch-border-width:var(--bs-border-width);--bs-switch-border-color:var(--bs-border-color);--bs-switch-indicator-bg:var(--bs-white);--bs-switch-indicator-width:calc(var(--bs-switch-height) - var(--bs-switch-padding) * 2 - var(--bs-switch-border-width) * 2);--bs-switch-indicator-height:calc(var(--bs-switch-height) - var(--bs-switch-padding) * 2 - var(--bs-switch-border-width) * 2);--bs-switch-checked-bg:var(--bs-control-checked-bg);--bs-switch-checked-border-color:var(--bs-switch-checked-bg);--bs-switch-checked-indicator-bg:var(--bs-white);--bs-switch-disabled-bg:var(--bs-control-disabled-bg);--bs-switch-disabled-indicator-bg:var(--bs-fg-3);width:var(--bs-switch-width);height:var(--bs-switch-height);padding:var(--bs-switch-padding);margin-block:var(--bs-switch-margin-block);background-color:var(--bs-switch-bg);border:var(--bs-switch-border-width) solid var(--bs-switch-border-color);border-radius:10rem;flex-shrink:0;transition:background-color .15s ease-in-out;position:relative;box-shadow:inset 0 1px 2px #0000000d}.switch:before{inset-block:var(--bs-switch-padding);width:var(--bs-switch-indicator-width);height:var(--bs-switch-indicator-height);content:"";background-color:var(--bs-theme-contrast,var(--bs-switch-indicator-bg));border-radius:10rem;transition:inset-inline-start .15s ease-in-out;position:absolute;inset-inline-start:var(--bs-switch-padding);box-shadow:0 1px 2px #0000001a}.switch input{appearance:none;background-color:#0000;outline:0;position:absolute;inset:0}.switch:focus-within{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.switch:has(input:disabled:not(:checked)){--bs-switch-bg:var(--bs-switch-disabled-bg);--bs-switch-indicator-bg:var(--bs-switch-disabled-indicator-bg)}.switch:has(input:disabled:not(:checked)):before{opacity:.4}.switch:has(input:disabled:not(:checked))~label{color:var(--bs-fg-3);cursor:default}.switch:has(input:checked){background-color:var(--bs-theme-bg,var(--bs-switch-checked-bg));border-color:var(--bs-theme-bg,var(--bs-switch-checked-border-color))}.switch:has(input:checked):before{inset-inline-start:calc(100% - var(--bs-switch-indicator-width) - var(--bs-switch-padding))}.switch:has(input:checked:disabled){opacity:.65}.switch:has(input:checked:disabled)~label{color:var(--bs-fg-3);cursor:default}.switch-sm{--bs-switch-height:1rem}.switch-sm+label{font-size:var(--bs-font-size-sm)}.switch-lg{--bs-switch-height:1.5rem;--bs-switch-margin-block:.375rem}.switch-lg+label{font-size:var(--bs-font-size-lg)}.form-range{--bs-range-track-width:100%;--bs-range-track-height:.5rem;--bs-range-track-cursor:pointer;--bs-range-track-bg:var(--bs-bg-3);--bs-range-track-border-radius:1rem;--bs-range-track-fill-bg:var(--bs-primary-base);--bs-range-track-disabled-bg:color-mix(in oklch, var(--bs-bg-4), var(--bs-fg-3));--bs-range-thumb-width:1rem;--bs-range-thumb-height:var(--bs-range-thumb-width);--bs-range-thumb-bg:var(--bs-primary-base);--bs-range-thumb-border:var(--bs-range-thumb-bg) solid var(--bs-border-color);--bs-range-thumb-border-radius:1rem;--bs-range-thumb-box-shadow:0 1px 2px #00000013, 0 2px 4px #00000013;--bs-range-thumb-active-bg:color-mix(in oklch, var(--bs-primary-base) 70%, var(--bs-bg-body));--bs-range-thumb-disabled-bg:var(--bs-fg-3);--bs-range-thumb-transition-property:background-color, border-color, box-shadow;--bs-range-thumb-transition-timing:.15s ease-in-out;--bs-range-thumb-transition:var(--bs-range-thumb-transition-property) var(--bs-range-thumb-transition-timing);--bs-range-tick-width:var(--bs-border-width);--bs-range-tick-height:.5rem;--bs-range-tick-bg:var(--bs-border-color);width:100%;display:block;position:relative}.form-range-input{width:100%;height:calc(var(--bs-range-thumb-height) + var(--bs-focus-ring-width) * 2);appearance:none;background-color:#0000;padding:0;display:block}.form-range-input:hover::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent)}.form-range-input:hover::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid color-mix(in oklch, var(--bs-primary-focus-ring), transparent)}.form-range-input:focus-visible{outline:0}.form-range-input:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:0}.form-range-input:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:0}.form-range-input::-moz-focus-outer{border:0}.form-range-input::-webkit-slider-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);background-image:var(--bs-gradient);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range-input::-webkit-slider-thumb{transition:none}}.form-range-input::-webkit-slider-thumb:active{background-color:var(--bs-range-thumb-active-bg);background-image:var(--bs-gradient)}.form-range-input::-webkit-slider-thumb{margin-top:calc((var(--bs-range-track-height) - var(--bs-range-thumb-height)) * .5)}.form-range-input::-moz-range-thumb{width:var(--bs-range-thumb-width);height:var(--bs-range-thumb-height);appearance:none;background-color:var(--bs-range-thumb-bg);background-image:var(--bs-gradient);border:var(--bs-range-thumb-border);border-radius:var(--bs-range-thumb-border-radius);box-shadow:var(--bs-range-thumb-box-shadow);transition:var(--bs-range-thumb-transition)}@media (prefers-reduced-motion:reduce){.form-range-input::-moz-range-thumb{transition:none}}.form-range-input::-moz-range-thumb:active{background-color:var(--bs-range-thumb-active-bg);background-image:var(--bs-gradient)}.form-range-input::-webkit-slider-runnable-track{width:var(--bs-range-track-width);height:var(--bs-range-track-height);color:#0000;cursor:var(--bs-range-track-cursor);background-color:var(--bs-range-track-bg);background-image:linear-gradient(to right, var(--bs-range-track-fill-bg) calc(var(--bs-range-fill,0) * 100%), transparent calc(var(--bs-range-fill,0) * 100%));border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range-input::-moz-range-track{width:var(--bs-range-track-width);height:var(--bs-range-track-height);color:#0000;cursor:var(--bs-range-track-cursor);background-color:var(--bs-range-track-bg);background-image:linear-gradient(to right, var(--bs-range-track-fill-bg) calc(var(--bs-range-fill,0) * 100%), transparent calc(var(--bs-range-fill,0) * 100%));border-radius:var(--bs-range-track-border-radius);box-shadow:var(--bs-range-track-box-shadow);border-color:#0000}.form-range-input:disabled{pointer-events:none}.form-range-input:disabled::-webkit-slider-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-range-input:disabled::-moz-range-thumb{background-color:var(--bs-range-thumb-disabled-bg)}.form-range-input:disabled::-webkit-slider-runnable-track{--bs-range-track-fill-bg:var(--bs-range-track-disabled-bg)}.form-range-input:disabled::-moz-range-track{--bs-range-track-fill-bg:var(--bs-range-track-disabled-bg)}.form-range-bubble{bottom:100%;left:calc(var(--bs-range-thumb-width) * .5 + var(--bs-range-fill,0) * (100% - var(--bs-range-thumb-width)));margin-bottom:var(--bs-tooltip-arrow-height);pointer-events:none;position:absolute;transform:translate(-50%)}.form-range-bubble .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height));position:absolute;left:50%;transform:translate(-50%)}.form-range-ticks{padding-inline:calc(var(--bs-range-thumb-width) * .25);display:grid}.form-range-tick{flex-direction:column;justify-self:start;align-items:center;width:0;display:flex}.form-range-tick:before{width:var(--bs-range-tick-width);height:var(--bs-range-tick-height);content:"";background-color:var(--bs-range-tick-bg)}.form-range-tick:first-child{align-items:flex-start}.form-range-tick:last-child{align-items:flex-end}.form-range-tick-label{font-size:var(--bs-font-size-sm);color:var(--bs-fg-2);white-space:nowrap;margin-top:.125rem}.form-floating{--bs-form-floating-height:calc(3.75rem + var(--bs-border-width) * 2);--bs-form-floating-line-height:1.25;--bs-form-floating-padding-x:calc(var(--bs-btn-input-padding-x) * 1.25);--bs-form-floating-padding-y:1rem;--bs-form-floating-input-padding-t:1.625rem;--bs-form-floating-input-padding-b:.625rem;--bs-form-floating-label-height:1.5em;--bs-form-floating-label-bg:var(--bs-btn-input-bg);--bs-form-floating-label-disabled-bg:var(--bs-bg-2);--bs-form-floating-label-opacity:.65;--bs-form-floating-label-transform:scale(.85) translateY(-.5rem) translateX(.15rem);--bs-form-floating-label-disabled-color:var(--bs-fg-3);--bs-form-floating-transition-property:opacity, transform;--bs-form-floating-transition-timing:.1s ease-in-out;--bs-form-floating-transition:var(--bs-form-floating-transition-property) var(--bs-form-floating-transition-timing);position:relative}.form-floating>label{z-index:2;max-width:100%;height:100%;padding:var(--bs-form-floating-padding-y) var(--bs-form-floating-padding-x);color:color-mix(in oklch, var(--bs-fg-body) var(--bs-form-floating-label-opacity), transparent);text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid transparent;transform-origin:0 0;transition:var(--bs-form-floating-transition);align-items:center;display:flex;position:absolute;inset-block-start:0;inset-inline-start:0;overflow:hidden}@media (prefers-reduced-motion:reduce){.form-floating>label{transition:none}}.form-floating>label:has(~textarea){align-items:flex-start}.form-floating>.form-control,.form-floating>.form-control-plaintext{height:var(--bs-form-floating-height);min-height:var(--bs-form-floating-height);padding:var(--bs-form-floating-padding-y) var(--bs-form-floating-padding-x);line-height:var(--bs-form-floating-line-height)}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:#0000}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),:-webkit-any(.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill){padding-top:var(--bs-form-floating-input-padding-t);padding-bottom:var(--bs-form-floating-input-padding-b)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown),:is(.form-floating>.form-control:autofill,.form-floating>.form-control-plaintext:autofill){padding-top:var(--bs-form-floating-input-padding-t);padding-bottom:var(--bs-form-floating-input-padding-b)}.form-floating>label:has(~.form-control:focus),.form-floating>label:has(~.form-control:not(:placeholder-shown)),.form-floating>label:has(~.form-control-plaintext){transform:var(--bs-form-floating-label-transform)}.form-floating>label:has(~.form-control:-webkit-autofill){transform:var(--bs-form-floating-label-transform)}.form-floating>label:has(~textarea:focus):after,.form-floating>label:has(~textarea:not(:placeholder-shown)):after{inset:var(--bs-form-floating-padding-y) calc(var(--bs-form-floating-padding-x) * .5);z-index:-1;height:var(--bs-form-floating-label-height);content:"";background-color:var(--bs-form-floating-label-bg);border-radius:var(--bs-btn-input-border-radius);position:absolute}.form-floating>label:has(~textarea:disabled):after{background-color:var(--bs-form-floating-label-disabled-bg)}.form-floating>label:has(~.form-control-plaintext){border-width:var(--bs-control-border-width) 0}.form-floating>label:has(~:disabled),.form-floating>label:has(~.form-control:disabled){color:var(--bs-form-floating-label-disabled-color)}.strength{--bs-strength-height:.375rem;--bs-strength-gap:.25rem;--bs-strength-margin-top:.25rem;--bs-strength-border-radius:var(--bs-radius-pill);--bs-strength-bg:var(--bs-bg-2);--bs-strength-color:var(--bs-bg-2);--bs-strength-weak-color:var(--bs-danger-bg);--bs-strength-fair-color:var(--bs-warning-bg);--bs-strength-good-color:var(--bs-info-bg);--bs-strength-strong-color:var(--bs-success-bg);gap:var(--bs-strength-gap);width:100%;margin-top:var(--bs-strength-margin-top);display:flex}.strength-segment{height:var(--bs-strength-height);background-color:var(--bs-strength-bg);border-radius:var(--bs-strength-border-radius);flex:1;transition:background-color .2s ease-in-out,width .3s ease-in-out}@media (prefers-reduced-motion:reduce){.strength-segment{transition:none}}.strength-segment.active{background-color:var(--bs-strength-color)}.strength[data-bs-strength=weak]{--bs-strength-color:var(--bs-strength-weak-color)}.strength[data-bs-strength=fair]{--bs-strength-color:var(--bs-strength-fair-color)}.strength[data-bs-strength=good]{--bs-strength-color:var(--bs-strength-good-color)}.strength[data-bs-strength=strong]{--bs-strength-color:var(--bs-strength-strong-color)}.strength-text{margin-top:var(--bs-strength-margin-top);font-size:var(--bs-font-size-xs);color:var(--bs-strength-color,var(--bs-fg-3));transition:color .2s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.strength-text{transition:none}}.strength-text:empty{display:none}.strength-bar{--bs-strength-height:.375rem;--bs-strength-gap:.25rem;--bs-strength-margin-top:.25rem;--bs-strength-border-radius:var(--bs-radius-pill);--bs-strength-bg:var(--bs-bg-2);--bs-strength-color:transparent;--bs-strength-weak-color:var(--bs-danger-bg);--bs-strength-fair-color:var(--bs-warning-bg);--bs-strength-good-color:var(--bs-info-bg);--bs-strength-strong-color:var(--bs-success-bg);--bs-strength-width:0%;width:100%;height:var(--bs-strength-height);margin-top:var(--bs-strength-margin-top);background-color:var(--bs-strength-bg);border-radius:var(--bs-strength-border-radius);overflow:hidden}.strength-bar:after{width:var(--bs-strength-width);content:"";background-color:var(--bs-strength-color);border-radius:var(--bs-strength-border-radius);height:100%;transition:background-color .2s ease-in-out,width .3s ease-in-out;display:block}@media (prefers-reduced-motion:reduce){.strength-bar:after{transition:none}}.strength-bar[data-bs-strength=weak]{--bs-strength-color:var(--bs-strength-weak-color);--bs-strength-width:25%}.strength-bar[data-bs-strength=fair]{--bs-strength-color:var(--bs-strength-fair-color);--bs-strength-width:50%}.strength-bar[data-bs-strength=good]{--bs-strength-color:var(--bs-strength-good-color);--bs-strength-width:75%}.strength-bar[data-bs-strength=strong]{--bs-strength-color:var(--bs-strength-strong-color);--bs-strength-width:100%}.form-adorn{--bs-form-adorn-gap:.375rem;--bs-form-adorn-icon-size:1rem;--bs-form-adorn-icon-color:var(--bs-fg-2);gap:var(--bs-form-adorn-gap);align-items:center}.form-adorn:focus-visible{outline:0}.form-adorn:focus-within{--bs-focus-ring-offset:-1px;border-color:var(--bs-focus-ring-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-adorn>.form-ghost{flex:1;min-width:0}.form-adorn.form-adorn-end>.form-ghost{order:-1}.form-adorn-icon{color:var(--bs-form-adorn-icon-color);pointer-events:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.form-adorn-icon>svg{width:var(--bs-form-adorn-icon-size);height:var(--bs-form-adorn-icon-size)}.form-adorn-text{color:var(--bs-form-adorn-icon-color);pointer-events:none;-webkit-user-select:none;user-select:none;flex-shrink:0}.chip-input{--bs-chip-input-padding-y:.75rem;--bs-chip-input-padding-x:.75rem;--bs-chip-input-gap:.375rem;--bs-chip-input-ghost-min-width:5rem;--bs-control-fg:var(--bs-btn-input-fg);--bs-control-bg:var(--bs-btn-input-bg);--bs-control-border-width:var(--bs-border-width);--bs-control-border-color:var(--bs-border-color);--bs-control-border-radius:var(--bs-radius-5);gap:var(--bs-chip-input-gap);padding:var(--bs-chip-input-padding-y) var(--bs-chip-input-padding-x);color:var(--bs-control-fg);background-color:var(--bs-control-bg);border:var(--bs-control-border-width) solid var(--bs-control-border-color);border-radius:var(--bs-control-border-radius);flex-wrap:wrap;align-items:center;display:flex}.chip-input:focus-within{--bs-focus-ring-offset:-1px;border-color:var(--bs-focus-ring-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.chip-input>.form-ghost{min-width:var(--bs-chip-input-ghost-min-width);flex:1 1 0;min-height:1.75rem}.chip-input.disabled,.chip-input:has(.form-ghost:disabled){cursor:not-allowed;background-color:var(--bs-bg-2);opacity:1}.chip-input.disabled:focus-within,.chip-input:has(.form-ghost:disabled):focus-within{border-color:var(--bs-control-border-color);outline:0}.chip-input.disabled>.chip,.chip-input:has(.form-ghost:disabled)>.chip{pointer-events:none;opacity:var(--bs-control-disabled-opacity)}.form-field{gap:.5rem;display:grid;position:relative}.form-field>label,.form-field>.form-label{justify-self:start;margin-bottom:0}.form-field:has(>.check,>.radio,>.switch){grid-template-columns:auto 1fr;align-items:start;column-gap:.5rem}.form-field:has(>.check,>.radio,>.switch)>.check,.form-field:has(>.check,>.radio,>.switch)>.radio,.form-field:has(>.check,>.radio,>.switch)>.switch{grid-column:1}.form-field:has(>.check,>.radio,>.switch)>:not(.check,.radio,.switch){grid-column:2}.form-field:has(>.check,>.radio,>.switch)>.form-label{grid-column:1/-1}.form-field-content{flex-direction:column;align-items:flex-start;display:flex}.form-field-card{padding:calc(var(--bs-spacer) * .75);cursor:pointer;border:var(--bs-border-width) solid transparent;border-radius:var(--bs-radius-7);position:relative}.form-field-card:hover{background-color:var(--bs-bg-1)}.form-field-card:has(:checked){background-color:var(--bs-bg-1);border-color:var(--bs-border-color)}.form-field-card label:before{content:"";position:absolute;inset:0}.form-group{gap:.5rem;display:grid}.form-group>label,.form-group>.form-label,.form-group>legend{justify-self:start;margin-bottom:0}}@layer components{.input-group{--bs-input-group-addon-padding-y:var(--bs-btn-input-padding-y);--bs-input-group-addon-padding-x:var(--bs-btn-input-padding-x);--bs-input-group-addon-font-size:var(--bs-btn-input-font-size);--bs-input-group-addon-line-height:var(--bs-btn-input-line-height);--bs-input-group-addon-color:var(--bs-fg-body);--bs-input-group-addon-bg:var(--bs-bg-2);--bs-input-group-addon-border-color:var(--bs-border-color);align-items:stretch;width:100%;display:flex;position:relative}.input-group>.form-control,.input-group>.form-floating{flex:auto;width:1%;min-width:0;position:relative}.input-group>.form-control:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group>.input-group-btn{z-index:2;position:relative}.input-group>.input-group-btn:focus{z-index:5}.input-group-text{padding:var(--bs-input-group-addon-padding-y) var(--bs-input-group-addon-padding-x);font-size:var(--bs-input-group-addon-font-size);line-height:var(--bs-input-group-addon-line-height);color:var(--bs-input-group-addon-color);text-align:center;white-space:nowrap;background-color:var(--bs-input-group-addon-bg);border:var(--bs-border-width) solid var(--bs-input-group-addon-border-color);border-radius:var(--bs-btn-input-border-radius);align-items:center;display:flex}.input-group-sm>.form-control,.input-group-sm>.input-group-text,.input-group-sm>.btn{min-height:var(--bs-btn-input-sm-min-height);padding:var(--bs-btn-input-sm-padding-y) var(--bs-btn-input-sm-padding-x);font-size:var(--bs-btn-input-sm-font-size);border-radius:var(--bs-btn-input-sm-border-radius)}.input-group-lg>.form-control,.input-group-lg>.input-group-text,.input-group-lg>.btn{min-height:var(--bs-btn-input-lg-min-height);padding:var(--bs-btn-input-lg-padding-y) var(--bs-btn-input-lg-padding-x);font-size:var(--bs-btn-input-lg-font-size);border-radius:var(--bs-btn-input-lg-border-radius)}.input-group>:not(:last-child,.menu-toggle-split,.menu,.input-group-ignore,.form-floating,:has(+:is(.menu,.input-group-ignore):last-child)),.input-group>.menu-toggle-split:nth-last-child(n+3),.input-group>.form-floating:not(:last-child)>.form-control,.input-group>.form-floating:not(:last-child)>.form-select{border-start-end-radius:0;border-end-end-radius:0}.input-group>:not(:first-child,.menu,.input-group-ignore){border-start-start-radius:0;border-end-start-radius:0;margin-inline-start:calc(-1 * var(--bs-border-width))}.input-group>:first-child.input-group-ignore+:not(.menu,.input-group-ignore){border-start-start-radius:var(--bs-btn-input-border-radius);border-end-start-radius:var(--bs-btn-input-border-radius)}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-start-start-radius:0;border-end-start-radius:0}.otp{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-font-size);--bs-otp-gap:.5rem;--bs-otp-slot-fg:var(--bs-btn-input-fg);--bs-otp-slot-bg:var(--bs-btn-input-bg);--bs-otp-slot-border-width:var(--bs-border-width);--bs-otp-slot-border-color:var(--bs-border-color);--bs-otp-slot-border-radius:var(--bs-radius-5);display:flex;position:relative}.otp-rendered .otp-input{color:#0000;pointer-events:auto;cursor:default;caret-color:#0000;width:100%;height:100%;box-shadow:none;background-color:#0000;border:0;outline:0;padding:0;position:absolute;inset:0}.otp-rendered .otp-input::selection{color:#0000;background-color:#0000}.otp-slots{gap:var(--bs-otp-gap);pointer-events:none;display:inline-flex}.otp-slot{width:var(--bs-otp-size);min-height:var(--bs-otp-size);font-size:var(--bs-otp-font-size);color:var(--bs-otp-slot-fg);-webkit-user-select:none;user-select:none;background-color:var(--bs-otp-slot-bg);border:var(--bs-otp-slot-border-width) solid var(--bs-otp-slot-border-color);border-radius:var(--bs-otp-slot-border-radius);box-shadow:var(--bs-box-shadow-inset);justify-content:center;align-items:center;font-weight:500;line-height:1;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex}@media (prefers-reduced-motion:reduce){.otp-slot{transition:none}}.otp-slot-active{--bs-focus-ring-offset:-1px;z-index:1;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.otp-slot-active:not(.otp-slot-filled):after{content:"";background-color:var(--bs-otp-slot-fg);width:1px;height:50%;animation:1s step-end infinite otp-caret-blink}.otp-input:disabled~.otp-slots .otp-slot{background-color:var(--bs-bg-2)}.otp-connected .otp-slots{gap:0}.otp-connected .otp-slot{border-radius:0}.otp-connected .otp-slot:not(:first-child){margin-inline-start:calc(var(--bs-otp-slot-border-width) * -1)}.otp-connected .otp-slot:first-child{border-start-start-radius:var(--bs-otp-slot-border-radius);border-end-start-radius:var(--bs-otp-slot-border-radius)}.otp-connected .otp-slot:last-child{border-start-end-radius:var(--bs-otp-slot-border-radius);border-end-end-radius:var(--bs-otp-slot-border-radius)}.otp-separator{padding-inline:var(--bs-otp-gap);font-size:var(--bs-otp-font-size);color:var(--bs-fg-4);-webkit-user-select:none;user-select:none;align-items:center;display:flex}.otp-sm{--bs-otp-size:var(--bs-btn-input-sm-min-height);--bs-otp-font-size:var(--bs-btn-input-sm-font-size)}.otp-lg{--bs-otp-size:var(--bs-btn-input-lg-min-height);--bs-otp-font-size:var(--bs-btn-input-lg-font-size)}.combobox-toggle{width:100%;text-align:start;cursor:pointer;justify-content:space-between;align-items:center;gap:.5rem;padding-inline-end:var(--bs-control-padding-x);display:inline-flex}.combobox-toggle.show{background-color:var(--bs-bg-1)}.combobox-toggle:disabled,.combobox-toggle.disabled{cursor:not-allowed;opacity:.65}.combobox-value{text-overflow:ellipsis;white-space:nowrap;flex:1;align-items:center;gap:.5rem;display:flex;overflow:hidden}.combobox-placeholder{color:color-mix(in oklch, currentcolor 65%, transparent)}.combobox-caret{flex-shrink:0;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.combobox-caret{transition:none}}.show>.combobox-caret{transform:rotate(180deg)}.combobox-toggle+.menu{--bs-menu-max-height:300px;--bs-menu-overflow-y:auto}.combobox-search{z-index:1;padding:var(--bs-menu-padding-x,.25rem);background-color:var(--bs-menu-bg,var(--bs-bg-body));position:sticky;top:0}.combobox-search-input{width:100%}.combobox-no-results{font-size:var(--bs-font-size-sm);color:var(--bs-fg-3);text-align:center;padding:1rem}.valid-feedback{width:100%;font-size:var(--bs-font-size-sm);color:var(--bs-success-fg);display:none}.tooltip.valid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-success-contrast);text-align:center;background-color:var(--bs-success-bg);opacity:1;border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.is-valid~.valid-feedback,.is-valid~.valid-tooltip,:is([data-bs-validate~=valid] :user-valid~.valid-feedback,[data-bs-validate~=valid] :user-valid~.valid-tooltip){display:block}.form-control.is-valid{--bs-control-border-color:var(--bs-success-border)}.form-control.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-control:user-valid{--bs-control-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-control:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-success-border)}.check.is-valid{--bs-check-border-color:var(--bs-success-border);--bs-check-checked-bg:var(--bs-success-bg);--bs-check-checked-border-color:var(--bs-success-bg)}.check.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .check:user-valid{--bs-check-border-color:var(--bs-success-border);--bs-check-checked-bg:var(--bs-success-bg);--bs-check-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .check:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.check.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.check.is-valid) .valid-feedback,.form-field:has(.check.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.check:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip){display:block}.radio.is-valid{--bs-radio-border-color:var(--bs-success-border);--bs-radio-checked-bg:var(--bs-success-bg);--bs-radio-checked-border-color:var(--bs-success-bg)}.radio.is-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .radio:user-valid{--bs-radio-border-color:var(--bs-success-border);--bs-radio-checked-bg:var(--bs-success-bg);--bs-radio-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .radio:user-valid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.radio.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.radio.is-valid) .valid-feedback,.form-field:has(.radio.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.radio:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip){display:block}.switch:has(input.is-valid){--bs-switch-border-color:var(--bs-success-border);--bs-switch-checked-bg:var(--bs-success-bg);--bs-switch-checked-border-color:var(--bs-success-bg)}.switch:has(input.is-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .switch:has(input:user-valid){--bs-switch-border-color:var(--bs-success-border);--bs-switch-checked-bg:var(--bs-success-bg);--bs-switch-checked-border-color:var(--bs-success-bg)}[data-bs-validate~=valid] .switch:has(input:user-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.switch input.is-valid) label{color:var(--bs-success-fg)}.form-field:has(.switch input.is-valid) .valid-feedback,.form-field:has(.switch input.is-valid) .valid-tooltip{display:block}[data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label{color:var(--bs-success-fg)}:is([data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip){display:block}.chip-input:has(.form-ghost.is-valid){border-color:var(--bs-success-border)}.chip-input:has(.form-ghost.is-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}.chip-input:has(.form-ghost.is-valid)~.valid-feedback,.chip-input:has(.form-ghost.is-valid)~.valid-tooltip{display:block}[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid){border-color:var(--bs-success-border)}[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}:is([data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid)~.valid-feedback,[data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid)~.valid-tooltip){display:block}.form-adorn:has(.form-ghost.is-valid){border-color:var(--bs-success-border)}.form-adorn:has(.form-ghost.is-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}.form-adorn:has(.form-ghost.is-valid)~.valid-feedback,.form-adorn:has(.form-ghost.is-valid)~.valid-tooltip{display:block}[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid){border-color:var(--bs-success-border)}[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-success-border)}:is([data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid)~.valid-feedback,[data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid)~.valid-tooltip){display:block}.form-range-input.is-valid::-webkit-slider-thumb{background:var(--bs-success-bg)}.form-range-input.is-valid::-moz-range-thumb{background:var(--bs-success-bg)}.form-range-input.is-valid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range-input.is-valid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb{background:var(--bs-success-bg)}[data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb{background:var(--bs-success-bg)}[data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range:has(.form-range-input.is-valid)~.valid-feedback,.form-range:has(.form-range-input.is-valid)~.valid-tooltip,.form-field:has(.input-group .form-control.is-valid) .valid-feedback,.form-field:has(.input-group .form-control.is-valid) .valid-tooltip,:is([data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,[data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip){display:block}.input-group>.form-control:not(:focus).is-valid,.input-group>.form-floating:not(:focus-within).is-valid,:is([data-bs-validate~=valid] .input-group>.form-control:not(:focus),.input-group>.form-floating:not(:focus-within):user-valid){z-index:3}.otp.is-valid .otp-slot{--bs-otp-slot-border-color:var(--bs-success-border)}.otp.is-valid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate~=valid] .otp:user-valid .otp-slot{--bs-otp-slot-border-color:var(--bs-success-border)}[data-bs-validate~=valid] .otp:user-valid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-success-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.invalid-feedback{width:100%;font-size:var(--bs-font-size-sm);color:var(--bs-danger-fg);display:none}.tooltip.invalid-tooltip{z-index:5;max-width:100%;padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-danger-contrast);text-align:center;background-color:var(--bs-danger-bg);opacity:1;border-radius:var(--bs-tooltip-border-radius);margin-top:.1rem;display:none;position:absolute;top:100%}.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip,:is([data-bs-validate] :user-invalid~.invalid-feedback,[data-bs-validate] :user-invalid~.invalid-tooltip){display:block}.form-control.is-invalid{--bs-control-border-color:var(--bs-danger-border)}.form-control.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-danger-border)}[data-bs-validate] .form-control:user-invalid{--bs-control-border-color:var(--bs-danger-border)}[data-bs-validate] .form-control:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-control-border-color:var(--bs-danger-border)}.check.is-invalid{--bs-check-border-color:var(--bs-danger-border);--bs-check-checked-bg:var(--bs-danger-bg);--bs-check-checked-border-color:var(--bs-danger-bg)}.check.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .check:user-invalid{--bs-check-border-color:var(--bs-danger-border);--bs-check-checked-bg:var(--bs-danger-bg);--bs-check-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .check:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.check.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.check.is-invalid) .invalid-feedback,.form-field:has(.check.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.check:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip){display:block}.radio.is-invalid{--bs-radio-border-color:var(--bs-danger-border);--bs-radio-checked-bg:var(--bs-danger-bg);--bs-radio-checked-border-color:var(--bs-danger-bg)}.radio.is-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .radio:user-invalid{--bs-radio-border-color:var(--bs-danger-border);--bs-radio-checked-bg:var(--bs-danger-bg);--bs-radio-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .radio:user-invalid:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.radio.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.radio.is-invalid) .invalid-feedback,.form-field:has(.radio.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.radio:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip){display:block}.switch:has(input.is-invalid){--bs-switch-border-color:var(--bs-danger-border);--bs-switch-checked-bg:var(--bs-danger-bg);--bs-switch-checked-border-color:var(--bs-danger-bg)}.switch:has(input.is-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .switch:has(input:user-invalid){--bs-switch-border-color:var(--bs-danger-border);--bs-switch-checked-bg:var(--bs-danger-bg);--bs-switch-checked-border-color:var(--bs-danger-bg)}[data-bs-validate] .switch:has(input:user-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-field:has(.switch input.is-invalid) label{color:var(--bs-danger-fg)}.form-field:has(.switch input.is-invalid) .invalid-feedback,.form-field:has(.switch input.is-invalid) .invalid-tooltip{display:block}[data-bs-validate] .form-field:has(.switch input:user-invalid) label{color:var(--bs-danger-fg)}:is([data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip){display:block}.chip-input:has(.form-ghost.is-invalid){border-color:var(--bs-danger-border)}.chip-input:has(.form-ghost.is-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}.chip-input:has(.form-ghost.is-invalid)~.invalid-feedback,.chip-input:has(.form-ghost.is-invalid)~.invalid-tooltip{display:block}[data-bs-validate] .chip-input:has(.form-ghost:user-invalid){border-color:var(--bs-danger-border)}[data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}:is([data-bs-validate] .chip-input:has(.form-ghost:user-invalid)~.invalid-feedback,[data-bs-validate] .chip-input:has(.form-ghost:user-invalid)~.invalid-tooltip){display:block}.form-adorn:has(.form-ghost.is-invalid){border-color:var(--bs-danger-border)}.form-adorn:has(.form-ghost.is-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}.form-adorn:has(.form-ghost.is-invalid)~.invalid-feedback,.form-adorn:has(.form-ghost.is-invalid)~.invalid-tooltip{display:block}[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid){border-color:var(--bs-danger-border)}[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset);border-color:var(--bs-danger-border)}:is([data-bs-validate] .form-adorn:has(.form-ghost:user-invalid)~.invalid-feedback,[data-bs-validate] .form-adorn:has(.form-ghost:user-invalid)~.invalid-tooltip){display:block}.form-range-input.is-invalid::-webkit-slider-thumb{background:var(--bs-danger-bg)}.form-range-input.is-invalid::-moz-range-thumb{background:var(--bs-danger-bg)}.form-range-input.is-invalid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range-input.is-invalid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb{background:var(--bs-danger-bg)}[data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb{background:var(--bs-danger-bg)}[data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.form-range:has(.form-range-input.is-invalid)~.invalid-feedback,.form-range:has(.form-range-input.is-invalid)~.invalid-tooltip,.form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,.form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip,:is([data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,[data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip){display:block}.input-group>.form-control:not(:focus).is-invalid,.input-group>.form-floating:not(:focus-within).is-invalid,:is([data-bs-validate] .input-group>.form-control:not(:focus),.input-group>.form-floating:not(:focus-within):user-invalid){z-index:4}.otp.is-invalid .otp-slot{--bs-otp-slot-border-color:var(--bs-danger-border)}.otp.is-invalid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}[data-bs-validate] .otp:user-invalid .otp-slot{--bs-otp-slot-border-color:var(--bs-danger-border)}[data-bs-validate] .otp:user-invalid .otp-slot-active{outline:var(--bs-focus-ring-width) solid var(--bs-danger-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.btn,.btn-link,.btn-icon,.btn-solid,.btn-outline,.btn-subtle,.btn-text{--bs-btn-min-height:var(--bs-btn-input-min-height);--bs-btn-padding-x:var(--bs-btn-input-padding-x);--bs-btn-padding-y:var(--bs-btn-input-padding-y);--bs-btn-font-size:var(--bs-btn-input-font-size);--bs-btn-font-weight:var(--bs-btn-input-font-weight);--bs-btn-line-height:var(--bs-btn-input-line-height);--bs-btn-color:var(--bs-fg-body);--bs-btn-white-space:nowrap;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-radius-5);--bs-btn-hover-border-color:transparent;--bs-btn-disabled-opacity:.65;--bs-btn-transition-timing:.15s ease-in-out;--bs-btn-transition-property:color, background-color, border-color, box-shadow;--bs-btn-transition:var(--bs-btn-transition-property) var(--bs-btn-transition-timing);gap:var(--bs-btn-gap,.25rem);min-height:var(--bs-btn-min-height);padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);white-space:var(--bs-btn-white-space);vertical-align:middle;cursor:pointer;-webkit-user-select:none;user-select:none;background-color:var(--bs-btn-bg,var(--bs-bg-2));border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);transition:var(--bs-btn-transition);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}@media (prefers-reduced-motion:reduce){.btn,.btn-link,.btn-icon,.btn-solid,.btn-outline,.btn-subtle,.btn-text{transition:none}}.btn:hover,.btn-link:hover,.btn-icon:hover,.btn-solid:hover,.btn-outline:hover,.btn-subtle:hover,.btn-text:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg,var(--bs-bg-3));border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible,.btn-link:focus-visible,.btn-icon:focus-visible,.btn-solid:focus-visible,.btn-outline:focus-visible,.btn-subtle:focus-visible,.btn-text:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.btn.active,.btn.show,.btn-link.active,.btn-link.show,.btn-icon.active,.btn-icon.show,.btn-solid.active,.btn-solid.show,.btn-outline.active,.btn-outline.show,.btn-subtle.active,.btn-subtle.show,.btn-text.active,.btn-text.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg,var(--bs-bg-3));border-color:var(--bs-btn-active-border-color)}.btn.active:focus-visible,.btn.show:focus-visible,.btn-link.active:focus-visible,.btn-link.show:focus-visible,.btn-icon.active:focus-visible,.btn-icon.show:focus-visible,.btn-solid.active:focus-visible,.btn-solid.show:focus-visible,.btn-outline.active:focus-visible,.btn-outline.show:focus-visible,.btn-subtle.active:focus-visible,.btn-subtle.show:focus-visible,.btn-text.active:focus-visible,.btn-text.show:focus-visible{outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.btn:disabled,.btn.disabled,fieldset:disabled .btn,.btn-link:disabled,.btn-link.disabled,fieldset:disabled .btn-link,.btn-icon:disabled,.btn-icon.disabled,fieldset:disabled .btn-icon,.btn-solid:disabled,.btn-solid.disabled,fieldset:disabled .btn-solid,.btn-outline:disabled,.btn-outline.disabled,fieldset:disabled .btn-outline,.btn-subtle:disabled,.btn-subtle.disabled,fieldset:disabled .btn-subtle,.btn-text:disabled,.btn-text.disabled,fieldset:disabled .btn-text{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg,var(--bs-bg-1));border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity);background-image:none}.btn-solid{--bs-btn-bg:var(--bs-theme-bg);--bs-btn-color:var(--bs-theme-contrast);--bs-btn-border-color:var(--bs-theme-bg);--bs-btn-active-bg:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast) calc(l * .9) calc(c * 1.15) h);--bs-btn-disabled-bg:var(--bs-theme-bg);--bs-btn-disabled-color:var(--bs-theme-contrast);--bs-btn-disabled-border-color:var(--bs-theme-bg)}.btn-solid:hover{--bs-btn-hover-bg:oklch(from var(--bs-theme-bg) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-border-color:oklch(from var(--bs-theme-bg) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-color:oklch(from var(--bs-theme-contrast) calc(l * .95) calc(c * 1.1) h)}.btn-solid:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-solid:active,.btn-solid.active,.btn-solid.btn-check:has(input:checked){--bs-btn-active-bg:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast) calc(l * .9) calc(c * 1.15) h)}.btn-solid:disabled,.btn-solid.disabled,.btn-solid.btn-check:has(input:disabled){--bs-btn-disabled-bg:var(--bs-theme-bg);--bs-btn-disabled-color:var(--bs-theme-contrast);--bs-btn-disabled-border-color:var(--bs-theme-bg)}.btn-outline{--bs-btn-bg:transparent;--bs-btn-color:var(--bs-theme-fg);--bs-btn-border-color:var(--bs-theme-border);--bs-btn-active-bg:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-border-color:var(--bs-theme-border)}.btn-outline:hover{--bs-btn-hover-bg:oklch(from var(--bs-theme-bg) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-color:oklch(from var(--bs-theme-contrast) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-border-color:oklch(from var(--bs-theme-bg) calc(l * .95) calc(c * 1.1) h)}.btn-outline:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-outline:active,.btn-outline.active,.btn-outline.btn-check:has(input:checked){--bs-btn-active-bg:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-color:oklch(from var(--bs-theme-contrast) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-border-color:oklch(from var(--bs-theme-bg) calc(l * .9) calc(c * 1.15) h)}.btn-outline:disabled,.btn-outline.disabled,.btn-outline.btn-check:has(input:disabled){--bs-btn-disabled-bg:transparent;--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-border-color:var(--bs-theme-border)}.btn-subtle{--bs-btn-bg:var(--bs-theme-bg-subtle);--bs-btn-color:var(--bs-theme-fg);--bs-btn-border-color:transparent;--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);--bs-btn-disabled-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-border-color:transparent}.btn-subtle:hover{--bs-btn-hover-bg:color-mix(in oklch, var(--bs-theme-bg-muted) 50%, var(--bs-theme-bg-subtle));--bs-btn-hover-color:oklch(from var(--bs-theme-fg-emphasis) calc(l * .95) calc(c * 1.1) h)}.btn-subtle:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-subtle:active,.btn-subtle.active,.btn-subtle.btn-check:has(input:checked){--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-active-color:oklch(from var(--bs-theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h)}.btn-subtle:disabled,.btn-subtle.disabled,.btn-subtle.btn-check:has(input:disabled){--bs-btn-disabled-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-border-color:transparent}.btn-text{--bs-btn-color:var(--bs-theme-fg);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-active-color:oklch(from var(--bs-theme-fg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-bg:var(--bs-theme-bg-subtle);--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-text:hover{--bs-btn-hover-color:oklch(from var(--bs-theme-fg) calc(l * .95) calc(c * 1.1) h);--bs-btn-hover-bg:var(--bs-theme-bg-subtle)}.btn-text:focus-visible{outline-color:var(--bs-theme-focus-ring)}.btn-text:active,.btn-text.active,.btn-text.btn-check:has(input:checked){--bs-btn-active-color:oklch(from var(--bs-theme-fg) calc(l * .9) calc(c * 1.15) h);--bs-btn-active-bg:var(--bs-theme-bg-subtle)}.btn-text:disabled,.btn-text.disabled,.btn-text.btn-check:has(input:disabled){--bs-btn-disabled-color:var(--bs-theme-fg);--bs-btn-disabled-bg:transparent;--bs-btn-disabled-border-color:transparent}.btn-link{--bs-btn-font-weight:var(--bs-font-weight-normal);--bs-btn-color:var(--bs-link-color);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--bs-link-hover-color);--bs-btn-hover-bg:transparent;--bs-btn-hover-border-color:transparent;--bs-btn-active-color:var(--bs-link-hover-color);--bs-btn-active-bg:transparent;--bs-btn-active-border-color:transparent;--bs-btn-disabled-color:var(--bs-fg-3);--bs-btn-disabled-border-color:transparent;color:var(--bs-theme-fg,var(--bs-btn-color));-webkit-text-decoration:var(--bs-link-decoration);-webkit-text-decoration:var(--bs-link-decoration);text-decoration:var(--bs-link-decoration);background-image:none}.btn-link:focus-visible{color:var(--bs-theme-fg,var(--bs-btn-color))}.btn-link:hover{color:var(--bs-theme-fg-emphasis,var(--bs-btn-hover-color))}.btn-xs,.btn-group-xs>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-xs-min-height);--bs-btn-padding-y:var(--bs-btn-input-xs-padding-y);--bs-btn-padding-x:var(--bs-btn-input-xs-padding-x);--bs-btn-font-size:var(--bs-btn-input-xs-font-size);--bs-btn-line-height:var(--bs-btn-input-xs-line-height);--bs-btn-border-radius:var(--bs-btn-input-xs-border-radius)}.btn-sm,.btn-group-sm>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-sm-min-height);--bs-btn-padding-y:var(--bs-btn-input-sm-padding-y);--bs-btn-padding-x:var(--bs-btn-input-sm-padding-x);--bs-btn-font-size:var(--bs-btn-input-sm-font-size);--bs-btn-line-height:var(--bs-btn-input-sm-line-height);--bs-btn-border-radius:var(--bs-btn-input-sm-border-radius)}.btn-lg,.btn-group-lg>[class*=btn-]{--bs-btn-min-height:var(--bs-btn-input-lg-min-height);--bs-btn-padding-y:var(--bs-btn-input-lg-padding-y);--bs-btn-padding-x:var(--bs-btn-input-lg-padding-x);--bs-btn-font-size:var(--bs-btn-input-lg-font-size);--bs-btn-line-height:var(--bs-btn-input-lg-line-height);--bs-btn-border-radius:var(--bs-btn-input-lg-border-radius)}.btn-icon{aspect-ratio:1;justify-content:center;align-items:center;padding:0}.btn-check>input{clip:rect(0, 0, 0, 0);pointer-events:none;position:absolute}.btn-check:has(input:checked){color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg,var(--bs-bg-3));border-color:var(--bs-btn-active-border-color);box-shadow:var(--bs-btn-active-shadow);background-image:none}.btn-check:has(input:focus-visible){outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);--bs-focus-ring-offset:1px}.btn-check:has(input:disabled){color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg,var(--bs-bg-1));border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity);box-shadow:none;background-image:none}.btn-styled{--bs-btn-gradient-start:#ffffff20;--bs-btn-gradient-end:#00000013;--bs-btn-border-mix-color:#000;--bs-btn-border-mix-amount:10%;--bs-btn-border-hover-mix-amount:12.5%;--bs-btn-border-active-mix-amount:20%;--bs-btn-shadow:0 1px 2px #00000026, inset 0 1px 0 #ffffff1a;--bs-btn-active-shadow:inset 0 2px 4px #00000026;background-image:linear-gradient(to bottom, var(--bs-btn-gradient-start), var(--bs-btn-gradient-end));border-color:color-mix(in lab, var(--bs-theme-bg), var(--bs-btn-border-mix-color) var(--bs-btn-border-mix-amount));box-shadow:var(--bs-btn-shadow)}.btn-styled:hover{background-image:linear-gradient(to bottom, var(--bs-btn-gradient-start), var(--bs-btn-gradient-end));border-color:color-mix(in lab, var(--bs-theme-bg), var(--bs-btn-border-mix-color) var(--bs-btn-border-hover-mix-amount))}.btn-styled:active,.btn-styled.active{border-color:color-mix(in lab, var(--bs-theme-bg), var(--bs-btn-border-mix-color) var(--bs-btn-border-active-mix-amount));box-shadow:var(--bs-btn-active-shadow);background-image:none}.btn-styled:disabled,.btn-styled.disabled{box-shadow:none;background-image:none}.btn-group,.btn-group-vertical{vertical-align:middle;display:inline-flex;position:relative}.btn-group>[class*=btn-],.btn-group-vertical>[class*=btn-]{flex:auto;position:relative}.btn-group>[class*=btn-]:hover,.btn-group-vertical>[class*=btn-]:hover{z-index:1}.btn-group>.btn-check:has(input:checked),.btn-group>[class*=btn-]:active,.btn-group>[class*=btn-].active,.btn-group-vertical>.btn-check:has(input:checked),.btn-group-vertical>[class*=btn-]:active,.btn-group-vertical>[class*=btn-].active{z-index:2}.btn-group>.btn-check:has(input:focus),.btn-group>[class*=btn-]:focus,.btn-group-vertical>.btn-check:has(input:focus),.btn-group-vertical>[class*=btn-]:focus{z-index:3}.btn-group-divider>[class*=btn-]+[class*=btn-]:before{z-index:3;content:"";background-color:var(--bs-btn-color);opacity:.25;position:absolute}.btn-group:where(.btn-group-divider)>[class*=btn-]+[class*=btn-]:before{top:25%;bottom:25%;left:calc(var(--bs-btn-border-width) * -1);width:var(--bs-btn-border-width)}.btn-group-vertical:where(.btn-group-divider)>[class*=btn-]+[class*=btn-]:before{top:calc(var(--bs-btn-border-width) * -1);right:var(--bs-btn-padding-x);left:var(--bs-btn-padding-x);height:var(--bs-btn-border-width)}.btn-toolbar{flex-wrap:wrap;justify-content:flex-start;gap:.5rem;display:flex}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:var(--bs-btn-border-radius)}.btn-group>[class*=btn-]:not(:first-child),.btn-group>.btn-group:not(:first-child){margin-inline-start:calc(-1 * var(--bs-btn-border-width))}.btn-group>[class*=btn-]:not(:last-child,:has(+.menu)),.btn-group>.btn-group:not(:last-child)>[class*=btn-]{border-start-end-radius:0;border-end-end-radius:0}.btn-group>[class*=btn-]:not(:first-child),.btn-group>.btn-group:not(:first-child)>[class*=btn-]{border-start-start-radius:0;border-end-start-radius:0}.btn-group-vertical{flex-direction:column;justify-content:center;align-items:flex-start}.btn-group-vertical>[class*=btn-],.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>[class*=btn-]:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(-1 * var(--bs-btn-border-width))}.btn-group-vertical>[class*=btn-]:not(:last-child,:has(+.menu)),.btn-group-vertical>.btn-group:not(:last-child)>[class*=btn-]{border-end-end-radius:0;border-end-start-radius:0}.btn-group-vertical>[class*=btn-]:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child)>[class*=btn-]{border-start-start-radius:0;border-start-end-radius:0}.btn-close{--bs-btn-close-size:1.5rem;--bs-btn-close-color:inherit;--bs-btn-close-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e");--bs-btn-close-opacity:.5;--bs-btn-close-hover-opacity:.75;--bs-btn-close-focus-opacity:.85;--bs-btn-close-disabled-opacity:.25;box-sizing:content-box;min-width:var(--bs-btn-close-size);min-height:var(--bs-btn-close-size);color:var(--bs-btn-close-color);border-radius:var(--bs-radius-5);opacity:var(--bs-btn-close-opacity);mask-image:var(--bs-btn-close-icon);background-color:currentColor;border:0;padding:0;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.btn-close:hover{color:var(--bs-btn-close-color);opacity:var(--bs-btn-close-hover-opacity);text-decoration:none}.btn-close:focus-visible{opacity:var(--bs-btn-close-focus-opacity);outline:var(--bs-focus-ring)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;-webkit-user-select:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.accordion{--bs-accordion-padding-x:1.25rem;--bs-accordion-padding-y:1rem;--bs-accordion-color:var(--bs-fg-body);--bs-accordion-bg:var(--bs-bg-body);--bs-accordion-transition-property:color, background-color, border-radius;--bs-accordion-transition-timing:.15s ease-in-out;--bs-accordion-transition:var(--bs-accordion-transition-property) var(--bs-accordion-timing);--bs-accordion-border-color:var(--bs-border-color);--bs-accordion-border-width:var(--bs-border-width);--bs-accordion-border-radius:var(--bs-accordion-radius,var(--bs-radius-7));--bs-accordion-btn-color:var(--bs-fg-2);--bs-accordion-btn-bg:var(--bs-bg-body);--bs-accordion-btn-icon-width:1rem;--bs-accordion-btn-icon-transform:rotate(-180deg);--bs-accordion-btn-icon-transition:transform .2s ease-in-out;--bs-accordion-active-color:var(--bs-fg);--bs-accordion-active-bg:var(--bs-bg-2)}.accordion-header{width:100%;padding:var(--bs-accordion-btn-padding-y,var(--bs-accordion-padding-y)) var(--bs-accordion-btn-padding-x,var(--bs-accordion-padding-x));font-size:var(--bs-accordion-font-size,var(--bs-font-size-base));color:var(--bs-accordion-btn-color);text-align:start;cursor:pointer;background-color:var(--bs-accordion-btn-bg);transition:var(--bs-accordion-transition);align-items:center;list-style:none;display:flex}@media (prefers-reduced-motion:reduce){.accordion-header{transition:none}}.accordion-header::-webkit-details-marker{display:none}.accordion-header .accordion-icon{width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);color:currentColor;transition:var(--bs-accordion-btn-icon-transition);flex-shrink:0;margin-inline-start:auto}@media (prefers-reduced-motion:reduce){.accordion-header .accordion-icon{transition:none}}.accordion-header:hover{z-index:2}.accordion-header:focus-visible{z-index:3;outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset);outline-offset:-1px;position:relative}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}@media (prefers-reduced-motion:no-preference){.accordion-item{interpolate-size:allow-keywords}}.accordion-item::details-content{block-size:0;transition:content-visibility .2s allow-discrete, block-size .2s;overflow-y:clip}@media (prefers-reduced-motion:reduce){.accordion-item::details-content{transition:none}}.accordion-item:first-of-type{border-start-start-radius:var(--bs-accordion-border-radius);border-start-end-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type>.accordion-header{border-start-start-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width));border-start-end-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width))}.accordion-item:not(:first-of-type){border-block-start:0}.accordion-item:last-of-type{border-end-end-radius:var(--bs-accordion-border-radius);border-end-start-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type>.accordion-header{border-end-end-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width));border-end-start-radius:calc(var(--bs-accordion-border-radius) - var(--bs-accordion-border-width))}.accordion-item:last-of-type>.accordion-body{border-end-end-radius:var(--bs-accordion-border-radius);border-end-start-radius:var(--bs-accordion-border-radius)}.accordion-item[open]{border-color:var(--bs-theme-border,var(--bs-accordion-border-color))}.accordion-item[open]::details-content{block-size:auto}.accordion-item[open]>.accordion-header{color:var(--bs-theme-fg,var(--bs-accordion-active-color));background-color:var(--bs-theme-bg-subtle,var(--bs-accordion-active-bg));box-shadow:inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-theme-border,var(--bs-accordion-border-color))}.accordion-item[open]>.accordion-header .accordion-icon{transform:var(--bs-accordion-btn-icon-transform)}.accordion-item[open]:last-of-type>.accordion-header{border-end-end-radius:0;border-end-start-radius:0}.accordion-body{padding:var(--bs-accordion-body-padding-y,var(--bs-accordion-padding-y)) var(--bs-accordion-body-padding-x,var(--bs-accordion-padding-x))}.accordion-flush>.accordion-item{border-inline:0;border-radius:0}.accordion-flush>.accordion-item:first-child{border-block-start:0}.accordion-flush>.accordion-item:last-child{border-block-end:0}.accordion-flush>.accordion-item>.accordion-header,.accordion-flush>.accordion-item>.accordion-body{border-radius:0}.alert{--bs-alert-gap:var(--bs-spacer-3);--bs-alert-bg:var(--bs-theme-bg-subtle,var(--bs-bg-1));--bs-alert-padding-x:var(--bs-spacer);--bs-alert-padding-y:var(--bs-spacer);--bs-alert-color:var(--bs-theme-fg,inherit);--bs-alert-border-color:var(--bs-theme-border,var(--bs-border-color));--bs-alert-border:var(--bs-border-width) solid var(--bs-alert-border-color);--bs-alert-border-radius:var(--bs-radius-5);--bs-alert-link-color:inherit;--bs-hr-border-color:var(--bs-theme-border,var(--bs-border-color));gap:var(--bs-alert-gap);padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius);align-items:start;display:flex}.alert>p{margin-bottom:0}.alert-heading{color:inherit}.alert-link{font-weight:var(--bs-font-weight-semibold);color:var(--bs-alert-link-color)}.avatar{--bs-avatar-size:2.5rem;--bs-avatar-border-radius:50%;--bs-avatar-border-width:2px;--bs-avatar-border-color:var(--bs-bg-body);--bs-avatar-bg:var(--bs-bg-2);--bs-avatar-color:var(--bs-fg-body);--bs-avatar-status-size:.75rem;--bs-avatar-status-border-width:2px;--bs-avatar-status-border-color:var(--bs-bg-body);--bs-avatar-stack-spacing:-.3;--bs-avatar-stack-transition:transform .2s ease-in-out;width:var(--bs-avatar-size);height:var(--bs-avatar-size);font-size:calc(var(--bs-avatar-size) * .4);font-weight:var(--bs-avatar-font-weight,var(--bs-font-weight-medium));color:var(--bs-theme-contrast,var(--bs-avatar-color));text-transform:uppercase;vertical-align:middle;background-color:var(--bs-theme-bg,var(--bs-avatar-bg));border-radius:var(--bs-avatar-border-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex;position:relative}.avatar>.avatar-img{object-fit:cover;width:100%;height:100%}.avatar-subtle{color:var(--bs-theme-fg,var(--bs-avatar-color));background-color:var(--bs-theme-bg-subtle,var(--bs-avatar-bg))}.avatar-img{border-radius:var(--bs-avatar-border-radius,50%)}.avatar-status{right:calc(var(--bs-avatar-status-border-width) * -1);bottom:calc(var(--bs-avatar-status-border-width) * -1);width:var(--bs-avatar-status-size);height:var(--bs-avatar-status-size);background-color:var(--bs-gray-400);border:var(--bs-avatar-status-border-width) solid var(--bs-avatar-status-border-color);border-radius:50%;position:absolute}.avatar-status.status-online{background-color:var(--bs-green-500)}.avatar-status.status-offline{background-color:var(--bs-gray-400);border-radius:20%}.avatar-status.status-busy{background-color:var(--bs-red-500);border-radius:20%}.avatar-status.status-away{background-color:var(--bs-yellow-500)}.avatar-stack{flex-direction:row-reverse;display:inline-flex}.avatar-stack .avatar{margin-left:calc(var(--bs-avatar-size) * var(--bs-avatar-stack-spacing));border:var(--bs-avatar-border-width) solid var(--bs-avatar-border-color);transition:var(--bs-avatar-stack-transition);mask-image:none}@media (prefers-reduced-motion:reduce){.avatar-stack .avatar{transition:none}}.avatar-stack .avatar:last-child{margin-left:0}.avatar-stack .avatar:hover{z-index:1;transform:translateY(-2px)}.avatar-xs,.avatar-stack-xs>.avatar{--bs-avatar-size:1.5rem;--bs-avatar-status-size:.625rem}.avatar-sm,.avatar-stack-sm>.avatar{--bs-avatar-size:2rem}.avatar-lg,.avatar-stack-lg>.avatar{--bs-avatar-size:3rem;--bs-avatar-status-size:1rem;--bs-avatar-border-width:3px}.avatar-xl,.avatar-stack-xl>.avatar{--bs-avatar-size:4rem;--bs-avatar-status-size:1.25rem;--bs-avatar-border-width:4px}.badge{--bs-badge-padding-x:.625em;--bs-badge-padding-y:.25em;--bs-badge-font-size:clamp(12px, .75em, .75em);--bs-badge-font-weight:var(--bs-font-weight-semibold);--bs-badge-color:inherit;--bs-badge-bg:var(--bs-bg-2);--bs-badge-border-width:var(--bs-border-width);--bs-badge-border-color:transparent;--bs-badge-border-radius:var(--bs-radius-7);min-height:1.375rem;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);color:var(--bs-theme-contrast,var(--bs-badge-color));text-align:center;white-space:nowrap;vertical-align:baseline;background-color:var(--bs-theme-bg,var(--bs-badge-bg));border:var(--bs-badge-border-width) solid var(--bs-badge-border-color);border-radius:var(--bs-badge-border-radius);justify-content:center;align-items:center;line-height:1;display:inline-flex}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-subtle{--bs-badge-color:var(--bs-theme-fg);--bs-badge-bg:var(--bs-theme-bg-subtle);--bs-badge-border-color:transparent;color:var(--bs-badge-color);background-color:var(--bs-badge-bg);border-color:var(--bs-badge-border-color)}.badge-outline{--bs-badge-color:var(--bs-theme-fg);--bs-badge-bg:transparent;--bs-badge-border-color:var(--bs-theme-border);color:var(--bs-badge-color);background-color:var(--bs-badge-bg);border-color:var(--bs-badge-border-color)}.breadcrumb{--bs-breadcrumb-margin-bottom:1rem;--bs-breadcrumb-font-size:inherit;--bs-breadcrumb-bg:transparent;--bs-breadcrumb-border-radius:var(--bs-radius-5);--bs-breadcrumb-divider-color:var(--bs-fg-4);--bs-breadcrumb-divider-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e");--bs-breadcrumb-divider-width:.375rem;--bs-breadcrumb-divider-height:.75rem;--bs-breadcrumb-link-padding-x:.75rem;--bs-breadcrumb-link-padding-y:.25rem;--bs-breadcrumb-link-color:var(--bs-fg-3);--bs-breadcrumb-link-hover-color:var(--bs-fg-2);--bs-breadcrumb-link-hover-bg:var(--bs-bg-1);--bs-breadcrumb-link-active-color:var(--bs-fg-1);--bs-breadcrumb-link-border-radius:var(--bs-radius-7);padding:var(--bs-breadcrumb-padding-y,0) var(--bs-breadcrumb-padding-x,0);font-size:var(--bs-breadcrumb-font-size);background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius);flex-wrap:wrap;align-items:center;list-style-type:"";display:flex}.breadcrumb-item{display:flex}.breadcrumb-divider{margin-inline:calc(var(--bs-breadcrumb-link-padding-x) / 4);color:var(--bs-breadcrumb-divider-color)}.breadcrumb-divider:empty:before{width:var(--bs-breadcrumb-divider-width);height:var(--bs-breadcrumb-divider-height);content:"";mask-image:var(--bs-breadcrumb-divider-icon);background-color:currentColor;display:block;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.breadcrumb-link{min-height:2.25rem;padding:var(--bs-breadcrumb-link-padding-y) var(--bs-breadcrumb-link-padding-x);color:var(--bs-breadcrumb-link-color);border-radius:var(--bs-breadcrumb-link-border-radius);justify-content:center;align-items:center;text-decoration:none;transition:text-decoration-color .1s ease-in-out;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.breadcrumb-link{transition:none}}.breadcrumb-link:hover{z-index:2;color:var(--bs-breadcrumb-link-hover-color);background-color:var(--bs-breadcrumb-link-hover-bg)}.breadcrumb-link.active{color:var(--bs-breadcrumb-link-active-color)}.chip{--bs-chip-height:1.75rem;--bs-chip-padding-x:.625rem;--bs-chip-gap:.3125rem;--bs-chip-border-radius:var(--bs-radius-pill);--bs-chip-img-size:1.25rem;--bs-chip-icon-size:1rem;--bs-chip-dismiss-size:1rem;--bs-chip-dismiss-opacity:.65;--bs-chip-dismiss-hover-opacity:1;--bs-chip-color:var(--bs-theme-fg,var(--bs-fg-body));--bs-chip-bg:var(--bs-theme-bg-subtle,var(--bs-bg-2));--bs-chip-border-color:transparent;--bs-chip-selected-color:var(--bs-theme-contrast,var(--bs-primary-contrast));--bs-chip-selected-bg:var(--bs-theme-bg,var(--bs-primary-bg));--bs-chip-selected-border-color:var(--bs-theme-bg,var(--bs-primary-bg));gap:var(--bs-chip-gap);height:var(--bs-chip-height);padding-inline:var(--bs-chip-padding-x);font-size:var(--bs-chip-font-size,var(--bs-font-size-sm));font-weight:var(--bs-chip-font-weight,var(--bs-font-weight-base));line-height:var(--bs-chip-line-height,1.25rem);color:var(--bs-chip-color);white-space:nowrap;vertical-align:middle;cursor:pointer;background-color:var(--bs-chip-bg);border:var(--bs-border-width) solid var(--bs-chip-border-color);border-radius:var(--bs-chip-border-radius);align-items:center;text-decoration:none;display:inline-flex}.chip:hover{--bs-chip-bg:var(--bs-theme-bg-muted,var(--bs-bg-3))}.chip:focus-visible{outline:0}.chip.active{--bs-chip-color:var(--bs-chip-selected-color);--bs-chip-bg:var(--bs-chip-selected-bg);--bs-chip-border-color:var(--bs-chip-selected-border-color)}.chip.active:hover{--bs-chip-bg:var(--bs-chip-selected-bg);opacity:.9}.chip.disabled,.chip:disabled{pointer-events:none;opacity:.65}.chip-img{width:var(--bs-chip-img-size);height:var(--bs-chip-img-size);border-radius:50%}.chip-img:first-child{margin-inline-start:-.375rem}.chip-icon{flex-shrink:0;justify-content:center;align-items:center;margin-inline-start:calc(var(--bs-chip-gap) * -.25);display:flex}.chip-icon>svg{width:var(--bs-chip-icon-size);height:var(--bs-chip-icon-size);display:block}.chip-icon>img{width:var(--bs-chip-icon-size);height:var(--bs-chip-icon-size);object-fit:cover;border-radius:50%}.chip-dismiss{width:var(--bs-chip-min-height);height:var(--bs-chip-min-height);color:inherit;cursor:pointer;opacity:var(--bs-chip-dismiss-opacity);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;margin-inline-end:calc(var(--bs-chip-padding-x) * -.25);padding:0;display:flex}.chip-dismiss:hover{opacity:var(--bs-chip-dismiss-hover-opacity)}.chip-dismiss:focus-visible{opacity:1;outline:0;outline:var(--bs-focus-ring)}.chip-dismiss>svg{width:var(--bs-chip-dismiss-size);height:var(--bs-chip-dismiss-size);display:block}.card{--bs-card-spacer-y:var(--bs-spacer-5);--bs-card-spacer-x:var(--bs-spacer-5);--bs-card-subtitle-color:inherit;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-radius-7);--bs-card-box-shadow:none;--bs-card-inner-border-radius:calc(var(--bs-radius-7) - var(--bs-border-width));--bs-card-cap-padding-y:var(--bs-spacer-3);--bs-card-cap-padding-x:var(--bs-spacer);--bs-card-cap-bg:var(--bs-bg-1);--bs-card-cap-color:inherit;--bs-card-height:auto;--bs-card-color:inherit;--bs-card-bg:var(--bs-bg-body);--bs-card-img-overlay-padding:var(--bs-card-spacer-y);--bs-card-group-margin:.75rem;--bs-card-body-gap:calc(var(--bs-card-spacer-y) * .5);min-width:0;height:var(--bs-card-height);color:var(--bs-fg-body);word-wrap:break-word;background-color:var(--bs-card-bg);border-radius:var(--bs-card-border-radius);box-shadow:var(--bs-card-box-shadow);flex-direction:column;display:flex;position:relative}.card>hr{margin-inline:0}.card-body{gap:var(--bs-card-body-gap);padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color);border:solid var(--bs-theme-bg,var(--bs-card-border-color));border-width:0 var(--bs-card-border-width);flex-direction:column;flex:auto;align-items:flex-start;display:flex}.card-body>*{margin-block:0}.card-body,.card-list{border:solid var(--bs-theme-bg,var(--bs-card-border-color));border-width:0 var(--bs-card-border-width)}.card-body:first-child,.card-list:first-child{border-top-width:var(--bs-card-border-width);border-start-start-radius:var(--bs-card-border-radius);border-start-end-radius:var(--bs-card-border-radius)}.card-body:last-child,.card-list:last-child{border-bottom-width:var(--bs-card-border-width);border-end-end-radius:var(--bs-card-border-radius);border-end-start-radius:var(--bs-card-border-radius)}.card-body:not(:first-child,:last-child),.card-list:not(:first-child,:last-child){border-block-end-width:var(--bs-card-border-width)}.card-body:has(+.card-footer),.card-list:has(+.card-footer){border-block-end-width:0}.card-title,.card-subtitle,.card-text{align-self:stretch}.card-subtitle{margin-top:calc(var(--bs-card-body-gap) * -.5)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-theme-contrast,var(--bs-card-cap-color));background-color:var(--bs-theme-bg,var(--bs-card-cap-bg));border:var(--bs-card-border-width) solid var(--bs-theme-bg,var(--bs-card-border-color));margin-bottom:0}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-theme-bg,var(--bs-card-cap-bg));border:var(--bs-card-border-width) solid var(--bs-theme-bg,var(--bs-card-border-color))}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-translucent{background-color:color-mix(in oklch, var(--bs-card-bg) 80%, transparent);backdrop-filter:blur(5px)saturate(180%)}.card-translucent .card-header,.card-translucent .card-footer{background-color:color-mix(in oklch, var(--bs-card-cap-bg) 60%, transparent)}.card-subtle{border-color:var(--bs-theme-border,var(--bs-card-border-color))}.card-subtle .card-header,.card-subtle .card-footer{color:var(--bs-theme-fg-emphasis,currentcolor);background-color:var(--bs-theme-bg-subtle,var(--bs-card-cap-bg));border-color:var(--bs-theme-border,var(--bs-card-border-color))}.card-subtle .card-body,.card-subtle .card-list{border-color:var(--bs-theme-border,var(--bs-card-border-color))}.nav.card-header-tabs{margin-inline:calc(-.5 * var(--bs-card-cap-padding-x));margin-bottom:calc(-1 * var(--bs-card-cap-padding-y) - var(--bs-nav-tabs-border-width));border-block-end:0}.nav.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-block-end-color:var(--bs-card-bg)}.card-img-overlay{padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius);position:absolute;inset:0}.card-img,.card-img-top,.card-img-bottom{outline:var(--bs-card-border-width) solid var(--bs-card-border-color);outline-offset:calc(var(--bs-card-border-width) * -1);width:100%}.card-img,.card-img-top{border-start-start-radius:var(--bs-card-inner-border-radius);border-start-end-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-end-end-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-row{flex-direction:row}.card-row .card-body,.card-row .card-list{border-width:var(--bs-card-border-width) 0;border-radius:0}.card-row .card-body:first-child,.card-row .card-list:first-child{border-inline-start-width:var(--bs-card-border-width);border-start-start-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-row .card-body:last-child,.card-row .card-list:last-child{border-inline-end-width:var(--bs-card-border-width);border-start-end-radius:var(--bs-card-inner-border-radius);border-end-end-radius:var(--bs-card-inner-border-radius)}.card-row .card-body:not(:first-child,:last-child),.card-row .card-list:not(:first-child,:last-child){border-inline-end-width:var(--bs-card-border-width)}.card-img-start{border-start-start-radius:var(--bs-card-inner-border-radius);border-end-start-radius:var(--bs-card-inner-border-radius)}.card-img-end{border-start-end-radius:var(--bs-card-inner-border-radius);border-end-end-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@container (width>=576px){.card-group{flex-flow:wrap;display:flex}.card-group>.card{flex:1 0 0;margin-bottom:0}.card-group>.card+.card{margin-inline-start:calc(-1 * var(--bs-card-border-width))}.card-group>.card:not(:last-child){border-start-end-radius:0;border-end-end-radius:0}.card-group>.card:not(:last-child)>.card-img-top,.card-group>.card:not(:last-child)>.card-header,.card-group>.card:not(:last-child)>.card-body{border-start-end-radius:0}.card-group>.card:not(:last-child)>.card-img-bottom,.card-group>.card:not(:last-child)>.card-footer,.card-group>.card:not(:last-child)>.card-body{border-end-end-radius:0}.card-group>.card:not(:first-child){border-start-start-radius:0;border-end-start-radius:0}.card-group>.card:not(:first-child)>.card-img-top,.card-group>.card:not(:first-child)>.card-header,.card-group>.card:not(:first-child)>.card-body{border-start-start-radius:0}.card-group>.card:not(:first-child)>.card-img-bottom,.card-group>.card:not(:first-child)>.card-footer,.card-group>.card:not(:first-child)>.card-body{border-end-start-radius:0}}.carousel{--bs-carousel-gap:.75rem;--bs-carousel-indicator-bg:var(--bs-fg-3);--bs-carousel-indicator-width:.75rem;--bs-carousel-indicator-height:.75rem;--bs-carousel-indicator-spacer:.25rem;--bs-carousel-indicator-transition:opacity .6s ease, width .3s ease;--bs-carousel-indicator-progress-bg:var(--bs-carousel-indicator-bg);--bs-carousel-control-icon-width:1rem;--bs-carousel-control-prev-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>");--bs-carousel-control-next-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>");--bs-carousel-control-pause-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>");--bs-carousel-control-play-icon:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>");--bs-carousel-items:1;--bs-carousel-items-gap:0px;--bs-carousel-items-peek:0px;--bs-carousel-fade-duration:.6s;gap:var(--bs-carousel-gap);flex-direction:column;display:flex;position:relative}.carousel-inner{gap:var(--bs-carousel-items-gap);width:100%;padding-inline:var(--bs-carousel-items-peek);overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--bs-carousel-items-peek);scrollbar-width:none;display:flex;overflow-x:auto}.carousel-inner::-webkit-scrollbar{display:none}@media (prefers-reduced-motion:no-preference){.carousel-inner{scroll-behavior:smooth}}.carousel-item{flex:0 0 calc((100% - (var(--bs-carousel-items) - 1) * var(--bs-carousel-items-gap)) / var(--bs-carousel-items));scroll-snap-align:start;scroll-snap-stop:always;min-width:0}.carousel-center .carousel-item{scroll-snap-align:center}.carousel-auto .carousel-item{flex-basis:auto}.carousel-fade .carousel-inner{scroll-snap-type:none;display:grid;overflow:hidden}.carousel-fade .carousel-item{visibility:hidden;opacity:0;width:100%;transition:opacity var(--bs-carousel-fade-duration) ease, visibility 0s linear var(--bs-carousel-fade-duration);grid-area:1/1}@media (prefers-reduced-motion:reduce){.carousel-fade .carousel-item{transition:none}}.carousel-fade .carousel-item.active{visibility:visible;opacity:1;transition:opacity var(--bs-carousel-fade-duration) ease}@media (prefers-reduced-motion:reduce){.carousel-fade .carousel-item.active{transition:none}}.carousel-icon-prev,.carousel-icon-next,.carousel-icon-pause,.carousel-icon-play{width:var(--bs-carousel-control-icon-width);height:var(--bs-carousel-control-icon-width);background-color:currentColor;display:inline-block;mask-position:50%;mask-size:100% 100%;mask-repeat:no-repeat}.carousel-icon-prev{mask-image:var(--bs-carousel-control-prev-icon)}.carousel-icon-next{mask-image:var(--bs-carousel-control-next-icon)}[dir=rtl] .carousel-icon-prev,[dir=rtl] .carousel-icon-next{transform:scaleX(-1)}.carousel-icon-pause{mask-image:var(--bs-carousel-control-pause-icon)}.carousel-icon-play{mask-image:var(--bs-carousel-control-play-icon)}.carousel-control-play-pause .carousel-icon-play,.carousel-control-play-pause.paused .carousel-icon-pause{display:none}.carousel-control-play-pause.paused .carousel-icon-play{display:inline-block}.carousel-indicators{gap:var(--bs-carousel-indicator-spacer);justify-content:center;display:flex}.carousel-indicators [data-bs-target]{width:var(--bs-carousel-indicator-width);height:var(--bs-carousel-indicator-height);cursor:pointer;border:1px solid var(--bs-carousel-indicator-bg);border-radius:var(--bs-carousel-indicator-width);transition:var(--bs-carousel-indicator-transition);background-color:#0000;flex:0 auto;padding:0}@media (prefers-reduced-motion:reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{width:calc(var(--bs-carousel-indicator-width) * 2.5);background-color:var(--bs-carousel-indicator-bg);border-color:var(--bs-carousel-indicator-bg)}@keyframes carousel-indicator-progress{0%{inline-size:0}to{inline-size:100%}}@media (prefers-reduced-motion:no-preference){.carousel-playing .carousel-indicators .active{background-color:#0000;position:relative;overflow:hidden}.carousel-playing .carousel-indicators .active:after{content:"";background-color:var(--bs-carousel-indicator-progress-bg);inline-size:0;animation:carousel-indicator-progress var(--bs-carousel-interval,5s) linear forwards;position:absolute;inset-block:0;inset-inline-start:0}}.carousel-overlay{--bs-carousel-indicator-bg:light-dark(var(--bs-white),var(--bs-black))}.carousel-overlay .carousel-overlay-controls{z-index:1;justify-content:space-between;align-items:center;display:flex;position:absolute;inset-block-end:1rem;inset-inline:1rem}[data-vc=calendar]{--bs-datepicker-padding:1rem;--bs-datepicker-bg:var(--bs-bg-body);--bs-datepicker-color:var(--bs-fg-body);--bs-datepicker-border-color:var(--bs-border-color-translucent);--bs-datepicker-border-width:var(--bs-border-width);--bs-datepicker-border-radius:var(--bs-radius-7);--bs-datepicker-box-shadow:var(--bs-box-shadow);--bs-datepicker-font-size:var(--bs-font-size-sm);--bs-datepicker-min-width:280px;--bs-datepicker-zindex:1000;--bs-datepicker-header-font-weight:600;--bs-datepicker-weekday-color:var(--bs-fg-3);--bs-datepicker-day-hover-bg:var(--bs-bg-1);--bs-datepicker-day-selected-bg:var(--bs-primary-bg);--bs-datepicker-day-selected-color:var(--bs-primary-contrast);--bs-datepicker-day-today-bg:var(--bs-bg-2);--bs-datepicker-day-today-color:var(--bs-fg-1);--bs-datepicker-day-disabled-color:var(--bs-fg-4);z-index:var(--bs-datepicker-zindex);box-sizing:border-box;min-width:var(--bs-datepicker-min-width);padding:var(--bs-datepicker-padding);font-family:var(--bs-font-sans-serif);font-size:var(--bs-datepicker-font-size);color:var(--bs-datepicker-color);color-scheme:light dark;background-color:var(--bs-datepicker-bg);border:var(--bs-datepicker-border-width) solid var(--bs-datepicker-border-color);box-shadow:var(--bs-datepicker-box-shadow);opacity:1;border-radius:var(--bs-datepicker-border-radius);flex-direction:column;display:flex;position:absolute}[data-vc=calendar][data-bs-theme=light]{color-scheme:light}[data-vc=calendar][data-bs-theme=dark]{color-scheme:dark}[data-vc=calendar] button:focus-visible{z-index:1;outline:var(--bs-focus-ring);position:relative}[data-vc-calendar-hidden]{pointer-events:none;opacity:0}[data-vc=calendar]:not([data-vc-input]){width:fit-content;box-shadow:none;border:0;padding:0;position:relative}[data-vc-position=bottom]{margin-block-start:.25rem}[data-vc-position=top]{margin-block-end:-.25rem}[data-vc-arrow]{width:2rem;height:2rem;color:var(--bs-datepicker-color);pointer-events:auto;cursor:pointer;border-radius:var(--bs-radius-5);background-color:#0000;border:0;display:block;position:relative}[data-vc-arrow]:before{content:"";background-color:var(--bs-datepicker-color);position:absolute;inset:.25rem;mask-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>");mask-position:50%;mask-repeat:no-repeat}[data-vc-arrow]:hover{background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-arrow=prev]:before{transform:rotate(90deg)}[data-vc-arrow=next]:before{transform:rotate(-90deg)}[data-vc=controls]{z-index:20;pointer-events:none;justify-content:space-between;align-items:center;padding-top:1rem;padding-left:1rem;padding-right:1rem;display:flex;position:absolute;top:0;left:0;right:0}[data-vc=grid]{flex-wrap:wrap;flex-grow:1;gap:1.75rem;display:flex}[data-vc=column]{flex-direction:column;flex-grow:1;min-width:240px;display:flex}[data-vc=header]{align-items:center;margin-bottom:.75rem;display:flex;position:relative}[data-vc-header=content]{white-space:pre-wrap;flex-grow:1;justify-content:center;align-items:center;display:inline-flex}[data-vc=month],[data-vc=year]{font-size:1rem;font-weight:var(--bs-datepicker-header-font-weight);color:var(--bs-datepicker-color);border-radius:var(--bs-radius-5);background-color:#0000;border:0;margin-inline:-.125rem;padding:.25rem .5rem}[data-vc=month]:disabled,[data-vc=year]:disabled{color:var(--bs-datepicker-day-disabled-color);pointer-events:none}[data-vc=month]:hover:not(:disabled),[data-vc=year]:hover:not(:disabled){background-color:var(--bs-datepicker-day-hover-bg)}[data-vc=content]{flex-direction:column;flex-grow:1;display:flex}[data-vc=months],[data-vc=years]{grid-template-columns:repeat(var(--bs-vc-columns,4), minmax(0, 1fr));flex-grow:1;align-items:center;gap:1rem .25rem;display:grid}[data-vc=years]{--bs-vc-columns:5}[data-vc-months-month],[data-vc-years-year]{height:2.5rem;color:var(--bs-datepicker-weekday-color);text-align:center;word-break:break-all;cursor:pointer;border-radius:var(--bs-radius-5);background-color:#0000;border:0;justify-content:center;align-items:center;padding:.25rem;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}[data-vc-months-month]:disabled,[data-vc-years-year]:disabled{color:var(--bs-datepicker-day-disabled-color);pointer-events:none}[data-vc-months-month]:hover:not(:disabled),[data-vc-years-year]:hover:not(:disabled){background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-months-month][data-vc-months-month-selected],[data-vc-months-month][data-vc-years-year-selected],[data-vc-years-year][data-vc-months-month-selected],[data-vc-years-year][data-vc-years-year-selected],[data-vc-months-month][data-vc-months-month-selected]:hover,[data-vc-months-month][data-vc-years-year-selected]:hover,[data-vc-years-year][data-vc-months-month-selected]:hover,[data-vc-years-year][data-vc-years-year-selected]:hover{color:var(--bs-datepicker-day-selected-color);background-color:var(--bs-datepicker-day-selected-bg)}[data-vc=week]{grid-template-columns:repeat(7,1fr);justify-items:center;margin-bottom:.5rem;display:grid}[data-vc-week-day]{width:100%;min-width:1.875rem;color:var(--bs-datepicker-weekday-color);background-color:#0000;border:0;justify-content:center;align-items:center;margin:0;padding:0;font-size:.75rem;font-weight:600;line-height:1rem;display:flex}button[data-vc-week-day]{cursor:pointer}[data-vc=dates]{pointer-events:none}[data-vc-dates=row]{grid-template-columns:repeat(7,1fr);place-items:center;width:100%;display:grid}[data-vc-date]{pointer-events:auto;justify-content:center;align-items:center;width:100%;padding-top:.125rem;padding-bottom:.125rem;display:flex;position:relative}[data-vc-date]:not(:has([data-vc-date-btn])),[data-vc-date][data-vc-date-disabled],[data-vc-date][data-vc-date-disabled] [data-vc-date-btn]{pointer-events:none}[data-vc-date-btn]{width:100%;min-width:1.875rem;height:100%;min-height:1.875rem;color:var(--bs-datepicker-color);cursor:pointer;border-radius:var(--bs-radius-5);background-color:#0000;border:0;justify-content:center;align-items:center;padding:0;font-size:.75rem;font-weight:400;line-height:1rem;display:flex}[data-vc-date-btn]:hover{background-color:var(--bs-datepicker-day-hover-bg)}[data-vc-date-today] [data-vc-date-btn]{color:var(--bs-datepicker-day-today-color);background-color:var(--bs-datepicker-day-today-bg);font-weight:600}[data-vc-date-month=next] [data-vc-date-btn],[data-vc-date-month=prev] [data-vc-date-btn]{opacity:.5}[data-vc-date-disabled] [data-vc-date-btn]{color:var(--bs-datepicker-day-disabled-color)}[data-vc-date-hover] [data-vc-date-btn]{background-color:var(--bs-datepicker-day-hover-bg);border-radius:0}[data-vc-date-hover=first] [data-vc-date-btn]{border-start-start-radius:var(--bs-radius-5);border-end-start-radius:var(--bs-radius-5)}[data-vc-date-hover=last] [data-vc-date-btn]{border-start-end-radius:var(--bs-radius-5);border-end-end-radius:var(--bs-radius-5)}[data-vc-date-hover=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-radius-5)}[data-vc-date-selected=middle] [data-vc-date-btn]{opacity:.8;border-radius:0}[data-vc-date-selected] [data-vc-date-btn]{color:var(--bs-datepicker-day-selected-color);background-color:var(--bs-datepicker-day-selected-bg)}[data-vc-date-selected=first] [data-vc-date-btn]{border-top-left-radius:var(--bs-radius-5);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--bs-radius-5)}[data-vc-date-selected=last] [data-vc-date-btn]{border-top-left-radius:0;border-top-right-radius:var(--bs-radius-5);border-bottom-right-radius:var(--bs-radius-5);border-bottom-left-radius:0}[data-vc-date-selected=first-and-last] [data-vc-date-btn]{border-radius:var(--bs-radius-5)}:root.dialog-open{overflow:hidden}.dialog{--bs-dialog-padding:1rem;--bs-dialog-width:500px;--bs-dialog-margin:1.75rem;--bs-dialog-color:var(--bs-fg-body);--bs-dialog-bg:var(--bs-bg-body);--bs-dialog-border-color:var(--bs-border-color-translucent);--bs-dialog-border-width:var(--bs-border-width);--bs-dialog-border-radius:var(--bs-radius-7);--bs-dialog-box-shadow:var(--bs-box-shadow-lg);--bs-dialog-transition-duration:.3s;--bs-dialog-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-dialog-backdrop-bg:light-dark(#00000080,#000000a6);--bs-dialog-backdrop-blur:8px;--bs-dialog-header-padding:1rem;--bs-dialog-header-border-color:var(--bs-border-color-translucent);--bs-dialog-header-border-width:var(--bs-border-width);--bs-dialog-footer-padding:1rem;--bs-dialog-footer-border-color:var(--bs-border-color-translucent);--bs-dialog-footer-border-width:var(--bs-border-width);--bs-dialog-footer-gap:.5rem;width:var(--bs-dialog-width);max-width:calc(100% - var(--bs-dialog-margin) * 2);max-height:calc(100% - var(--bs-dialog-margin) * 2);color:var(--bs-dialog-color);visibility:hidden;background-color:var(--bs-dialog-bg);border:var(--bs-dialog-border-width) solid var(--bs-dialog-border-color);border-radius:var(--bs-dialog-border-radius);box-shadow:var(--bs-dialog-box-shadow);background-clip:padding-box;flex-direction:column;margin:auto;padding:0;display:flex;overflow:visible}.dialog:not(.dialog-instant){opacity:0;transition:opacity var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), transform var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), visibility 0s var(--bs-dialog-transition-duration)}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant){transition:none}}.dialog:not(.dialog-instant).dialog-slide-down{transform:translateY(-3rem)}.dialog:not(.dialog-instant).dialog-slide-up{transform:translateY(3rem)}.dialog:not(.dialog-instant)[open]:not(.hiding){visibility:visible;opacity:1;transition:opacity var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), transform var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), visibility 0s;overflow:visible}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant)[open]:not(.hiding){transition:none}}.dialog:not(.dialog-instant)[open]:not(.hiding){transform:none}.dialog:not(.dialog-instant)[open].dialog-static:not(.hiding){transform:scale(1.02)}.dialog:not(.dialog-instant)::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur));transition:background-color var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), backdrop-filter var(--bs-dialog-transition-duration) var(--bs-dialog-transition-timing), display var(--bs-dialog-transition-duration) allow-discrete, overlay var(--bs-dialog-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.dialog:not(.dialog-instant)::backdrop{transition:none}}.dialog:not(.dialog-instant).hiding::backdrop{backdrop-filter:blur();background-color:#0000}.dialog.dialog-instant::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}.dialog[open]:not(.hiding){visibility:visible;opacity:1;overflow:visible;transform:none}.dialog.dialog-nonmodal{z-index:1055;margin-inline:0;position:fixed;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%)}.dialog.dialog-scrollable[open]{max-height:calc(100% - var(--bs-dialog-margin) * 2)}.dialog.dialog-scrollable[open] .dialog-body{overflow-y:auto}@starting-style{.dialog:not(.dialog-instant)::backdrop{backdrop-filter:blur();background-color:#0000}.dialog.dialog-swap-in:not(.dialog-instant)::backdrop{background-color:var(--bs-dialog-backdrop-bg);backdrop-filter:blur(var(--bs-dialog-backdrop-blur))}}.dialog-sm{--bs-dialog-width:280px}.dialog-lg{--bs-dialog-width:800px}.dialog-xl{--bs-dialog-width:1140px}.dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}@media (width<576px){.sm-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<768px){.md-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1024px){.lg-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1280px){.xl-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}@media (width<1536px){.\32 xl-down\:dialog-fullscreen{--bs-dialog-width:100vw;--bs-dialog-margin:0;--bs-dialog-border-radius:0;width:100%;max-width:none;height:100%;max-height:none}}.dialog-header{padding:var(--bs-dialog-header-padding);border-block-end:var(--bs-dialog-header-border-width) solid var(--bs-dialog-header-border-color);flex-shrink:0;align-items:center;display:flex}.dialog-header .btn-close{margin-inline-start:auto}.dialog-title{line-height:1.5;font-size:var(--bs-font-size-md);margin-bottom:0}.dialog-body{padding:var(--bs-dialog-padding);flex:auto;position:relative}.dialog-footer{gap:var(--bs-dialog-footer-gap);padding:var(--bs-dialog-footer-padding);border-block-start:var(--bs-dialog-footer-border-width) solid var(--bs-dialog-footer-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;display:flex}.menu{--bs-menu-zindex:1000;--bs-menu-gap:.125rem;--bs-menu-min-width:10rem;--bs-menu-padding-x:.25rem;--bs-menu-padding-y:.25rem;--bs-menu-spacer:.125rem;--bs-menu-font-size:var(--bs-font-size-sm);--bs-menu-color:var(--bs-fg-body);--bs-menu-bg:var(--bs-bg-body);--bs-menu-box-shadow:var(--bs-box-shadow);--bs-menu-divider-bg:var(--bs-border-color-translucent);--bs-menu-divider-margin-y:.125rem;--bs-menu-divider-margin-x:.25rem;--bs-menu-item-color:var(--bs-menu-color,var(--bs-fg-body));--bs-menu-item-hover-color:var(--bs-menu-color,var(--bs-fg-body));--bs-menu-item-hover-bg:var(--bs-bg-1);--bs-menu-item-active-color:var(--bs-primary-contrast);--bs-menu-item-active-bg:var(--bs-primary-bg);--bs-menu-item-disabled-color:var(--bs-fg-3);--bs-menu-item-gap:.5rem;--bs-menu-item-padding-x:.75rem;--bs-menu-item-padding-y:.25rem;--bs-menu-item-border-radius:var(--bs-radius-5);--bs-menu-icon-size:1rem;--bs-menu-description-font-size:var(--bs-font-size-xs);--bs-menu-check-color:currentcolor;--bs-menu-header-color:var(--bs-fg-3);--bs-menu-header-padding-x:.75rem;--bs-menu-header-padding-y:.25rem;--bs-menu-transition-duration:.15s;--bs-menu-transition-timing:cubic-bezier(.22, 1, .36, 1);z-index:var(--bs-menu-zindex);gap:var(--bs-menu-gap);min-width:var(--bs-menu-min-width);max-height:var(--bs-menu-max-height,none);padding:var(--bs-menu-padding-y) var(--bs-menu-padding-x);overflow-y:var(--bs-menu-overflow-y,initial);overscroll-behavior:contain;font-size:var(--bs-menu-font-size);color:var(--bs-menu-color);text-align:start;background-color:var(--bs-menu-bg);border:var(--bs-menu-border-width,var(--bs-border-width)) solid var(--bs-menu-border-color,var(--bs-border-color-translucent));border-radius:var(--bs-menu-border-radius,var(--bs-radius-7));box-shadow:var(--bs-menu-box-shadow);opacity:0;transform-origin:top start;background-clip:padding-box;flex-direction:column;margin:0;list-style-type:"";display:none;position:absolute;transform:scale(.95)}.menu[data-bs-placement^=top]{transform-origin:bottom start}.menu[data-bs-placement=bottom-end]{transform-origin:top end}.menu[data-bs-placement=top-end]{transform-origin:bottom end}.menu[data-bs-placement^=left]{transform-origin:top end}.menu{transition:opacity var(--bs-menu-transition-duration) var(--bs-menu-transition-timing), transform var(--bs-menu-transition-duration) var(--bs-menu-transition-timing), display var(--bs-menu-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.menu{transition:none}}.menu.show{opacity:1;display:flex;transform:none}@starting-style{.menu.show{opacity:0;transform:scale(.95)}}.menu-scrollable{--bs-menu-max-height:80dvh;--bs-menu-overflow-y:auto}.menu-translucent{--bs-menu-item-hover-bg-light:color-mix(in oklch, var(--bs-bg-1) 90%, transparent);--bs-menu-item-hover-bg-dark:color-mix(in oklch, var(--bs-bg-1) 80%, transparent);--bs-menu-item-active-bg-light:color-mix(in oklch, var(--bs-primary-bg) 80%, transparent);--bs-menu-item-active-bg-dark:color-mix(in oklch, var(--bs-primary-bg) 70%, transparent);--bs-menu-item-active-bg:light-dark(var(--bs-menu-item-active-bg-light),var(--bs-menu-item-active-bg-dark));--bs-menu-item-hover-bg:light-dark(var(--bs-menu-item-hover-bg-light),var(--bs-menu-item-hover-bg-dark));background-color:color-mix(in oklch, var(--bs-menu-bg) 80%, transparent);backdrop-filter:blur(5px)saturate(180%)}.menu-divider{height:0;margin:var(--bs-menu-divider-margin-y) var(--bs-menu-divider-margin-x);border-block-start:1px solid var(--bs-menu-divider-bg);opacity:1;overflow:hidden}.menu-item{gap:var(--bs-menu-item-gap);width:100%;padding:var(--bs-menu-item-padding-y) var(--bs-menu-item-padding-x);font-weight:var(--bs-menu-item-font-weight,var(--bs-font-weight-normal));color:var(--bs-theme-fg,var(--bs-menu-item-color));text-align:inherit;white-space:nowrap;cursor:pointer;border-radius:var(--bs-menu-item-border-radius,0);background-color:#0000;border:0;outline:0;align-items:center;text-decoration:none;display:flex}.menu-item:hover,.menu-item:focus{color:var(--bs-theme-fg-emphasis,var(--bs-menu-item-hover-color));background-color:var(--bs-theme-bg-subtle,var(--bs-menu-item-hover-bg))}.menu-item.active,.menu-item:active{color:var(--bs-theme-contrast,var(--bs-menu-item-active-color));background-color:var(--bs-theme-bg,var(--bs-menu-item-active-bg))}.menu-item.active .menu-item-icon,.menu-item:active .menu-item-icon{color:inherit!important}.menu-item.selected{font-weight:600}.menu-item.disabled,.menu-item:disabled{color:var(--bs-menu-item-disabled-color);pointer-events:none;background-color:#0000;background-image:none}.menu-item-icon{width:var(--bs-menu-icon-size);flex-shrink:0;align-self:flex-start;height:auto;margin-top:.125rem}.menu-item-content{flex-direction:column;flex:1;min-width:fit-content;display:flex}.menu-item-description{font-size:var(--bs-menu-description-font-size);font-weight:var(--bs-font-weight-normal);color:color-mix(in oklch, currentcolor 65%, transparent)}.menu-item-check{color:var(--bs-menu-check-color);visibility:hidden;flex-shrink:0;align-self:flex-start;margin-block-start:.125rem;margin-inline-start:auto}.selected>.menu-item-check{visibility:visible}.menu-header{padding:var(--bs-menu-header-padding-y) var(--bs-menu-header-padding-x);font-size:var(--bs-font-size-sm);color:var(--bs-menu-header-color);white-space:nowrap;margin-bottom:0;display:block}.menu-text{padding:var(--bs-menu-item-padding-y) var(--bs-menu-item-padding-x);color:var(--bs-fg-2);display:block}.submenu{position:relative}.submenu>.menu-item{justify-content:space-between;align-items:center;display:flex}.submenu>.menu-item:after{content:"";border:.125em solid;border-width:0 .125em .125em 0;flex-shrink:0;width:.375em;height:.375em;margin-inline-start:auto;display:inline-block;transform:rotate(-45deg)}[dir=rtl] .submenu>.menu-item:after{transform:rotate(135deg)}.submenu>.menu{margin-top:calc(-1 * var(--bs-menu-padding-y));top:0}.submenu:hover>.menu-item,.submenu:focus-within>.menu-item,.submenu.show>.menu-item{color:var(--bs-menu-item-hover-color);background-color:var(--bs-menu-item-hover-bg)}.list-group{--bs-list-group-color:var(--bs-fg-body);--bs-list-group-bg:var(--bs-bg-body);--bs-list-group-border-color:var(--bs-border-color);--bs-list-group-border-width:var(--bs-border-width);--bs-list-group-border-radius:var(--bs-radius-5);--bs-list-group-item-padding-x:var(--bs-spacer);--bs-list-group-item-padding-y:var(--bs-spacer-2);--bs-list-group-action-color:var(--bs-fg-2);--bs-list-group-action-hover-color:var(--bs-fg-1);--bs-list-group-action-hover-bg:var(--bs-bg-1);--bs-list-group-action-active-color:var(--bs-fg-body);--bs-list-group-action-active-bg:var(--bs-bg-2);--bs-list-group-disabled-color:var(--bs-fg-3);--bs-list-group-disabled-bg:var(--bs-bg-body);--bs-list-group-active-color:var(--bs-primary-contrast);--bs-list-group-active-bg:var(--bs-primary-bg);--bs-list-group-active-border-color:var(--bs-primary-bg);border-radius:var(--bs-list-group-border-radius);flex-direction:column;margin-bottom:0;padding-inline-start:0;display:flex}.list-group-numbered{counter-reset:section;list-style-type:none}.list-group-numbered>.list-group-item:before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item{padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-theme-fg,var(--bs-list-group-color));background-color:var(--bs-theme-bg-subtle,var(--bs-list-group-bg));border:var(--bs-list-group-border-width) solid var(--bs-theme-border,var(--bs-list-group-border-color));display:block;position:relative}.list-group-item:first-child{border-start-start-radius:inherit;border-start-end-radius:inherit}.list-group-item:last-child{border-end-end-radius:inherit;border-end-start-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-block-start-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1 * var(--bs-list-group-border-width));border-block-start-width:var(--bs-list-group-border-width)}.list-group-item-action{width:100%;color:var(--bs-theme-fg,var(--bs-list-group-action-color));text-align:inherit;text-decoration:none}.list-group-item-action:not(.active):hover,.list-group-item-action:not(.active):focus{z-index:1;color:var(--bs-theme-fg-emphasis,var(--bs-list-group-action-hover-color));background-color:var(--bs-theme-bg-muted,var(--bs-list-group-action-hover-bg));text-decoration:none}.list-group-item-action:not(.active):active{color:var(--bs-theme-fg-emphasis,var(--bs-list-group-action-active-color));background-color:var(--bs-theme-bg-muted,var(--bs-list-group-action-active-bg))}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}@container (width>=576px){.sm\:list-group-horizontal{flex-direction:row}.sm\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.sm\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.sm\:list-group-horizontal>.list-group-item.active{margin-top:0}.sm\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.sm\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}@container (width>=768px){.md\:list-group-horizontal{flex-direction:row}.md\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.md\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.md\:list-group-horizontal>.list-group-item.active{margin-top:0}.md\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.md\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}@container (width>=1024px){.lg\:list-group-horizontal{flex-direction:row}.lg\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.lg\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.lg\:list-group-horizontal>.list-group-item.active{margin-top:0}.lg\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.lg\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}@container (width>=1280px){.xl\:list-group-horizontal{flex-direction:row}.xl\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.xl\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.xl\:list-group-horizontal>.list-group-item.active{margin-top:0}.xl\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.xl\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}@container (width>=1536px){.\32 xl\:list-group-horizontal{flex-direction:row}.\32 xl\:list-group-horizontal>.list-group-item:first-child:not(:last-child){border-start-end-radius:0;border-end-start-radius:var(--bs-list-group-border-radius)}.\32 xl\:list-group-horizontal>.list-group-item:last-child:not(:first-child){border-start-end-radius:var(--bs-list-group-border-radius);border-end-start-radius:0}.\32 xl\:list-group-horizontal>.list-group-item.active{margin-top:0}.\32 xl\:list-group-horizontal>.list-group-item+.list-group-item{border-block-start-width:var(--bs-list-group-border-width);border-inline-start-width:0}.\32 xl\:list-group-horizontal>.list-group-item+.list-group-item.active{border-inline-start-width:var(--bs-list-group-border-width);margin-inline-start:calc(-1 * var(--bs-list-group-border-width))}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-block-end-width:0}.nav{--bs-nav-gap:.125rem;--bs-nav-link-gap:.5rem;--bs-nav-link-align:center;--bs-nav-link-justify:center;--bs-nav-link-padding-x:.75rem;--bs-nav-link-padding-y:.375rem;--bs-nav-link-color:var(--bs-fg-2);--bs-nav-link-hover-color:var(--bs-fg-1);--bs-nav-link-hover-bg:var(--bs-bg-1);--bs-nav-link-active-color:var(--bs-fg-body);--bs-nav-link-active-bg:var(--bs-bg-2);--bs-nav-link-disabled-color:var(--bs-fg-4);--bs-nav-link-border-width:var(--bs-border-width);--bs-nav-link-transition-property:color, background-color, border-color;--bs-nav-link-transition-timing:.15s ease-in-out;--bs-nav-link-transition:var(--bs-nav-link-transition-property) var(--bs-nav-link-transition-timing);gap:var(--bs-nav-gap);flex-wrap:wrap;margin-bottom:0;padding-inline-start:0;list-style-type:"";display:flex}.nav-item{display:flex}.nav-link{gap:var(--bs-nav-link-gap);align-items:var(--bs-nav-link-align);justify-content:var(--bs-nav-link-justify);padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);white-space:nowrap;border:var(--bs-nav-link-border-width) solid transparent;border-radius:var(--bs-radius-5);transition:var(--bs-nav-link-transition);background:0 0;text-decoration:none;display:flex}@media (prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color);background-color:var(--bs-nav-link-hover-bg)}.nav-link:focus-visible{--bs-focus-ring-offset:1px;color:var(--bs-nav-link-hover-color);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.nav-link.active,.nav-link:active{color:var(--bs-nav-link-active-color);background-color:var(--bs-nav-link-active-bg)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width:var(--bs-border-width);--bs-nav-tabs-border-color:var(--bs-border-color);--bs-nav-tabs-border-radius:var(--bs-radius-5);--bs-nav-tabs-link-hover-border-color:var(--bs-border-subtle);--bs-nav-tabs-link-active-color:var(--bs-fg-color);--bs-nav-tabs-link-active-bg:var(--bs-bg-body);--bs-nav-tabs-link-active-border-color:var(--bs-border-color) var(--bs-border-color) var(--bs-bg-body);box-shadow:inset 0 calc(-1 * var(--bs-nav-tabs-border-width)) 0 var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{border:var(--bs-nav-tabs-border-width) solid transparent;border-bottom-color:var(--bs-nav-tabs-border-color);border-end-end-radius:0;border-end-start-radius:0}.nav-tabs .nav-link:hover{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color);border-bottom-color:var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color);border-bottom-color:var(--bs-nav-tabs-link-active-bg)}.nav-tabs .menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-start-start-radius:0;border-start-end-radius:0}.nav-pills{--bs-nav-pills-bg:var(--bs-bg-1);--bs-nav-pills-padding:.25rem;--bs-nav-pills-border-radius:var(--bs-radius-9);--bs-nav-pills-link-active-color:var(--bs-primary-contrast);--bs-nav-pills-link-active-bg:var(--bs-primary-bg);--bs-nav-pills-link-border-radius:var(--bs-radius-9);padding:var(--bs-nav-pills-padding);background-color:var(--bs-nav-pills-bg);border-radius:var(--bs-nav-pills-border-radius);display:inline-flex}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-link-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg);background-image:var(--bs-gradient)}.nav-pills-vertical{flex-direction:column;align-items:stretch}.nav-pills-vertical .nav-item,.nav-pills-vertical .nav-link{width:100%}.nav-underline{--bs-nav-gap:1rem;--bs-nav-link-active-bg:transparent;--bs-nav-underline-border-width:.125rem;--bs-nav-underline-link-active-color:var(--bs-fg-color)}.nav-underline .nav-link{border:0;border-block-end:var(--bs-nav-underline-border-width) solid transparent;border-radius:0;padding-inline:0}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-block-end-color:currentColor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{color:var(--bs-nav-underline-link-active-color);border-block-end-color:currentColor;font-weight:700}.nav-fill>.nav-link,.nav-fill .nav-item{text-align:center;flex:auto}.nav-justified>.nav-link,.nav-justified .nav-item{text-align:center;flex-grow:1;flex-basis:0}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-overflow{flex-wrap:nowrap;min-width:0}.nav-pills.nav-overflow{display:flex}.navbar-nav.nav-overflow{flex:1 1 0}.nav-overflow-item{flex-shrink:0;margin-inline-start:auto}.nav-overflow [data-bs-nav-overflow=true]{display:none}.nav-overflow-keep{flex-shrink:0}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:.5rem;--bs-navbar-color:var(--bs-fg-2);--bs-navbar-hover-color:var(--bs-fg-1);--bs-navbar-disabled-color:var(--bs-fg-3);--bs-navbar-active-color:var(--bs-fg-body);--bs-navbar-brand-padding-y:.75rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:var(--bs-font-size-md);--bs-navbar-brand-font-weight:var(--bs-font-weight-medium);--bs-navbar-brand-color:var(--bs-fg-body);--bs-navbar-brand-hover-color:var(--bs-fg-body);--bs-navbar-nav-link-padding-x:.75rem;--bs-navbar-toggler-width:2rem;--bs-navbar-toggler-padding-y:.25rem;--bs-navbar-toggler-padding-x:.75rem;--bs-navbar-toggler-font-size:var(--bs-font-size-lg);--bs-navbar-toggler-border-color:color-mix(in oklch, var(--bs-fg-body) 15%, transparent);--bs-navbar-toggler-border-radius:var(--bs-radius-5);--bs-navbar-toggler-transition:box-shadow .15s ease-in-out;--bs-navbar-toggler-icon-size:1.25rem;--bs-navbar-toggler-icon:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e");padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);color:var(--bs-navbar-color,var(--bs-fg-body));background-color:var(--bs-navbar-bg,var(--bs-bg-body));flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex;position:relative;container-type:inline-size}.navbar>.\32 xl\:container,.navbar>.xl\:container,.navbar>.lg\:container,.navbar>.md\:container,.navbar>.sm\:container,.navbar>.container,.navbar>.container-fluid{flex-wrap:inherit;justify-content:space-between;align-items:center;display:flex}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);font-size:var(--bs-navbar-brand-font-size);font-weight:var(--bs-navbar-brand-font-weight);color:var(--bs-navbar-brand-color);white-space:nowrap;margin-inline-end:var(--bs-navbar-brand-margin-end);text-decoration:none}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-gap:.25rem;--bs-nav-link-gap:.5rem;--bs-nav-link-padding-x:.5rem;--bs-nav-link-padding-y:.375rem;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-border-width:var(--bs-border-width);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-hover-bg:transparent;--bs-nav-link-active-color:var(--bs-navbar-active-color);--bs-nav-link-active-bg:transparent;--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);gap:var(--bs-nav-gap);flex-direction:column;margin-bottom:0;padding-inline-start:0;list-style-type:"";display:flex}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color);border:var(--bs-nav-link-border-width) solid var(--bs-nav-link-border-color,transparent)}.navbar-text{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-toggler{--bs-btn-bg:transparent;--bs-btn-hover-bg:var(--bs-bg-2)}.navbar-toggler-icon{width:var(--bs-navbar-toggler-icon-size);height:var(--bs-navbar-toggler-icon-size);mask-image:var(--bs-navbar-toggler-icon);background-color:currentColor;display:inline-block;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}.navbar-expand>.container,.navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.navbar-expand .navbar-toggler{display:none!important}.navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.navbar-expand [class*=drawer] .drawer-header{display:none!important}.navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}@container (width>=576px){.sm\:navbar-expand>.container,.sm\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.sm\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.sm\:navbar-expand .navbar-toggler{display:none!important}.sm\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.sm\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.sm\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=768px){.md\:navbar-expand>.container,.md\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.md\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.md\:navbar-expand .navbar-toggler{display:none!important}.md\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.md\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.md\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1024px){.lg\:navbar-expand>.container,.lg\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.lg\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.lg\:navbar-expand .navbar-toggler{display:none!important}.lg\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.lg\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.lg\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1280px){.xl\:navbar-expand>.container,.xl\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.xl\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.xl\:navbar-expand .navbar-toggler{display:none!important}.xl\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.xl\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.xl\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}@container (width>=1536px){.\32 xl\:navbar-expand>.container,.\32 xl\:navbar-expand>.container-fluid{flex-wrap:nowrap;justify-content:flex-start}.\32 xl\:navbar-expand .navbar-nav{--bs-nav-link-padding-x:var(--bs-navbar-nav-link-padding-x);flex-direction:row}.\32 xl\:navbar-expand .navbar-toggler{display:none!important}.\32 xl\:navbar-expand [class*=drawer]{z-index:auto;box-shadow:none;flex-grow:1;margin:0;padding:0;transition:none;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;max-width:none!important;height:auto!important;max-height:none!important;display:flex!important;position:static!important;inset:auto!important;transform:none!important}.\32 xl\:navbar-expand [class*=drawer] .drawer-header{display:none!important}.\32 xl\:navbar-expand [class*=drawer] .drawer-body{flex-direction:row;flex-grow:1;align-items:center;padding:0;display:flex;overflow-y:visible}}.navbar [class*=drawer]:not([open],.hiding){transition:none!important}@media (prefers-reduced-motion:reduce){.navbar [class*=drawer]:not([open],.hiding){transition:none}}.navbar-translucent{background-color:#0000;position:relative}.navbar-translucent:before{z-index:-1;content:"";background-color:color-mix(in oklch, var(--bs-navbar-bg,var(--bs-bg-body)) 80%, transparent);backdrop-filter:blur(5px)saturate(180%);background-image:none;position:absolute;inset:0}.navbar[data-bs-theme=dark]{--bs-navbar-color:color-mix(in oklch, var(--bs-white) .55, transparent);--bs-navbar-hover-color:color-mix(in oklch, var(--bs-white) .75, transparent);--bs-navbar-disabled-color:color-mix(in oklch, var(--bs-white) .25, transparent);--bs-navbar-active-color:var(--bs-white);--bs-navbar-brand-color:var(--bs-white);--bs-navbar-brand-hover-color:var(--bs-white);--bs-navbar-toggler-border-color:color-mix(in oklch, var(--bs-white) .1, transparent)}@media (width<576px){.sm\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.sm\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.sm\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.sm\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.sm\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.sm\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.sm\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<576px) and (prefers-reduced-motion:reduce){.sm\:drawer:not(.drawer-instant){transition:none}}@media (width<576px){.sm\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .sm\:drawer:not(.drawer-instant):where(.drawer-start),.sm\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .sm\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant):where(.drawer-bottom),.sm\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.sm\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<576px) and (prefers-reduced-motion:reduce){.sm\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<576px){.sm\:drawer[open]{visibility:visible;transform:none}}@media (width>=576px){.sm\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=576px) and (prefers-reduced-motion:reduce){.sm\:drawer{transition:none}}@media (width>=576px){.sm\:drawer .drawer-header{display:none}.sm\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<768px){.md\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.md\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.md\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.md\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.md\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.md\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.md\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<768px) and (prefers-reduced-motion:reduce){.md\:drawer:not(.drawer-instant){transition:none}}@media (width<768px){.md\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .md\:drawer:not(.drawer-instant):where(.drawer-start),.md\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .md\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant):where(.drawer-bottom),.md\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.md\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<768px) and (prefers-reduced-motion:reduce){.md\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<768px){.md\:drawer[open]{visibility:visible;transform:none}}@media (width>=768px){.md\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=768px) and (prefers-reduced-motion:reduce){.md\:drawer{transition:none}}@media (width>=768px){.md\:drawer .drawer-header{display:none}.md\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1024px){.lg\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.lg\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.lg\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.lg\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.lg\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.lg\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.lg\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1024px) and (prefers-reduced-motion:reduce){.lg\:drawer:not(.drawer-instant){transition:none}}@media (width<1024px){.lg\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .lg\:drawer:not(.drawer-instant):where(.drawer-start),.lg\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .lg\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant):where(.drawer-bottom),.lg\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.lg\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1024px) and (prefers-reduced-motion:reduce){.lg\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1024px){.lg\:drawer[open]{visibility:visible;transform:none}}@media (width>=1024px){.lg\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1024px) and (prefers-reduced-motion:reduce){.lg\:drawer{transition:none}}@media (width>=1024px){.lg\:drawer .drawer-header{display:none}.lg\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1280px){.xl\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.xl\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.xl\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.xl\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.xl\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.xl\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.xl\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1280px) and (prefers-reduced-motion:reduce){.xl\:drawer:not(.drawer-instant){transition:none}}@media (width<1280px){.xl\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .xl\:drawer:not(.drawer-instant):where(.drawer-start),.xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant):where(.drawer-bottom),.xl\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.xl\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1280px) and (prefers-reduced-motion:reduce){.xl\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1280px){.xl\:drawer[open]{visibility:visible;transform:none}}@media (width>=1280px){.xl\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1280px) and (prefers-reduced-motion:reduce){.xl\:drawer{transition:none}}@media (width>=1280px){.xl\:drawer .drawer-header{display:none}.xl\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}@media (width<1536px){.\32 xl\:drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.\32 xl\:drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.\32 xl\:drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.\32 xl\:drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.\32 xl\:drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.\32 xl\:drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.\32 xl\:drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}}@media (width<1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer:not(.drawer-instant){transition:none}}@media (width<1536px){.\32 xl\:drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .\32 xl\:drawer:not(.drawer-instant):where(.drawer-start),.\32 xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .\32 xl\:drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant):where(.drawer-bottom),.\32 xl\:drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.\32 xl\:drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s;transform:none}}@media (width<1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer:not(.drawer-instant)[open]{transition:none}}@media (width<1536px){.\32 xl\:drawer[open]{visibility:visible;transform:none}}@media (width>=1536px){.\32 xl\:drawer{--bs-drawer-height:auto;--bs-drawer-border-width:0;z-index:auto;max-width:none;max-height:none;box-shadow:none;border-radius:0;flex-grow:1;margin:0;padding:0;inset:auto;visibility:visible!important;background-color:#0000!important;border:0!important;width:auto!important;height:auto!important;transition:none!important;display:flex!important;position:static!important;transform:none!important}}@media (width>=1536px) and (prefers-reduced-motion:reduce){.\32 xl\:drawer{transition:none}}@media (width>=1536px){.\32 xl\:drawer .drawer-header{display:none}.\32 xl\:drawer .drawer-body{flex-direction:row;flex-grow:0;width:100%;padding:0;display:flex;overflow-y:visible;background-color:#0000!important}}.drawer{z-index:var(--bs-drawer-zindex);width:auto;max-width:calc(100% - var(--bs-drawer-inset) * 2);height:auto;max-height:calc(100% - var(--bs-drawer-inset) * 2);color:var(--bs-drawer-color);visibility:hidden;background-color:var(--bs-drawer-bg);border:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);border-radius:var(--bs-drawer-border-radius);box-shadow:var(--bs-drawer-box-shadow);background-clip:padding-box;outline:0;flex-direction:column;margin:0;padding:0;display:flex;position:fixed;inset:auto}.drawer:where(.drawer-start){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-start:var(--bs-drawer-inset)}.drawer:where(.drawer-end){inset-block:var(--bs-drawer-inset);width:var(--bs-drawer-width);inset-inline-end:var(--bs-drawer-inset)}.drawer:where(.drawer-top){inset:var(--bs-drawer-inset) var(--bs-drawer-inset) auto;height:var(--bs-drawer-height)}.drawer:where(.drawer-bottom){inset:auto var(--bs-drawer-inset) var(--bs-drawer-inset);height:var(--bs-drawer-height)}.drawer:where(.drawer-fullscreen){inset:var(--bs-drawer-inset);width:auto;max-width:none;height:auto;max-height:none}.drawer:not(.drawer-instant){transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s var(--bs-drawer-transition-duration)}@media (prefers-reduced-motion:reduce){.drawer:not(.drawer-instant){transition:none}}.drawer:not(.drawer-instant):where(.drawer-start){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}:root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start),.drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(100% + var(--bs-drawer-inset)))}:root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end){transform:translateX(calc(-100% - var(--bs-drawer-inset)))}.drawer:not(.drawer-instant):where(.drawer-top){transform:translateY(calc(-100% - var(--bs-drawer-inset)))}.drawer:not(.drawer-instant):where(.drawer-bottom),.drawer:not(.drawer-instant):where(.drawer-fullscreen){transform:translateY(calc(100% + var(--bs-drawer-inset)))}.drawer:not(.drawer-instant)[open]{visibility:visible;transition:transform var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), visibility 0s}@media (prefers-reduced-motion:reduce){.drawer:not(.drawer-instant)[open]{transition:none}}.drawer:not(.drawer-instant)[open]{transform:none}.drawer[open]{visibility:visible;transform:none}.sm\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.sm\:drawer::backdrop{transition:none}}.md\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.md\:drawer::backdrop{transition:none}}.lg\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.lg\:drawer::backdrop{transition:none}}.xl\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.xl\:drawer::backdrop{transition:none}}.\32 xl\:drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.\32 xl\:drawer::backdrop{transition:none}}.drawer::backdrop{background-color:var(--bs-drawer-backdrop-bg);backdrop-filter:blur(var(--bs-drawer-backdrop-blur));transition:background-color var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), backdrop-filter var(--bs-drawer-transition-duration) var(--bs-drawer-transition-timing), display var(--bs-drawer-transition-duration) allow-discrete, overlay var(--bs-drawer-transition-duration) allow-discrete}@media (prefers-reduced-motion:reduce){.drawer::backdrop{transition:none}}@starting-style{.sm\:drawer::backdrop,.md\:drawer::backdrop,.lg\:drawer::backdrop,.xl\:drawer::backdrop,.\32 xl\:drawer::backdrop,.drawer::backdrop{backdrop-filter:blur();background-color:#0000}}.drawer-static{transform:scale(1.02)}.drawer-translucent{background-color:color-mix(in oklch, var(--bs-drawer-bg) 80%, transparent);backdrop-filter:blur(5px)saturate(180%)}.drawer-sheet{width:100vw;margin-inline:auto;margin-bottom:calc(-1 * var(--bs-drawer-border-width));border-end-end-radius:0;border-end-start-radius:0;bottom:0;left:0;right:0}@media (width>=1024px){.drawer-sheet{max-width:var(--bs-drawer-sheet-width,760px)}}.drawer-header{padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);flex-shrink:0;align-items:center;display:flex}.drawer-header .btn-close{margin-block:calc(-.5 * var(--bs-drawer-padding-y));margin-inline-start:auto}.drawer-title{line-height:var(--bs-drawer-title-line-height);margin-bottom:0}.drawer-body{gap:var(--bs-drawer-padding-y);padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);flex-direction:column;flex:auto;display:flex;overflow-y:auto}.drawer-footer{padding:var(--bs-drawer-padding-y) var(--bs-drawer-padding-x);border-block-start:var(--bs-drawer-border-width) solid var(--bs-drawer-border-color);flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.drawer-fit-content{inset-block-end:auto}.pagination{--bs-pagination-min-height:var(--bs-btn-input-min-height);--bs-pagination-padding-x:var(--bs-btn-input-padding-x);--bs-pagination-padding-y:var(--bs-btn-input-padding-y);--bs-pagination-font-size:var(--bs-btn-input-font-size);--bs-pagination-color:var(--bs-link-color);--bs-pagination-bg:var(--bs-bg-body);--bs-pagination-border-width:var(--bs-border-width);--bs-pagination-border-color:var(--bs-border-color);--bs-pagination-border-radius:var(--bs-btn-input-border-radius);--bs-pagination-hover-color:var(--bs-link-hover-color);--bs-pagination-hover-bg:var(--bs-bg-1);--bs-pagination-hover-border-color:var(--bs-border-color);--bs-pagination-focus-color:var(--bs-link-hover-color);--bs-pagination-focus-bg:var(--bs-bg-2);--bs-pagination-active-color:var(--bs-primary-contrast);--bs-pagination-active-bg:var(--bs-primary-bg);--bs-pagination-active-border-color:var(--bs-primary-bg);--bs-pagination-disabled-color:var(--bs-fg-3);--bs-pagination-disabled-bg:var(--bs-bg-2);--bs-pagination-disabled-border-color:var(--bs-border-color);padding-inline-start:0;list-style-type:"";display:flex}.page-link{min-height:var(--bs-pagination-min-height);padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);justify-content:center;align-items:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;display:flex;position:relative}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus-visible{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:var(--bs-focus-ring);outline-offset:var(--bs-focus-ring-offset)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);background-image:var(--bs-gradient);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-inline-start:calc(-1 * var(--bs-pagination-border-width))}.page-item:first-child .page-link{border-start-start-radius:var(--bs-pagination-border-radius);border-end-start-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-start-end-radius:var(--bs-pagination-border-radius);border-end-end-radius:var(--bs-pagination-border-radius)}.pagination-sm{--bs-pagination-min-height:var(--bs-btn-input-sm-min-height);--bs-pagination-padding-y:var(--bs-btn-input-sm-padding-y);--bs-pagination-padding-x:var(--bs-btn-input-sm-padding-x);--bs-pagination-font-size:var(--bs-btn-input-sm-font-size);--bs-pagination-border-radius:var(--bs-btn-input-sm-border-radius)}.pagination-lg{--bs-pagination-min-height:var(--bs-btn-input-lg-min-height);--bs-pagination-padding-y:var(--bs-btn-input-lg-padding-y);--bs-pagination-padding-x:var(--bs-btn-input-lg-padding-x);--bs-pagination-font-size:var(--bs-btn-input-lg-font-size);--bs-pagination-border-radius:var(--bs-btn-input-lg-border-radius)}.placeholder{--bs-placeholder-opacity-max:.5;--bs-placeholder-opacity-min:.2;vertical-align:middle;cursor:wait;min-height:1em;opacity:var(--bs-placeholder-opacity-max);background-color:currentColor;display:inline-block}.placeholder.btn:before{content:"";display:inline-block}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:2s ease-in-out infinite placeholder-glow}@keyframes placeholder-glow{50%{opacity:var(--bs-placeholder-opacity-min)}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgb(0, 0, 0, calc(1 - var(--bs-placeholder-opacity-min))) 75%, #000 95%);animation:2s linear infinite placeholder-wave;mask-size:200% 100%}@keyframes placeholder-wave{to{mask-position:-200% 0}}.popover{--bs-popover-zindex:1070;--bs-popover-max-width:280px;--bs-popover-font-size:var(--bs-font-size-sm);--bs-popover-bg:var(--bs-bg-body);--bs-popover-border-width:var(--bs-border-width);--bs-popover-border-color:var(--bs-border-color-translucent);--bs-popover-border-radius:var(--bs-radius-7);--bs-popover-inner-border-radius:calc(var(--bs-radius-7) - var(--bs-border-width));--bs-popover-box-shadow:var(--bs-box-shadow);--bs-popover-header-padding-x:var(--bs-spacer);--bs-popover-header-padding-y:var(--bs-spacer-3);--bs-popover-header-font-size:var(--bs-font-size-sm);--bs-popover-header-color:inherit;--bs-popover-header-bg:var(--bs-bg-1);--bs-popover-body-padding-x:var(--bs-spacer);--bs-popover-body-padding-y:var(--bs-spacer-3);--bs-popover-body-color:var(--bs-fg-body);--bs-popover-arrow-width:1rem;--bs-popover-arrow-height:.5rem;--bs-popover-arrow-border:var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);max-width:var(--bs-popover-max-width);font-family:var(--bs-body-font-family);font-style:normal;font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius);box-shadow:var(--bs-popover-box-shadow);background-clip:padding-box;text-decoration:none;display:block}.popover .popover-arrow{width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height);display:block}.popover .popover-arrow:before,.popover .popover-arrow:after{content:"";border:0 solid #0000;display:block;position:absolute}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow{bottom:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:before,.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-top>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:before{border-block-start-color:var(--bs-popover-arrow-border);bottom:0}.bs-popover-top>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=top]>.popover-arrow:after{bottom:var(--bs-popover-border-width);border-block-start-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow{left:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:before,.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * .5) 0}.bs-popover-end>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:before{border-inline-end-color:var(--bs-popover-arrow-border);left:0}.bs-popover-end>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=right]>.popover-arrow:after{left:var(--bs-popover-border-width);border-inline-end-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow{top:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:before,.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:after{border-width:0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:before{border-block-end-color:var(--bs-popover-arrow-border);top:0}.bs-popover-bottom>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:after{top:var(--bs-popover-border-width);border-block-end-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow:has(+.popover-header):after,.bs-popover-auto[data-bs-placement^=bottom]>.popover-arrow:has(+.popover-header):after{border-block-end-color:var(--bs-popover-header-bg)}.bs-popover-bottom .popover-header:before,.bs-popover-auto[data-bs-placement^=bottom] .popover-header:before{width:var(--bs-popover-arrow-width);content:"";border-block-end:var(--bs-popover-border-width) solid var(--bs-popover-header-bg);margin-inline-start:calc(-.5 * var(--bs-popover-arrow-width));display:block;position:absolute;top:0;left:50%}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow{right:calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:before,.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:after{border-width:calc(var(--bs-popover-arrow-width) * .5) 0 calc(var(--bs-popover-arrow-width) * .5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow:before,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:before{border-inline-start-color:var(--bs-popover-arrow-border);right:0}.bs-popover-start>.popover-arrow:after,.bs-popover-auto[data-bs-placement^=left]>.popover-arrow:after{right:var(--bs-popover-border-width);border-inline-start-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-block-end:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-start-start-radius:var(--bs-popover-inner-border-radius);border-start-end-radius:var(--bs-popover-inner-border-radius);margin-bottom:0}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}@keyframes progress-bar-stripes{0%{background-position-x:var(--bs-progress-height)}}.progress,.progress-stacked{--bs-progress-height:1rem;--bs-progress-font-size:var(--bs-font-size-sm);--bs-progress-bg:var(--bs-bg-2);--bs-progress-border-radius:var(--bs-radius-5);--bs-progress-box-shadow:var(--bs-box-shadow-inset);--bs-progress-bar-color:var(--bs-white);--bs-progress-bar-bg:var(--bs-primary-bg);--bs-progress-bar-transition:width .6s ease;--bs-progress-bar-animation:progress-bar-stripes 1s linear infinite;height:var(--bs-progress-height);font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius);box-shadow:var(--bs-progress-box-shadow);display:flex;overflow:hidden}.progress-bar{color:var(--bs-theme-contrast,var(--bs-progress-bar-color));text-align:center;white-space:nowrap;background-color:var(--bs-theme-bg,var(--bs-progress-bar-bg));transition:var(--bs-progress-bar-transition);flex-direction:column;justify-content:center;display:flex;overflow:hidden}@media (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,#ffffff26 25%,#0000 25% 50%,#ffffff26 50% 75%,#0000 75%,#0000);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:var(--bs-progress-bar-animation)}@media (prefers-reduced-motion:reduce){.progress-bar-animated{animation:none}}.spinner-grow,.spinner-border{width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);border-radius:50%;flex-shrink:0;display:inline-block}@keyframes spinner-border{to{transform:rotate(360deg)}}.spinner-border{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-border-width:.25em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-inline-end-color:#0000}.spinner-border-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem;--bs-spinner-border-width:.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width:2rem;--bs-spinner-height:2rem;--bs-spinner-vertical-align:-.125em;--bs-spinner-animation-speed:.75s;--bs-spinner-animation-name:spinner-grow;opacity:0;background-color:currentColor}.spinner-grow-sm{--bs-spinner-width:1rem;--bs-spinner-height:1rem}@media (prefers-reduced-motion:reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed:1.5s}}.stepper{--bs-stepper-size:2rem;--bs-stepper-gap:1rem;--bs-stepper-font-size:var(--bs-font-size-sm);--bs-stepper-text-gap:.5rem;--bs-stepper-track-size:.125rem;--bs-stepper-bg:var(--bs-bg-2);--bs-stepper-active-color:var(--bs-primary-contrast);--bs-stepper-active-bg:var(--bs-primary-bg);gap:var(--bs-stepper-gap);counter-reset:stepper;grid-auto-rows:1fr;grid-auto-flow:row;padding-inline-start:0;list-style-type:"";display:grid}.stepper-item{grid-template-rows:auto;grid-template-columns:var(--bs-stepper-size) auto;gap:var(--bs-stepper-text-gap);align-items:var(--bs-stepper-align-items,center);text-decoration:none;display:grid;position:relative}.stepper-item:before{z-index:1;width:var(--bs-stepper-size);height:var(--bs-stepper-size);font-size:var(--bs-stepper-font-size);text-align:center;content:counter(stepper);counter-increment:stepper;background-color:var(--bs-stepper-bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:.5rem;font-weight:600;line-height:1;display:flex;position:relative}.stepper-item:after{width:var(--bs-stepper-track-size);height:calc(100% + var(--bs-stepper-gap));content:"";background-color:var(--bs-stepper-bg);position:absolute;inset-block:50% 100%;inset-inline-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5)}.stepper-item:last-child:after{display:none}.stepper-item.active:before,.stepper-item.active:after{color:var(--bs-theme-contrast,var(--bs-stepper-active-color));background-color:var(--bs-theme-bg,var(--bs-stepper-active-bg))}.stepper-item.active:not(:has(+.stepper-item.active)):after{background-color:var(--bs-stepper-bg)}.stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.stepper-horizontal .stepper-item:last-child:after{right:100%}@container (width>=576px){.sm\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.sm\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.sm\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.sm\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=768px){.md\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.md\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.md\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.md\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1024px){.lg\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.lg\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.lg\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.lg\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1280px){.xl\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.xl\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.xl\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.xl\:stepper-horizontal .stepper-item:last-child:after{right:100%}}@container (width>=1536px){.\32 xl\:stepper-horizontal{grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid}.\32 xl\:stepper-horizontal .stepper-item{grid-template-rows:var(--bs-stepper-size) auto;text-align:center;grid-template-columns:auto;place-items:start center}.\32 xl\:stepper-horizontal .stepper-item:after{width:calc(100% + var(--bs-stepper-gap));height:var(--bs-stepper-track-size);inset-block-start:calc(var(--bs-stepper-size) * .5 - var(--bs-stepper-track-size) * .5);inset-block-end:auto;inset-inline:50% 100%}.\32 xl\:stepper-horizontal .stepper-item:last-child:after{right:100%}}.stepper-overflow{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;overflow-x:auto;container-type:inline-size}.stepper-overflow>.stepper{width:max-content;min-width:100%}.toast{--bs-toast-zindex:1090;--bs-toast-padding-x:1rem;--bs-toast-padding-y:.75rem;--bs-toast-spacing:1.5rem;--bs-toast-max-width:350px;--bs-toast-font-size:var(--bs-font-size-sm);--bs-toast-bg:var(--bs-bg-body);--bs-toast-border-width:var(--bs-border-width);--bs-toast-border-color:var(--bs-border-color-translucent);--bs-toast-box-shadow:var(--bs-box-shadow);--bs-toast-header-color:var(--bs-fg-3);--bs-toast-header-bg:var(--bs-bg-1);--bs-toast-header-border-color:var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color,var(--bs-fg-body));pointer-events:auto;background-color:var(--bs-toast-bg);border:var(--bs-toast-border-width) solid var(--bs-theme-border,var(--bs-toast-border-color));box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius,var(--bs-radius-7));background-clip:padding-box;flex-direction:column;display:flex;overflow:hidden}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex:1090;z-index:var(--bs-toast-zindex);pointer-events:none;width:max-content;max-width:100%;position:absolute}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-theme-fg-emphasis,var(--bs-toast-header-color));background-color:var(--bs-theme-bg-subtle,var(--bs-toast-header-bg));border-block-end:var(--bs-toast-border-width,var(--bs-border-width)) solid var(--bs-theme-border,var(--bs-toast-header-border-color,var(--bs-border-color-translucent)));align-items:center;display:flex}.toast-header .btn-close{color:inherit;margin-inline-start:calc(.5 * var(--bs-toast-padding-x));margin-inline-end:calc(-.25 * var(--bs-toast-padding-x))}.toast-translucent{backdrop-filter:blur(5px)saturate(180%)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.tooltip{--bs-tooltip-zindex:1080;--bs-tooltip-max-width:200px;--bs-tooltip-padding-x:var(--bs-spacer-3);--bs-tooltip-padding-y:calc(var(--bs-spacer) * .375);--bs-tooltip-font-size:var(--bs-font-size-sm);--bs-tooltip-color:var(--bs-bg-body);--bs-tooltip-bg:var(--bs-fg-body);--bs-tooltip-border-radius:var(--bs-radius-5);--bs-tooltip-opacity:.95;--bs-tooltip-arrow-width:.8rem;--bs-tooltip-arrow-height:.4rem;z-index:var(--bs-tooltip-zindex);font-family:var(--bs-body-font-family);font-style:normal;font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);text-align:start;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0;text-decoration:none;display:block}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height);display:block}.tooltip .tooltip-arrow:before{content:"";border-style:solid;border-color:#0000;position:absolute}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow{bottom:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow:before{border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-block-start-color:var(--bs-tooltip-bg);top:-1px}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow{left:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow:before{border-width:calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * .5) 0;border-inline-end-color:var(--bs-tooltip-bg);right:-1px}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow{top:calc(-1 * var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow:before{border-width:0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-block-end-color:var(--bs-tooltip-bg);bottom:-1px}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow{right:calc(-1 * var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow:before,.bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow:before{border-width:calc(var(--bs-tooltip-arrow-width) * .5) 0 calc(var(--bs-tooltip-arrow-width) * .5) var(--bs-tooltip-arrow-height);border-inline-start-color:var(--bs-tooltip-bg);left:-1px}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}}@layer custom;@layer helpers{.focus-ring:focus-visible{outline:var(--bs-focus-ring-width) solid var(--bs-theme-focus-ring,var(--bs-focus-ring-color))}.icon-link{-webkit-text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity,.5));text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity,.5));text-underline-offset:.25em;backface-visibility:hidden;align-items:center;gap:.375rem;display:inline-flex}.icon-link>.bi{fill:currentColor;flex-shrink:0;width:1em;height:1em;transition:transform .2s ease-in-out}@media (prefers-reduced-motion:reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform,translate3d(.25em, 0, 0))}.fixed-top{z-index:1030;position:fixed;inset:0 0 auto}.fixed-bottom{z-index:1030;position:fixed;inset:auto 0 0}.sticky-top{z-index:1020;position:sticky;top:0}.sticky-bottom{z-index:1020;position:sticky;bottom:0}@media (width>=576px){.sm\:sticky-top{z-index:1020;position:sticky;top:0}.sm\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=768px){.md\:sticky-top{z-index:1020;position:sticky;top:0}.md\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1024px){.lg\:sticky-top{z-index:1020;position:sticky;top:0}.lg\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1280px){.xl\:sticky-top{z-index:1020;position:sticky;top:0}.xl\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}@media (width>=1536px){.\32 xl\:sticky-top{z-index:1020;position:sticky;top:0}.\32 xl\:sticky-bottom{z-index:1020;position:sticky;bottom:0}}.stack-container{container-type:inline-size}[class*=hstack],[class*=vstack]{flex:var(--bs-stack-flex,1 1 auto);flex-direction:var(--bs-stack-direction,row);align-items:var(--bs-stack-align-items,center);align-self:var(--bs-stack-align-self,stretch);display:flex}.vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}@container (width>=576px){.sm\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.sm\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=768px){.md\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.md\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1024px){.lg\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.lg\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1280px){.xl\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.xl\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}@container (width>=1536px){.\32 xl\:vstack{--bs-stack-direction:column;--bs-stack-align-items:stretch}.\32 xl\:hstack{--bs-stack-direction:row;--bs-stack-align-items:flex-start}}.theme-primary{--bs-theme-base:var(--bs-primary-base);--bs-theme-fg:var(--bs-primary-fg);--bs-theme-fg-emphasis:var(--bs-primary-fg-emphasis);--bs-theme-bg:var(--bs-primary-bg);--bs-theme-bg-subtle:var(--bs-primary-bg-subtle);--bs-theme-bg-muted:var(--bs-primary-bg-muted);--bs-theme-border:var(--bs-primary-border);--bs-theme-focus-ring:var(--bs-primary-focus-ring);--bs-theme-contrast:var(--bs-primary-contrast)}.theme-accent{--bs-theme-base:var(--bs-accent-base);--bs-theme-fg:var(--bs-accent-fg);--bs-theme-fg-emphasis:var(--bs-accent-fg-emphasis);--bs-theme-bg:var(--bs-accent-bg);--bs-theme-bg-subtle:var(--bs-accent-bg-subtle);--bs-theme-bg-muted:var(--bs-accent-bg-muted);--bs-theme-border:var(--bs-accent-border);--bs-theme-focus-ring:var(--bs-accent-focus-ring);--bs-theme-contrast:var(--bs-accent-contrast)}.theme-success{--bs-theme-base:var(--bs-success-base);--bs-theme-fg:var(--bs-success-fg);--bs-theme-fg-emphasis:var(--bs-success-fg-emphasis);--bs-theme-bg:var(--bs-success-bg);--bs-theme-bg-subtle:var(--bs-success-bg-subtle);--bs-theme-bg-muted:var(--bs-success-bg-muted);--bs-theme-border:var(--bs-success-border);--bs-theme-focus-ring:var(--bs-success-focus-ring);--bs-theme-contrast:var(--bs-success-contrast)}.theme-danger{--bs-theme-base:var(--bs-danger-base);--bs-theme-fg:var(--bs-danger-fg);--bs-theme-fg-emphasis:var(--bs-danger-fg-emphasis);--bs-theme-bg:var(--bs-danger-bg);--bs-theme-bg-subtle:var(--bs-danger-bg-subtle);--bs-theme-bg-muted:var(--bs-danger-bg-muted);--bs-theme-border:var(--bs-danger-border);--bs-theme-focus-ring:var(--bs-danger-focus-ring);--bs-theme-contrast:var(--bs-danger-contrast)}.theme-warning{--bs-theme-base:var(--bs-warning-base);--bs-theme-fg:var(--bs-warning-fg);--bs-theme-fg-emphasis:var(--bs-warning-fg-emphasis);--bs-theme-bg:var(--bs-warning-bg);--bs-theme-bg-subtle:var(--bs-warning-bg-subtle);--bs-theme-bg-muted:var(--bs-warning-bg-muted);--bs-theme-border:var(--bs-warning-border);--bs-theme-focus-ring:var(--bs-warning-focus-ring);--bs-theme-contrast:var(--bs-warning-contrast)}.theme-info{--bs-theme-base:var(--bs-info-base);--bs-theme-fg:var(--bs-info-fg);--bs-theme-fg-emphasis:var(--bs-info-fg-emphasis);--bs-theme-bg:var(--bs-info-bg);--bs-theme-bg-subtle:var(--bs-info-bg-subtle);--bs-theme-bg-muted:var(--bs-info-bg-muted);--bs-theme-border:var(--bs-info-border);--bs-theme-focus-ring:var(--bs-info-focus-ring);--bs-theme-contrast:var(--bs-info-contrast)}.theme-inverse{--bs-theme-base:var(--bs-inverse-base);--bs-theme-fg:var(--bs-inverse-fg);--bs-theme-fg-emphasis:var(--bs-inverse-fg-emphasis);--bs-theme-bg:var(--bs-inverse-bg);--bs-theme-bg-subtle:var(--bs-inverse-bg-subtle);--bs-theme-bg-muted:var(--bs-inverse-bg-muted);--bs-theme-border:var(--bs-inverse-border);--bs-theme-focus-ring:var(--bs-inverse-focus-ring);--bs-theme-contrast:var(--bs-inverse-contrast)}.theme-secondary{--bs-theme-base:var(--bs-secondary-base);--bs-theme-fg:var(--bs-secondary-fg);--bs-theme-fg-emphasis:var(--bs-secondary-fg-emphasis);--bs-theme-bg:var(--bs-secondary-bg);--bs-theme-bg-subtle:var(--bs-secondary-bg-subtle);--bs-theme-bg-muted:var(--bs-secondary-bg-muted);--bs-theme-border:var(--bs-secondary-border);--bs-theme-focus-ring:var(--bs-secondary-focus-ring);--bs-theme-contrast:var(--bs-secondary-contrast)}.visually-hidden,.visually-hidden-focusable:not(:focus,:focus-within){clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus,:focus-within):not(caption){position:absolute!important}.visually-hidden *,.visually-hidden-focusable:not(:focus,:focus-within) *{overflow:hidden!important}.stretched-link:after{z-index:1;content:"";position:absolute;inset:0}.text-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.vr{width:var(--bs-vr-border-width,var(--bs-border-width));background-color:var(--bs-border-color);align-self:stretch;min-height:1em;display:inline-block}}@layer utilities{.align-baseline{vertical-align:baseline}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.align-text-bottom{vertical-align:text-bottom}.align-text-top{vertical-align:text-top}[class*=ratio-]{aspect-ratio:var(--bs-ratio)}.ratio-auto{--bs-ratio:auto}.ratio-1x1{--bs-ratio:1 / 1}.ratio-4x3{--bs-ratio:4 / 3}.ratio-16x9{--bs-ratio:16 / 9}.ratio-21x9{--bs-ratio:21 / 9}.float-start{float:inline-start}.float-end{float:inline-end}.float-none{float:none}.object-fit-contain{object-fit:contain}.object-fit-cover{object-fit:cover}.object-fit-fill{object-fit:fill}.object-fit-scale{object-fit:scale-down}.object-fit-none{object-fit:none}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-x-visible{overflow-x:visible}.overflow-x-scroll{overflow-x:scroll}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-visible{overflow-y:visible}.overflow-y-scroll{overflow-y:scroll}.contains-inline{container-type:inline-size}.contains-size{container-type:size}.d-inline{display:inline}.d-inline-block{display:inline-block}.d-block{display:block}.d-grid{display:grid}.d-inline-grid{display:inline-grid}.d-table{display:table}.d-table-row{display:table-row}.d-table-cell{display:table-cell}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.d-contents{display:contents}.d-flow-root{display:flow-root}.d-none{display:none}.shadow{box-shadow:var(--bs-box-shadow)}.shadow-xs{box-shadow:var(--bs-box-shadow-xs)}.shadow-sm{box-shadow:var(--bs-box-shadow-sm)}.shadow-lg{box-shadow:var(--bs-box-shadow-lg)}.shadow-none{box-shadow:none}.position-static{position:static}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.top-0{top:0}.top-50{top:50%}.top-100{top:100%}.bottom-0{bottom:0}.bottom-50{bottom:50%}.bottom-100{bottom:100%}.start-0{inset-inline-start:0}.start-50{inset-inline-start:50%}.start-100{inset-inline-start:100%}.end-0{inset-inline-end:0}.end-50{inset-inline-end:50%}.end-100{inset-inline-end:100%}.translate-middle{transform:translate(-50%,-50%)}.translate-middle-x{transform:translate(-50%)}.translate-middle-y{transform:translateY(-50%)}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-0{border:0}.border-top{border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-top-0{border-block-start:0}.border-end{border-inline-end:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-end-0{border-inline-end:0}.border-bottom{border-block-end:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-bottom-0{border-block-end:0}.border-start{border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-start-0{border-inline-start:0}.border-y{border-block:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-y-0{border-block:0}.border-x{border-inline:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}.border-x-0{border-inline:0}.border-primary{--bs-border-color:var(--bs-primary-bg);border-color:var(--bs-border-color)}.border-accent{--bs-border-color:var(--bs-accent-bg);border-color:var(--bs-border-color)}.border-success{--bs-border-color:var(--bs-success-bg);border-color:var(--bs-border-color)}.border-danger{--bs-border-color:var(--bs-danger-bg);border-color:var(--bs-border-color)}.border-warning{--bs-border-color:var(--bs-warning-bg);border-color:var(--bs-border-color)}.border-info{--bs-border-color:var(--bs-info-bg);border-color:var(--bs-border-color)}.border-inverse{--bs-border-color:var(--bs-inverse-bg);border-color:var(--bs-border-color)}.border-secondary{--bs-border-color:var(--bs-secondary-bg);border-color:var(--bs-border-color)}.border-bg{--bs-border-color:var(--bs-border-bg);border-color:var(--bs-border-color)}.border-body{--bs-border-color:var(--bs-border-body);border-color:var(--bs-border-color)}.border-muted{--bs-border-color:var(--bs-border-muted);border-color:var(--bs-border-color)}.border-subtle{--bs-border-color:var(--bs-border-subtle);border-color:var(--bs-border-color)}.border-emphasized{--bs-border-color:var(--bs-border-emphasized);border-color:var(--bs-border-color)}.border-white{--bs-border-color:var(--bs-border-white);border-color:var(--bs-border-color)}.border-black{--bs-border-color:var(--bs-border-black);border-color:var(--bs-border-color)}.border-subtle-primary{--bs-border-color:var(--bs-primary-border);border-color:var(--bs-border-color)}.border-subtle-accent{--bs-border-color:var(--bs-accent-border);border-color:var(--bs-border-color)}.border-subtle-success{--bs-border-color:var(--bs-success-border);border-color:var(--bs-border-color)}.border-subtle-danger{--bs-border-color:var(--bs-danger-border);border-color:var(--bs-border-color)}.border-subtle-warning{--bs-border-color:var(--bs-warning-border);border-color:var(--bs-border-color)}.border-subtle-info{--bs-border-color:var(--bs-info-border);border-color:var(--bs-border-color)}.border-subtle-inverse{--bs-border-color:var(--bs-inverse-border);border-color:var(--bs-border-color)}.border-subtle-secondary{--bs-border-color:var(--bs-secondary-border);border-color:var(--bs-border-color)}.border-1{border-width:1px}.border-2{border-width:2px}.border-3{border-width:3px}.border-4{border-width:4px}.border-5{border-width:5px}.border-10{border-color:color-mix(in oklch, var(--bs-border-color) 10%, transparent)}.border-20{border-color:color-mix(in oklch, var(--bs-border-color) 20%, transparent)}.border-30{border-color:color-mix(in oklch, var(--bs-border-color) 30%, transparent)}.border-40{border-color:color-mix(in oklch, var(--bs-border-color) 40%, transparent)}.border-50{border-color:color-mix(in oklch, var(--bs-border-color) 50%, transparent)}.border-60{border-color:color-mix(in oklch, var(--bs-border-color) 60%, transparent)}.border-70{border-color:color-mix(in oklch, var(--bs-border-color) 70%, transparent)}.border-80{border-color:color-mix(in oklch, var(--bs-border-color) 80%, transparent)}.border-90{border-color:color-mix(in oklch, var(--bs-border-color) 90%, transparent)}.border-100{border-color:var(--bs-border-color)}.w-1{width:1rem}.w-2{width:2rem}.w-3{width:3rem}.w-4{width:4rem}.w-5{width:5rem}.w-6{width:6rem}.w-7{width:7rem}.w-8{width:8rem}.w-9{width:9rem}.w-10{width:10rem}.w-11{width:11rem}.w-12{width:12rem}.w-25{width:25%}.w-50{width:50%}.w-75{width:75%}.w-100{width:100%}.w-auto{width:auto}.w-min{width:min-content}.w-max{width:max-content}.w-fit{width:fit-content}.max-w-100{max-width:100%}.min-w-0{min-width:0}.min-w-100{min-width:100%}.vw-100{width:100vw}.min-vw-100{min-width:100vw}.h-25{height:25%}.h-50{height:50%}.h-75{height:75%}.h-100{height:100%}.h-auto{height:auto}.h-min{height:min-content}.h-max{height:max-content}.h-fit{height:fit-content}.max-h-100{max-height:100%}.min-h-0{min-height:0}.min-h-100{min-height:100%}.vh-100{height:100vh}.min-vh-100{min-height:100vh}.flex-fill{flex:auto}.flex-row{flex-direction:row}.flex-column{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-column-reverse{flex-direction:column-reverse}.flex-grow-0{flex-grow:0}.flex-grow-1{flex-grow:1}.flex-shrink-0{flex-shrink:0}.flex-shrink-1{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.justify-content-start{justify-content:flex-start}.justify-content-end{justify-content:flex-end}.justify-content-center{justify-content:center}.justify-content-between{justify-content:space-between}.justify-content-around{justify-content:space-around}.justify-content-evenly{justify-content:space-evenly}.justify-items-start{justify-items:start}.justify-items-end{justify-items:end}.justify-items-center{justify-items:center}.justify-items-stretch{justify-items:stretch}.justify-self-start{justify-self:start}.justify-self-end{justify-self:end}.justify-self-center{justify-self:center}.align-items-start{align-items:flex-start}.align-items-end{align-items:flex-end}.align-items-center{align-items:center}.align-items-baseline{align-items:baseline}.align-items-stretch{align-items:stretch}.align-content-start{align-content:flex-start}.align-content-end{align-content:flex-end}.align-content-center{align-content:center}.align-content-between{align-content:space-between}.align-content-around{align-content:space-around}.align-content-stretch{align-content:stretch}.align-self-auto{align-self:auto}.align-self-start{align-self:flex-start}.align-self-end{align-self:flex-end}.align-self-center{align-self:center}.align-self-baseline{align-self:baseline}.align-self-stretch{align-self:stretch}.place-items-start{place-items:start}.place-items-end{place-items:end}.place-items-center{place-items:center}.place-items-stretch{place-items:stretch stretch}.grid-cols-1{grid-template-columns:1fr}.grid-cols-2{grid-template-columns:repeat(2,1fr)}.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}.grid-cols-6{grid-template-columns:repeat(6,1fr)}.grid-cols-fill{grid-column:1/-1}.grid-auto-flow-row{grid-auto-flow:row}.grid-auto-flow-column{grid-auto-flow:column}.grid-auto-flow-dense{grid-auto-flow:dense}.order-first{order:-1}.order-0{order:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.order-5{order:5}.order-last{order:6}.m-0{margin:0}.m-1{margin:.25rem}.m-2{margin:.5rem}.m-3{margin:.75rem}.m-4{margin:1rem}.m-5{margin:1.25rem}.m-6{margin:1.5rem}.m-7{margin:2rem}.m-8{margin:2.5rem}.m-9{margin:3rem}.m-auto{margin:auto}.mx-0{margin-inline:0}.mx-1{margin-inline:.25rem}.mx-2{margin-inline:.5rem}.mx-3{margin-inline:.75rem}.mx-4{margin-inline:1rem}.mx-5{margin-inline:1.25rem}.mx-6{margin-inline:1.5rem}.mx-7{margin-inline:2rem}.mx-8{margin-inline:2.5rem}.mx-9{margin-inline:3rem}.mx-auto{margin-inline:auto}.my-0{margin-block:0}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-3{margin-block:.75rem}.my-4{margin-block:1rem}.my-5{margin-block:1.25rem}.my-6{margin-block:1.5rem}.my-7{margin-block:2rem}.my-8{margin-block:2.5rem}.my-9{margin-block:3rem}.my-auto{margin-block:auto}.mt-0{margin-block-start:0}.mt-1{margin-block-start:.25rem}.mt-2{margin-block-start:.5rem}.mt-3{margin-block-start:.75rem}.mt-4{margin-block-start:1rem}.mt-5{margin-block-start:1.25rem}.mt-6{margin-block-start:1.5rem}.mt-7{margin-block-start:2rem}.mt-8{margin-block-start:2.5rem}.mt-9{margin-block-start:3rem}.mt-auto{margin-block-start:auto}.me-0{margin-inline-end:0}.me-1{margin-inline-end:.25rem}.me-2{margin-inline-end:.5rem}.me-3{margin-inline-end:.75rem}.me-4{margin-inline-end:1rem}.me-5{margin-inline-end:1.25rem}.me-6{margin-inline-end:1.5rem}.me-7{margin-inline-end:2rem}.me-8{margin-inline-end:2.5rem}.me-9{margin-inline-end:3rem}.me--1{margin-inline-end:-.25rem}.me--2{margin-inline-end:-.5rem}.me-auto{margin-inline-end:auto}.mb-0{margin-block-end:0}.mb-1{margin-block-end:.25rem}.mb-2{margin-block-end:.5rem}.mb-3{margin-block-end:.75rem}.mb-4{margin-block-end:1rem}.mb-5{margin-block-end:1.25rem}.mb-6{margin-block-end:1.5rem}.mb-7{margin-block-end:2rem}.mb-8{margin-block-end:2.5rem}.mb-9{margin-block-end:3rem}.mb-auto{margin-block-end:auto}.ms-0{margin-inline-start:0}.ms-1{margin-inline-start:.25rem}.ms-2{margin-inline-start:.5rem}.ms-3{margin-inline-start:.75rem}.ms-4{margin-inline-start:1rem}.ms-5{margin-inline-start:1.25rem}.ms-6{margin-inline-start:1.5rem}.ms-7{margin-inline-start:2rem}.ms-8{margin-inline-start:2.5rem}.ms-9{margin-inline-start:3rem}.ms--1{margin-inline-start:-.25rem}.ms--2{margin-inline-start:-.5rem}.ms-auto{margin-inline-start:auto}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-7{padding:2rem}.p-8{padding:2.5rem}.p-9{padding:3rem}.px-0{padding-inline:0}.px-1{padding-inline:.25rem}.px-2{padding-inline:.5rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-5{padding-inline:1.25rem}.px-6{padding-inline:1.5rem}.px-7{padding-inline:2rem}.px-8{padding-inline:2.5rem}.px-9{padding-inline:3rem}.py-0{padding-block:0}.py-1{padding-block:.25rem}.py-2{padding-block:.5rem}.py-3{padding-block:.75rem}.py-4{padding-block:1rem}.py-5{padding-block:1.25rem}.py-6{padding-block:1.5rem}.py-7{padding-block:2rem}.py-8{padding-block:2.5rem}.py-9{padding-block:3rem}.pt-0{padding-block-start:0}.pt-1{padding-block-start:.25rem}.pt-2{padding-block-start:.5rem}.pt-3{padding-block-start:.75rem}.pt-4{padding-block-start:1rem}.pt-5{padding-block-start:1.25rem}.pt-6{padding-block-start:1.5rem}.pt-7{padding-block-start:2rem}.pt-8{padding-block-start:2.5rem}.pt-9{padding-block-start:3rem}.pe-0{padding-inline-end:0}.pe-1{padding-inline-end:.25rem}.pe-2{padding-inline-end:.5rem}.pe-3{padding-inline-end:.75rem}.pe-4{padding-inline-end:1rem}.pe-5{padding-inline-end:1.25rem}.pe-6{padding-inline-end:1.5rem}.pe-7{padding-inline-end:2rem}.pe-8{padding-inline-end:2.5rem}.pe-9{padding-inline-end:3rem}.pb-0{padding-block-end:0}.pb-1{padding-block-end:.25rem}.pb-2{padding-block-end:.5rem}.pb-3{padding-block-end:.75rem}.pb-4{padding-block-end:1rem}.pb-5{padding-block-end:1.25rem}.pb-6{padding-block-end:1.5rem}.pb-7{padding-block-end:2rem}.pb-8{padding-block-end:2.5rem}.pb-9{padding-block-end:3rem}.ps-0{padding-inline-start:0}.ps-1{padding-inline-start:.25rem}.ps-2{padding-inline-start:.5rem}.ps-3{padding-inline-start:.75rem}.ps-4{padding-inline-start:1rem}.ps-5{padding-inline-start:1.25rem}.ps-6{padding-inline-start:1.5rem}.ps-7{padding-inline-start:2rem}.ps-8{padding-inline-start:2.5rem}.ps-9{padding-inline-start:3rem}.gap-0{gap:0}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-7{gap:2rem}.gap-8{gap:2.5rem}.gap-9{gap:3rem}.row-gap-0{row-gap:0}.row-gap-1{row-gap:.25rem}.row-gap-2{row-gap:.5rem}.row-gap-3{row-gap:.75rem}.row-gap-4{row-gap:1rem}.row-gap-5{row-gap:1.25rem}.row-gap-6{row-gap:1.5rem}.row-gap-7{row-gap:2rem}.row-gap-8{row-gap:2.5rem}.row-gap-9{row-gap:3rem}.column-gap-0{column-gap:0}.column-gap-1{column-gap:.25rem}.column-gap-2{column-gap:.5rem}.column-gap-3{column-gap:.75rem}.column-gap-4{column-gap:1rem}.column-gap-5{column-gap:1.25rem}.column-gap-6{column-gap:1.5rem}.column-gap-7{column-gap:2rem}.column-gap-8{column-gap:2.5rem}.column-gap-9{column-gap:3rem}:where(.space-x-0>:not(:last-child)){margin-inline-end:0}:where(.space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.space-y-0>:not(:last-child)){margin-block-end:0}:where(.space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.divide-x-0>:not(:first-child)){border-inline-start:0}:where(.divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.divide-y-0>:not(:first-child)){border-block-start:0}.font-monospace{font-family:var(--bs-font-mono)}.font-body{font-family:var(--bs-body-font-family)}.fs-xs{font-size:.75rem}.fs-sm{font-size:.875rem}.fs-md{font-size:1rem}.fs-lg{font-size:clamp(1.25rem,1rem + .625vw,1.5rem)}.fs-xl{font-size:clamp(1.5rem,1.1rem + .75vw,1.75rem)}.fs-2xl{font-size:clamp(1.75rem,1.3rem + 1vw,2rem)}.fs-3xl{font-size:clamp(2rem,1.5rem + 1.875vw,2.5rem)}.fs-4xl{font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem)}.fs-5xl{font-size:clamp(3rem,2rem + 5vw,4rem)}.fs-6xl{font-size:clamp(3.75rem,2.5rem + 6.25vw,5rem)}.text-xs{font-size:.75rem;line-height:1.25}.text-sm{font-size:.875rem;line-height:1.5}.text-md{font-size:1rem;line-height:1.5}.text-lg{font-size:clamp(1.25rem,1rem + .625vw,1.5rem);line-height:1.5}.text-xl{font-size:clamp(1.5rem,1.1rem + .75vw,1.75rem);line-height:1.42857}.text-2xl{font-size:clamp(1.75rem,1.3rem + 1vw,2rem);line-height:1.33333}.text-3xl{font-size:clamp(2rem,1.5rem + 1.875vw,2.5rem);line-height:1.2}.text-4xl{font-size:clamp(2.25rem,1.75rem + 2.5vw,3rem);line-height:1.1}.text-5xl{font-size:clamp(3rem,2rem + 5vw,4rem);line-height:1.1}.text-6xl{font-size:clamp(3.75rem,2.5rem + 6.25vw,5rem);line-height:1}.fst-italic{font-style:italic}.fst-normal{font-style:normal}.fw-lighter{font-weight:lighter}.fw-light{font-weight:300}.fw-normal{font-weight:400}.fw-medium{font-weight:500}.fw-semibold{font-weight:600}.fw-bold{font-weight:700}.fw-bolder{font-weight:bolder}.lh-1{line-height:1}.lh-sm{line-height:1.25}.lh-base{line-height:1.5}.lh-lg{line-height:2}.text-start{text-align:start}.text-end{text-align:end}.text-center{text-align:center}.text-decoration-none{text-decoration:none}.text-decoration-underline{text-decoration:underline}.text-decoration-line-through{text-decoration:line-through}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-wrap{text-wrap:wrap}.text-nowrap{text-wrap:nowrap}.text-balance{text-wrap:balance}.text-pretty{text-wrap:pretty}.text-break{word-wrap:break-word;word-break:break-word}.fg-primary{--bs-fg:var(--bs-primary-fg);color:var(--bs-fg)}.fg-accent{--bs-fg:var(--bs-accent-fg);color:var(--bs-fg)}.fg-success{--bs-fg:var(--bs-success-fg);color:var(--bs-fg)}.fg-danger{--bs-fg:var(--bs-danger-fg);color:var(--bs-fg)}.fg-warning{--bs-fg:var(--bs-warning-fg);color:var(--bs-fg)}.fg-info{--bs-fg:var(--bs-info-fg);color:var(--bs-fg)}.fg-inverse{--bs-fg:var(--bs-inverse-fg);color:var(--bs-fg)}.fg-secondary{--bs-fg:var(--bs-secondary-fg);color:var(--bs-fg)}.fg-body{--bs-fg:var(--bs-fg-body);color:var(--bs-fg)}.fg-1{--bs-fg:var(--bs-fg-1);color:var(--bs-fg)}.fg-2{--bs-fg:var(--bs-fg-2);color:var(--bs-fg)}.fg-3{--bs-fg:var(--bs-fg-3);color:var(--bs-fg)}.fg-4{--bs-fg:var(--bs-fg-4);color:var(--bs-fg)}.fg-bg{--bs-fg:var(--bs-fg-bg);color:var(--bs-fg)}.fg-white{--bs-fg:var(--bs-fg-white);color:var(--bs-fg)}.fg-black{--bs-fg:var(--bs-fg-black);color:var(--bs-fg)}.fg-reset{--bs-fg:inherit;color:var(--bs-fg)}.fg-emphasis-primary{--bs-fg:var(--bs-primary-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-accent{--bs-fg:var(--bs-accent-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-success{--bs-fg:var(--bs-success-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-danger{--bs-fg:var(--bs-danger-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-warning{--bs-fg:var(--bs-warning-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-info{--bs-fg:var(--bs-info-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-inverse{--bs-fg:var(--bs-inverse-fg-emphasis);color:var(--bs-fg)}.fg-emphasis-secondary{--bs-fg:var(--bs-secondary-fg-emphasis);color:var(--bs-fg)}.fg-contrast-primary{--bs-fg:var(--bs-primary-contrast);color:var(--bs-fg)}.fg-contrast-accent{--bs-fg:var(--bs-accent-contrast);color:var(--bs-fg)}.fg-contrast-success{--bs-fg:var(--bs-success-contrast);color:var(--bs-fg)}.fg-contrast-danger{--bs-fg:var(--bs-danger-contrast);color:var(--bs-fg)}.fg-contrast-warning{--bs-fg:var(--bs-warning-contrast);color:var(--bs-fg)}.fg-contrast-info{--bs-fg:var(--bs-info-contrast);color:var(--bs-fg)}.fg-contrast-inverse{--bs-fg:var(--bs-inverse-contrast);color:var(--bs-fg)}.fg-contrast-secondary{--bs-fg:var(--bs-secondary-contrast);color:var(--bs-fg)}.fg-10{color:color-mix(in oklch, var(--bs-fg) 10%, transparent)}.fg-20{color:color-mix(in oklch, var(--bs-fg) 20%, transparent)}.fg-30{color:color-mix(in oklch, var(--bs-fg) 30%, transparent)}.fg-40{color:color-mix(in oklch, var(--bs-fg) 40%, transparent)}.fg-50{color:color-mix(in oklch, var(--bs-fg) 50%, transparent)}.fg-60{color:color-mix(in oklch, var(--bs-fg) 60%, transparent)}.fg-70{color:color-mix(in oklch, var(--bs-fg) 70%, transparent)}.fg-80{color:color-mix(in oklch, var(--bs-fg) 80%, transparent)}.fg-90{color:color-mix(in oklch, var(--bs-fg) 90%, transparent)}.fg-100{color:var(--bs-fg)}.link-10,.hover\:link-10:hover{color:color-mix(in oklch, var(--bs-link-color) 10%, transparent)}.link-20,.hover\:link-20:hover{color:color-mix(in oklch, var(--bs-link-color) 20%, transparent)}.link-30,.hover\:link-30:hover{color:color-mix(in oklch, var(--bs-link-color) 30%, transparent)}.link-40,.hover\:link-40:hover{color:color-mix(in oklch, var(--bs-link-color) 40%, transparent)}.link-50,.hover\:link-50:hover{color:color-mix(in oklch, var(--bs-link-color) 50%, transparent)}.link-60,.hover\:link-60:hover{color:color-mix(in oklch, var(--bs-link-color) 60%, transparent)}.link-70,.hover\:link-70:hover{color:color-mix(in oklch, var(--bs-link-color) 70%, transparent)}.link-80,.hover\:link-80:hover{color:color-mix(in oklch, var(--bs-link-color) 80%, transparent)}.link-90,.hover\:link-90:hover{color:color-mix(in oklch, var(--bs-link-color) 90%, transparent)}.link-100,.hover\:link-100:hover{color:var(--bs-link-color)}.underline-offset-1,.hover\:underline-offset-1:hover{text-underline-offset:.125em}.underline-offset-2,.hover\:underline-offset-2:hover{text-underline-offset:.25em}.underline-offset-3,.hover\:underline-offset-3:hover{text-underline-offset:.375em}.underline-primary{-webkit-text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400));text-decoration-color:light-dark(var(--bs-blue-600),var(--bs-blue-400))}.underline-accent{-webkit-text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)));text-decoration-color:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)))}.underline-success{-webkit-text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400));text-decoration-color:light-dark(var(--bs-green-600),var(--bs-green-400))}.underline-danger{-webkit-text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400));text-decoration-color:light-dark(var(--bs-red-600),var(--bs-red-400))}.underline-warning{-webkit-text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));text-decoration-color:light-dark(var(--bs-yellow-700),var(--bs-yellow-400))}.underline-info{-webkit-text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));text-decoration-color:light-dark(var(--bs-cyan-600),var(--bs-cyan-400))}.underline-inverse{-webkit-text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200));text-decoration-color:light-dark(var(--bs-gray-900),var(--bs-gray-200))}.underline-secondary{-webkit-text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400));text-decoration-color:light-dark(var(--bs-gray-600),var(--bs-gray-400))}.underline-10,.hover\:underline-10:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 10%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 10%, transparent)}.underline-20,.hover\:underline-20:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 20%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 20%, transparent)}.underline-30,.hover\:underline-30:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 30%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 30%, transparent)}.underline-40,.hover\:underline-40:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 40%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 40%, transparent)}.underline-50,.hover\:underline-50:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 50%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 50%, transparent)}.underline-60,.hover\:underline-60:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 60%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 60%, transparent)}.underline-70,.hover\:underline-70:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 70%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 70%, transparent)}.underline-80,.hover\:underline-80:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 80%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 80%, transparent)}.underline-90,.hover\:underline-90:hover{-webkit-text-decoration-color:color-mix(in oklch, var(--bs-link-color) 90%, transparent);text-decoration-color:color-mix(in oklch, var(--bs-link-color) 90%, transparent)}.underline-100,.hover\:underline-100:hover{-webkit-text-decoration-color:var(--bs-link-color);text-decoration-color:var(--bs-link-color)}.underline-thickness-1,.hover\:underline-thickness-1:hover{text-decoration-thickness:1px}.underline-thickness-2,.hover\:underline-thickness-2:hover{text-decoration-thickness:2px}.underline-thickness-3,.hover\:underline-thickness-3:hover{text-decoration-thickness:3px}.underline-thickness-4,.hover\:underline-thickness-4:hover{text-decoration-thickness:4px}.underline-thickness-5,.hover\:underline-thickness-5:hover{text-decoration-thickness:5px}.bg-primary{--bs-bg:var(--bs-primary-bg);background-color:var(--bs-bg)}.bg-accent{--bs-bg:var(--bs-accent-bg);background-color:var(--bs-bg)}.bg-success{--bs-bg:var(--bs-success-bg);background-color:var(--bs-bg)}.bg-danger{--bs-bg:var(--bs-danger-bg);background-color:var(--bs-bg)}.bg-warning{--bs-bg:var(--bs-warning-bg);background-color:var(--bs-bg)}.bg-info{--bs-bg:var(--bs-info-bg);background-color:var(--bs-bg)}.bg-inverse{--bs-bg:var(--bs-inverse-bg);background-color:var(--bs-bg)}.bg-secondary{--bs-bg:var(--bs-secondary-bg);background-color:var(--bs-bg)}.bg-body{--bs-bg:var(--bs-bg-body);background-color:var(--bs-bg)}.bg-1{--bs-bg:var(--bs-bg-1);background-color:var(--bs-bg)}.bg-2{--bs-bg:var(--bs-bg-2);background-color:var(--bs-bg)}.bg-3{--bs-bg:var(--bs-bg-3);background-color:var(--bs-bg)}.bg-4{--bs-bg:var(--bs-bg-4);background-color:var(--bs-bg)}.bg-fg{--bs-bg:var(--bs-bg-fg);background-color:var(--bs-bg)}.bg-white{--bs-bg:var(--bs-bg-white);background-color:var(--bs-bg)}.bg-black{--bs-bg:var(--bs-bg-black);background-color:var(--bs-bg)}.bg-transparent{--bs-bg:var(--bs-bg-transparent);background-color:var(--bs-bg)}.bg-subtle-primary{--bs-bg:var(--bs-primary-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-accent{--bs-bg:var(--bs-accent-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-success{--bs-bg:var(--bs-success-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-danger{--bs-bg:var(--bs-danger-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-warning{--bs-bg:var(--bs-warning-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-info{--bs-bg:var(--bs-info-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-inverse{--bs-bg:var(--bs-inverse-bg-subtle);background-color:var(--bs-bg)}.bg-subtle-secondary{--bs-bg:var(--bs-secondary-bg-subtle);background-color:var(--bs-bg)}.bg-muted-primary{--bs-bg:var(--bs-primary-bg-muted);background-color:var(--bs-bg)}.bg-muted-accent{--bs-bg:var(--bs-accent-bg-muted);background-color:var(--bs-bg)}.bg-muted-success{--bs-bg:var(--bs-success-bg-muted);background-color:var(--bs-bg)}.bg-muted-danger{--bs-bg:var(--bs-danger-bg-muted);background-color:var(--bs-bg)}.bg-muted-warning{--bs-bg:var(--bs-warning-bg-muted);background-color:var(--bs-bg)}.bg-muted-info{--bs-bg:var(--bs-info-bg-muted);background-color:var(--bs-bg)}.bg-muted-inverse{--bs-bg:var(--bs-inverse-bg-muted);background-color:var(--bs-bg)}.bg-muted-secondary{--bs-bg:var(--bs-secondary-bg-muted);background-color:var(--bs-bg)}.bg-10{background-color:color-mix(in oklch, var(--bs-bg) 10%, transparent)}.bg-20{background-color:color-mix(in oklch, var(--bs-bg) 20%, transparent)}.bg-30{background-color:color-mix(in oklch, var(--bs-bg) 30%, transparent)}.bg-40{background-color:color-mix(in oklch, var(--bs-bg) 40%, transparent)}.bg-50{background-color:color-mix(in oklch, var(--bs-bg) 50%, transparent)}.bg-60{background-color:color-mix(in oklch, var(--bs-bg) 60%, transparent)}.bg-70{background-color:color-mix(in oklch, var(--bs-bg) 70%, transparent)}.bg-80{background-color:color-mix(in oklch, var(--bs-bg) 80%, transparent)}.bg-90{background-color:color-mix(in oklch, var(--bs-bg) 90%, transparent)}.bg-100{background-color:var(--bs-bg)}.theme-contrast{background-color:var(--bs-theme-bg);color:var(--bs-theme-contrast)}.theme-subtle{background-color:var(--bs-theme-bg-subtle);color:var(--bs-theme-fg)}.theme-muted{background-color:var(--bs-theme-bg-muted);color:var(--bs-theme-fg-emphasis)}.theme-border{border:var(--bs-border-width) solid var(--bs-theme-border)}.bg-gradient{background-image:var(--bs-gradient)}.user-select-all{-webkit-user-select:all;user-select:all}.user-select-auto{-webkit-user-select:auto;user-select:auto}.user-select-text{-webkit-user-select:text;user-select:text}.user-select-none{-webkit-user-select:none;user-select:none}.pe-none{pointer-events:none}.pe-auto{pointer-events:auto}.rounded-0{--bs-rounded-size:0;border-radius:var(--bs-rounded-size)}.rounded-1{--bs-rounded-size:.125rem;border-radius:var(--bs-rounded-size)}.rounded-2{--bs-rounded-size:.1875rem;border-radius:var(--bs-rounded-size)}.rounded-3{--bs-rounded-size:.25rem;border-radius:var(--bs-rounded-size)}.rounded-4{--bs-rounded-size:.375rem;border-radius:var(--bs-rounded-size)}.rounded-5{--bs-rounded-size:.5rem;border-radius:var(--bs-rounded-size)}.rounded-6{--bs-rounded-size:.625rem;border-radius:var(--bs-rounded-size)}.rounded-7{--bs-rounded-size:.75rem;border-radius:var(--bs-rounded-size)}.rounded-8{--bs-rounded-size:1rem;border-radius:var(--bs-rounded-size)}.rounded-9{--bs-rounded-size:1.5rem;border-radius:var(--bs-rounded-size)}.rounded{--bs-rounded-size:.5rem;border-radius:var(--bs-rounded-size)}.rounded-circle{--bs-rounded-size:50%;border-radius:var(--bs-rounded-size)}.rounded-pill{--bs-rounded-size:var(--bs-radius-pill);border-radius:var(--bs-rounded-size)}.rounded-size-0{--bs-rounded-size:0}.rounded-size-1{--bs-rounded-size:.125rem}.rounded-size-2{--bs-rounded-size:.1875rem}.rounded-size-3{--bs-rounded-size:.25rem}.rounded-size-4{--bs-rounded-size:.375rem}.rounded-size-5{--bs-rounded-size:.5rem}.rounded-size-6{--bs-rounded-size:.625rem}.rounded-size-7{--bs-rounded-size:.75rem}.rounded-size-8{--bs-rounded-size:1rem}.rounded-size-9{--bs-rounded-size:1.5rem}.rounded-size{--bs-rounded-size:.5rem}.rounded-size-circle{--bs-rounded-size:50%}.rounded-size-pill{--bs-rounded-size:var(--bs-radius-pill)}.rounded-top-0{border-start-start-radius:0;border-start-end-radius:0}.rounded-top-1{border-start-start-radius:.125rem;border-start-end-radius:.125rem}.rounded-top-2{border-start-start-radius:.1875rem;border-start-end-radius:.1875rem}.rounded-top-3{border-start-start-radius:.25rem;border-start-end-radius:.25rem}.rounded-top-4{border-start-start-radius:.375rem;border-start-end-radius:.375rem}.rounded-top-5{border-start-start-radius:.5rem;border-start-end-radius:.5rem}.rounded-top-6{border-start-start-radius:.625rem;border-start-end-radius:.625rem}.rounded-top-7{border-start-start-radius:.75rem;border-start-end-radius:.75rem}.rounded-top-8{border-start-start-radius:1rem;border-start-end-radius:1rem}.rounded-top-9{border-start-start-radius:1.5rem;border-start-end-radius:1.5rem}.rounded-top{border-start-start-radius:var(--bs-rounded-size,var(--bs-radius-5));border-start-end-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-top-circle{border-start-start-radius:50%;border-start-end-radius:50%}.rounded-top-pill{border-start-start-radius:var(--bs-radius-pill);border-start-end-radius:var(--bs-radius-pill)}.rounded-end-0{border-start-end-radius:0;border-end-end-radius:0}.rounded-end-1{border-start-end-radius:.125rem;border-end-end-radius:.125rem}.rounded-end-2{border-start-end-radius:.1875rem;border-end-end-radius:.1875rem}.rounded-end-3{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-end-4{border-start-end-radius:.375rem;border-end-end-radius:.375rem}.rounded-end-5{border-start-end-radius:.5rem;border-end-end-radius:.5rem}.rounded-end-6{border-start-end-radius:.625rem;border-end-end-radius:.625rem}.rounded-end-7{border-start-end-radius:.75rem;border-end-end-radius:.75rem}.rounded-end-8{border-start-end-radius:1rem;border-end-end-radius:1rem}.rounded-end-9{border-start-end-radius:1.5rem;border-end-end-radius:1.5rem}.rounded-end{border-start-end-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-end-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-end-circle{border-start-end-radius:50%;border-end-end-radius:50%}.rounded-end-pill{border-start-end-radius:var(--bs-radius-pill);border-end-end-radius:var(--bs-radius-pill)}.rounded-bottom-0{border-end-end-radius:0;border-end-start-radius:0}.rounded-bottom-1{border-end-end-radius:.125rem;border-end-start-radius:.125rem}.rounded-bottom-2{border-end-end-radius:.1875rem;border-end-start-radius:.1875rem}.rounded-bottom-3{border-end-end-radius:.25rem;border-end-start-radius:.25rem}.rounded-bottom-4{border-end-end-radius:.375rem;border-end-start-radius:.375rem}.rounded-bottom-5{border-end-end-radius:.5rem;border-end-start-radius:.5rem}.rounded-bottom-6{border-end-end-radius:.625rem;border-end-start-radius:.625rem}.rounded-bottom-7{border-end-end-radius:.75rem;border-end-start-radius:.75rem}.rounded-bottom-8{border-end-end-radius:1rem;border-end-start-radius:1rem}.rounded-bottom-9{border-end-end-radius:1.5rem;border-end-start-radius:1.5rem}.rounded-bottom{border-end-end-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-start-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-bottom-circle{border-end-end-radius:50%;border-end-start-radius:50%}.rounded-bottom-pill{border-end-end-radius:var(--bs-radius-pill);border-end-start-radius:var(--bs-radius-pill)}.rounded-start-0{border-start-start-radius:0;border-end-start-radius:0}.rounded-start-1{border-start-start-radius:.125rem;border-end-start-radius:.125rem}.rounded-start-2{border-start-start-radius:.1875rem;border-end-start-radius:.1875rem}.rounded-start-3{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-start-4{border-start-start-radius:.375rem;border-end-start-radius:.375rem}.rounded-start-5{border-start-start-radius:.5rem;border-end-start-radius:.5rem}.rounded-start-6{border-start-start-radius:.625rem;border-end-start-radius:.625rem}.rounded-start-7{border-start-start-radius:.75rem;border-end-start-radius:.75rem}.rounded-start-8{border-start-start-radius:1rem;border-end-start-radius:1rem}.rounded-start-9{border-start-start-radius:1.5rem;border-end-start-radius:1.5rem}.rounded-start{border-start-start-radius:var(--bs-rounded-size,var(--bs-radius-5));border-end-start-radius:var(--bs-rounded-size,var(--bs-radius-5))}.rounded-start-circle{border-start-start-radius:50%;border-end-start-radius:50%}.rounded-start-pill{border-start-start-radius:var(--bs-radius-pill);border-end-start-radius:var(--bs-radius-pill)}.visible{visibility:visible}.invisible{visibility:hidden}.z-n1{z-index:-1}.z-0{z-index:0}.z-1{z-index:1}.z-2{z-index:2}.z-3{z-index:3}@media (width>=576px){.sm\:float-start{float:inline-start}.sm\:float-end{float:inline-end}.sm\:float-none{float:none}.sm\:object-fit-contain{object-fit:contain}.sm\:object-fit-cover{object-fit:cover}.sm\:object-fit-fill{object-fit:fill}.sm\:object-fit-scale{object-fit:scale-down}.sm\:object-fit-none{object-fit:none}.sm\:d-inline{display:inline}.sm\:d-inline-block{display:inline-block}.sm\:d-block{display:block}.sm\:d-grid{display:grid}.sm\:d-inline-grid{display:inline-grid}.sm\:d-table{display:table}.sm\:d-table-row{display:table-row}.sm\:d-table-cell{display:table-cell}.sm\:d-flex{display:flex}.sm\:d-inline-flex{display:inline-flex}.sm\:d-contents{display:contents}.sm\:d-flow-root{display:flow-root}.sm\:d-none{display:none}.sm\:flex-fill{flex:auto}.sm\:flex-row{flex-direction:row}.sm\:flex-column{flex-direction:column}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-column-reverse{flex-direction:column-reverse}.sm\:flex-grow-0{flex-grow:0}.sm\:flex-grow-1{flex-grow:1}.sm\:flex-shrink-0{flex-shrink:0}.sm\:flex-shrink-1{flex-shrink:1}.sm\:flex-wrap{flex-wrap:wrap}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:flex-wrap-reverse{flex-wrap:wrap-reverse}.sm\:justify-content-start{justify-content:flex-start}.sm\:justify-content-end{justify-content:flex-end}.sm\:justify-content-center{justify-content:center}.sm\:justify-content-between{justify-content:space-between}.sm\:justify-content-around{justify-content:space-around}.sm\:justify-content-evenly{justify-content:space-evenly}.sm\:justify-items-start{justify-items:start}.sm\:justify-items-end{justify-items:end}.sm\:justify-items-center{justify-items:center}.sm\:justify-items-stretch{justify-items:stretch}.sm\:justify-self-start{justify-self:start}.sm\:justify-self-end{justify-self:end}.sm\:justify-self-center{justify-self:center}.sm\:align-items-start{align-items:flex-start}.sm\:align-items-end{align-items:flex-end}.sm\:align-items-center{align-items:center}.sm\:align-items-baseline{align-items:baseline}.sm\:align-items-stretch{align-items:stretch}.sm\:align-content-start{align-content:flex-start}.sm\:align-content-end{align-content:flex-end}.sm\:align-content-center{align-content:center}.sm\:align-content-between{align-content:space-between}.sm\:align-content-around{align-content:space-around}.sm\:align-content-stretch{align-content:stretch}.sm\:align-self-auto{align-self:auto}.sm\:align-self-start{align-self:flex-start}.sm\:align-self-end{align-self:flex-end}.sm\:align-self-center{align-self:center}.sm\:align-self-baseline{align-self:baseline}.sm\:align-self-stretch{align-self:stretch}.sm\:place-items-start{place-items:start}.sm\:place-items-end{place-items:end}.sm\:place-items-center{place-items:center}.sm\:place-items-stretch{place-items:stretch stretch}.sm\:grid-cols-1{grid-template-columns:1fr}.sm\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.sm\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.sm\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.sm\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.sm\:grid-cols-fill{grid-column:1/-1}.sm\:grid-auto-flow-row{grid-auto-flow:row}.sm\:grid-auto-flow-column{grid-auto-flow:column}.sm\:grid-auto-flow-dense{grid-auto-flow:dense}.sm\:order-first{order:-1}.sm\:order-0{order:0}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:order-3{order:3}.sm\:order-4{order:4}.sm\:order-5{order:5}.sm\:order-last{order:6}.sm\:m-0{margin:0}.sm\:m-1{margin:.25rem}.sm\:m-2{margin:.5rem}.sm\:m-3{margin:.75rem}.sm\:m-4{margin:1rem}.sm\:m-5{margin:1.25rem}.sm\:m-6{margin:1.5rem}.sm\:m-7{margin:2rem}.sm\:m-8{margin:2.5rem}.sm\:m-9{margin:3rem}.sm\:m-auto{margin:auto}.sm\:mx-0{margin-inline:0}.sm\:mx-1{margin-inline:.25rem}.sm\:mx-2{margin-inline:.5rem}.sm\:mx-3{margin-inline:.75rem}.sm\:mx-4{margin-inline:1rem}.sm\:mx-5{margin-inline:1.25rem}.sm\:mx-6{margin-inline:1.5rem}.sm\:mx-7{margin-inline:2rem}.sm\:mx-8{margin-inline:2.5rem}.sm\:mx-9{margin-inline:3rem}.sm\:mx-auto{margin-inline:auto}.sm\:my-0{margin-block:0}.sm\:my-1{margin-block:.25rem}.sm\:my-2{margin-block:.5rem}.sm\:my-3{margin-block:.75rem}.sm\:my-4{margin-block:1rem}.sm\:my-5{margin-block:1.25rem}.sm\:my-6{margin-block:1.5rem}.sm\:my-7{margin-block:2rem}.sm\:my-8{margin-block:2.5rem}.sm\:my-9{margin-block:3rem}.sm\:my-auto{margin-block:auto}.sm\:mt-0{margin-block-start:0}.sm\:mt-1{margin-block-start:.25rem}.sm\:mt-2{margin-block-start:.5rem}.sm\:mt-3{margin-block-start:.75rem}.sm\:mt-4{margin-block-start:1rem}.sm\:mt-5{margin-block-start:1.25rem}.sm\:mt-6{margin-block-start:1.5rem}.sm\:mt-7{margin-block-start:2rem}.sm\:mt-8{margin-block-start:2.5rem}.sm\:mt-9{margin-block-start:3rem}.sm\:mt-auto{margin-block-start:auto}.sm\:me-0{margin-inline-end:0}.sm\:me-1{margin-inline-end:.25rem}.sm\:me-2{margin-inline-end:.5rem}.sm\:me-3{margin-inline-end:.75rem}.sm\:me-4{margin-inline-end:1rem}.sm\:me-5{margin-inline-end:1.25rem}.sm\:me-6{margin-inline-end:1.5rem}.sm\:me-7{margin-inline-end:2rem}.sm\:me-8{margin-inline-end:2.5rem}.sm\:me-9{margin-inline-end:3rem}.sm\:me--1{margin-inline-end:-.25rem}.sm\:me--2{margin-inline-end:-.5rem}.sm\:me-auto{margin-inline-end:auto}.sm\:mb-0{margin-block-end:0}.sm\:mb-1{margin-block-end:.25rem}.sm\:mb-2{margin-block-end:.5rem}.sm\:mb-3{margin-block-end:.75rem}.sm\:mb-4{margin-block-end:1rem}.sm\:mb-5{margin-block-end:1.25rem}.sm\:mb-6{margin-block-end:1.5rem}.sm\:mb-7{margin-block-end:2rem}.sm\:mb-8{margin-block-end:2.5rem}.sm\:mb-9{margin-block-end:3rem}.sm\:mb-auto{margin-block-end:auto}.sm\:ms-0{margin-inline-start:0}.sm\:ms-1{margin-inline-start:.25rem}.sm\:ms-2{margin-inline-start:.5rem}.sm\:ms-3{margin-inline-start:.75rem}.sm\:ms-4{margin-inline-start:1rem}.sm\:ms-5{margin-inline-start:1.25rem}.sm\:ms-6{margin-inline-start:1.5rem}.sm\:ms-7{margin-inline-start:2rem}.sm\:ms-8{margin-inline-start:2.5rem}.sm\:ms-9{margin-inline-start:3rem}.sm\:ms--1{margin-inline-start:-.25rem}.sm\:ms--2{margin-inline-start:-.5rem}.sm\:ms-auto{margin-inline-start:auto}.sm\:p-0{padding:0}.sm\:p-1{padding:.25rem}.sm\:p-2{padding:.5rem}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-5{padding:1.25rem}.sm\:p-6{padding:1.5rem}.sm\:p-7{padding:2rem}.sm\:p-8{padding:2.5rem}.sm\:p-9{padding:3rem}.sm\:px-0{padding-inline:0}.sm\:px-1{padding-inline:.25rem}.sm\:px-2{padding-inline:.5rem}.sm\:px-3{padding-inline:.75rem}.sm\:px-4{padding-inline:1rem}.sm\:px-5{padding-inline:1.25rem}.sm\:px-6{padding-inline:1.5rem}.sm\:px-7{padding-inline:2rem}.sm\:px-8{padding-inline:2.5rem}.sm\:px-9{padding-inline:3rem}.sm\:py-0{padding-block:0}.sm\:py-1{padding-block:.25rem}.sm\:py-2{padding-block:.5rem}.sm\:py-3{padding-block:.75rem}.sm\:py-4{padding-block:1rem}.sm\:py-5{padding-block:1.25rem}.sm\:py-6{padding-block:1.5rem}.sm\:py-7{padding-block:2rem}.sm\:py-8{padding-block:2.5rem}.sm\:py-9{padding-block:3rem}.sm\:pt-0{padding-block-start:0}.sm\:pt-1{padding-block-start:.25rem}.sm\:pt-2{padding-block-start:.5rem}.sm\:pt-3{padding-block-start:.75rem}.sm\:pt-4{padding-block-start:1rem}.sm\:pt-5{padding-block-start:1.25rem}.sm\:pt-6{padding-block-start:1.5rem}.sm\:pt-7{padding-block-start:2rem}.sm\:pt-8{padding-block-start:2.5rem}.sm\:pt-9{padding-block-start:3rem}.sm\:pe-0{padding-inline-end:0}.sm\:pe-1{padding-inline-end:.25rem}.sm\:pe-2{padding-inline-end:.5rem}.sm\:pe-3{padding-inline-end:.75rem}.sm\:pe-4{padding-inline-end:1rem}.sm\:pe-5{padding-inline-end:1.25rem}.sm\:pe-6{padding-inline-end:1.5rem}.sm\:pe-7{padding-inline-end:2rem}.sm\:pe-8{padding-inline-end:2.5rem}.sm\:pe-9{padding-inline-end:3rem}.sm\:pb-0{padding-block-end:0}.sm\:pb-1{padding-block-end:.25rem}.sm\:pb-2{padding-block-end:.5rem}.sm\:pb-3{padding-block-end:.75rem}.sm\:pb-4{padding-block-end:1rem}.sm\:pb-5{padding-block-end:1.25rem}.sm\:pb-6{padding-block-end:1.5rem}.sm\:pb-7{padding-block-end:2rem}.sm\:pb-8{padding-block-end:2.5rem}.sm\:pb-9{padding-block-end:3rem}.sm\:ps-0{padding-inline-start:0}.sm\:ps-1{padding-inline-start:.25rem}.sm\:ps-2{padding-inline-start:.5rem}.sm\:ps-3{padding-inline-start:.75rem}.sm\:ps-4{padding-inline-start:1rem}.sm\:ps-5{padding-inline-start:1.25rem}.sm\:ps-6{padding-inline-start:1.5rem}.sm\:ps-7{padding-inline-start:2rem}.sm\:ps-8{padding-inline-start:2.5rem}.sm\:ps-9{padding-inline-start:3rem}.sm\:gap-0{gap:0}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-5{gap:1.25rem}.sm\:gap-6{gap:1.5rem}.sm\:gap-7{gap:2rem}.sm\:gap-8{gap:2.5rem}.sm\:gap-9{gap:3rem}.sm\:row-gap-0{row-gap:0}.sm\:row-gap-1{row-gap:.25rem}.sm\:row-gap-2{row-gap:.5rem}.sm\:row-gap-3{row-gap:.75rem}.sm\:row-gap-4{row-gap:1rem}.sm\:row-gap-5{row-gap:1.25rem}.sm\:row-gap-6{row-gap:1.5rem}.sm\:row-gap-7{row-gap:2rem}.sm\:row-gap-8{row-gap:2.5rem}.sm\:row-gap-9{row-gap:3rem}.sm\:column-gap-0{column-gap:0}.sm\:column-gap-1{column-gap:.25rem}.sm\:column-gap-2{column-gap:.5rem}.sm\:column-gap-3{column-gap:.75rem}.sm\:column-gap-4{column-gap:1rem}.sm\:column-gap-5{column-gap:1.25rem}.sm\:column-gap-6{column-gap:1.5rem}.sm\:column-gap-7{column-gap:2rem}.sm\:column-gap-8{column-gap:2.5rem}.sm\:column-gap-9{column-gap:3rem}:where(.sm\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.sm\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.sm\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.sm\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.sm\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.sm\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.sm\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.sm\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.sm\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.sm\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.sm\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.sm\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.sm\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.sm\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.sm\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.sm\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.sm\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.sm\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.sm\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.sm\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.sm\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.sm\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.sm\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.sm\:divide-y-0>:not(:first-child)){border-block-start:0}.sm\:text-start{text-align:start}.sm\:text-end{text-align:end}.sm\:text-center{text-align:center}}@media (width>=768px){.md\:float-start{float:inline-start}.md\:float-end{float:inline-end}.md\:float-none{float:none}.md\:object-fit-contain{object-fit:contain}.md\:object-fit-cover{object-fit:cover}.md\:object-fit-fill{object-fit:fill}.md\:object-fit-scale{object-fit:scale-down}.md\:object-fit-none{object-fit:none}.md\:d-inline{display:inline}.md\:d-inline-block{display:inline-block}.md\:d-block{display:block}.md\:d-grid{display:grid}.md\:d-inline-grid{display:inline-grid}.md\:d-table{display:table}.md\:d-table-row{display:table-row}.md\:d-table-cell{display:table-cell}.md\:d-flex{display:flex}.md\:d-inline-flex{display:inline-flex}.md\:d-contents{display:contents}.md\:d-flow-root{display:flow-root}.md\:d-none{display:none}.md\:flex-fill{flex:auto}.md\:flex-row{flex-direction:row}.md\:flex-column{flex-direction:column}.md\:flex-row-reverse{flex-direction:row-reverse}.md\:flex-column-reverse{flex-direction:column-reverse}.md\:flex-grow-0{flex-grow:0}.md\:flex-grow-1{flex-grow:1}.md\:flex-shrink-0{flex-shrink:0}.md\:flex-shrink-1{flex-shrink:1}.md\:flex-wrap{flex-wrap:wrap}.md\:flex-nowrap{flex-wrap:nowrap}.md\:flex-wrap-reverse{flex-wrap:wrap-reverse}.md\:justify-content-start{justify-content:flex-start}.md\:justify-content-end{justify-content:flex-end}.md\:justify-content-center{justify-content:center}.md\:justify-content-between{justify-content:space-between}.md\:justify-content-around{justify-content:space-around}.md\:justify-content-evenly{justify-content:space-evenly}.md\:justify-items-start{justify-items:start}.md\:justify-items-end{justify-items:end}.md\:justify-items-center{justify-items:center}.md\:justify-items-stretch{justify-items:stretch}.md\:justify-self-start{justify-self:start}.md\:justify-self-end{justify-self:end}.md\:justify-self-center{justify-self:center}.md\:align-items-start{align-items:flex-start}.md\:align-items-end{align-items:flex-end}.md\:align-items-center{align-items:center}.md\:align-items-baseline{align-items:baseline}.md\:align-items-stretch{align-items:stretch}.md\:align-content-start{align-content:flex-start}.md\:align-content-end{align-content:flex-end}.md\:align-content-center{align-content:center}.md\:align-content-between{align-content:space-between}.md\:align-content-around{align-content:space-around}.md\:align-content-stretch{align-content:stretch}.md\:align-self-auto{align-self:auto}.md\:align-self-start{align-self:flex-start}.md\:align-self-end{align-self:flex-end}.md\:align-self-center{align-self:center}.md\:align-self-baseline{align-self:baseline}.md\:align-self-stretch{align-self:stretch}.md\:place-items-start{place-items:start}.md\:place-items-end{place-items:end}.md\:place-items-center{place-items:center}.md\:place-items-stretch{place-items:stretch stretch}.md\:grid-cols-1{grid-template-columns:1fr}.md\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.md\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.md\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.md\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.md\:grid-cols-fill{grid-column:1/-1}.md\:grid-auto-flow-row{grid-auto-flow:row}.md\:grid-auto-flow-column{grid-auto-flow:column}.md\:grid-auto-flow-dense{grid-auto-flow:dense}.md\:order-first{order:-1}.md\:order-0{order:0}.md\:order-1{order:1}.md\:order-2{order:2}.md\:order-3{order:3}.md\:order-4{order:4}.md\:order-5{order:5}.md\:order-last{order:6}.md\:m-0{margin:0}.md\:m-1{margin:.25rem}.md\:m-2{margin:.5rem}.md\:m-3{margin:.75rem}.md\:m-4{margin:1rem}.md\:m-5{margin:1.25rem}.md\:m-6{margin:1.5rem}.md\:m-7{margin:2rem}.md\:m-8{margin:2.5rem}.md\:m-9{margin:3rem}.md\:m-auto{margin:auto}.md\:mx-0{margin-inline:0}.md\:mx-1{margin-inline:.25rem}.md\:mx-2{margin-inline:.5rem}.md\:mx-3{margin-inline:.75rem}.md\:mx-4{margin-inline:1rem}.md\:mx-5{margin-inline:1.25rem}.md\:mx-6{margin-inline:1.5rem}.md\:mx-7{margin-inline:2rem}.md\:mx-8{margin-inline:2.5rem}.md\:mx-9{margin-inline:3rem}.md\:mx-auto{margin-inline:auto}.md\:my-0{margin-block:0}.md\:my-1{margin-block:.25rem}.md\:my-2{margin-block:.5rem}.md\:my-3{margin-block:.75rem}.md\:my-4{margin-block:1rem}.md\:my-5{margin-block:1.25rem}.md\:my-6{margin-block:1.5rem}.md\:my-7{margin-block:2rem}.md\:my-8{margin-block:2.5rem}.md\:my-9{margin-block:3rem}.md\:my-auto{margin-block:auto}.md\:mt-0{margin-block-start:0}.md\:mt-1{margin-block-start:.25rem}.md\:mt-2{margin-block-start:.5rem}.md\:mt-3{margin-block-start:.75rem}.md\:mt-4{margin-block-start:1rem}.md\:mt-5{margin-block-start:1.25rem}.md\:mt-6{margin-block-start:1.5rem}.md\:mt-7{margin-block-start:2rem}.md\:mt-8{margin-block-start:2.5rem}.md\:mt-9{margin-block-start:3rem}.md\:mt-auto{margin-block-start:auto}.md\:me-0{margin-inline-end:0}.md\:me-1{margin-inline-end:.25rem}.md\:me-2{margin-inline-end:.5rem}.md\:me-3{margin-inline-end:.75rem}.md\:me-4{margin-inline-end:1rem}.md\:me-5{margin-inline-end:1.25rem}.md\:me-6{margin-inline-end:1.5rem}.md\:me-7{margin-inline-end:2rem}.md\:me-8{margin-inline-end:2.5rem}.md\:me-9{margin-inline-end:3rem}.md\:me--1{margin-inline-end:-.25rem}.md\:me--2{margin-inline-end:-.5rem}.md\:me-auto{margin-inline-end:auto}.md\:mb-0{margin-block-end:0}.md\:mb-1{margin-block-end:.25rem}.md\:mb-2{margin-block-end:.5rem}.md\:mb-3{margin-block-end:.75rem}.md\:mb-4{margin-block-end:1rem}.md\:mb-5{margin-block-end:1.25rem}.md\:mb-6{margin-block-end:1.5rem}.md\:mb-7{margin-block-end:2rem}.md\:mb-8{margin-block-end:2.5rem}.md\:mb-9{margin-block-end:3rem}.md\:mb-auto{margin-block-end:auto}.md\:ms-0{margin-inline-start:0}.md\:ms-1{margin-inline-start:.25rem}.md\:ms-2{margin-inline-start:.5rem}.md\:ms-3{margin-inline-start:.75rem}.md\:ms-4{margin-inline-start:1rem}.md\:ms-5{margin-inline-start:1.25rem}.md\:ms-6{margin-inline-start:1.5rem}.md\:ms-7{margin-inline-start:2rem}.md\:ms-8{margin-inline-start:2.5rem}.md\:ms-9{margin-inline-start:3rem}.md\:ms--1{margin-inline-start:-.25rem}.md\:ms--2{margin-inline-start:-.5rem}.md\:ms-auto{margin-inline-start:auto}.md\:p-0{padding:0}.md\:p-1{padding:.25rem}.md\:p-2{padding:.5rem}.md\:p-3{padding:.75rem}.md\:p-4{padding:1rem}.md\:p-5{padding:1.25rem}.md\:p-6{padding:1.5rem}.md\:p-7{padding:2rem}.md\:p-8{padding:2.5rem}.md\:p-9{padding:3rem}.md\:px-0{padding-inline:0}.md\:px-1{padding-inline:.25rem}.md\:px-2{padding-inline:.5rem}.md\:px-3{padding-inline:.75rem}.md\:px-4{padding-inline:1rem}.md\:px-5{padding-inline:1.25rem}.md\:px-6{padding-inline:1.5rem}.md\:px-7{padding-inline:2rem}.md\:px-8{padding-inline:2.5rem}.md\:px-9{padding-inline:3rem}.md\:py-0{padding-block:0}.md\:py-1{padding-block:.25rem}.md\:py-2{padding-block:.5rem}.md\:py-3{padding-block:.75rem}.md\:py-4{padding-block:1rem}.md\:py-5{padding-block:1.25rem}.md\:py-6{padding-block:1.5rem}.md\:py-7{padding-block:2rem}.md\:py-8{padding-block:2.5rem}.md\:py-9{padding-block:3rem}.md\:pt-0{padding-block-start:0}.md\:pt-1{padding-block-start:.25rem}.md\:pt-2{padding-block-start:.5rem}.md\:pt-3{padding-block-start:.75rem}.md\:pt-4{padding-block-start:1rem}.md\:pt-5{padding-block-start:1.25rem}.md\:pt-6{padding-block-start:1.5rem}.md\:pt-7{padding-block-start:2rem}.md\:pt-8{padding-block-start:2.5rem}.md\:pt-9{padding-block-start:3rem}.md\:pe-0{padding-inline-end:0}.md\:pe-1{padding-inline-end:.25rem}.md\:pe-2{padding-inline-end:.5rem}.md\:pe-3{padding-inline-end:.75rem}.md\:pe-4{padding-inline-end:1rem}.md\:pe-5{padding-inline-end:1.25rem}.md\:pe-6{padding-inline-end:1.5rem}.md\:pe-7{padding-inline-end:2rem}.md\:pe-8{padding-inline-end:2.5rem}.md\:pe-9{padding-inline-end:3rem}.md\:pb-0{padding-block-end:0}.md\:pb-1{padding-block-end:.25rem}.md\:pb-2{padding-block-end:.5rem}.md\:pb-3{padding-block-end:.75rem}.md\:pb-4{padding-block-end:1rem}.md\:pb-5{padding-block-end:1.25rem}.md\:pb-6{padding-block-end:1.5rem}.md\:pb-7{padding-block-end:2rem}.md\:pb-8{padding-block-end:2.5rem}.md\:pb-9{padding-block-end:3rem}.md\:ps-0{padding-inline-start:0}.md\:ps-1{padding-inline-start:.25rem}.md\:ps-2{padding-inline-start:.5rem}.md\:ps-3{padding-inline-start:.75rem}.md\:ps-4{padding-inline-start:1rem}.md\:ps-5{padding-inline-start:1.25rem}.md\:ps-6{padding-inline-start:1.5rem}.md\:ps-7{padding-inline-start:2rem}.md\:ps-8{padding-inline-start:2.5rem}.md\:ps-9{padding-inline-start:3rem}.md\:gap-0{gap:0}.md\:gap-1{gap:.25rem}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-5{gap:1.25rem}.md\:gap-6{gap:1.5rem}.md\:gap-7{gap:2rem}.md\:gap-8{gap:2.5rem}.md\:gap-9{gap:3rem}.md\:row-gap-0{row-gap:0}.md\:row-gap-1{row-gap:.25rem}.md\:row-gap-2{row-gap:.5rem}.md\:row-gap-3{row-gap:.75rem}.md\:row-gap-4{row-gap:1rem}.md\:row-gap-5{row-gap:1.25rem}.md\:row-gap-6{row-gap:1.5rem}.md\:row-gap-7{row-gap:2rem}.md\:row-gap-8{row-gap:2.5rem}.md\:row-gap-9{row-gap:3rem}.md\:column-gap-0{column-gap:0}.md\:column-gap-1{column-gap:.25rem}.md\:column-gap-2{column-gap:.5rem}.md\:column-gap-3{column-gap:.75rem}.md\:column-gap-4{column-gap:1rem}.md\:column-gap-5{column-gap:1.25rem}.md\:column-gap-6{column-gap:1.5rem}.md\:column-gap-7{column-gap:2rem}.md\:column-gap-8{column-gap:2.5rem}.md\:column-gap-9{column-gap:3rem}:where(.md\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.md\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.md\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.md\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.md\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.md\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.md\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.md\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.md\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.md\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.md\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.md\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.md\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.md\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.md\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.md\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.md\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.md\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.md\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.md\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.md\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.md\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.md\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.md\:divide-y-0>:not(:first-child)){border-block-start:0}.md\:text-start{text-align:start}.md\:text-end{text-align:end}.md\:text-center{text-align:center}}@media (width>=1024px){.lg\:float-start{float:inline-start}.lg\:float-end{float:inline-end}.lg\:float-none{float:none}.lg\:object-fit-contain{object-fit:contain}.lg\:object-fit-cover{object-fit:cover}.lg\:object-fit-fill{object-fit:fill}.lg\:object-fit-scale{object-fit:scale-down}.lg\:object-fit-none{object-fit:none}.lg\:d-inline{display:inline}.lg\:d-inline-block{display:inline-block}.lg\:d-block{display:block}.lg\:d-grid{display:grid}.lg\:d-inline-grid{display:inline-grid}.lg\:d-table{display:table}.lg\:d-table-row{display:table-row}.lg\:d-table-cell{display:table-cell}.lg\:d-flex{display:flex}.lg\:d-inline-flex{display:inline-flex}.lg\:d-contents{display:contents}.lg\:d-flow-root{display:flow-root}.lg\:d-none{display:none}.lg\:flex-fill{flex:auto}.lg\:flex-row{flex-direction:row}.lg\:flex-column{flex-direction:column}.lg\:flex-row-reverse{flex-direction:row-reverse}.lg\:flex-column-reverse{flex-direction:column-reverse}.lg\:flex-grow-0{flex-grow:0}.lg\:flex-grow-1{flex-grow:1}.lg\:flex-shrink-0{flex-shrink:0}.lg\:flex-shrink-1{flex-shrink:1}.lg\:flex-wrap{flex-wrap:wrap}.lg\:flex-nowrap{flex-wrap:nowrap}.lg\:flex-wrap-reverse{flex-wrap:wrap-reverse}.lg\:justify-content-start{justify-content:flex-start}.lg\:justify-content-end{justify-content:flex-end}.lg\:justify-content-center{justify-content:center}.lg\:justify-content-between{justify-content:space-between}.lg\:justify-content-around{justify-content:space-around}.lg\:justify-content-evenly{justify-content:space-evenly}.lg\:justify-items-start{justify-items:start}.lg\:justify-items-end{justify-items:end}.lg\:justify-items-center{justify-items:center}.lg\:justify-items-stretch{justify-items:stretch}.lg\:justify-self-start{justify-self:start}.lg\:justify-self-end{justify-self:end}.lg\:justify-self-center{justify-self:center}.lg\:align-items-start{align-items:flex-start}.lg\:align-items-end{align-items:flex-end}.lg\:align-items-center{align-items:center}.lg\:align-items-baseline{align-items:baseline}.lg\:align-items-stretch{align-items:stretch}.lg\:align-content-start{align-content:flex-start}.lg\:align-content-end{align-content:flex-end}.lg\:align-content-center{align-content:center}.lg\:align-content-between{align-content:space-between}.lg\:align-content-around{align-content:space-around}.lg\:align-content-stretch{align-content:stretch}.lg\:align-self-auto{align-self:auto}.lg\:align-self-start{align-self:flex-start}.lg\:align-self-end{align-self:flex-end}.lg\:align-self-center{align-self:center}.lg\:align-self-baseline{align-self:baseline}.lg\:align-self-stretch{align-self:stretch}.lg\:place-items-start{place-items:start}.lg\:place-items-end{place-items:end}.lg\:place-items-center{place-items:center}.lg\:place-items-stretch{place-items:stretch stretch}.lg\:grid-cols-1{grid-template-columns:1fr}.lg\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.lg\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.lg\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.lg\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.lg\:grid-cols-fill{grid-column:1/-1}.lg\:grid-auto-flow-row{grid-auto-flow:row}.lg\:grid-auto-flow-column{grid-auto-flow:column}.lg\:grid-auto-flow-dense{grid-auto-flow:dense}.lg\:order-first{order:-1}.lg\:order-0{order:0}.lg\:order-1{order:1}.lg\:order-2{order:2}.lg\:order-3{order:3}.lg\:order-4{order:4}.lg\:order-5{order:5}.lg\:order-last{order:6}.lg\:m-0{margin:0}.lg\:m-1{margin:.25rem}.lg\:m-2{margin:.5rem}.lg\:m-3{margin:.75rem}.lg\:m-4{margin:1rem}.lg\:m-5{margin:1.25rem}.lg\:m-6{margin:1.5rem}.lg\:m-7{margin:2rem}.lg\:m-8{margin:2.5rem}.lg\:m-9{margin:3rem}.lg\:m-auto{margin:auto}.lg\:mx-0{margin-inline:0}.lg\:mx-1{margin-inline:.25rem}.lg\:mx-2{margin-inline:.5rem}.lg\:mx-3{margin-inline:.75rem}.lg\:mx-4{margin-inline:1rem}.lg\:mx-5{margin-inline:1.25rem}.lg\:mx-6{margin-inline:1.5rem}.lg\:mx-7{margin-inline:2rem}.lg\:mx-8{margin-inline:2.5rem}.lg\:mx-9{margin-inline:3rem}.lg\:mx-auto{margin-inline:auto}.lg\:my-0{margin-block:0}.lg\:my-1{margin-block:.25rem}.lg\:my-2{margin-block:.5rem}.lg\:my-3{margin-block:.75rem}.lg\:my-4{margin-block:1rem}.lg\:my-5{margin-block:1.25rem}.lg\:my-6{margin-block:1.5rem}.lg\:my-7{margin-block:2rem}.lg\:my-8{margin-block:2.5rem}.lg\:my-9{margin-block:3rem}.lg\:my-auto{margin-block:auto}.lg\:mt-0{margin-block-start:0}.lg\:mt-1{margin-block-start:.25rem}.lg\:mt-2{margin-block-start:.5rem}.lg\:mt-3{margin-block-start:.75rem}.lg\:mt-4{margin-block-start:1rem}.lg\:mt-5{margin-block-start:1.25rem}.lg\:mt-6{margin-block-start:1.5rem}.lg\:mt-7{margin-block-start:2rem}.lg\:mt-8{margin-block-start:2.5rem}.lg\:mt-9{margin-block-start:3rem}.lg\:mt-auto{margin-block-start:auto}.lg\:me-0{margin-inline-end:0}.lg\:me-1{margin-inline-end:.25rem}.lg\:me-2{margin-inline-end:.5rem}.lg\:me-3{margin-inline-end:.75rem}.lg\:me-4{margin-inline-end:1rem}.lg\:me-5{margin-inline-end:1.25rem}.lg\:me-6{margin-inline-end:1.5rem}.lg\:me-7{margin-inline-end:2rem}.lg\:me-8{margin-inline-end:2.5rem}.lg\:me-9{margin-inline-end:3rem}.lg\:me--1{margin-inline-end:-.25rem}.lg\:me--2{margin-inline-end:-.5rem}.lg\:me-auto{margin-inline-end:auto}.lg\:mb-0{margin-block-end:0}.lg\:mb-1{margin-block-end:.25rem}.lg\:mb-2{margin-block-end:.5rem}.lg\:mb-3{margin-block-end:.75rem}.lg\:mb-4{margin-block-end:1rem}.lg\:mb-5{margin-block-end:1.25rem}.lg\:mb-6{margin-block-end:1.5rem}.lg\:mb-7{margin-block-end:2rem}.lg\:mb-8{margin-block-end:2.5rem}.lg\:mb-9{margin-block-end:3rem}.lg\:mb-auto{margin-block-end:auto}.lg\:ms-0{margin-inline-start:0}.lg\:ms-1{margin-inline-start:.25rem}.lg\:ms-2{margin-inline-start:.5rem}.lg\:ms-3{margin-inline-start:.75rem}.lg\:ms-4{margin-inline-start:1rem}.lg\:ms-5{margin-inline-start:1.25rem}.lg\:ms-6{margin-inline-start:1.5rem}.lg\:ms-7{margin-inline-start:2rem}.lg\:ms-8{margin-inline-start:2.5rem}.lg\:ms-9{margin-inline-start:3rem}.lg\:ms--1{margin-inline-start:-.25rem}.lg\:ms--2{margin-inline-start:-.5rem}.lg\:ms-auto{margin-inline-start:auto}.lg\:p-0{padding:0}.lg\:p-1{padding:.25rem}.lg\:p-2{padding:.5rem}.lg\:p-3{padding:.75rem}.lg\:p-4{padding:1rem}.lg\:p-5{padding:1.25rem}.lg\:p-6{padding:1.5rem}.lg\:p-7{padding:2rem}.lg\:p-8{padding:2.5rem}.lg\:p-9{padding:3rem}.lg\:px-0{padding-inline:0}.lg\:px-1{padding-inline:.25rem}.lg\:px-2{padding-inline:.5rem}.lg\:px-3{padding-inline:.75rem}.lg\:px-4{padding-inline:1rem}.lg\:px-5{padding-inline:1.25rem}.lg\:px-6{padding-inline:1.5rem}.lg\:px-7{padding-inline:2rem}.lg\:px-8{padding-inline:2.5rem}.lg\:px-9{padding-inline:3rem}.lg\:py-0{padding-block:0}.lg\:py-1{padding-block:.25rem}.lg\:py-2{padding-block:.5rem}.lg\:py-3{padding-block:.75rem}.lg\:py-4{padding-block:1rem}.lg\:py-5{padding-block:1.25rem}.lg\:py-6{padding-block:1.5rem}.lg\:py-7{padding-block:2rem}.lg\:py-8{padding-block:2.5rem}.lg\:py-9{padding-block:3rem}.lg\:pt-0{padding-block-start:0}.lg\:pt-1{padding-block-start:.25rem}.lg\:pt-2{padding-block-start:.5rem}.lg\:pt-3{padding-block-start:.75rem}.lg\:pt-4{padding-block-start:1rem}.lg\:pt-5{padding-block-start:1.25rem}.lg\:pt-6{padding-block-start:1.5rem}.lg\:pt-7{padding-block-start:2rem}.lg\:pt-8{padding-block-start:2.5rem}.lg\:pt-9{padding-block-start:3rem}.lg\:pe-0{padding-inline-end:0}.lg\:pe-1{padding-inline-end:.25rem}.lg\:pe-2{padding-inline-end:.5rem}.lg\:pe-3{padding-inline-end:.75rem}.lg\:pe-4{padding-inline-end:1rem}.lg\:pe-5{padding-inline-end:1.25rem}.lg\:pe-6{padding-inline-end:1.5rem}.lg\:pe-7{padding-inline-end:2rem}.lg\:pe-8{padding-inline-end:2.5rem}.lg\:pe-9{padding-inline-end:3rem}.lg\:pb-0{padding-block-end:0}.lg\:pb-1{padding-block-end:.25rem}.lg\:pb-2{padding-block-end:.5rem}.lg\:pb-3{padding-block-end:.75rem}.lg\:pb-4{padding-block-end:1rem}.lg\:pb-5{padding-block-end:1.25rem}.lg\:pb-6{padding-block-end:1.5rem}.lg\:pb-7{padding-block-end:2rem}.lg\:pb-8{padding-block-end:2.5rem}.lg\:pb-9{padding-block-end:3rem}.lg\:ps-0{padding-inline-start:0}.lg\:ps-1{padding-inline-start:.25rem}.lg\:ps-2{padding-inline-start:.5rem}.lg\:ps-3{padding-inline-start:.75rem}.lg\:ps-4{padding-inline-start:1rem}.lg\:ps-5{padding-inline-start:1.25rem}.lg\:ps-6{padding-inline-start:1.5rem}.lg\:ps-7{padding-inline-start:2rem}.lg\:ps-8{padding-inline-start:2.5rem}.lg\:ps-9{padding-inline-start:3rem}.lg\:gap-0{gap:0}.lg\:gap-1{gap:.25rem}.lg\:gap-2{gap:.5rem}.lg\:gap-3{gap:.75rem}.lg\:gap-4{gap:1rem}.lg\:gap-5{gap:1.25rem}.lg\:gap-6{gap:1.5rem}.lg\:gap-7{gap:2rem}.lg\:gap-8{gap:2.5rem}.lg\:gap-9{gap:3rem}.lg\:row-gap-0{row-gap:0}.lg\:row-gap-1{row-gap:.25rem}.lg\:row-gap-2{row-gap:.5rem}.lg\:row-gap-3{row-gap:.75rem}.lg\:row-gap-4{row-gap:1rem}.lg\:row-gap-5{row-gap:1.25rem}.lg\:row-gap-6{row-gap:1.5rem}.lg\:row-gap-7{row-gap:2rem}.lg\:row-gap-8{row-gap:2.5rem}.lg\:row-gap-9{row-gap:3rem}.lg\:column-gap-0{column-gap:0}.lg\:column-gap-1{column-gap:.25rem}.lg\:column-gap-2{column-gap:.5rem}.lg\:column-gap-3{column-gap:.75rem}.lg\:column-gap-4{column-gap:1rem}.lg\:column-gap-5{column-gap:1.25rem}.lg\:column-gap-6{column-gap:1.5rem}.lg\:column-gap-7{column-gap:2rem}.lg\:column-gap-8{column-gap:2.5rem}.lg\:column-gap-9{column-gap:3rem}:where(.lg\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.lg\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.lg\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.lg\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.lg\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.lg\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.lg\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.lg\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.lg\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.lg\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.lg\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.lg\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.lg\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.lg\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.lg\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.lg\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.lg\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.lg\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.lg\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.lg\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.lg\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.lg\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.lg\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.lg\:divide-y-0>:not(:first-child)){border-block-start:0}.lg\:text-start{text-align:start}.lg\:text-end{text-align:end}.lg\:text-center{text-align:center}}@media (width>=1280px){.xl\:float-start{float:inline-start}.xl\:float-end{float:inline-end}.xl\:float-none{float:none}.xl\:object-fit-contain{object-fit:contain}.xl\:object-fit-cover{object-fit:cover}.xl\:object-fit-fill{object-fit:fill}.xl\:object-fit-scale{object-fit:scale-down}.xl\:object-fit-none{object-fit:none}.xl\:d-inline{display:inline}.xl\:d-inline-block{display:inline-block}.xl\:d-block{display:block}.xl\:d-grid{display:grid}.xl\:d-inline-grid{display:inline-grid}.xl\:d-table{display:table}.xl\:d-table-row{display:table-row}.xl\:d-table-cell{display:table-cell}.xl\:d-flex{display:flex}.xl\:d-inline-flex{display:inline-flex}.xl\:d-contents{display:contents}.xl\:d-flow-root{display:flow-root}.xl\:d-none{display:none}.xl\:flex-fill{flex:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-column{flex-direction:column}.xl\:flex-row-reverse{flex-direction:row-reverse}.xl\:flex-column-reverse{flex-direction:column-reverse}.xl\:flex-grow-0{flex-grow:0}.xl\:flex-grow-1{flex-grow:1}.xl\:flex-shrink-0{flex-shrink:0}.xl\:flex-shrink-1{flex-shrink:1}.xl\:flex-wrap{flex-wrap:wrap}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:flex-wrap-reverse{flex-wrap:wrap-reverse}.xl\:justify-content-start{justify-content:flex-start}.xl\:justify-content-end{justify-content:flex-end}.xl\:justify-content-center{justify-content:center}.xl\:justify-content-between{justify-content:space-between}.xl\:justify-content-around{justify-content:space-around}.xl\:justify-content-evenly{justify-content:space-evenly}.xl\:justify-items-start{justify-items:start}.xl\:justify-items-end{justify-items:end}.xl\:justify-items-center{justify-items:center}.xl\:justify-items-stretch{justify-items:stretch}.xl\:justify-self-start{justify-self:start}.xl\:justify-self-end{justify-self:end}.xl\:justify-self-center{justify-self:center}.xl\:align-items-start{align-items:flex-start}.xl\:align-items-end{align-items:flex-end}.xl\:align-items-center{align-items:center}.xl\:align-items-baseline{align-items:baseline}.xl\:align-items-stretch{align-items:stretch}.xl\:align-content-start{align-content:flex-start}.xl\:align-content-end{align-content:flex-end}.xl\:align-content-center{align-content:center}.xl\:align-content-between{align-content:space-between}.xl\:align-content-around{align-content:space-around}.xl\:align-content-stretch{align-content:stretch}.xl\:align-self-auto{align-self:auto}.xl\:align-self-start{align-self:flex-start}.xl\:align-self-end{align-self:flex-end}.xl\:align-self-center{align-self:center}.xl\:align-self-baseline{align-self:baseline}.xl\:align-self-stretch{align-self:stretch}.xl\:place-items-start{place-items:start}.xl\:place-items-end{place-items:end}.xl\:place-items-center{place-items:center}.xl\:place-items-stretch{place-items:stretch stretch}.xl\:grid-cols-1{grid-template-columns:1fr}.xl\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.xl\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.xl\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.xl\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.xl\:grid-cols-fill{grid-column:1/-1}.xl\:grid-auto-flow-row{grid-auto-flow:row}.xl\:grid-auto-flow-column{grid-auto-flow:column}.xl\:grid-auto-flow-dense{grid-auto-flow:dense}.xl\:order-first{order:-1}.xl\:order-0{order:0}.xl\:order-1{order:1}.xl\:order-2{order:2}.xl\:order-3{order:3}.xl\:order-4{order:4}.xl\:order-5{order:5}.xl\:order-last{order:6}.xl\:m-0{margin:0}.xl\:m-1{margin:.25rem}.xl\:m-2{margin:.5rem}.xl\:m-3{margin:.75rem}.xl\:m-4{margin:1rem}.xl\:m-5{margin:1.25rem}.xl\:m-6{margin:1.5rem}.xl\:m-7{margin:2rem}.xl\:m-8{margin:2.5rem}.xl\:m-9{margin:3rem}.xl\:m-auto{margin:auto}.xl\:mx-0{margin-inline:0}.xl\:mx-1{margin-inline:.25rem}.xl\:mx-2{margin-inline:.5rem}.xl\:mx-3{margin-inline:.75rem}.xl\:mx-4{margin-inline:1rem}.xl\:mx-5{margin-inline:1.25rem}.xl\:mx-6{margin-inline:1.5rem}.xl\:mx-7{margin-inline:2rem}.xl\:mx-8{margin-inline:2.5rem}.xl\:mx-9{margin-inline:3rem}.xl\:mx-auto{margin-inline:auto}.xl\:my-0{margin-block:0}.xl\:my-1{margin-block:.25rem}.xl\:my-2{margin-block:.5rem}.xl\:my-3{margin-block:.75rem}.xl\:my-4{margin-block:1rem}.xl\:my-5{margin-block:1.25rem}.xl\:my-6{margin-block:1.5rem}.xl\:my-7{margin-block:2rem}.xl\:my-8{margin-block:2.5rem}.xl\:my-9{margin-block:3rem}.xl\:my-auto{margin-block:auto}.xl\:mt-0{margin-block-start:0}.xl\:mt-1{margin-block-start:.25rem}.xl\:mt-2{margin-block-start:.5rem}.xl\:mt-3{margin-block-start:.75rem}.xl\:mt-4{margin-block-start:1rem}.xl\:mt-5{margin-block-start:1.25rem}.xl\:mt-6{margin-block-start:1.5rem}.xl\:mt-7{margin-block-start:2rem}.xl\:mt-8{margin-block-start:2.5rem}.xl\:mt-9{margin-block-start:3rem}.xl\:mt-auto{margin-block-start:auto}.xl\:me-0{margin-inline-end:0}.xl\:me-1{margin-inline-end:.25rem}.xl\:me-2{margin-inline-end:.5rem}.xl\:me-3{margin-inline-end:.75rem}.xl\:me-4{margin-inline-end:1rem}.xl\:me-5{margin-inline-end:1.25rem}.xl\:me-6{margin-inline-end:1.5rem}.xl\:me-7{margin-inline-end:2rem}.xl\:me-8{margin-inline-end:2.5rem}.xl\:me-9{margin-inline-end:3rem}.xl\:me--1{margin-inline-end:-.25rem}.xl\:me--2{margin-inline-end:-.5rem}.xl\:me-auto{margin-inline-end:auto}.xl\:mb-0{margin-block-end:0}.xl\:mb-1{margin-block-end:.25rem}.xl\:mb-2{margin-block-end:.5rem}.xl\:mb-3{margin-block-end:.75rem}.xl\:mb-4{margin-block-end:1rem}.xl\:mb-5{margin-block-end:1.25rem}.xl\:mb-6{margin-block-end:1.5rem}.xl\:mb-7{margin-block-end:2rem}.xl\:mb-8{margin-block-end:2.5rem}.xl\:mb-9{margin-block-end:3rem}.xl\:mb-auto{margin-block-end:auto}.xl\:ms-0{margin-inline-start:0}.xl\:ms-1{margin-inline-start:.25rem}.xl\:ms-2{margin-inline-start:.5rem}.xl\:ms-3{margin-inline-start:.75rem}.xl\:ms-4{margin-inline-start:1rem}.xl\:ms-5{margin-inline-start:1.25rem}.xl\:ms-6{margin-inline-start:1.5rem}.xl\:ms-7{margin-inline-start:2rem}.xl\:ms-8{margin-inline-start:2.5rem}.xl\:ms-9{margin-inline-start:3rem}.xl\:ms--1{margin-inline-start:-.25rem}.xl\:ms--2{margin-inline-start:-.5rem}.xl\:ms-auto{margin-inline-start:auto}.xl\:p-0{padding:0}.xl\:p-1{padding:.25rem}.xl\:p-2{padding:.5rem}.xl\:p-3{padding:.75rem}.xl\:p-4{padding:1rem}.xl\:p-5{padding:1.25rem}.xl\:p-6{padding:1.5rem}.xl\:p-7{padding:2rem}.xl\:p-8{padding:2.5rem}.xl\:p-9{padding:3rem}.xl\:px-0{padding-inline:0}.xl\:px-1{padding-inline:.25rem}.xl\:px-2{padding-inline:.5rem}.xl\:px-3{padding-inline:.75rem}.xl\:px-4{padding-inline:1rem}.xl\:px-5{padding-inline:1.25rem}.xl\:px-6{padding-inline:1.5rem}.xl\:px-7{padding-inline:2rem}.xl\:px-8{padding-inline:2.5rem}.xl\:px-9{padding-inline:3rem}.xl\:py-0{padding-block:0}.xl\:py-1{padding-block:.25rem}.xl\:py-2{padding-block:.5rem}.xl\:py-3{padding-block:.75rem}.xl\:py-4{padding-block:1rem}.xl\:py-5{padding-block:1.25rem}.xl\:py-6{padding-block:1.5rem}.xl\:py-7{padding-block:2rem}.xl\:py-8{padding-block:2.5rem}.xl\:py-9{padding-block:3rem}.xl\:pt-0{padding-block-start:0}.xl\:pt-1{padding-block-start:.25rem}.xl\:pt-2{padding-block-start:.5rem}.xl\:pt-3{padding-block-start:.75rem}.xl\:pt-4{padding-block-start:1rem}.xl\:pt-5{padding-block-start:1.25rem}.xl\:pt-6{padding-block-start:1.5rem}.xl\:pt-7{padding-block-start:2rem}.xl\:pt-8{padding-block-start:2.5rem}.xl\:pt-9{padding-block-start:3rem}.xl\:pe-0{padding-inline-end:0}.xl\:pe-1{padding-inline-end:.25rem}.xl\:pe-2{padding-inline-end:.5rem}.xl\:pe-3{padding-inline-end:.75rem}.xl\:pe-4{padding-inline-end:1rem}.xl\:pe-5{padding-inline-end:1.25rem}.xl\:pe-6{padding-inline-end:1.5rem}.xl\:pe-7{padding-inline-end:2rem}.xl\:pe-8{padding-inline-end:2.5rem}.xl\:pe-9{padding-inline-end:3rem}.xl\:pb-0{padding-block-end:0}.xl\:pb-1{padding-block-end:.25rem}.xl\:pb-2{padding-block-end:.5rem}.xl\:pb-3{padding-block-end:.75rem}.xl\:pb-4{padding-block-end:1rem}.xl\:pb-5{padding-block-end:1.25rem}.xl\:pb-6{padding-block-end:1.5rem}.xl\:pb-7{padding-block-end:2rem}.xl\:pb-8{padding-block-end:2.5rem}.xl\:pb-9{padding-block-end:3rem}.xl\:ps-0{padding-inline-start:0}.xl\:ps-1{padding-inline-start:.25rem}.xl\:ps-2{padding-inline-start:.5rem}.xl\:ps-3{padding-inline-start:.75rem}.xl\:ps-4{padding-inline-start:1rem}.xl\:ps-5{padding-inline-start:1.25rem}.xl\:ps-6{padding-inline-start:1.5rem}.xl\:ps-7{padding-inline-start:2rem}.xl\:ps-8{padding-inline-start:2.5rem}.xl\:ps-9{padding-inline-start:3rem}.xl\:gap-0{gap:0}.xl\:gap-1{gap:.25rem}.xl\:gap-2{gap:.5rem}.xl\:gap-3{gap:.75rem}.xl\:gap-4{gap:1rem}.xl\:gap-5{gap:1.25rem}.xl\:gap-6{gap:1.5rem}.xl\:gap-7{gap:2rem}.xl\:gap-8{gap:2.5rem}.xl\:gap-9{gap:3rem}.xl\:row-gap-0{row-gap:0}.xl\:row-gap-1{row-gap:.25rem}.xl\:row-gap-2{row-gap:.5rem}.xl\:row-gap-3{row-gap:.75rem}.xl\:row-gap-4{row-gap:1rem}.xl\:row-gap-5{row-gap:1.25rem}.xl\:row-gap-6{row-gap:1.5rem}.xl\:row-gap-7{row-gap:2rem}.xl\:row-gap-8{row-gap:2.5rem}.xl\:row-gap-9{row-gap:3rem}.xl\:column-gap-0{column-gap:0}.xl\:column-gap-1{column-gap:.25rem}.xl\:column-gap-2{column-gap:.5rem}.xl\:column-gap-3{column-gap:.75rem}.xl\:column-gap-4{column-gap:1rem}.xl\:column-gap-5{column-gap:1.25rem}.xl\:column-gap-6{column-gap:1.5rem}.xl\:column-gap-7{column-gap:2rem}.xl\:column-gap-8{column-gap:2.5rem}.xl\:column-gap-9{column-gap:3rem}:where(.xl\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.xl\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.xl\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.xl\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.xl\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.xl\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.xl\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.xl\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.xl\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.xl\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.xl\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.xl\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.xl\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.xl\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.xl\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.xl\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.xl\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.xl\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.xl\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.xl\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.xl\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.xl\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.xl\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.xl\:divide-y-0>:not(:first-child)){border-block-start:0}.xl\:text-start{text-align:start}.xl\:text-end{text-align:end}.xl\:text-center{text-align:center}}@media (width>=1536px){.\32 xl\:float-start{float:inline-start}.\32 xl\:float-end{float:inline-end}.\32 xl\:float-none{float:none}.\32 xl\:object-fit-contain{object-fit:contain}.\32 xl\:object-fit-cover{object-fit:cover}.\32 xl\:object-fit-fill{object-fit:fill}.\32 xl\:object-fit-scale{object-fit:scale-down}.\32 xl\:object-fit-none{object-fit:none}.\32 xl\:d-inline{display:inline}.\32 xl\:d-inline-block{display:inline-block}.\32 xl\:d-block{display:block}.\32 xl\:d-grid{display:grid}.\32 xl\:d-inline-grid{display:inline-grid}.\32 xl\:d-table{display:table}.\32 xl\:d-table-row{display:table-row}.\32 xl\:d-table-cell{display:table-cell}.\32 xl\:d-flex{display:flex}.\32 xl\:d-inline-flex{display:inline-flex}.\32 xl\:d-contents{display:contents}.\32 xl\:d-flow-root{display:flow-root}.\32 xl\:d-none{display:none}.\32 xl\:flex-fill{flex:auto}.\32 xl\:flex-row{flex-direction:row}.\32 xl\:flex-column{flex-direction:column}.\32 xl\:flex-row-reverse{flex-direction:row-reverse}.\32 xl\:flex-column-reverse{flex-direction:column-reverse}.\32 xl\:flex-grow-0{flex-grow:0}.\32 xl\:flex-grow-1{flex-grow:1}.\32 xl\:flex-shrink-0{flex-shrink:0}.\32 xl\:flex-shrink-1{flex-shrink:1}.\32 xl\:flex-wrap{flex-wrap:wrap}.\32 xl\:flex-nowrap{flex-wrap:nowrap}.\32 xl\:flex-wrap-reverse{flex-wrap:wrap-reverse}.\32 xl\:justify-content-start{justify-content:flex-start}.\32 xl\:justify-content-end{justify-content:flex-end}.\32 xl\:justify-content-center{justify-content:center}.\32 xl\:justify-content-between{justify-content:space-between}.\32 xl\:justify-content-around{justify-content:space-around}.\32 xl\:justify-content-evenly{justify-content:space-evenly}.\32 xl\:justify-items-start{justify-items:start}.\32 xl\:justify-items-end{justify-items:end}.\32 xl\:justify-items-center{justify-items:center}.\32 xl\:justify-items-stretch{justify-items:stretch}.\32 xl\:justify-self-start{justify-self:start}.\32 xl\:justify-self-end{justify-self:end}.\32 xl\:justify-self-center{justify-self:center}.\32 xl\:align-items-start{align-items:flex-start}.\32 xl\:align-items-end{align-items:flex-end}.\32 xl\:align-items-center{align-items:center}.\32 xl\:align-items-baseline{align-items:baseline}.\32 xl\:align-items-stretch{align-items:stretch}.\32 xl\:align-content-start{align-content:flex-start}.\32 xl\:align-content-end{align-content:flex-end}.\32 xl\:align-content-center{align-content:center}.\32 xl\:align-content-between{align-content:space-between}.\32 xl\:align-content-around{align-content:space-around}.\32 xl\:align-content-stretch{align-content:stretch}.\32 xl\:align-self-auto{align-self:auto}.\32 xl\:align-self-start{align-self:flex-start}.\32 xl\:align-self-end{align-self:flex-end}.\32 xl\:align-self-center{align-self:center}.\32 xl\:align-self-baseline{align-self:baseline}.\32 xl\:align-self-stretch{align-self:stretch}.\32 xl\:place-items-start{place-items:start}.\32 xl\:place-items-end{place-items:end}.\32 xl\:place-items-center{place-items:center}.\32 xl\:place-items-stretch{place-items:stretch stretch}.\32 xl\:grid-cols-1{grid-template-columns:1fr}.\32 xl\:grid-cols-2{grid-template-columns:repeat(2,1fr)}.\32 xl\:grid-cols-3{grid-template-columns:repeat(3,1fr)}.\32 xl\:grid-cols-4{grid-template-columns:repeat(4,1fr)}.\32 xl\:grid-cols-6{grid-template-columns:repeat(6,1fr)}.\32 xl\:grid-cols-fill{grid-column:1/-1}.\32 xl\:grid-auto-flow-row{grid-auto-flow:row}.\32 xl\:grid-auto-flow-column{grid-auto-flow:column}.\32 xl\:grid-auto-flow-dense{grid-auto-flow:dense}.\32 xl\:order-first{order:-1}.\32 xl\:order-0{order:0}.\32 xl\:order-1{order:1}.\32 xl\:order-2{order:2}.\32 xl\:order-3{order:3}.\32 xl\:order-4{order:4}.\32 xl\:order-5{order:5}.\32 xl\:order-last{order:6}.\32 xl\:m-0{margin:0}.\32 xl\:m-1{margin:.25rem}.\32 xl\:m-2{margin:.5rem}.\32 xl\:m-3{margin:.75rem}.\32 xl\:m-4{margin:1rem}.\32 xl\:m-5{margin:1.25rem}.\32 xl\:m-6{margin:1.5rem}.\32 xl\:m-7{margin:2rem}.\32 xl\:m-8{margin:2.5rem}.\32 xl\:m-9{margin:3rem}.\32 xl\:m-auto{margin:auto}.\32 xl\:mx-0{margin-inline:0}.\32 xl\:mx-1{margin-inline:.25rem}.\32 xl\:mx-2{margin-inline:.5rem}.\32 xl\:mx-3{margin-inline:.75rem}.\32 xl\:mx-4{margin-inline:1rem}.\32 xl\:mx-5{margin-inline:1.25rem}.\32 xl\:mx-6{margin-inline:1.5rem}.\32 xl\:mx-7{margin-inline:2rem}.\32 xl\:mx-8{margin-inline:2.5rem}.\32 xl\:mx-9{margin-inline:3rem}.\32 xl\:mx-auto{margin-inline:auto}.\32 xl\:my-0{margin-block:0}.\32 xl\:my-1{margin-block:.25rem}.\32 xl\:my-2{margin-block:.5rem}.\32 xl\:my-3{margin-block:.75rem}.\32 xl\:my-4{margin-block:1rem}.\32 xl\:my-5{margin-block:1.25rem}.\32 xl\:my-6{margin-block:1.5rem}.\32 xl\:my-7{margin-block:2rem}.\32 xl\:my-8{margin-block:2.5rem}.\32 xl\:my-9{margin-block:3rem}.\32 xl\:my-auto{margin-block:auto}.\32 xl\:mt-0{margin-block-start:0}.\32 xl\:mt-1{margin-block-start:.25rem}.\32 xl\:mt-2{margin-block-start:.5rem}.\32 xl\:mt-3{margin-block-start:.75rem}.\32 xl\:mt-4{margin-block-start:1rem}.\32 xl\:mt-5{margin-block-start:1.25rem}.\32 xl\:mt-6{margin-block-start:1.5rem}.\32 xl\:mt-7{margin-block-start:2rem}.\32 xl\:mt-8{margin-block-start:2.5rem}.\32 xl\:mt-9{margin-block-start:3rem}.\32 xl\:mt-auto{margin-block-start:auto}.\32 xl\:me-0{margin-inline-end:0}.\32 xl\:me-1{margin-inline-end:.25rem}.\32 xl\:me-2{margin-inline-end:.5rem}.\32 xl\:me-3{margin-inline-end:.75rem}.\32 xl\:me-4{margin-inline-end:1rem}.\32 xl\:me-5{margin-inline-end:1.25rem}.\32 xl\:me-6{margin-inline-end:1.5rem}.\32 xl\:me-7{margin-inline-end:2rem}.\32 xl\:me-8{margin-inline-end:2.5rem}.\32 xl\:me-9{margin-inline-end:3rem}.\32 xl\:me--1{margin-inline-end:-.25rem}.\32 xl\:me--2{margin-inline-end:-.5rem}.\32 xl\:me-auto{margin-inline-end:auto}.\32 xl\:mb-0{margin-block-end:0}.\32 xl\:mb-1{margin-block-end:.25rem}.\32 xl\:mb-2{margin-block-end:.5rem}.\32 xl\:mb-3{margin-block-end:.75rem}.\32 xl\:mb-4{margin-block-end:1rem}.\32 xl\:mb-5{margin-block-end:1.25rem}.\32 xl\:mb-6{margin-block-end:1.5rem}.\32 xl\:mb-7{margin-block-end:2rem}.\32 xl\:mb-8{margin-block-end:2.5rem}.\32 xl\:mb-9{margin-block-end:3rem}.\32 xl\:mb-auto{margin-block-end:auto}.\32 xl\:ms-0{margin-inline-start:0}.\32 xl\:ms-1{margin-inline-start:.25rem}.\32 xl\:ms-2{margin-inline-start:.5rem}.\32 xl\:ms-3{margin-inline-start:.75rem}.\32 xl\:ms-4{margin-inline-start:1rem}.\32 xl\:ms-5{margin-inline-start:1.25rem}.\32 xl\:ms-6{margin-inline-start:1.5rem}.\32 xl\:ms-7{margin-inline-start:2rem}.\32 xl\:ms-8{margin-inline-start:2.5rem}.\32 xl\:ms-9{margin-inline-start:3rem}.\32 xl\:ms--1{margin-inline-start:-.25rem}.\32 xl\:ms--2{margin-inline-start:-.5rem}.\32 xl\:ms-auto{margin-inline-start:auto}.\32 xl\:p-0{padding:0}.\32 xl\:p-1{padding:.25rem}.\32 xl\:p-2{padding:.5rem}.\32 xl\:p-3{padding:.75rem}.\32 xl\:p-4{padding:1rem}.\32 xl\:p-5{padding:1.25rem}.\32 xl\:p-6{padding:1.5rem}.\32 xl\:p-7{padding:2rem}.\32 xl\:p-8{padding:2.5rem}.\32 xl\:p-9{padding:3rem}.\32 xl\:px-0{padding-inline:0}.\32 xl\:px-1{padding-inline:.25rem}.\32 xl\:px-2{padding-inline:.5rem}.\32 xl\:px-3{padding-inline:.75rem}.\32 xl\:px-4{padding-inline:1rem}.\32 xl\:px-5{padding-inline:1.25rem}.\32 xl\:px-6{padding-inline:1.5rem}.\32 xl\:px-7{padding-inline:2rem}.\32 xl\:px-8{padding-inline:2.5rem}.\32 xl\:px-9{padding-inline:3rem}.\32 xl\:py-0{padding-block:0}.\32 xl\:py-1{padding-block:.25rem}.\32 xl\:py-2{padding-block:.5rem}.\32 xl\:py-3{padding-block:.75rem}.\32 xl\:py-4{padding-block:1rem}.\32 xl\:py-5{padding-block:1.25rem}.\32 xl\:py-6{padding-block:1.5rem}.\32 xl\:py-7{padding-block:2rem}.\32 xl\:py-8{padding-block:2.5rem}.\32 xl\:py-9{padding-block:3rem}.\32 xl\:pt-0{padding-block-start:0}.\32 xl\:pt-1{padding-block-start:.25rem}.\32 xl\:pt-2{padding-block-start:.5rem}.\32 xl\:pt-3{padding-block-start:.75rem}.\32 xl\:pt-4{padding-block-start:1rem}.\32 xl\:pt-5{padding-block-start:1.25rem}.\32 xl\:pt-6{padding-block-start:1.5rem}.\32 xl\:pt-7{padding-block-start:2rem}.\32 xl\:pt-8{padding-block-start:2.5rem}.\32 xl\:pt-9{padding-block-start:3rem}.\32 xl\:pe-0{padding-inline-end:0}.\32 xl\:pe-1{padding-inline-end:.25rem}.\32 xl\:pe-2{padding-inline-end:.5rem}.\32 xl\:pe-3{padding-inline-end:.75rem}.\32 xl\:pe-4{padding-inline-end:1rem}.\32 xl\:pe-5{padding-inline-end:1.25rem}.\32 xl\:pe-6{padding-inline-end:1.5rem}.\32 xl\:pe-7{padding-inline-end:2rem}.\32 xl\:pe-8{padding-inline-end:2.5rem}.\32 xl\:pe-9{padding-inline-end:3rem}.\32 xl\:pb-0{padding-block-end:0}.\32 xl\:pb-1{padding-block-end:.25rem}.\32 xl\:pb-2{padding-block-end:.5rem}.\32 xl\:pb-3{padding-block-end:.75rem}.\32 xl\:pb-4{padding-block-end:1rem}.\32 xl\:pb-5{padding-block-end:1.25rem}.\32 xl\:pb-6{padding-block-end:1.5rem}.\32 xl\:pb-7{padding-block-end:2rem}.\32 xl\:pb-8{padding-block-end:2.5rem}.\32 xl\:pb-9{padding-block-end:3rem}.\32 xl\:ps-0{padding-inline-start:0}.\32 xl\:ps-1{padding-inline-start:.25rem}.\32 xl\:ps-2{padding-inline-start:.5rem}.\32 xl\:ps-3{padding-inline-start:.75rem}.\32 xl\:ps-4{padding-inline-start:1rem}.\32 xl\:ps-5{padding-inline-start:1.25rem}.\32 xl\:ps-6{padding-inline-start:1.5rem}.\32 xl\:ps-7{padding-inline-start:2rem}.\32 xl\:ps-8{padding-inline-start:2.5rem}.\32 xl\:ps-9{padding-inline-start:3rem}.\32 xl\:gap-0{gap:0}.\32 xl\:gap-1{gap:.25rem}.\32 xl\:gap-2{gap:.5rem}.\32 xl\:gap-3{gap:.75rem}.\32 xl\:gap-4{gap:1rem}.\32 xl\:gap-5{gap:1.25rem}.\32 xl\:gap-6{gap:1.5rem}.\32 xl\:gap-7{gap:2rem}.\32 xl\:gap-8{gap:2.5rem}.\32 xl\:gap-9{gap:3rem}.\32 xl\:row-gap-0{row-gap:0}.\32 xl\:row-gap-1{row-gap:.25rem}.\32 xl\:row-gap-2{row-gap:.5rem}.\32 xl\:row-gap-3{row-gap:.75rem}.\32 xl\:row-gap-4{row-gap:1rem}.\32 xl\:row-gap-5{row-gap:1.25rem}.\32 xl\:row-gap-6{row-gap:1.5rem}.\32 xl\:row-gap-7{row-gap:2rem}.\32 xl\:row-gap-8{row-gap:2.5rem}.\32 xl\:row-gap-9{row-gap:3rem}.\32 xl\:column-gap-0{column-gap:0}.\32 xl\:column-gap-1{column-gap:.25rem}.\32 xl\:column-gap-2{column-gap:.5rem}.\32 xl\:column-gap-3{column-gap:.75rem}.\32 xl\:column-gap-4{column-gap:1rem}.\32 xl\:column-gap-5{column-gap:1.25rem}.\32 xl\:column-gap-6{column-gap:1.5rem}.\32 xl\:column-gap-7{column-gap:2rem}.\32 xl\:column-gap-8{column-gap:2.5rem}.\32 xl\:column-gap-9{column-gap:3rem}:where(.\32 xl\:space-x-0>:not(:last-child)){margin-inline-end:0}:where(.\32 xl\:space-x-1>:not(:last-child)){margin-inline-end:.25rem}:where(.\32 xl\:space-x-2>:not(:last-child)){margin-inline-end:.5rem}:where(.\32 xl\:space-x-3>:not(:last-child)){margin-inline-end:.75rem}:where(.\32 xl\:space-x-4>:not(:last-child)){margin-inline-end:1rem}:where(.\32 xl\:space-x-5>:not(:last-child)){margin-inline-end:1.25rem}:where(.\32 xl\:space-x-6>:not(:last-child)){margin-inline-end:1.5rem}:where(.\32 xl\:space-x-7>:not(:last-child)){margin-inline-end:2rem}:where(.\32 xl\:space-x-8>:not(:last-child)){margin-inline-end:2.5rem}:where(.\32 xl\:space-x-9>:not(:last-child)){margin-inline-end:3rem}:where(.\32 xl\:space-y-0>:not(:last-child)){margin-block-end:0}:where(.\32 xl\:space-y-1>:not(:last-child)){margin-block-end:.25rem}:where(.\32 xl\:space-y-2>:not(:last-child)){margin-block-end:.5rem}:where(.\32 xl\:space-y-3>:not(:last-child)){margin-block-end:.75rem}:where(.\32 xl\:space-y-4>:not(:last-child)){margin-block-end:1rem}:where(.\32 xl\:space-y-5>:not(:last-child)){margin-block-end:1.25rem}:where(.\32 xl\:space-y-6>:not(:last-child)){margin-block-end:1.5rem}:where(.\32 xl\:space-y-7>:not(:last-child)){margin-block-end:2rem}:where(.\32 xl\:space-y-8>:not(:last-child)){margin-block-end:2.5rem}:where(.\32 xl\:space-y-9>:not(:last-child)){margin-block-end:3rem}:where(.\32 xl\:divide-x>:not(:first-child)){border-inline-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.\32 xl\:divide-x-0>:not(:first-child)){border-inline-start:0}:where(.\32 xl\:divide-y>:not(:first-child)){border-block-start:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)}:where(.\32 xl\:divide-y-0>:not(:first-child)){border-block-start:0}.\32 xl\:text-start{text-align:start}.\32 xl\:text-end{text-align:end}.\32 xl\:text-center{text-align:center}}}:root{--bs-black:#000;--bs-white:#fff;--bs-gradient:linear-gradient(180deg, color-mix(var(--bs-white) 15%, transparent), color-mix(var(--bs-white) 0%, transparent));--bs-font-weight-lighter:lighter;--bs-font-weight-light:300;--bs-font-weight-normal:400;--bs-font-weight-medium:500;--bs-font-weight-semibold:600;--bs-font-weight-bold:700;--bs-font-weight-bolder:bolder;--bs-body-font-family:system-ui;--bs-body-font-size:var(--bs-font-size-base);--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-heading-color:inherit;--bs-hr-border-color:var(--bs-border-color);--bs-link-color:light-dark(var(--bs-primary-base),var(--bs-primary-fg));--bs-link-decoration:underline;--bs-link-hover-color:color-mix(in oklch, var(--bs-link-color) 90%, #000);--bs-font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Monaco, "Cascadia Mono", Consolas, "Liberation Mono", monospace;--bs-code-font-size:95%;--bs-code-color:var(--bs-fg-2);--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-border-color-translucent:color-mix(in oklch, var(--bs-fg-body) 15%, transparent);--bs-box-shadow-xs:0 .0625rem .1875rem #00000013;--bs-box-shadow-sm:0 .125rem .25rem #00000013;--bs-box-shadow:0 .5rem 1rem #00000026;--bs-box-shadow-lg:0 1rem 3rem #0000002d;--bs-box-shadow-inset:inset 0 1px 2px #00000013;--bs-spacer:1rem;--bs-focus-ring-width:3px;--bs-focus-ring-offset:1px;--bs-focus-ring-color:var(--bs-primary-focus-ring);--bs-focus-ring:var(--bs-focus-ring-width) solid var(--bs-focus-ring-color);--bs-control-checked-bg:var(--bs-primary-base);--bs-control-checked-border-color:var(--bs-control-checked-bg);--bs-control-active-bg:var(--bs-primary-base);--bs-control-active-border-color:var(--bs-control-active-bg);--bs-control-disabled-bg:var(--bs-bg-3);--bs-control-disabled-opacity:.65;--bs-btn-input-fg:var(--bs-fg-body);--bs-btn-input-bg:var(--bs-bg-body);--bs-btn-input-min-height:2.375rem;--bs-btn-input-padding-y:.375rem;--bs-btn-input-padding-x:.75rem;--bs-btn-input-font-size:var(--bs-font-size-base);--bs-btn-input-line-height:var(--bs-line-height-base);--bs-btn-input-border-radius:var(--bs-radius-5);--bs-btn-input-xs-min-height:1.5rem;--bs-btn-input-xs-padding-y:.125rem;--bs-btn-input-xs-padding-x:.5rem;--bs-btn-input-xs-font-size:var(--bs-font-size-xs);--bs-btn-input-xs-line-height:1.125;--bs-btn-input-xs-border-radius:var(--bs-radius-5);--bs-btn-input-sm-min-height:2rem;--bs-btn-input-sm-padding-y:.25rem;--bs-btn-input-sm-padding-x:.625rem;--bs-btn-input-sm-font-size:var(--bs-font-size-sm);--bs-btn-input-sm-line-height:var(--bs-line-height-sm);--bs-btn-input-sm-border-radius:var(--bs-radius-5);--bs-btn-input-lg-min-height:2.75rem;--bs-btn-input-lg-padding-y:.5rem;--bs-btn-input-lg-padding-x:1rem;--bs-btn-input-lg-font-size:var(--bs-font-size-md);--bs-btn-input-lg-line-height:var(--bs-line-height-md);--bs-btn-input-lg-border-radius:var(--bs-radius-7);--bs-font-size-xs:.75rem;--bs-line-height-xs:1.25;--bs-font-size-sm:.875rem;--bs-line-height-sm:1.5;--bs-font-size-md:1rem;--bs-line-height-md:1.5;--bs-font-size-lg:clamp(1.25rem, 1rem + .625vw, 1.5rem);--bs-line-height-lg:1.5;--bs-font-size-xl:clamp(1.5rem, 1.1rem + .75vw, 1.75rem);--bs-line-height-xl:1.42857;--bs-font-size-2xl:clamp(1.75rem, 1.3rem + 1vw, 2rem);--bs-line-height-2xl:1.33333;--bs-font-size-3xl:clamp(2rem, 1.5rem + 1.875vw, 2.5rem);--bs-line-height-3xl:1.2;--bs-font-size-4xl:clamp(2.25rem, 1.75rem + 2.5vw, 3rem);--bs-line-height-4xl:1.1;--bs-font-size-5xl:clamp(3rem, 2rem + 5vw, 4rem);--bs-line-height-5xl:1.1;--bs-font-size-6xl:clamp(3.75rem, 2.5rem + 6.25vw, 5rem);--bs-line-height-6xl:1;--bs-primary-base:var(--bs-blue-500);--bs-primary-fg:light-dark(var(--bs-blue-600),var(--bs-blue-400));--bs-primary-fg-emphasis:light-dark(var(--bs-blue-800),var(--bs-blue-200));--bs-primary-bg:var(--bs-blue-500);--bs-primary-bg-subtle:light-dark(var(--bs-blue-100),var(--bs-blue-900));--bs-primary-bg-muted:light-dark(var(--bs-blue-200),var(--bs-blue-800));--bs-primary-border:light-dark(var(--bs-blue-300),var(--bs-blue-600));--bs-primary-focus-ring:light-dark(color-mix(in oklch, var(--bs-blue-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-blue-500) 75%, var(--bs-bg-body)));--bs-primary-contrast:var(--bs-white);--bs-accent-base:var(--bs-indigo-500);--bs-accent-fg:light-dark(var(--bs-indigo-600),color-mix(in oklch, var(--bs-indigo-400), var(--bs-indigo-300)));--bs-accent-fg-emphasis:light-dark(var(--bs-indigo-800),var(--bs-indigo-300));--bs-accent-bg:var(--bs-indigo-500);--bs-accent-bg-subtle:light-dark(var(--bs-indigo-100),var(--bs-indigo-900));--bs-accent-bg-muted:light-dark(var(--bs-indigo-200),var(--bs-indigo-800));--bs-accent-border:light-dark(var(--bs-indigo-300),var(--bs-indigo-600));--bs-accent-focus-ring:light-dark(color-mix(in oklch, var(--bs-indigo-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-indigo-500) 75%, var(--bs-bg-body)));--bs-accent-contrast:var(--bs-white);--bs-success-base:var(--bs-green-500);--bs-success-fg:light-dark(var(--bs-green-600),var(--bs-green-400));--bs-success-fg-emphasis:light-dark(var(--bs-green-800),var(--bs-green-300));--bs-success-bg:var(--bs-green-500);--bs-success-bg-subtle:light-dark(var(--bs-green-100),var(--bs-green-900));--bs-success-bg-muted:light-dark(var(--bs-green-200),var(--bs-green-800));--bs-success-border:light-dark(var(--bs-green-300),var(--bs-green-600));--bs-success-focus-ring:light-dark(color-mix(in oklch, var(--bs-green-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-green-500) 75%, var(--bs-bg-body)));--bs-success-contrast:var(--bs-white);--bs-danger-base:var(--bs-red-500);--bs-danger-fg:light-dark(var(--bs-red-600),var(--bs-red-400));--bs-danger-fg-emphasis:light-dark(var(--bs-red-800),var(--bs-red-300));--bs-danger-bg:var(--bs-red-500);--bs-danger-bg-subtle:light-dark(var(--bs-red-100),var(--bs-red-900));--bs-danger-bg-muted:light-dark(var(--bs-red-200),var(--bs-red-800));--bs-danger-border:light-dark(var(--bs-red-300),var(--bs-red-600));--bs-danger-focus-ring:light-dark(color-mix(in oklch, var(--bs-red-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-red-500) 75%, var(--bs-bg-body)));--bs-danger-contrast:var(--bs-white);--bs-warning-base:var(--bs-yellow-500);--bs-warning-fg:light-dark(var(--bs-yellow-700),var(--bs-yellow-400));--bs-warning-fg-emphasis:light-dark(var(--bs-yellow-800),var(--bs-yellow-300));--bs-warning-bg:var(--bs-yellow-500);--bs-warning-bg-subtle:light-dark(var(--bs-yellow-100),var(--bs-yellow-900));--bs-warning-bg-muted:light-dark(var(--bs-yellow-200),var(--bs-yellow-800));--bs-warning-border:light-dark(var(--bs-yellow-300),var(--bs-yellow-600));--bs-warning-focus-ring:light-dark(color-mix(in oklch, var(--bs-yellow-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-yellow-400) 85%, var(--bs-bg-body)));--bs-warning-contrast:var(--bs-gray-900);--bs-info-base:var(--bs-cyan-500);--bs-info-fg:light-dark(var(--bs-cyan-600),var(--bs-cyan-400));--bs-info-fg-emphasis:light-dark(var(--bs-cyan-800),var(--bs-cyan-300));--bs-info-bg:var(--bs-cyan-500);--bs-info-bg-subtle:light-dark(var(--bs-cyan-100),var(--bs-cyan-900));--bs-info-bg-muted:light-dark(var(--bs-cyan-200),var(--bs-cyan-800));--bs-info-border:light-dark(var(--bs-cyan-300),var(--bs-cyan-600));--bs-info-focus-ring:light-dark(color-mix(in oklch, var(--bs-cyan-500) 50%, var(--bs-bg-body)),color-mix(in oklch, var(--bs-cyan-500) 75%, var(--bs-bg-body)));--bs-info-contrast:var(--bs-gray-900);--bs-inverse-base:var(--bs-gray-900);--bs-inverse-fg:light-dark(var(--bs-gray-900),var(--bs-gray-200));--bs-inverse-fg-emphasis:light-dark(var(--bs-gray-975),var(--bs-white));--bs-inverse-bg:light-dark(var(--bs-gray-900),var(--bs-gray-025));--bs-inverse-bg-subtle:light-dark(var(--bs-gray-100),var(--bs-gray-900));--bs-inverse-bg-muted:light-dark(var(--bs-gray-200),var(--bs-gray-300));--bs-inverse-border:light-dark(var(--bs-gray-400),var(--bs-gray-100));--bs-inverse-focus-ring:color-mix(in oklch, light-dark(var(--bs-gray-900),var(--bs-gray-100)) 50%, var(--bs-bg-body));--bs-inverse-contrast:light-dark(var(--bs-white),var(--bs-gray-900));--bs-secondary-base:var(--bs-gray-200);--bs-secondary-fg:light-dark(var(--bs-gray-600),var(--bs-gray-400));--bs-secondary-fg-emphasis:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-secondary-bg:light-dark(var(--bs-gray-100),var(--bs-gray-600));--bs-secondary-bg-subtle:light-dark(var(--bs-gray-050),var(--bs-gray-800));--bs-secondary-bg-muted:light-dark(var(--bs-gray-100),var(--bs-gray-700));--bs-secondary-border:light-dark(var(--bs-gray-300),var(--bs-gray-600));--bs-secondary-focus-ring:color-mix(in oklch, light-dark(var(--bs-gray-500),var(--bs-gray-300)) 50%, var(--bs-bg-body));--bs-secondary-contrast:light-dark(var(--bs-gray-900),var(--bs-white));--bs-bg-body:light-dark(var(--bs-white),var(--bs-gray-975));--bs-bg-1:light-dark(var(--bs-gray-025),var(--bs-gray-950));--bs-bg-2:light-dark(var(--bs-gray-050),var(--bs-gray-900));--bs-bg-3:light-dark(var(--bs-gray-100),var(--bs-gray-800));--bs-bg-4:light-dark(var(--bs-gray-200),var(--bs-gray-700));--bs-bg-fg:var(--bs-fg-body);--bs-bg-white:var(--bs-white);--bs-bg-black:var(--bs-black);--bs-bg-transparent:transparent;--bs-bg-inherit:inherit;--bs-fg-body:light-dark(var(--bs-gray-900),var(--bs-gray-050));--bs-fg-1:light-dark(var(--bs-gray-800),var(--bs-gray-200));--bs-fg-2:light-dark(var(--bs-gray-700),var(--bs-gray-300));--bs-fg-3:light-dark(var(--bs-gray-600),var(--bs-gray-500));--bs-fg-4:light-dark(var(--bs-gray-500),var(--bs-gray-600));--bs-fg-bg:var(--bs-bg-body);--bs-fg-white:var(--bs-white);--bs-fg-black:var(--bs-black);--bs-fg-inherit:inherit;--bs-border-bg:var(--bs-bg-body);--bs-border-body:light-dark(var(--bs-gray-300),var(--bs-gray-800));--bs-border-muted:light-dark(var(--bs-gray-200),var(--bs-gray-800));--bs-border-subtle:light-dark(color-mix(in oklch, var(--bs-gray-100), var(--bs-gray-200)),var(--bs-gray-900));--bs-border-emphasized:light-dark(var(--bs-gray-400),var(--bs-gray-600));--bs-border-white:var(--bs-white);--bs-border-black:var(--bs-black);--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:1024px;--bs-breakpoint-xl:1280px;--bs-breakpoint-2xl:1536px;--bs-spacer-0:0;--bs-spacer-1:.25rem;--bs-spacer-2:.5rem;--bs-spacer-3:.75rem;--bs-spacer-4:1rem;--bs-spacer-5:1.25rem;--bs-spacer-6:1.5rem;--bs-spacer-7:2rem;--bs-spacer-8:2.5rem;--bs-spacer-9:3rem;--bs-radius-0:0;--bs-radius-1:.125rem;--bs-radius-2:.1875rem;--bs-radius-3:.25rem;--bs-radius-4:.375rem;--bs-radius-5:.5rem;--bs-radius-6:.625rem;--bs-radius-7:.75rem;--bs-radius-8:1rem;--bs-radius-9:1.5rem;--bs-radius-pill:50rem;color-scheme:light dark;scrollbar-gutter:stable}[data-bs-theme=dark]{color-scheme:dark}[data-bs-theme=light]{color-scheme:light}@keyframes otp-caret-blink{0%,to{opacity:1}50%{opacity:0}}.drawer,.\32 xl\:drawer,.xl\:drawer,.lg\:drawer,.md\:drawer,.sm\:drawer{--bs-drawer-inset:var(--bs-spacer);--bs-drawer-zindex:1045;--bs-drawer-width:400px;--bs-drawer-height:30vh;--bs-drawer-padding-x:var(--bs-spacer);--bs-drawer-padding-y:var(--bs-spacer);--bs-drawer-color:var(--bs-fg-body);--bs-drawer-bg:var(--bs-bg-body);--bs-drawer-border-width:var(--bs-border-width);--bs-drawer-border-color:var(--bs-border-color-translucent);--bs-drawer-border-radius:var(--bs-radius-7);--bs-drawer-box-shadow:var(--bs-box-shadow-lg);--bs-drawer-transition-duration:.3s;--bs-drawer-transition-timing:cubic-bezier(.22, 1, .36, 1);--bs-drawer-title-line-height:1.5;--bs-drawer-backdrop-bg:color-mix(in oklch, var(--bs-bg-body) 25%, transparent);--bs-drawer-backdrop-blur:8px}.fade{transition:opacity .15s linear}@media (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;transition:height .35s;overflow:hidden}@media (prefers-reduced-motion:reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s}@media (prefers-reduced-motion:reduce){.collapsing.collapse-horizontal{transition:none}}
 /*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
index 6ea5ca31be61f77f4188d813ed41557c6111d477..cbb807f624eda159e84afef72f2fc4410b4bbc70 100644 (file)
@@ -1 +1 @@
-{"version":3,"sourceRoot":null,"mappings":"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yD2CwII,wDhDnBN,qBgD2BI,qDhDxCJ,sBgD3DA,sZ3C7CE,0D2C6CF,6BhD2DA,sBgD0EM,wCAIA,+IhDjEN,qBgDxEA,+gBA0BI,2IAMA,uIAMA,uHAKA,0HAKA,yHAUA,mL3CvGF,yD2CuGE,kDhDcJ,qBgDVM,iHAGE,mLAQA,8HAKF,+GAIA,4KASA,sL3CxIJ,yD2CwII,wDhDnBN,qBgD2BI,qDhDxCJ,sBgD3DA,sZ3C7CE,0D2C6CF,6BhD2DA,sBgD0EM,wCAIA,+IhDjEN,sBgDxEA,+gBA0BI,2IAMA,uIAMA,uHAKA,0HAKA,yHAUA,mL3CvGF,0D2CuGE,kDhDcJ,sBgDVM,iHAGE,mLAQA,8HAKF,+GAIA,4KASA,sL3CxIJ,0D2CwII,wDhDnBN,sBgD2BI,qDhDxCJ,uBgD3DA,sZ3C7CE,2D2C6CF,6BhD2DA,uBgD0EM,wCAIA,+IhDjEN,sBgDxEA,+gBA0BI,2IAMA,uIAMA,uHAKA,0HAKA,yHAUA,mL3CvGF,0D2CuGE,kDhDcJ,sBgDVM,iHAGE,mLAQA,8HAKF,+GAIA,4KASA,sL3CxIJ,0D2CwII,wDhDnBN,sBgD2BI,qDhDxCJ,uBgD3DA,sZ3C7CE,2D2C6CF,6BhD2DA,uBgD0EM,wCAIA,+IhDjEN,sBgDxEA,mhBA0BI,+IAMA,2IAMA,2HAKA,8HAKA,6HAUA,uL3CvGF,0D2CuGE,sDhDcJ,sBgDVM,qHAGE,2LAQA,kIAKF,mHAIA,oLASA,0L3CxIJ,0D2CwII,4DhDnBN,sBgD2BI,yDhDxCJ,uBgD3DA,0Z3C7CE,2D2C6CF,iChD2DA,uBgD0EM,4CAIA,mJAzIN,2gBA0BI,uIAMA,mIAMA,mHAKA,sHAKA,qHAUA,8K3CvGF,uC2CuGE,8CAIE,6GAGE,2KAQA,0HAKF,2GAIA,oKASA,kK3CxIJ,uC2CwII,oDAAA,kDAQF,gDAwDJ,gb3CxME,uC2CwMF,uCAAA,gb3CxME,uC2CwMF,uCAAA,gb3CxME,uC2CwMF,uCAAA,gb3CxME,uC2CwMF,uCAAA,ob3CxME,uC2CwMF,2CAAA,4a3CxME,uC2CwMF,mCASF,gBAEI,mLAQJ,qCAIA,uIAQA,8KhD/HE,uBgD+HF,4DAgBA,2HAGE,uGAOF,6EAKA,uKASA,kQAIA,yCCrPA,2kCAOA,4hB5CrCI,uC4CqCJ,4BAcE,sKAOA,iMAOA,iOAQA,iNAUA,yGAKE,0JAMA,qJAYF,gUAAA,gUC/GF,2NAUE,wDAOF,gCAIA,gCAIA,iCAME,kFAKF,2EAMA,0MAMA,sDC3BA,yiDAoBE,gHAKE,6HAaF,2KAGE,+RAKA,sKAKA,uLAQF,qPAKE,4UAKA,qKAKA,sLAQF,8KAGE,2SAKA,uKAKA,wLAOA,wMAMF,2VAaA,uPAKE,8UAKA,yKAKA,0LAuBJ,gcASE,mCAKF,2HEnLE,oFAMF,8oBAaA,oShD7BI,uCgD6BJ,+BAYA,gMAKA,6CAIA,qDAKE,kEAII,uCAJJ,uCChCF,8RAaA,uDAKA,ySAOA,mGAaA,4EAWA,sNAOA,kEAQE,uCACE,iECxDJ,6aAYA,4NAUE,gYAqBA,kRAYA,4CAKE,qLASJ,kGAIA,oFAjGA,uJAOE,wPASA,8DvDqLE,0BuD9FA,wFAvGJ,2JAOE,4PASA,mEvDqLE,0BuD9FA,wFAvGJ,2JAOE,4PASA,mEvDqLE,2BuD9FA,wFAvGJ,2JAOE,4PASA,mEvDqLE,2BuD9FA,wFAvGJ,2JAOE,4PASA,mEvDqLE,2BuD9FA,4FAvGJ,+JAOE,gQASA,uEAgGF,4HAME,4DCnHF,k8BAiBE,yBAIA,+BAKF,8IASE,yEAKF,uZASE,yJAOF,2DAIA,mECjEA,8zBAaE,gDAEA,gHAKE,kGASJ,wIAGE,mPAOF,kNAKE,+RAOF,2IAGE,0PAOF,oNAKE,iSAuBF,0PhE/GF,cAAA,ekENE,yHCGA,6RAQE,yGvDWE,uCuDXF,gCAYE,+HCnBJ,sDAMA,yDAWI,+CAMA,qD7DmGF,sB6DzGE,mDAMA,0D7DmGF,sB6DzGE,mDAMA,0D7DmGF,uB6DzGE,mDAMA,0D7DmGF,uB6DzGE,mDAMA,0D7DmGF,uB6DzGE,uDAMA,8DCxBJ,4CAIA,0NAUE,mEAMA,mE9D4ME,0B8DlNF,uEAMA,wE9D4ME,0B8DlNF,uEAMA,wE9D4ME,2B8DlNF,uEAMA,wE9D4ME,2B8DlNF,uEAMA,wE9D4ME,2B8DlNF,2EAMA,4EE4CA,8ZAAA,oZAAA,8ZAAA,oZAAA,8ZAAA,gYAAA,8ZAAA,kbCjEF,mQCeA,4HAKA,oGCnBE,qECDF,yEEFA,2J7EMF,iB+EoOI,wCAAA,8BAAA,oCAAA,oCAAA,8CAAA,wCAAA,6CAAA,4BAAA,4BAAA,4BAAA,8BAAA,8BAAA,gCAAA,4BAAA,uBAAA,uCAAA,mCAAA,iCAAA,wCAAA,iCAAA,qBAAA,wBAAA,uBAAA,wBAAA,uBAAA,6BAAA,iCAAA,mCAAA,iCAAA,iCAAA,qCAAA,uCAAA,qCAAA,iCAAA,qCAAA,uCAAA,qCAAA,4CAAA,mCAAA,yBAAA,qCAAA,uBAAA,qBAAA,mCAAA,uBAAA,+BAAA,iCAAA,qBAAA,mCAAA,6BAAA,+BAAA,qBAAA,wCAAA,8CAAA,8CAAA,8CAAA,6BAAA,iCAAA,qCAAA,qCAAA,+BAAA,iCAAA,aAAA,gBAAA,kBAAA,mBAAA,sBAAA,wBAAA,8BAAA,iCAAA,mCAAA,0BAAA,6BAAA,+BAAA,iDAAA,8CAAA,+CAAA,oFAAA,mBAAA,oGAAA,mCAAA,mGAAA,kCAAA,qGAAA,oCAAA,uGAAA,sCAAA,4FAAA,2BAAA,6FAAA,4BAAA,2FAAA,yFAAA,2FAAA,yFAAA,2FAAA,qFAAA,2FAAA,+FAAA,qFAAA,yFAAA,2FAAA,6FAAA,qGAAA,2FAAA,2FAAA,sGAAA,oGAAA,sGAAA,oGAAA,sGAAA,gGAAA,sGAAA,0GAAA,2BAAA,2BAAA,2BAAA,2BAAA,2BAAA,qFAAA,qFAAA,qFAAA,qFAAA,qFAAA,qFAAA,qFAAA,qFAAA,qFAAA,gDAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,gBAAA,kBAAA,kBAAA,kBAAA,gBAAA,gBAAA,gBAAA,kBAAA,mBAAA,yBAAA,yBAAA,yBAAA,0BAAA,qBAAA,0BAAA,oBAAA,4BAAA,iBAAA,iBAAA,iBAAA,mBAAA,oBAAA,0BAAA,0BAAA,0BAAA,2BAAA,sBAAA,2BAAA,qBAAA,6BAAA,qBAAA,6BAAA,mCAAA,6CAAA,mDAAA,yBAAA,yBAAA,6BAAA,6BAAA,0BAAA,8BAAA,0CAAA,kDAAA,8CAAA,+CAAA,uDAAA,qDAAA,qDAAA,yCAAA,qCAAA,2CAAA,6CAAA,uCAAA,mCAAA,yCAAA,0CAAA,sCAAA,uCAAA,2CAAA,yCAAA,8CAAA,0CAAA,2CAAA,mDAAA,iDAAA,6CAAA,iCAAA,wCAAA,oCAAA,qCAAA,yCAAA,uCAAA,qCAAA,iCAAA,uCAAA,iDAAA,uCAAA,iDAAA,iDAAA,iDAAA,iDAAA,iCAAA,uCAAA,6CAAA,2CAAA,sBAAA,iBAAA,iBAAA,iBAAA,iBAAA,iBAAA,iBAAA,oBAAA,cAAA,mBAAA,kBAAA,mBAAA,iBAAA,oBAAA,mBAAA,iBAAA,mBAAA,iBAAA,oBAAA,sBAAA,2BAAA,0BAAA,2BAAA,yBAAA,4BAAA,2BAAA,yBAAA,2BAAA,yBAAA,4BAAA,qBAAA,0BAAA,yBAAA,0BAAA,wBAAA,2BAAA,0BAAA,wBAAA,0BAAA,wBAAA,2BAAA,2BAAA,gCAAA,+BAAA,gCAAA,8BAAA,iCAAA,gCAAA,8BAAA,gCAAA,8BAAA,iCAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,iCAAA,gCAAA,gCAAA,yBAAA,8BAAA,6BAAA,8BAAA,4BAAA,+BAAA,8BAAA,4BAAA,8BAAA,4BAAA,+BAAA,4BAAA,iCAAA,gCAAA,iCAAA,+BAAA,kCAAA,iCAAA,+BAAA,iCAAA,+BAAA,mCAAA,kCAAA,kCAAA,eAAA,oBAAA,mBAAA,oBAAA,kBAAA,qBAAA,oBAAA,kBAAA,oBAAA,kBAAA,uBAAA,4BAAA,2BAAA,4BAAA,0BAAA,6BAAA,4BAAA,0BAAA,4BAAA,0BAAA,sBAAA,2BAAA,0BAAA,2BAAA,yBAAA,4BAAA,2BAAA,yBAAA,2BAAA,yBAAA,4BAAA,iCAAA,gCAAA,iCAAA,+BAAA,kCAAA,iCAAA,+BAAA,iCAAA,+BAAA,2BAAA,gCAAA,+BAAA,gCAAA,8BAAA,iCAAA,gCAAA,8BAAA,gCAAA,8BAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,6BAAA,kCAAA,iCAAA,kCAAA,gCAAA,mCAAA,kCAAA,gCAAA,kCAAA,gCAAA,aAAA,kBAAA,iBAAA,kBAAA,gBAAA,mBAAA,kBAAA,gBAAA,kBAAA,gBAAA,qBAAA,0BAAA,yBAAA,0BAAA,wBAAA,2BAAA,0BAAA,wBAAA,0BAAA,wBAAA,2BAAA,gCAAA,+BAAA,gCAAA,8BAAA,iCAAA,gCAAA,8BAAA,gCAAA,8BAAA,yDAAA,8DAAA,6DAAA,8DAAA,4DAAA,+DAAA,8DAAA,4DAAA,8DAAA,4DAAA,wDAAA,6DAAA,4DAAA,6DAAA,2DAAA,8DAAA,6DAAA,2DAAA,6DAAA,2DAAA,8HAAA,6DAAA,6HAAA,4DAAA,gDAAA,kDAAA,wBAAA,yBAAA,sBAAA,qDAAA,sDAAA,mDAAA,sDAAA,sDAAA,8CAAA,sDAAA,2CAAA,2CAAA,wCAAA,uEAAA,4EAAA,yEAAA,wEAAA,wEAAA,gEAAA,sEAAA,8BAAA,8BAAA,gCAAA,0BAAA,2BAAA,2BAAA,6BAAA,yBAAA,8BAAA,oBAAA,wBAAA,yBAAA,qBAAA,6BAAA,yBAAA,+BAAA,2CAAA,qDAAA,2DAAA,yCAAA,yCAAA,2CAAA,0BAAA,8BAAA,gCAAA,8BAAA,uDAAA,4DAAA,0DAAA,4DAAA,0DAAA,4DAAA,sDAAA,4DAAA,gEAAA,sDAAA,gDAAA,gDAAA,gDAAA,gDAAA,kDAAA,wDAAA,wDAAA,6CAAA,8EAAA,4EAAA,8EAAA,4EAAA,8EAAA,wEAAA,8EAAA,kFAAA,2EAAA,yEAAA,2EAAA,yEAAA,2EAAA,qEAAA,2EAAA,+EAAA,gEAAA,gEAAA,gEAAA,gEAAA,gEAAA,gEAAA,gEAAA,gEAAA,gEAAA,2BAAA,gGAAA,gGAAA,gGAAA,gGAAA,gGAAA,gGAAA,gGAAA,gGAAA,gGAAA,4DAAA,kFAAA,iFAAA,kFAAA,2KAAA,wQAAA,+KAAA,sKAAA,mLAAA,wKAAA,2KAAA,6KAAA,mNAAA,mNAAA,mNAAA,mNAAA,mNAAA,mNAAA,mNAAA,mNAAA,mNAAA,yIAAA,yFAAA,yFAAA,yFAAA,yFAAA,yFAAA,uEAAA,qEAAA,uEAAA,qEAAA,uEAAA,iEAAA,uEAAA,2EAAA,iEAAA,2DAAA,2DAAA,2DAAA,2DAAA,6DAAA,mEAAA,mEAAA,+EAAA,qFAAA,mFAAA,qFAAA,mFAAA,qFAAA,+EAAA,qFAAA,yFAAA,mFAAA,iFAAA,mFAAA,iFAAA,mFAAA,6EAAA,mFAAA,uFAAA,2EAAA,2EAAA,2EAAA,2EAAA,2EAAA,2EAAA,2EAAA,2EAAA,2EAAA,sCAAA,mFAAA,kFAAA,yFAAA,yEAAA,iDAAA,yDAAA,4DAAA,4DAAA,4DAAA,6BAAA,6BAAA,oEAAA,0EAAA,2EAAA,yEAAA,0EAAA,wEAAA,0EAAA,yEAAA,uEAAA,yEAAA,sEAAA,2EAAA,2FAAA,oCAAA,0CAAA,2CAAA,yCAAA,0CAAA,wCAAA,0CAAA,yCAAA,uCAAA,yCAAA,sCAAA,2CAAA,2DAAA,qEAAA,iFAAA,mFAAA,+EAAA,iFAAA,6EAAA,iFAAA,+EAAA,2EAAA,+EAAA,mJAAA,8EAAA,gHAAA,iEAAA,6EAAA,+EAAA,2EAAA,6EAAA,yEAAA,6EAAA,2EAAA,uEAAA,2EAAA,+IAAA,0EAAA,4GAAA,oEAAA,gFAAA,kFAAA,8EAAA,gFAAA,4EAAA,gFAAA,8EAAA,0EAAA,8EAAA,kJAAA,6EAAA,+GAAA,uEAAA,mFAAA,qFAAA,iFAAA,mFAAA,+EAAA,mFAAA,iFAAA,6EAAA,iFAAA,qJAAA,gFAAA,kHAAA,4BAAA,6BAAA,iBAAA,eAAA,eAAA,eAAA,exE5GA,sBwE4GA,oCAAA,gCAAA,2BAAA,2CAAA,uCAAA,qCAAA,4CAAA,qCAAA,6BAAA,yCAAA,2BAAA,yBAAA,uCAAA,2BAAA,mCAAA,qCAAA,yBAAA,uCAAA,iCAAA,mCAAA,yBAAA,yBAAA,iCAAA,uCAAA,iDAAA,uDAAA,6BAAA,6BAAA,iCAAA,iCAAA,8BAAA,kCAAA,8CAAA,sDAAA,kDAAA,mDAAA,2DAAA,yDAAA,yDAAA,6CAAA,yCAAA,+CAAA,iDAAA,2CAAA,uCAAA,6CAAA,8CAAA,0CAAA,2CAAA,+CAAA,6CAAA,kDAAA,8CAAA,+CAAA,uDAAA,qDAAA,iDAAA,qCAAA,4CAAA,wCAAA,yCAAA,6CAAA,2CAAA,yCAAA,qCAAA,2CAAA,qDAAA,2CAAA,qDAAA,qDAAA,qDAAA,qDAAA,qCAAA,2CAAA,iDAAA,+CAAA,0BAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,wBAAA,kBAAA,uBAAA,sBAAA,uBAAA,qBAAA,wBAAA,uBAAA,qBAAA,uBAAA,qBAAA,wBAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,gCAAA,yBAAA,8BAAA,6BAAA,8BAAA,4BAAA,+BAAA,8BAAA,4BAAA,8BAAA,4BAAA,+BAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,qCAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,qCAAA,oCAAA,oCAAA,6BAAA,kCAAA,iCAAA,kCAAA,gCAAA,mCAAA,kCAAA,gCAAA,kCAAA,gCAAA,mCAAA,gCAAA,qCAAA,oCAAA,qCAAA,mCAAA,sCAAA,qCAAA,mCAAA,qCAAA,mCAAA,uCAAA,sCAAA,sCAAA,mBAAA,wBAAA,uBAAA,wBAAA,sBAAA,yBAAA,wBAAA,sBAAA,wBAAA,sBAAA,2BAAA,gCAAA,+BAAA,gCAAA,8BAAA,iCAAA,gCAAA,8BAAA,gCAAA,8BAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,gCAAA,qCAAA,oCAAA,qCAAA,mCAAA,sCAAA,qCAAA,mCAAA,qCAAA,mCAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,iCAAA,sCAAA,qCAAA,sCAAA,oCAAA,uCAAA,sCAAA,oCAAA,sCAAA,oCAAA,iBAAA,sBAAA,qBAAA,sBAAA,oBAAA,uBAAA,sBAAA,oBAAA,sBAAA,oBAAA,yBAAA,8BAAA,6BAAA,8BAAA,4BAAA,+BAAA,8BAAA,4BAAA,8BAAA,4BAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,6DAAA,kEAAA,iEAAA,kEAAA,gEAAA,mEAAA,kEAAA,gEAAA,kEAAA,gEAAA,4DAAA,iEAAA,gEAAA,iEAAA,+DAAA,kEAAA,iEAAA,+DAAA,iEAAA,+DAAA,kIAAA,iEAAA,iIAAA,gEAAA,iCAAA,6BAAA,oCxE5GA,sBwE4GA,oCAAA,gCAAA,2BAAA,2CAAA,uCAAA,qCAAA,4CAAA,qCAAA,6BAAA,yCAAA,2BAAA,yBAAA,uCAAA,2BAAA,mCAAA,qCAAA,yBAAA,uCAAA,iCAAA,mCAAA,yBAAA,yBAAA,iCAAA,uCAAA,iDAAA,uDAAA,6BAAA,6BAAA,iCAAA,iCAAA,8BAAA,kCAAA,8CAAA,sDAAA,kDAAA,mDAAA,2DAAA,yDAAA,yDAAA,6CAAA,yCAAA,+CAAA,iDAAA,2CAAA,uCAAA,6CAAA,8CAAA,0CAAA,2CAAA,+CAAA,6CAAA,kDAAA,8CAAA,+CAAA,uDAAA,qDAAA,iDAAA,qCAAA,4CAAA,wCAAA,yCAAA,6CAAA,2CAAA,yCAAA,qCAAA,2CAAA,qDAAA,2CAAA,qDAAA,qDAAA,qDAAA,qDAAA,qCAAA,2CAAA,iDAAA,+CAAA,0BAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,wBAAA,kBAAA,uBAAA,sBAAA,uBAAA,qBAAA,wBAAA,uBAAA,qBAAA,uBAAA,qBAAA,wBAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,gCAAA,yBAAA,8BAAA,6BAAA,8BAAA,4BAAA,+BAAA,8BAAA,4BAAA,8BAAA,4BAAA,+BAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,qCAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,qCAAA,oCAAA,oCAAA,6BAAA,kCAAA,iCAAA,kCAAA,gCAAA,mCAAA,kCAAA,gCAAA,kCAAA,gCAAA,mCAAA,gCAAA,qCAAA,oCAAA,qCAAA,mCAAA,sCAAA,qCAAA,mCAAA,qCAAA,mCAAA,uCAAA,sCAAA,sCAAA,mBAAA,wBAAA,uBAAA,wBAAA,sBAAA,yBAAA,wBAAA,sBAAA,wBAAA,sBAAA,2BAAA,gCAAA,+BAAA,gCAAA,8BAAA,iCAAA,gCAAA,8BAAA,gCAAA,8BAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,gCAAA,qCAAA,oCAAA,qCAAA,mCAAA,sCAAA,qCAAA,mCAAA,qCAAA,mCAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,iCAAA,sCAAA,qCAAA,sCAAA,oCAAA,uCAAA,sCAAA,oCAAA,sCAAA,oCAAA,iBAAA,sBAAA,qBAAA,sBAAA,oBAAA,uBAAA,sBAAA,oBAAA,sBAAA,oBAAA,yBAAA,8BAAA,6BAAA,8BAAA,4BAAA,+BAAA,8BAAA,4BAAA,8BAAA,4BAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,6DAAA,kEAAA,iEAAA,kEAAA,gEAAA,mEAAA,kEAAA,gEAAA,kEAAA,gEAAA,4DAAA,iEAAA,gEAAA,iEAAA,+DAAA,kEAAA,iEAAA,+DAAA,iEAAA,+DAAA,kIAAA,iEAAA,iIAAA,gEAAA,iCAAA,6BAAA,oCxE5GA,uBwE4GA,oCAAA,gCAAA,2BAAA,2CAAA,uCAAA,qCAAA,4CAAA,qCAAA,6BAAA,yCAAA,2BAAA,yBAAA,uCAAA,2BAAA,mCAAA,qCAAA,yBAAA,uCAAA,iCAAA,mCAAA,yBAAA,yBAAA,iCAAA,uCAAA,iDAAA,uDAAA,6BAAA,6BAAA,iCAAA,iCAAA,8BAAA,kCAAA,8CAAA,sDAAA,kDAAA,mDAAA,2DAAA,yDAAA,yDAAA,6CAAA,yCAAA,+CAAA,iDAAA,2CAAA,uCAAA,6CAAA,8CAAA,0CAAA,2CAAA,+CAAA,6CAAA,kDAAA,8CAAA,+CAAA,uDAAA,qDAAA,iDAAA,qCAAA,4CAAA,wCAAA,yCAAA,6CAAA,2CAAA,yCAAA,qCAAA,2CAAA,qDAAA,2CAAA,qDAAA,qDAAA,qDAAA,qDAAA,qCAAA,2CAAA,iDAAA,+CAAA,0BAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,wBAAA,kBAAA,uBAAA,sBAAA,uBAAA,qBAAA,wBAAA,uBAAA,qBAAA,uBAAA,qBAAA,wBAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,gCAAA,yBAAA,8BAAA,6BAAA,8BAAA,4BAAA,+BAAA,8BAAA,4BAAA,8BAAA,4BAAA,+BAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,qCAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,qCAAA,oCAAA,oCAAA,6BAAA,kCAAA,iCAAA,kCAAA,gCAAA,mCAAA,kCAAA,gCAAA,kCAAA,gCAAA,mCAAA,gCAAA,qCAAA,oCAAA,qCAAA,mCAAA,sCAAA,qCAAA,mCAAA,qCAAA,mCAAA,uCAAA,sCAAA,sCAAA,mBAAA,wBAAA,uBAAA,wBAAA,sBAAA,yBAAA,wBAAA,sBAAA,wBAAA,sBAAA,2BAAA,gCAAA,+BAAA,gCAAA,8BAAA,iCAAA,gCAAA,8BAAA,gCAAA,8BAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,gCAAA,qCAAA,oCAAA,qCAAA,mCAAA,sCAAA,qCAAA,mCAAA,qCAAA,mCAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,iCAAA,sCAAA,qCAAA,sCAAA,oCAAA,uCAAA,sCAAA,oCAAA,sCAAA,oCAAA,iBAAA,sBAAA,qBAAA,sBAAA,oBAAA,uBAAA,sBAAA,oBAAA,sBAAA,oBAAA,yBAAA,8BAAA,6BAAA,8BAAA,4BAAA,+BAAA,8BAAA,4BAAA,8BAAA,4BAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,6DAAA,kEAAA,iEAAA,kEAAA,gEAAA,mEAAA,kEAAA,gEAAA,kEAAA,gEAAA,4DAAA,iEAAA,gEAAA,iEAAA,+DAAA,kEAAA,iEAAA,+DAAA,iEAAA,+DAAA,kIAAA,iEAAA,iIAAA,gEAAA,iCAAA,6BAAA,oCxE5GA,uBwE4GA,oCAAA,gCAAA,2BAAA,2CAAA,uCAAA,qCAAA,4CAAA,qCAAA,6BAAA,yCAAA,2BAAA,yBAAA,uCAAA,2BAAA,mCAAA,qCAAA,yBAAA,uCAAA,iCAAA,mCAAA,yBAAA,yBAAA,iCAAA,uCAAA,iDAAA,uDAAA,6BAAA,6BAAA,iCAAA,iCAAA,8BAAA,kCAAA,8CAAA,sDAAA,kDAAA,mDAAA,2DAAA,yDAAA,yDAAA,6CAAA,yCAAA,+CAAA,iDAAA,2CAAA,uCAAA,6CAAA,8CAAA,0CAAA,2CAAA,+CAAA,6CAAA,kDAAA,8CAAA,+CAAA,uDAAA,qDAAA,iDAAA,qCAAA,4CAAA,wCAAA,yCAAA,6CAAA,2CAAA,yCAAA,qCAAA,2CAAA,qDAAA,2CAAA,qDAAA,qDAAA,qDAAA,qDAAA,qCAAA,2CAAA,iDAAA,+CAAA,0BAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,qBAAA,wBAAA,kBAAA,uBAAA,sBAAA,uBAAA,qBAAA,wBAAA,uBAAA,qBAAA,uBAAA,qBAAA,wBAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,gCAAA,yBAAA,8BAAA,6BAAA,8BAAA,4BAAA,+BAAA,8BAAA,4BAAA,8BAAA,4BAAA,+BAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,qCAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,qCAAA,oCAAA,oCAAA,6BAAA,kCAAA,iCAAA,kCAAA,gCAAA,mCAAA,kCAAA,gCAAA,kCAAA,gCAAA,mCAAA,gCAAA,qCAAA,oCAAA,qCAAA,mCAAA,sCAAA,qCAAA,mCAAA,qCAAA,mCAAA,uCAAA,sCAAA,sCAAA,mBAAA,wBAAA,uBAAA,wBAAA,sBAAA,yBAAA,wBAAA,sBAAA,wBAAA,sBAAA,2BAAA,gCAAA,+BAAA,gCAAA,8BAAA,iCAAA,gCAAA,8BAAA,gCAAA,8BAAA,0BAAA,+BAAA,8BAAA,+BAAA,6BAAA,gCAAA,+BAAA,6BAAA,+BAAA,6BAAA,gCAAA,qCAAA,oCAAA,qCAAA,mCAAA,sCAAA,qCAAA,mCAAA,qCAAA,mCAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,iCAAA,sCAAA,qCAAA,sCAAA,oCAAA,uCAAA,sCAAA,oCAAA,sCAAA,oCAAA,iBAAA,sBAAA,qBAAA,sBAAA,oBAAA,uBAAA,sBAAA,oBAAA,sBAAA,oBAAA,yBAAA,8BAAA,6BAAA,8BAAA,4BAAA,+BAAA,8BAAA,4BAAA,8BAAA,4BAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,6DAAA,kEAAA,iEAAA,kEAAA,gEAAA,mEAAA,kEAAA,gEAAA,kEAAA,gEAAA,4DAAA,iEAAA,gEAAA,iEAAA,+DAAA,kEAAA,iEAAA,+DAAA,iEAAA,+DAAA,kIAAA,iEAAA,iIAAA,gEAAA,iCAAA,6BAAA,oCxE5GA,uBwE4GA,wCAAA,oCAAA,+BAAA,+CAAA,2CAAA,yCAAA,gDAAA,yCAAA,iCAAA,6CAAA,+BAAA,6BAAA,2CAAA,+BAAA,uCAAA,yCAAA,6BAAA,2CAAA,qCAAA,uCAAA,6BAAA,6BAAA,qCAAA,2CAAA,qDAAA,2DAAA,iCAAA,iCAAA,qCAAA,qCAAA,kCAAA,sCAAA,kDAAA,0DAAA,sDAAA,uDAAA,+DAAA,6DAAA,6DAAA,iDAAA,6CAAA,mDAAA,qDAAA,+CAAA,2CAAA,iDAAA,kDAAA,8CAAA,+CAAA,mDAAA,iDAAA,sDAAA,kDAAA,mDAAA,2DAAA,yDAAA,qDAAA,yCAAA,gDAAA,4CAAA,6CAAA,iDAAA,+CAAA,6CAAA,yCAAA,+CAAA,yDAAA,+CAAA,yDAAA,yDAAA,yDAAA,yDAAA,yCAAA,+CAAA,qDAAA,mDAAA,8BAAA,yBAAA,yBAAA,yBAAA,yBAAA,yBAAA,yBAAA,4BAAA,sBAAA,2BAAA,0BAAA,2BAAA,yBAAA,4BAAA,2BAAA,yBAAA,2BAAA,yBAAA,4BAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,oCAAA,6BAAA,kCAAA,iCAAA,kCAAA,gCAAA,mCAAA,kCAAA,gCAAA,kCAAA,gCAAA,mCAAA,mCAAA,wCAAA,uCAAA,wCAAA,sCAAA,yCAAA,wCAAA,sCAAA,wCAAA,sCAAA,yCAAA,kCAAA,uCAAA,sCAAA,uCAAA,qCAAA,wCAAA,uCAAA,qCAAA,uCAAA,qCAAA,yCAAA,wCAAA,wCAAA,iCAAA,sCAAA,qCAAA,sCAAA,oCAAA,uCAAA,sCAAA,oCAAA,sCAAA,oCAAA,uCAAA,oCAAA,yCAAA,wCAAA,yCAAA,uCAAA,0CAAA,yCAAA,uCAAA,yCAAA,uCAAA,2CAAA,0CAAA,0CAAA,uBAAA,4BAAA,2BAAA,4BAAA,0BAAA,6BAAA,4BAAA,0BAAA,4BAAA,0BAAA,+BAAA,oCAAA,mCAAA,oCAAA,kCAAA,qCAAA,oCAAA,kCAAA,oCAAA,kCAAA,8BAAA,mCAAA,kCAAA,mCAAA,iCAAA,oCAAA,mCAAA,iCAAA,mCAAA,iCAAA,oCAAA,yCAAA,wCAAA,yCAAA,uCAAA,0CAAA,yCAAA,uCAAA,yCAAA,uCAAA,mCAAA,wCAAA,uCAAA,wCAAA,sCAAA,yCAAA,wCAAA,sCAAA,wCAAA,sCAAA,kCAAA,uCAAA,sCAAA,uCAAA,qCAAA,wCAAA,uCAAA,qCAAA,uCAAA,qCAAA,qCAAA,0CAAA,yCAAA,0CAAA,wCAAA,2CAAA,0CAAA,wCAAA,0CAAA,wCAAA,qBAAA,0BAAA,yBAAA,0BAAA,wBAAA,2BAAA,0BAAA,wBAAA,0BAAA,wBAAA,6BAAA,kCAAA,iCAAA,kCAAA,gCAAA,mCAAA,kCAAA,gCAAA,kCAAA,gCAAA,mCAAA,wCAAA,uCAAA,wCAAA,sCAAA,yCAAA,wCAAA,sCAAA,wCAAA,sCAAA,iEAAA,sEAAA,qEAAA,sEAAA,oEAAA,uEAAA,sEAAA,oEAAA,sEAAA,oEAAA,gEAAA,qEAAA,oEAAA,qEAAA,mEAAA,sEAAA,qEAAA,mEAAA,qEAAA,mEAAA,sIAAA,qEAAA,qIAAA,oEAAA,qCAAA,iCAAA,yC/EhEJ,47UASA,uCAIA,yC6BlCA,0D0BhGA,6vBUnDA,qCrDoBM,uCqDpBN,uBAGE,2BAOA,kCAKF,4DrDKM,uCqDLN,6BAKE,0ErDAI,uCqDAJ","sources":["bootstrap.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_config.scss","../../scss/mixins/_border-radius.scss","../../scss/content/_type.scss","../../scss/mixins/_lists.scss","../../scss/content/_tables.scss","../../scss/layout/_breakpoints.scss","../../scss/content/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_box-shadow.scss","../../scss/content/_prose.scss","../../scss/mixins/_transition.scss","../../scss/layout/_containers.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_focus-ring.scss","../../scss/forms/_check.scss","../../scss/mixins/_mask-icon.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/forms/_strength.scss","../../scss/forms/_otp-input.scss","../../scss/forms/_form-adorn.scss","../../scss/forms/_chip-input.scss","../../scss/forms/_combobox.scss","../../scss/forms/_form-field.scss","../../scss/forms/_validation.scss","../../scss/mixins/_form-validation.scss","../../scss/buttons/_button.scss","../../scss/buttons/_button-group.scss","../../scss/buttons/_close.scss","../../scss/_accordion.scss","../../scss/_alert.scss","../../scss/_avatar.scss","../../scss/_badge.scss","../../scss/_breadcrumb.scss","../../scss/_chip.scss","../../scss/_card.scss","../../scss/_carousel.scss","../../scss/_datepicker.scss","../../scss/_dialog.scss","../../scss/mixins/_dialog-shared.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_drawer.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/mixins/_reset-text.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_tooltip.scss","../../scss/_transitions.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"sourcesContent":["@charset \"UTF-8\";\n/*!\n  * Bootstrap  v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-fg));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', monospace;;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(var(--gray-200), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --box-shadow-xs: 0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.075);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--radius-5);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--radius-5);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--radius-5);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--radius-7);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-fg: light-dark(var(--blue-600), var(--blue-400));\n  --primary-fg-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-fg-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-fg: light-dark(var(--green-600), var(--green-400));\n  --success-fg-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-fg: light-dark(var(--red-600), var(--red-400));\n  --danger-fg-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-fg: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-fg-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-fg: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-fg-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-fg: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-fg-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-fg: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-fg-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-fg: var(--fg-body);\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-bg: var(--bg-body);\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  --spacer-0: 0;\n  --spacer-1: 0.25rem;\n  --spacer-2: 0.5rem;\n  --spacer-3: 0.75rem;\n  --spacer-4: 1rem;\n  --spacer-5: 1.25rem;\n  --spacer-6: 1.5rem;\n  --spacer-7: 2rem;\n  --spacer-8: 2.5rem;\n  --spacer-9: 3rem;\n  --radius-0: 0;\n  --radius-1: 0.125rem;\n  --radius-2: 0.1875rem;\n  --radius-3: 0.25rem;\n  --radius-4: 0.375rem;\n  --radius-5: 0.5rem;\n  --radius-6: 0.625rem;\n  --radius-7: 0.75rem;\n  --radius-8: 1rem;\n  --radius-9: 1.5rem;\n  --radius-pill: 50rem;\n  color-scheme: light dark;\n  scrollbar-gutter: stable;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  iframe {\n    color-scheme: light dark;\n    border: 0;\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: transparent;\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: var(--spacer-2);\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-fg-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href], [class]), a:not([href], [class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--radius-5);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date], [type=datetime-local], [type=month], [type=week], [type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-meridiem-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button,\n  ::-webkit-outer-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n@layer content {\n  .list-unstyled {\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .list-inline-item {\n    display: inline-block;\n  }\n  .list-inline-item:not(:last-child) {\n    margin-inline-end: var(--list-inline-padding, var(--spacer)/2);\n  }\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n  .blockquote {\n    --blockquote-gap: calc(var(--spacer) / 2);\n    --blockquote-padding-x: var(--spacer);\n    --blockquote-margin-y: 1rem;\n    --blockquote-font-size: var(--font-size-md);\n    --blockquote-border-width: 0.25rem;\n    --blockquote-border-color: var(--border-color);\n    --blockquote-footer-font-size: var(--font-size-sm);\n    --blockquote-footer-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n  }\n  .blockquote > * {\n    margin-bottom: 0;\n  }\n  figure.blockquote blockquote {\n    margin-bottom: 0;\n  }\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n  }\n  .blockquote-footer::before {\n    content: \"— \";\n  }\n}\n@layer content {\n  .table {\n    --table-cell-padding-y: 0.5rem;\n    --table-cell-padding-x: 0.5rem;\n    --table-cell-vertical-align: top;\n    --table-color: var(--fg-body);\n    --table-bg: var(--bg-body);\n    --table-accent-bg: transparent;\n    --table-border-width: var(--border-width);\n    --table-border-color: var(--border-color);\n    --table-group-separator-color: currentcolor;\n    --table-striped-color: var(--table-color);\n    --table-striped-bg-factor: 5%;\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent);\n    --table-active-color: var(--table-color);\n    --table-active-bg-factor: 10%;\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent);\n    --table-hover-color: var(--table-color);\n    --table-hover-bg-factor: 7.5%;\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent);\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    width: 100%;\n    margin-bottom: var(--spacer);\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n  }\n  .table > :not(caption) > * > * {\n    padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n    color: var(--table-color-state, var(--table-color-type, var(--theme-fg, var(--table-color))));\n    background-color: var(--theme-bg-subtle, var(--table-bg));\n    border-block-end-width: var(--table-border-width);\n    box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n  }\n  .table > tbody {\n    vertical-align: inherit;\n  }\n  .table > thead {\n    vertical-align: bottom;\n  }\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n  .caption-top {\n    caption-side: top;\n  }\n  .table-sm > :not(caption) > * > * {\n    --table-cell-padding-y: .25rem;\n    --table-cell-padding-x: .25rem;\n  }\n  .table-bordered > :not(caption) > * {\n    border-width: var(--table-border-width) 0;\n  }\n  .table-bordered > :not(caption) > * > * {\n    border-width: 0 var(--table-border-width);\n  }\n  .table-borderless > :not(caption) > * > * {\n    border-block-end-width: 0;\n  }\n  .table-borderless > :not(:first-child) {\n    border-block-start-width: 0;\n  }\n  .table-striped > tbody > tr:nth-of-type(odd) > * {\n    --table-color-type: var(--theme-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-striped-columns > :not(caption) > tr > :nth-child(even) {\n    --table-color-type: var(--theme-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-fg, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    container-type: inline-size;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .sm\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 576px) {\n    .sm\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .md\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 768px) {\n    .md\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .lg\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1024px) {\n    .lg\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1280px) {\n    .xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .\\32 xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .table-stacked > thead {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n  }\n  .table-stacked > tbody > tr {\n    display: block;\n    padding-block: var(--table-cell-padding-y);\n  }\n  .table-stacked > tbody > tr + tr {\n    border-block-start: var(--table-border-width) solid var(--table-border-color);\n  }\n  .table-stacked > tbody > tr > td {\n    display: block;\n    padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n    border: 0;\n  }\n  .table-stacked > tbody > tr > td:first-child {\n    font-weight: var(--font-weight-bold);\n  }\n  .table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n    display: block;\n    font-weight: var(--font-weight-semibold);\n    content: attr(data-cell);\n  }\n  .table-stacked > tbody > tr > td:not(:first-child) + td::before {\n    margin-block-start: 0.25rem;\n  }\n  @container (width < 576px) {\n    .sm\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .sm\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .sm\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .sm\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .sm\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 768px) {\n    .md\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .md\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .md\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .md\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .md\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1024px) {\n    .lg\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .lg\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .lg\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .lg\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .lg\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1280px) {\n    .xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1536px) {\n    .\\32 xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n}\n@layer content {\n  .img-fluid {\n    max-width: 100%;\n    height: auto;\n  }\n  .img-thumbnail {\n    --thumbnail-padding: 0.25rem;\n    --thumbnail-bg: var(--bg-body);\n    --thumbnail-border-width: var(--border-width);\n    --thumbnail-border-color: var(--border-color);\n    --thumbnail-border-radius: var(--radius-5);\n    --thumbnail-box-shadow: var(--box-shadow-sm);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    border-radius: var(--thumbnail-border-radius);\n    box-shadow: var(--thumbnail-box-shadow);\n    max-width: 100%;\n    height: auto;\n  }\n  .figure {\n    --figure-gap: calc(var(--spacer) * 0.5);\n    --figure-caption-font-size: var(--font-size-sm);\n    --figure-caption-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n@layer content {\n  .prose {\n    --content-font-size: 1rem;\n    --content-line-height: 1.5;\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height));\n    --heading-color: light-dark(var(--gray-900), var(--white));\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: var(--content-line-height);\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n    }\n  }\n  .prose :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n    margin-block: 0;\n  }\n  .prose :where(ul, ol):not([class], :where(.not-prose, .not-prose *)) li:not(:last-child) {\n    margin-bottom: calc(var(--content-gap) / 4);\n  }\n  .prose :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) / 4);\n  }\n  .prose :where(hr):not(:where(.not-prose, .not-prose *)) {\n    margin: calc(var(--content-gap) * 1.5) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) {\n    margin-top: 0;\n    margin-bottom: calc(var(--content-gap) / -2);\n    font-weight: 500;\n    line-height: 1.25;\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child, :where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.75);\n  }\n  .prose :where(h3, h4, h5, h6):not(:first-child, :where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.5);\n  }\n  .prose :where(h1):not(:where(.not-prose, .not-prose *)) {\n    font-size: 2.25em;\n    line-height: 1.1;\n  }\n  .prose :where(h2):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.75em;\n  }\n  .prose :where(h3):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.5em;\n  }\n  .prose :where(h4):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.25em;\n  }\n  .prose :where(h5):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.125em;\n  }\n  .prose :where(h6):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1em;\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n    color: var(--link-color);\n    text-decoration: underline;\n    text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n    text-underline-offset: 4px;\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      transition: none;\n    }\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)):hover {\n    text-decoration-color: var(--link-hover-color);\n  }\n  .prose :where(img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n  .prose :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n    padding-inline-start: calc(var(--content-gap) / 2);\n    margin: 0;\n    border-inline-start: 4px solid var(--border-color);\n  }\n  .prose :where(table):not(:where(.not-prose, .not-prose *)) {\n    width: 100%;\n    border-spacing: 0;\n    border-collapse: collapse;\n  }\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) td,\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) th {\n    padding: 6px 12px;\n    text-align: inherit;\n    border: 1px solid var(--border-color);\n  }\n  .prose :where(dt):not(:where(.not-prose, .not-prose *)) {\n    font-weight: 500;\n  }\n  .prose :where(video, img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n}\n@layer layout {\n  .container,\n  .container-fluid,\n  .\\32 xl\\:container,\n  .xl\\:container,\n  .lg\\:container,\n  .md\\:container,\n  .sm\\:container {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .sm\\:container, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:container, .sm\\:container, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:container, .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 0.75rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 0.75rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 1.25rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 1.25rem;\n  }\n  .g-6,\n  .gx-6 {\n    --gutter-x: 1.5rem;\n  }\n  .g-6,\n  .gy-6 {\n    --gutter-y: 1.5rem;\n  }\n  .g-7,\n  .gx-7 {\n    --gutter-x: 2rem;\n  }\n  .g-7,\n  .gy-7 {\n    --gutter-y: 2rem;\n  }\n  .g-8,\n  .gx-8 {\n    --gutter-x: 2.5rem;\n  }\n  .g-8,\n  .gy-8 {\n    --gutter-y: 2.5rem;\n  }\n  .g-9,\n  .gx-9 {\n    --gutter-x: 3rem;\n  }\n  .g-9,\n  .gy-9 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .sm\\:col {\n      flex: 1 0 0;\n    }\n    .sm\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .sm\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .sm\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .sm\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .sm\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .sm\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .sm\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .sm\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .sm\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .sm\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .sm\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .sm\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .sm\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .sm\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .sm\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .sm\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .sm\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .sm\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .sm\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .sm\\:g-0,\n    .sm\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .sm\\:g-0,\n    .sm\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .sm\\:g-1,\n    .sm\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .sm\\:g-1,\n    .sm\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:col {\n      flex: 1 0 0;\n    }\n    .md\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .md\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .md\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .md\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .md\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .md\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .md\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .md\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .md\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .md\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .md\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .md\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .md\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .md\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .md\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .md\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .md\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .md\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .md\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .md\\:g-0,\n    .md\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .md\\:g-0,\n    .md\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .md\\:g-1,\n    .md\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .md\\:g-1,\n    .md\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .md\\:g-2,\n    .md\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .md\\:g-2,\n    .md\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .md\\:g-3,\n    .md\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .md\\:g-3,\n    .md\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .md\\:g-4,\n    .md\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .md\\:g-4,\n    .md\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .md\\:g-5,\n    .md\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .md\\:g-5,\n    .md\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .md\\:g-6,\n    .md\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .md\\:g-6,\n    .md\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .md\\:g-7,\n    .md\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .md\\:g-7,\n    .md\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .md\\:g-8,\n    .md\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .md\\:g-8,\n    .md\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .md\\:g-9,\n    .md\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .md\\:g-9,\n    .md\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:col {\n      flex: 1 0 0;\n    }\n    .lg\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .lg\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .lg\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .lg\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .lg\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .lg\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .lg\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .lg\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .lg\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .lg\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .lg\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .lg\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .lg\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .lg\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .lg\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .lg\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .lg\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .lg\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .lg\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .lg\\:g-0,\n    .lg\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .lg\\:g-0,\n    .lg\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .lg\\:g-1,\n    .lg\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .lg\\:g-1,\n    .lg\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:col {\n      flex: 1 0 0;\n    }\n    .xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .xl\\:g-0,\n    .xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .xl\\:g-0,\n    .xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .xl\\:g-1,\n    .xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .xl\\:g-1,\n    .xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:col {\n      flex: 1 0 0;\n    }\n    .\\32 xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .\\32 xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .\\32 xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .\\32 xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .\\32 xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .\\32 xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .\\32 xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .\\32 xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .\\32 xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .\\32 xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .\\32 xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .\\32 xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .\\32 xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .\\32 xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .\\32 xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .\\32 xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .\\32 xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .\\32 xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .\\32 xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .sm\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .sm\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .sm\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .sm\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .sm\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .sm\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .sm\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .sm\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .sm\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .sm\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .sm\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .sm\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .sm\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .sm\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .sm\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .sm\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .sm\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .sm\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .sm\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .sm\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .sm\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .sm\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .sm\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .md\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .md\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .md\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .md\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .md\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .md\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .md\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .md\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .md\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .md\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .md\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .md\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .md\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .md\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .md\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .md\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .md\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .md\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .md\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .md\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .md\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .md\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .lg\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .lg\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .lg\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .lg\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .lg\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .lg\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .lg\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .lg\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .lg\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .lg\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .lg\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .lg\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .lg\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .lg\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .lg\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .lg\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .lg\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .lg\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .lg\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .lg\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .lg\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .lg\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .\\32 xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .\\32 xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .\\32 xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .\\32 xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .\\32 xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .\\32 xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .\\32 xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .\\32 xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .\\32 xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .\\32 xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .\\32 xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .\\32 xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .\\32 xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .\\32 xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .\\32 xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .\\32 xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .\\32 xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .\\32 xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .\\32 xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .\\32 xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .\\32 xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .\\32 xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\n    color: var(--label-color, var(--fg-body));\n  }\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0;\n  }\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n@layer forms {\n  .form-text {\n    --form-text-margin-top: 0.25rem;\n    --form-text-font-size: var(--font-size-sm);\n    --form-text-color: var(--fg-2);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n@layer forms {\n  .form-control {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n    box-shadow: var(--control-box-shadow);\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control {\n      transition: none;\n    }\n  }\n  .form-control:focus-visible {\n    --focus-ring-offset: -1px;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-control::placeholder {\n    color: var(--control-placeholder-color);\n    opacity: 1;\n  }\n  .form-control:disabled {\n    color: var(--control-disabled-color);\n    background-color: var(--control-disabled-bg);\n    border-color: var(--control-disabled-border-color);\n    opacity: 1;\n  }\n  .form-control::-webkit-datetime-edit {\n    display: block;\n    height: 1.5rem;\n    padding: 0;\n    margin-bottom: -0.125rem;\n  }\n  .form-control::-webkit-datetime-edit-fields-wrapper {\n    height: 1.5rem;\n  }\n  .form-control[type=file] {\n    overflow: hidden;\n  }\n  .form-control[type=file]:not(:disabled, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control::file-selector-button {\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n    margin-inline-end: var(--control-padding-x);\n    color: var(--control-fg);\n    pointer-events: none;\n    background-color: var(--control-action-bg);\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: var(--control-border-width);\n    border-radius: 0;\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control::file-selector-button {\n      transition: none;\n    }\n  }\n  .form-control:hover:not(:disabled, [readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0;\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n  }\n  .form-control-plaintext:focus {\n    outline: 0;\n  }\n  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n    padding-inline: 0;\n  }\n  select.form-control,\n  .form-control-caret {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n  }\n  select.form-control[multiple], select.form-control[size]:not([size=\"1\"]),\n  .form-control-caret[multiple],\n  .form-control-caret[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  [data-bs-theme=dark] select.form-control,\n  [data-bs-theme=dark] .form-control-caret {\n    background-image: var(--control-select-bg-dark);\n  }\n  .form-control-sm {\n    --control-min-height: var(--btn-input-sm-min-height);\n    --control-padding-y: var(--btn-input-sm-padding-y);\n    --control-padding-x: var(--btn-input-sm-padding-x);\n    --control-font-size: var(--btn-input-sm-font-size);\n    --control-line-height: var(--btn-input-sm-line-height);\n    --control-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .form-control-lg {\n    --control-min-height: var(--btn-input-lg-min-height);\n    --control-padding-y: var(--btn-input-lg-padding-y);\n    --control-padding-x: var(--btn-input-lg-padding-x);\n    --control-font-size: var(--btn-input-lg-font-size);\n    --control-line-height: var(--btn-input-lg-line-height);\n    --control-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n  }\n  .form-control-color:not(:disabled, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n  }\n  .form-ghost:focus {\n    outline: 0;\n  }\n  .form-ghost::placeholder {\n    color: var(--fg-3);\n    opacity: 1;\n  }\n  .form-ghost:disabled {\n    color: var(--fg-4);\n    cursor: not-allowed;\n  }\n}\n@layer forms {\n  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: var(--bg-body);\n    --check-border-color: var(--border-color);\n    --check-border-radius: var(--radius-5);\n    --check-icon-checked: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e\");\n    --check-icon-indeterminate: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e\");\n    --check-checked-bg: var(--control-checked-bg);\n    --check-checked-border-color: var(--control-checked-border-color);\n    --check-indeterminate-bg: var(--control-checked-bg);\n    --check-indeterminate-border-color: var(--control-checked-border-color);\n    --check-active-bg: var(--control-active-bg);\n    --check-active-border-color: var(--control-active-border-color);\n    --check-disabled-bg: var(--control-disabled-bg);\n    --check-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    border-radius: 33%;\n  }\n  .check:checked, .check:indeterminate {\n    background-color: var(--theme-bg, var(--check-checked-bg));\n    border-color: var(--theme-bg, var(--check-checked-border-color));\n  }\n  .check:checked::before, .check:indeterminate::before {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    content: \"\";\n    background-color: var(--theme-contrast, var(--primary-contrast));\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .check:checked::before {\n    mask-image: var(--check-icon-checked);\n  }\n  .check:indeterminate::before {\n    mask-image: var(--check-icon-indeterminate);\n  }\n  .check:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: -1px;\n  }\n  .check:disabled {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:disabled ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:disabled:checked {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n  }\n  .check-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: var(--bg-body);\n    --radio-border-color: var(--border-color);\n    --radio-checked-bg: var(--control-checked-bg);\n    --radio-checked-border-color: var(--control-checked-border-color);\n    --radio-disabled-bg: var(--control-disabled-bg);\n    --radio-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    border-radius: 50%;\n  }\n  .radio:checked {\n    color: var(--theme-contrast, var(--primary-contrast));\n    background-color: var(--theme-bg, var(--radio-checked-bg));\n    border-color: var(--theme-bg, var(--radio-checked-border-color));\n  }\n  .radio:checked::before {\n    position: absolute;\n    inset: calc(var(--radio-size) * 0.25);\n    content: \"\";\n    background-color: currentcolor;\n    border-radius: 50%;\n  }\n  .radio:disabled {\n    --radio-bg: var(--radio-disabled-bg);\n  }\n  .radio:disabled ~ label {\n    color: var(--secondary-fg);\n    cursor: default;\n  }\n  .radio:disabled:checked {\n    opacity: var(--radio-disabled-opacity);\n  }\n  .radio:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n  }\n  .radio-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.75);\n    --switch-padding: 0.0625rem;\n    --switch-margin-block: 0.125rem;\n    --switch-bg: var(--bg-3);\n    --switch-border-width: var(--border-width);\n    --switch-border-color: var(--border-color);\n    --switch-indicator-bg: var(--white);\n    --switch-indicator-width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-indicator-height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-checked-bg: var(--control-checked-bg);\n    --switch-checked-border-color: var(--switch-checked-bg);\n    --switch-checked-indicator-bg: var(--white);\n    --switch-disabled-bg: var(--control-disabled-bg);\n    --switch-disabled-indicator-bg: var(--fg-3);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);\n    transition: background-color 0.15s ease-in-out;\n  }\n  .switch::before {\n    position: absolute;\n    inset-block: var(--switch-padding);\n    inset-inline-start: var(--switch-padding);\n    width: var(--switch-indicator-width);\n    height: var(--switch-indicator-height);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 10rem;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    transition: inset-inline-start 0.15s ease-in-out;\n  }\n  .switch input {\n    position: absolute;\n    inset: 0;\n    appearance: none;\n    background-color: transparent;\n    outline: 0;\n  }\n  .switch:focus-within {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .switch:has(input:disabled:not(:checked)) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled:not(:checked))::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled:not(:checked)) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch:has(input:checked) {\n    background-color: var(--theme-bg, var(--switch-checked-bg));\n    border-color: var(--theme-bg, var(--switch-checked-border-color));\n  }\n  .switch:has(input:checked)::before {\n    inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n  }\n  .switch:has(input:checked:disabled) {\n    opacity: 0.65;\n  }\n  .switch:has(input:checked:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n  }\n  .switch-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .form-range {\n    --range-track-width: 100%;\n    --range-track-height: 0.5rem;\n    --range-track-cursor: pointer;\n    --range-track-bg: var(--bg-3);\n    --range-track-border-radius: 1rem;\n    --range-track-fill-bg: var(--primary-base);\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3));\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color);\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%);\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body));\n    --range-thumb-disabled-bg: var(--fg-3);\n    --range-thumb-transition-property: background-color, border-color, box-shadow;\n    --range-thumb-transition-timing: 0.15s ease-in-out;\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing);\n    --range-tick-width: var(--border-width);\n    --range-tick-height: 0.5rem;\n    --range-tick-bg: var(--border-color);\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n  .form-range-input {\n    display: block;\n    width: 100%;\n    height: calc(var(--range-thumb-height) + var(--focus-ring-width) * 2);\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n  }\n  .form-range-input:hover::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:hover::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:focus-visible {\n    outline: 0;\n  }\n  .form-range-input:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range-input::-webkit-slider-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    background-image: var(--gradient);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range-input::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range-input::-moz-range-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    background-image: var(--gradient);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range-input::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-runnable-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input::-moz-range-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input:disabled {\n    pointer-events: none;\n  }\n  .form-range-input:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-webkit-slider-runnable-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc(var(--range-thumb-width) * 0.5 + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n  }\n  .form-range-bubble .tooltip-arrow {\n    position: absolute;\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n    left: 50%;\n    transform: translateX(-50%);\n  }\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * 0.25);\n  }\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    width: 0;\n  }\n  .form-range-tick::before {\n    width: var(--range-tick-width);\n    height: var(--range-tick-height);\n    content: \"\";\n    background-color: var(--range-tick-bg);\n  }\n  .form-range-tick:first-child {\n    align-items: flex-start;\n  }\n  .form-range-tick:last-child {\n    align-items: flex-end;\n  }\n  .form-range-tick-label {\n    margin-top: 0.125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.75rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25);\n    --form-floating-padding-y: 1rem;\n    --form-floating-input-padding-t: 1.625rem;\n    --form-floating-input-padding-b: 0.625rem;\n    --form-floating-label-height: 1.5em;\n    --form-floating-label-bg: var(--btn-input-bg);\n    --form-floating-label-disabled-bg: var(--bg-2);\n    --form-floating-label-opacity: 0.65;\n    --form-floating-label-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n    --form-floating-label-disabled-color: var(--fg-3);\n    --form-floating-transition-property: opacity, transform;\n    --form-floating-transition-timing: 0.1s ease-in-out;\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing);\n    position: relative;\n  }\n  .form-floating > label {\n    position: absolute;\n    inset-block-start: 0;\n    inset-inline-start: 0;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    height: 100%;\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    overflow: hidden;\n    color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n    text-align: start;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    pointer-events: none;\n    border: var(--border-width) solid transparent;\n    transform-origin: 0 0;\n    transition: var(--form-floating-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-floating > label {\n      transition: none;\n    }\n  }\n  .form-floating > label:has(~ textarea) {\n    align-items: flex-start;\n  }\n  .form-floating > .form-control,\n  .form-floating > .form-control-plaintext {\n    height: var(--form-floating-height);\n    min-height: var(--form-floating-height);\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    line-height: var(--form-floating-line-height);\n  }\n  .form-floating > .form-control::placeholder,\n  .form-floating > .form-control-plaintext::placeholder {\n    color: transparent;\n  }\n  .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n  .form-floating > .form-control-plaintext:focus,\n  .form-floating > .form-control-plaintext:not(:placeholder-shown) {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:-webkit-autofill,\n  .form-floating > .form-control-plaintext:-webkit-autofill {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > label:has(~ .form-control:focus),\n  .form-floating > label:has(~ .form-control:not(:placeholder-shown)),\n  .form-floating > label:has(~ .form-control-plaintext) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ .form-control:-webkit-autofill) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ textarea:focus)::after,\n  .form-floating > label:has(~ textarea:not(:placeholder-shown))::after {\n    position: absolute;\n    inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * 0.5);\n    z-index: -1;\n    height: var(--form-floating-label-height);\n    content: \"\";\n    background-color: var(--form-floating-label-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > label:has(~ textarea:disabled)::after {\n    background-color: var(--form-floating-label-disabled-bg);\n  }\n  .form-floating > label:has(~ .form-control-plaintext) {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > label:has(~ :disabled),\n  .form-floating > label:has(~ .form-control:disabled) {\n    color: var(--form-floating-label-disabled-color);\n  }\n}\n@layer components {\n  .input-group {\n    --input-group-addon-padding-y: var(--btn-input-padding-y);\n    --input-group-addon-padding-x: var(--btn-input-padding-x);\n    --input-group-addon-font-size: var(--btn-input-font-size);\n    --input-group-addon-line-height: var(--btn-input-line-height);\n    --input-group-addon-color: var(--fg-body);\n    --input-group-addon-bg: var(--bg-2);\n    --input-group-addon-border-color: var(--border-color);\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    width: 100%;\n  }\n  .input-group > .form-control,\n  .input-group > .form-floating {\n    position: relative;\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0;\n  }\n  .input-group > .form-control:focus,\n  .input-group > .form-floating:focus-within {\n    z-index: 5;\n  }\n  .input-group > .input-group-btn {\n    position: relative;\n    z-index: 2;\n  }\n  .input-group > .input-group-btn:focus {\n    z-index: 5;\n  }\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size);\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .input-group-sm > .form-control,\n  .input-group-sm > .input-group-text,\n  .input-group-sm > .btn {\n    min-height: var(--btn-input-sm-min-height);\n    padding: var(--btn-input-sm-padding-y) var(--btn-input-sm-padding-x);\n    font-size: var(--btn-input-sm-font-size);\n    border-radius: var(--btn-input-sm-border-radius);\n  }\n  .input-group-lg > .form-control,\n  .input-group-lg > .input-group-text,\n  .input-group-lg > .btn {\n    min-height: var(--btn-input-lg-min-height);\n    padding: var(--btn-input-lg-padding-y) var(--btn-input-lg-padding-x);\n    font-size: var(--btn-input-lg-font-size);\n    border-radius: var(--btn-input-lg-border-radius);\n  }\n  .input-group > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n  .input-group > .menu-toggle-split:nth-last-child(n+3),\n  .input-group > .form-floating:not(:last-child) > .form-control,\n  .input-group > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child, .menu, .input-group-ignore) {\n    margin-inline-start: calc(-1 * var(--border-width));\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .input-group > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n    border-start-start-radius: var(--btn-input-border-radius);\n    border-end-start-radius: var(--btn-input-border-radius);\n  }\n  .input-group > .form-floating:not(:first-child) > .form-control,\n  .input-group > .form-floating:not(:first-child) > .form-select {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n}\n@layer forms {\n  .strength {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-segment {\n      transition: none;\n    }\n  }\n  .strength-segment.active {\n    background-color: var(--strength-color);\n  }\n  .strength[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n  }\n  .strength[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n  }\n  .strength[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n  }\n  .strength[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n  }\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    transition: color 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-text {\n      transition: none;\n    }\n  }\n  .strength-text:empty {\n    display: none;\n  }\n  .strength-bar {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    --strength-color: transparent;\n    --strength-width: 0%;\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n  }\n  .strength-bar::after {\n    display: block;\n    width: var(--strength-width);\n    height: 100%;\n    content: \"\";\n    background-color: var(--strength-color);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-bar::after {\n      transition: none;\n    }\n  }\n  .strength-bar[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n    --strength-width: 25%;\n  }\n  .strength-bar[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n    --strength-width: 50%;\n  }\n  .strength-bar[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n    --strength-width: 75%;\n  }\n  .strength-bar[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n    --strength-width: 100%;\n  }\n}\n@layer components {\n  .otp {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-font-size);\n    --otp-gap: 0.5rem;\n    --otp-slot-fg: var(--btn-input-fg);\n    --otp-slot-bg: var(--btn-input-bg);\n    --otp-slot-border-width: var(--border-width);\n    --otp-slot-border-color: var(--border-color);\n    --otp-slot-border-radius: var(--radius-5);\n    position: relative;\n    display: flex;\n  }\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n  }\n  .otp-rendered .otp-input::selection {\n    color: transparent;\n    background-color: transparent;\n  }\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none;\n  }\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    border-radius: var(--otp-slot-border-radius);\n    box-shadow: var(--box-shadow-inset);\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .otp-slot {\n      transition: none;\n    }\n  }\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .otp-slot-active:not(.otp-slot-filled)::after {\n    width: 1px;\n    height: 50%;\n    content: \"\";\n    background-color: var(--otp-slot-fg);\n    animation: otp-caret-blink 1s step-end infinite;\n  }\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0;\n  }\n  .otp-connected .otp-slot:not(:first-child) {\n    margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n  }\n  .otp-connected .otp-slot:first-child {\n    border-start-start-radius: var(--otp-slot-border-radius);\n    border-end-start-radius: var(--otp-slot-border-radius);\n  }\n  .otp-connected .otp-slot:last-child {\n    border-start-end-radius: var(--otp-slot-border-radius);\n    border-end-end-radius: var(--otp-slot-border-radius);\n  }\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n  .otp-sm {\n    --otp-size: var(--btn-input-sm-min-height);\n    --otp-font-size: var(--btn-input-sm-font-size);\n  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n  }\n}\n@keyframes otp-caret-blink {\n  0%, 100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\n  }\n}\n@layer forms {\n  .form-adorn {\n    --form-adorn-gap: 0.375rem;\n    --form-adorn-icon-size: 1rem;\n    --form-adorn-icon-color: var(--fg-2);\n    gap: var(--form-adorn-gap);\n    align-items: center;\n  }\n  .form-adorn:focus-visible {\n    outline: 0;\n  }\n  .form-adorn:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-adorn > .form-ghost {\n    flex: 1;\n    min-width: 0;\n  }\n  .form-adorn.form-adorn-end > .form-ghost {\n    order: -1;\n  }\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n  }\n  .form-adorn-icon > svg {\n    width: var(--form-adorn-icon-size);\n    height: var(--form-adorn-icon-size);\n  }\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n@layer forms {\n  .chip-input {\n    --chip-input-padding-y: 0.75rem;\n    --chip-input-padding-x: 0.75rem;\n    --chip-input-gap: 0.375rem;\n    --chip-input-ghost-min-width: 5rem;\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n  }\n  .chip-input:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .chip-input > .form-ghost {\n    flex: 1 1 0;\n    min-width: var(--chip-input-ghost-min-width);\n    min-height: 1.75rem;\n  }\n  .chip-input.disabled, .chip-input:has(.form-ghost:disabled) {\n    cursor: not-allowed;\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled:focus-within, .chip-input:has(.form-ghost:disabled):focus-within {\n    border-color: var(--control-border-color);\n    outline: 0;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    pointer-events: none;\n    opacity: var(--control-disabled-opacity);\n  }\n}\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n  }\n  .combobox-toggle.show {\n    background-color: var(--bg-1);\n  }\n  .combobox-toggle:disabled, .combobox-toggle.disabled {\n    cursor: not-allowed;\n    opacity: 0.65;\n  }\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: 0.5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .combobox-caret {\n    flex-shrink: 0;\n    transition: transform 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .combobox-caret {\n      transition: none;\n    }\n  }\n  .show > .combobox-caret {\n    transform: rotate(180deg);\n  }\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, 0.25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n  .combobox-search-input {\n    width: 100%;\n  }\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-field > label,\n  .form-field > .form-label {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n  .form-field:has(> .check, > .radio, > .switch) {\n    grid-template-columns: auto 1fr;\n    column-gap: 0.5rem;\n    align-items: start;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .check,\n  .form-field:has(> .check, > .radio, > .switch) > .radio,\n  .form-field:has(> .check, > .radio, > .switch) > .switch {\n    grid-column: 1;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > :not(.check, .radio, .switch) {\n    grid-column: 2;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .form-label {\n    grid-column: 1/-1;\n  }\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * 0.75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    border-radius: var(--radius-7);\n  }\n  .form-field-card:hover {\n    background-color: var(--bg-1);\n  }\n  .form-field-card:has(:checked) {\n    background-color: var(--bg-1);\n    border-color: var(--border-color);\n  }\n  .form-field-card label::before {\n    position: absolute;\n    inset: 0;\n    content: \"\";\n  }\n  .form-group {\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-group > label,\n  .form-group > .form-label,\n  .form-group > legend {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--success-fg);\n  }\n  .tooltip.valid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    color: var(--success-contrast);\n    text-align: center;\n    background-color: var(--success-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] :user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] :user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-control.is-valid {\n    --control-border-color: var(--success-border);\n  }\n  .form-control.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid {\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  .check.is-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  .check.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .check:user-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .check:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.check.is-valid) .valid-feedback,\n  .form-field:has(.check.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .radio.is-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  .radio.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .radio:user-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .radio:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.radio.is-valid) .valid-feedback,\n  .form-field:has(.radio.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  .switch:has(input.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.switch input.is-valid) .valid-feedback,\n  .form-field:has(.switch input.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-valid) ~ .valid-feedback,\n  .form-range:has(.form-range-input.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-valid) .valid-feedback,\n  .form-field:has(.input-group .form-control.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  [data-bs-validate~=valid] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-valid {\n    z-index: 3;\n  }\n  .otp.is-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  .otp.is-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--danger-fg);\n  }\n  .tooltip.invalid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    color: var(--danger-contrast);\n    text-align: center;\n    background-color: var(--danger-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] :user-invalid ~ .invalid-feedback,\n  [data-bs-validate] :user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-control.is-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  .form-control.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  .check.is-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  .check.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .check:user-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .check:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.check.is-invalid) .invalid-feedback,\n  .form-field:has(.check.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .radio.is-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  .radio.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .radio:user-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .radio:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.radio.is-invalid) .invalid-feedback,\n  .form-field:has(.radio.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  .switch:has(input.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.switch input.is-invalid) .invalid-feedback,\n  .form-field:has(.switch input.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-feedback,\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n  [data-bs-validate] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-invalid {\n    z-index: 4;\n  }\n  .otp.is-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  .otp.is-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n@layer components {\n  .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n    --btn-min-height: var(--btn-input-min-height);\n    --btn-padding-x: var(--btn-input-padding-x);\n    --btn-padding-y: var(--btn-input-padding-y);\n    --btn-font-size: var(--btn-input-font-size);\n    --btn-font-weight: var(--btn-input-font-weight);\n    --btn-line-height: var(--btn-input-line-height);\n    --btn-color: var(--fg-body);\n    --btn-white-space: nowrap;\n    --btn-border-width: var(--border-width);\n    --btn-border-color: transparent;\n    --btn-border-radius: var(--radius-5);\n    --btn-hover-border-color: transparent;\n    --btn-disabled-opacity: 0.65;\n    --btn-transition-timing: 0.15s ease-in-out;\n    --btn-transition-property: color, background-color, border-color, box-shadow;\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing);\n    display: inline-flex;\n    gap: var(--btn-gap, 0.25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    cursor: pointer;\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    border-radius: var(--btn-border-radius);\n    transition: var(--btn-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n      transition: none;\n    }\n  }\n  .btn:hover, .btn-link:hover, .btn-icon:hover, .btn-solid:hover, .btn-outline:hover, .btn-subtle:hover, .btn-text:hover {\n    color: var(--btn-hover-color);\n    background-color: var(--btn-hover-bg, var(--bg-3));\n    border-color: var(--btn-hover-border-color);\n  }\n  .btn:focus-visible, .btn-link:focus-visible, .btn-icon:focus-visible, .btn-solid:focus-visible, .btn-outline:focus-visible, .btn-subtle:focus-visible, .btn-text:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn.active, .btn.show, .btn-link.active, .btn-link.show, .btn-icon.active, .btn-icon.show, .btn-solid.active, .btn-solid.show, .btn-outline.active, .btn-outline.show, .btn-subtle.active, .btn-subtle.show, .btn-text.active, .btn-text.show {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n  }\n  .btn.active:focus-visible, .btn.show:focus-visible, .btn-link.active:focus-visible, .btn-link.show:focus-visible, .btn-icon.active:focus-visible, .btn-icon.show:focus-visible, .btn-solid.active:focus-visible, .btn-solid.show:focus-visible, .btn-outline.active:focus-visible, .btn-outline.show:focus-visible, .btn-subtle.active:focus-visible, .btn-subtle.show:focus-visible, .btn-text.active:focus-visible, .btn-text.show:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .btn:disabled, .btn.disabled, fieldset:disabled .btn, .btn-link:disabled, .btn-link.disabled, fieldset:disabled .btn-link, .btn-icon:disabled, .btn-icon.disabled, fieldset:disabled .btn-icon, .btn-solid:disabled, .btn-solid.disabled, fieldset:disabled .btn-solid, .btn-outline:disabled, .btn-outline.disabled, fieldset:disabled .btn-outline, .btn-subtle:disabled, .btn-subtle.disabled, fieldset:disabled .btn-subtle, .btn-text:disabled, .btn-text.disabled, fieldset:disabled .btn-text {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    background-image: none;\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n  }\n  .btn-solid {\n    --btn-bg: var(--theme-bg);\n    --btn-color: var(--theme-contrast);\n    --btn-border-color: var(--theme-bg);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-solid:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-solid:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-solid:active, .btn-solid.active, .btn-solid.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-solid:disabled, .btn-solid.disabled, .btn-solid.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-outline {\n    --btn-bg: transparent;\n    --btn-color: var(--theme-fg);\n    --btn-border-color: var(--theme-border);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-outline:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-outline:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-outline:active, .btn-outline.active, .btn-outline.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-outline:disabled, .btn-outline.disabled, .btn-outline.btn-check:has(input:disabled) {\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-fg);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-subtle:hover {\n    --btn-hover-bg: color-mix(in oklch, var(--theme-bg-muted) 50%, var(--theme-bg-subtle));\n    --btn-hover-color: oklch(from var(--theme-fg-emphasis) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-subtle:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-subtle:active, .btn-subtle.active, .btn-subtle.btn-check:has(input:checked) {\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-subtle:disabled, .btn-subtle.disabled, .btn-subtle.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-fg);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-fg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-text:active, .btn-text.active, .btn-text.btn-check:has(input:checked) {\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:disabled, .btn-text.disabled, .btn-text.btn-check:has(input:disabled) {\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-link {\n    --btn-font-weight: var(--font-weight-normal);\n    --btn-color: var(--link-color);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-hover-color: var(--link-hover-color);\n    --btn-hover-bg: transparent;\n    --btn-hover-border-color: transparent;\n    --btn-active-color: var(--link-hover-color);\n    --btn-active-bg: transparent;\n    --btn-active-border-color: transparent;\n    --btn-disabled-color: var(--fg-3);\n    --btn-disabled-border-color: transparent;\n    color: var(--theme-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n    background-image: none;\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-fg, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-fg-emphasis, var(--btn-hover-color));\n  }\n  .btn-xs,\n  .btn-group-xs > [class*=btn-] {\n    --btn-min-height: var(--btn-input-xs-min-height);\n    --btn-padding-y: var(--btn-input-xs-padding-y);\n    --btn-padding-x: var(--btn-input-xs-padding-x);\n    --btn-font-size: var(--btn-input-xs-font-size);\n    --btn-line-height: var(--btn-input-xs-line-height);\n    --btn-border-radius: var(--btn-input-xs-border-radius);\n  }\n  .btn-sm,\n  .btn-group-sm > [class*=btn-] {\n    --btn-min-height: var(--btn-input-sm-min-height);\n    --btn-padding-y: var(--btn-input-sm-padding-y);\n    --btn-padding-x: var(--btn-input-sm-padding-x);\n    --btn-font-size: var(--btn-input-sm-font-size);\n    --btn-line-height: var(--btn-input-sm-line-height);\n    --btn-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .btn-lg,\n  .btn-group-lg > [class*=btn-] {\n    --btn-min-height: var(--btn-input-lg-min-height);\n    --btn-padding-y: var(--btn-input-lg-padding-y);\n    --btn-padding-x: var(--btn-input-lg-padding-x);\n    --btn-font-size: var(--btn-input-lg-font-size);\n    --btn-line-height: var(--btn-input-lg-line-height);\n    --btn-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n  .btn-check > input {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none;\n  }\n  .btn-check:has(input:checked) {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    background-image: none;\n    border-color: var(--btn-active-border-color);\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-check:has(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn-check:has(input:disabled) {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    background-image: none;\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n    box-shadow: none;\n  }\n  .btn-styled {\n    --btn-gradient-start: rgba(255, 255, 255, 0.125);\n    --btn-gradient-end: rgba(0, 0, 0, 0.075);\n    --btn-border-mix-color: #000;\n    --btn-border-mix-amount: 10%;\n    --btn-border-hover-mix-amount: 12.5%;\n    --btn-border-active-mix-amount: 20%;\n    --btn-shadow: 0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%);\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n  }\n  .btn-styled:hover {\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n  }\n  .btn-styled:active, .btn-styled.active {\n    background-image: none;\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-styled:disabled, .btn-styled.disabled {\n    background-image: none;\n    box-shadow: none;\n  }\n}\n@layer components {\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle;\n  }\n  .btn-group > [class*=btn-],\n  .btn-group-vertical > [class*=btn-] {\n    position: relative;\n    flex: 1 1 auto;\n  }\n  .btn-group > [class*=btn-]:hover,\n  .btn-group-vertical > [class*=btn-]:hover {\n    z-index: 1;\n  }\n  .btn-group > .btn-check:has(input:checked),\n  .btn-group > [class*=btn-]:active,\n  .btn-group > [class*=btn-].active,\n  .btn-group-vertical > .btn-check:has(input:checked),\n  .btn-group-vertical > [class*=btn-]:active,\n  .btn-group-vertical > [class*=btn-].active {\n    z-index: 2;\n  }\n  .btn-group > .btn-check:has(input:focus),\n  .btn-group > [class*=btn-]:focus,\n  .btn-group-vertical > .btn-check:has(input:focus),\n  .btn-group-vertical > [class*=btn-]:focus {\n    z-index: 3;\n  }\n  .btn-group-divider > [class*=btn-] + [class*=btn-]::before {\n    position: absolute;\n    z-index: 3;\n    content: \"\";\n    background-color: var(--btn-color);\n    opacity: 0.25;\n  }\n  .btn-group:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: 25%;\n    bottom: 25%;\n    left: calc(var(--btn-border-width) * -1);\n    width: var(--btn-border-width);\n  }\n  .btn-group-vertical:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: calc(var(--btn-border-width) * -1);\n    right: var(--btn-padding-x);\n    left: var(--btn-padding-x);\n    height: var(--btn-border-width);\n  }\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    justify-content: flex-start;\n  }\n  .btn-toolbar .input-group {\n    width: auto;\n  }\n  .btn-group {\n    border-radius: var(--btn-border-radius);\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) {\n    margin-inline-start: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group > [class*=btn-]:not(:last-child, :has(+ .menu)),\n  .btn-group > .btn-group:not(:last-child) > [class*=btn-] {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n  }\n  .btn-group-vertical > [class*=btn-],\n  .btn-group-vertical > .btn-group {\n    width: 100%;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) {\n    margin-top: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group-vertical > [class*=btn-]:not(:last-child, :has(+ .menu)),\n  .btn-group-vertical > .btn-group:not(:last-child) > [class*=btn-] {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n}\n@layer components {\n  .btn-close {\n    --btn-close-size: 1.5rem;\n    --btn-close-color: inherit;\n    --btn-close-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e\");\n    --btn-close-opacity: 0.5;\n    --btn-close-hover-opacity: 0.75;\n    --btn-close-focus-opacity: 0.85;\n    --btn-close-disabled-opacity: 0.25;\n    box-sizing: content-box;\n    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0;\n    border-radius: var(--radius-5);\n    opacity: var(--btn-close-opacity);\n    mask-image: var(--btn-close-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .btn-close:hover {\n    color: var(--btn-close-color);\n    text-decoration: none;\n    opacity: var(--btn-close-hover-opacity);\n  }\n  .btn-close:focus-visible {\n    opacity: var(--btn-close-focus-opacity);\n    outline: var(--focus-ring);\n  }\n  .btn-close:disabled, .btn-close.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: var(--btn-close-disabled-opacity);\n  }\n}\n@layer components {\n  .accordion {\n    --accordion-padding-x: 1.25rem;\n    --accordion-padding-y: 1rem;\n    --accordion-color: var(--fg-body);\n    --accordion-bg: var(--bg-body);\n    --accordion-transition-property: color, background-color, border-radius;\n    --accordion-transition-timing: .15s ease-in-out;\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing);\n    --accordion-border-color: var(--border-color);\n    --accordion-border-width: var(--border-width);\n    --accordion-border-radius: var(--accordion-radius, var(--radius-7));\n    --accordion-btn-color: var(--fg-2);\n    --accordion-btn-bg: var(--bg-body);\n    --accordion-btn-icon-width: 1rem;\n    --accordion-btn-icon-transform: rotate(-180deg);\n    --accordion-btn-icon-transition: transform 0.2s ease-in-out;\n    --accordion-active-color: var(--fg);\n    --accordion-active-bg: var(--bg-2);\n  }\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none;\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    transition: var(--accordion-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header {\n      transition: none;\n    }\n  }\n  .accordion-header::-webkit-details-marker {\n    display: none;\n  }\n  .accordion-header .accordion-icon {\n    flex-shrink: 0;\n    width: var(--accordion-btn-icon-width);\n    height: var(--accordion-btn-icon-width);\n    margin-inline-start: auto;\n    color: currentcolor;\n    transition: var(--accordion-btn-icon-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header .accordion-icon {\n      transition: none;\n    }\n  }\n  .accordion-header:hover {\n    z-index: 2;\n  }\n  .accordion-header:focus-visible {\n    position: relative;\n    z-index: 3;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    outline-offset: -1px;\n  }\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .accordion-item {\n      interpolate-size: allow-keywords;\n    }\n  }\n  .accordion-item::details-content {\n    block-size: 0;\n    overflow-y: clip;\n    transition: content-visibility 0.2s allow-discrete, block-size 0.2s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-item::details-content {\n      transition: none;\n    }\n  }\n  .accordion-item:first-of-type {\n    border-start-start-radius: var(--accordion-border-radius);\n    border-start-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:first-of-type > .accordion-header {\n    border-start-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-start-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:not(:first-of-type) {\n    border-block-start: 0;\n  }\n  .accordion-item:last-of-type {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:last-of-type > .accordion-header {\n    border-end-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-end-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:last-of-type > .accordion-body {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item[open] {\n    border-color: var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open]::details-content {\n    block-size: auto;\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-fg, var(--accordion-active-color));\n    background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n    box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header .accordion-icon {\n    transform: var(--accordion-btn-icon-transform);\n  }\n  .accordion-item[open]:last-of-type > .accordion-header {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n  .accordion-flush > .accordion-item {\n    border-inline: 0;\n    border-radius: 0;\n  }\n  .accordion-flush > .accordion-item:first-child {\n    border-block-start: 0;\n  }\n  .accordion-flush > .accordion-item:last-child {\n    border-block-end: 0;\n  }\n  .accordion-flush > .accordion-item > .accordion-header,\n  .accordion-flush > .accordion-item > .accordion-body {\n    border-radius: 0;\n  }\n}\n@layer components {\n  .alert {\n    --alert-gap: var(--spacer-3);\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: var(--spacer);\n    --alert-padding-y: var(--spacer);\n    --alert-color: var(--theme-fg, inherit);\n    --alert-border-color: var(--theme-border, var(--border-color));\n    --alert-border: var(--border-width) solid var(--alert-border-color);\n    --alert-border-radius: var(--radius-5);\n    --alert-link-color: inherit;\n    --hr-border-color: var(--theme-border, var(--border-color));\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    border-radius: var(--alert-border-radius);\n  }\n  .alert > p {\n    margin-bottom: 0;\n  }\n  .alert-heading {\n    color: inherit;\n  }\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n@layer components {\n  .avatar {\n    --avatar-size: 2.5rem;\n    --avatar-border-radius: 50%;\n    --avatar-border-width: 2px;\n    --avatar-border-color: var(--bg-body);\n    --avatar-bg: var(--bg-2);\n    --avatar-color: var(--fg-body);\n    --avatar-status-size: 0.75rem;\n    --avatar-status-border-width: 2px;\n    --avatar-status-border-color: var(--bg-body);\n    --avatar-stack-spacing: -0.3;\n    --avatar-stack-transition: transform .2s ease-in-out;\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * 0.4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    border-radius: var(--avatar-border-radius);\n  }\n  .avatar > .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    border-radius: var(--avatar-border-radius, 50%);\n  }\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    border-radius: 50%;\n  }\n  .avatar-status.status-online {\n    background-color: var(--green-500);\n  }\n  .avatar-status.status-offline {\n    background-color: var(--gray-400);\n    border-radius: 20%;\n  }\n  .avatar-status.status-busy {\n    background-color: var(--red-500);\n    border-radius: 20%;\n  }\n  .avatar-status.status-away {\n    background-color: var(--yellow-500);\n  }\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n  }\n  .avatar-stack .avatar {\n    margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n    border: var(--avatar-border-width) solid var(--avatar-border-color);\n    mask-image: none;\n    transition: var(--avatar-stack-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .avatar-stack .avatar {\n      transition: none;\n    }\n  }\n  .avatar-stack .avatar:last-child {\n    margin-left: 0;\n  }\n  .avatar-stack .avatar:hover {\n    z-index: 1;\n    transform: translateY(-2px);\n  }\n  .avatar-xs,\n  .avatar-stack-xs > .avatar {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm > .avatar {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg > .avatar {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n    --avatar-border-width: 3px;\n  }\n  .avatar-xl,\n  .avatar-stack-xl > .avatar {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n    --avatar-border-width: 4px;\n  }\n}\n@layer components {\n  .badge {\n    --badge-padding-x: 0.625em;\n    --badge-padding-y: 0.25em;\n    --badge-font-size: clamp(12px, 0.75em, 0.75em);\n    --badge-font-weight: var(--font-weight-semibold);\n    --badge-color: inherit;\n    --badge-bg: var(--bg-2);\n    --badge-border-width: var(--border-width);\n    --badge-border-color: transparent;\n    --badge-border-radius: var(--radius-7);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    border-radius: var(--badge-border-radius);\n  }\n  .badge:empty {\n    display: none;\n  }\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n  .badge-subtle {\n    --badge-color: var(--theme-fg);\n    --badge-bg: var(--theme-bg-subtle);\n    --badge-border-color: transparent;\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n  .badge-outline {\n    --badge-color: var(--theme-fg);\n    --badge-bg: transparent;\n    --badge-border-color: var(--theme-border);\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n}\n@layer components {\n  .breadcrumb {\n    --breadcrumb-margin-bottom: 1rem;\n    --breadcrumb-font-size: inherit;\n    --breadcrumb-bg: transparent;\n    --breadcrumb-border-radius: var(--radius-5);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-divider-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e\");\n    --breadcrumb-divider-width: 0.375rem;\n    --breadcrumb-divider-height: 0.75rem;\n    --breadcrumb-link-padding-x: 0.75rem;\n    --breadcrumb-link-padding-y: 0.25rem;\n    --breadcrumb-link-color: var(--fg-3);\n    --breadcrumb-link-hover-color: var(--fg-2);\n    --breadcrumb-link-hover-bg: var(--bg-1);\n    --breadcrumb-link-active-color: var(--fg-1);\n    --breadcrumb-link-border-radius: var(--radius-7);\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style-type: \"\";\n    background-color: var(--breadcrumb-bg);\n    border-radius: var(--breadcrumb-border-radius);\n  }\n  .breadcrumb-item {\n    display: flex;\n  }\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n  .breadcrumb-divider:empty::before {\n    display: block;\n    width: var(--breadcrumb-divider-width);\n    height: var(--breadcrumb-divider-height);\n    content: \"\";\n    background-color: currentcolor;\n    mask-image: var(--breadcrumb-divider-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    border-radius: var(--breadcrumb-link-border-radius);\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .breadcrumb-link {\n      transition: none;\n    }\n  }\n  .breadcrumb-link:hover {\n    z-index: 2;\n    color: var(--breadcrumb-link-hover-color);\n    background-color: var(--breadcrumb-link-hover-bg);\n  }\n  .breadcrumb-link.active {\n    color: var(--breadcrumb-link-active-color);\n  }\n}\n@layer components {\n  .chip {\n    --chip-height: 1.75rem;\n    --chip-padding-x: 0.625rem;\n    --chip-gap: 0.3125rem;\n    --chip-border-radius: var(--radius-pill);\n    --chip-img-size: 1.25rem;\n    --chip-icon-size: 1rem;\n    --chip-dismiss-size: 1rem;\n    --chip-dismiss-opacity: 0.65;\n    --chip-dismiss-hover-opacity: 1;\n    --chip-color: var(--theme-fg, var(--fg-body));\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2));\n    --chip-border-color: transparent;\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast));\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg));\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg));\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    border-radius: var(--chip-border-radius);\n  }\n  .chip:hover {\n    --chip-bg: var(--theme-bg-muted, var(--bg-3));\n  }\n  .chip:focus-visible {\n    outline: 0;\n  }\n  .chip.active {\n    --chip-color: var(--chip-selected-color);\n    --chip-bg: var(--chip-selected-bg);\n    --chip-border-color: var(--chip-selected-border-color);\n  }\n  .chip.active:hover {\n    --chip-bg: var(--chip-selected-bg);\n    opacity: 0.9;\n  }\n  .chip.disabled, .chip:disabled {\n    pointer-events: none;\n    opacity: 0.65;\n  }\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    border-radius: 50%;\n  }\n  .chip-img:first-child {\n    margin-inline-start: -0.375rem;\n  }\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -0.25);\n  }\n  .chip-icon > svg {\n    display: block;\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n  }\n  .chip-icon > img {\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n    object-fit: cover;\n    border-radius: 50%;\n  }\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    margin-inline-end: calc(var(--chip-padding-x) * -0.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n  }\n  .chip-dismiss:hover {\n    opacity: var(--chip-dismiss-hover-opacity);\n  }\n  .chip-dismiss:focus-visible {\n    outline: 0;\n    opacity: 1;\n    outline: var(--focus-ring);\n  }\n  .chip-dismiss > svg {\n    display: block;\n    width: var(--chip-dismiss-size);\n    height: var(--chip-dismiss-size);\n  }\n}\n@layer components {\n  .card {\n    --card-spacer-y: var(--spacer-5);\n    --card-spacer-x: var(--spacer-5);\n    --card-subtitle-color: inherit;\n    --card-border-width: var(--border-width);\n    --card-border-color: var(--border-color-translucent);\n    --card-border-radius: var(--radius-7);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --card-cap-padding-y: var(--spacer-3);\n    --card-cap-padding-x: var(--spacer);\n    --card-cap-bg: var(--bg-1);\n    --card-cap-color: inherit;\n    --card-height: auto;\n    --card-color: inherit;\n    --card-bg: var(--bg-body);\n    --card-img-overlay-padding: var(--card-spacer-y);\n    --card-group-margin: 0.75rem;\n    --card-body-gap: calc(var(--card-spacer-y) * 0.5);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    border-radius: var(--card-border-radius);\n    box-shadow: var(--card-box-shadow);\n  }\n  .card > hr {\n    margin-inline: 0;\n  }\n  .card-body {\n    display: flex;\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body > * {\n    margin-block: 0;\n  }\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body:first-child,\n  .card-list:first-child {\n    border-start-start-radius: var(--card-border-radius);\n    border-start-end-radius: var(--card-border-radius);\n    border-top-width: var(--card-border-width);\n  }\n  .card-body:last-child,\n  .card-list:last-child {\n    border-end-start-radius: var(--card-border-radius);\n    border-end-end-radius: var(--card-border-radius);\n    border-bottom-width: var(--card-border-width);\n  }\n  .card-body:not(:first-child, :last-child),\n  .card-list:not(:first-child, :last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-body:has(+ .card-footer),\n  .card-list:has(+ .card-footer) {\n    border-block-end-width: 0;\n  }\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -0.5);\n  }\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0;\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-header:first-child {\n    border-radius: var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0;\n  }\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-footer:last-child {\n    border-radius: 0 0 var(--card-inner-border-radius) var(--card-inner-border-radius);\n  }\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .card-translucent .card-header,\n  .card-translucent .card-footer {\n    background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n  }\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-header {\n    color: var(--theme-fg-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-footer {\n    color: var(--theme-fg-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-body,\n  .card-subtle .card-list {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .nav.card-header-tabs {\n    margin-inline: calc(-0.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y) - var(--nav-tabs-border-width));\n    border-block-end: 0;\n  }\n  .nav.card-header-tabs .nav-link.active {\n    background-color: var(--card-bg);\n    border-block-end-color: var(--card-bg);\n  }\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    border-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%;\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n  .card-img,\n  .card-img-top {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-start-end-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-bottom {\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-row {\n    flex-direction: row;\n  }\n  .card-row .card-body,\n  .card-row .card-list {\n    border-width: var(--card-border-width) 0;\n    border-radius: 0;\n  }\n  .card-row .card-body:first-child,\n  .card-row .card-list:first-child {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-inline-start-width: var(--card-border-width);\n  }\n  .card-row .card-body:last-child,\n  .card-row .card-list:last-child {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-row .card-body:not(:first-child, :last-child),\n  .card-row .card-list:not(:first-child, :last-child) {\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-img-start {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n  }\n  .card-img-end {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-group > .card {\n    margin-bottom: var(--card-group-margin);\n  }\n  @container (width >= 576px) {\n    .card-group {\n      display: flex;\n      flex-flow: row wrap;\n    }\n    .card-group > .card {\n      flex: 1 0 0;\n      margin-bottom: 0;\n    }\n    .card-group > .card + .card {\n      margin-inline-start: calc(-1 * var(--card-border-width));\n    }\n    .card-group > .card:not(:last-child) {\n      border-start-end-radius: 0;\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-top,\n    .card-group > .card:not(:last-child) > .card-header,\n    .card-group > .card:not(:last-child) > .card-body {\n      border-start-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-bottom,\n    .card-group > .card:not(:last-child) > .card-footer,\n    .card-group > .card:not(:last-child) > .card-body {\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:first-child) {\n      border-start-start-radius: 0;\n      border-end-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-top,\n    .card-group > .card:not(:first-child) > .card-header,\n    .card-group > .card:not(:first-child) > .card-body {\n      border-start-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-bottom,\n    .card-group > .card:not(:first-child) > .card-footer,\n    .card-group > .card:not(:first-child) > .card-body {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    --carousel-gap: 0.75rem;\n    --carousel-indicator-bg: var(--fg-3);\n    --carousel-indicator-width: 0.75rem;\n    --carousel-indicator-height: 0.75rem;\n    --carousel-indicator-spacer: 0.25rem;\n    --carousel-indicator-transition: opacity .6s ease, width .3s ease;\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg);\n    --carousel-control-icon-width: 1rem;\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n    --carousel-control-next-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n    --carousel-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\");\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\");\n    --carousel-items: 1;\n    --carousel-items-gap: 0px;\n    --carousel-items-peek: 0px;\n    --carousel-fade-duration: 0.6s;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none;\n  }\n  .carousel-inner::-webkit-scrollbar {\n    display: none;\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n  .carousel-item {\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n  .carousel-center .carousel-item {\n    scroll-snap-align: center;\n  }\n  .carousel-auto .carousel-item {\n    flex-basis: auto;\n  }\n  .carousel-fade .carousel-inner {\n    display: grid;\n    overflow: hidden;\n    scroll-snap-type: none;\n  }\n  .carousel-fade .carousel-item {\n    grid-area: 1/1;\n    width: 100%;\n    visibility: hidden;\n    opacity: 0;\n    transition: opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-fade .carousel-item.active {\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--carousel-fade-duration) ease;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item.active {\n      transition: none;\n    }\n  }\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    mask-repeat: no-repeat;\n    mask-position: 50%;\n    mask-size: 100% 100%;\n  }\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n  [dir=rtl] .carousel-icon-prev,\n  [dir=rtl] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-pause {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-play {\n    display: inline-block;\n  }\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n  }\n  .carousel-indicators [data-bs-target] {\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    cursor: pointer;\n    background-color: transparent;\n    border: 1px solid var(--carousel-indicator-bg);\n    border-radius: var(--carousel-indicator-width);\n    transition: var(--carousel-indicator-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-indicators [data-bs-target] {\n      transition: none;\n    }\n  }\n  .carousel-indicators .active {\n    width: calc(var(--carousel-indicator-width) * 2.5);\n    background-color: var(--carousel-indicator-bg);\n    border-color: var(--carousel-indicator-bg);\n  }\n  @keyframes carousel-indicator-progress {\n    from {\n      inline-size: 0;\n    }\n    to {\n      inline-size: 100%;\n    }\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-playing .carousel-indicators .active {\n      position: relative;\n      overflow: hidden;\n      background-color: transparent;\n    }\n    .carousel-playing .carousel-indicators .active::after {\n      position: absolute;\n      inset-block: 0;\n      inset-inline-start: 0;\n      inline-size: 0;\n      content: \"\";\n      background-color: var(--carousel-indicator-progress-bg);\n      animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n    }\n  }\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n  }\n  .carousel-overlay .carousel-overlay-controls {\n    position: absolute;\n    inset-block-end: 1rem;\n    inset-inline: 1rem;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n}\n@layer components {\n  [data-vc=calendar] {\n    --datepicker-padding: 1rem;\n    --datepicker-bg: var(--bg-body);\n    --datepicker-color: var(--fg-body);\n    --datepicker-border-color: var(--border-color-translucent);\n    --datepicker-border-width: var(--border-width);\n    --datepicker-border-radius: var(--radius-7);\n    --datepicker-box-shadow: var(--box-shadow);\n    --datepicker-font-size: var(--font-size-sm);\n    --datepicker-min-width: 280px;\n    --datepicker-zindex: 1000;\n    --datepicker-header-font-weight: 600;\n    --datepicker-weekday-color: var(--fg-3);\n    --datepicker-day-hover-bg: var(--bg-1);\n    --datepicker-day-selected-bg: var(--primary-bg);\n    --datepicker-day-selected-color: var(--primary-contrast);\n    --datepicker-day-today-bg: var(--bg-2);\n    --datepicker-day-today-color: var(--fg-1);\n    --datepicker-day-disabled-color: var(--fg-4);\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    border-radius: var(--datepicker-border-radius);\n  }\n  [data-vc=calendar][data-bs-theme=light] {\n    color-scheme: light;\n  }\n  [data-vc=calendar][data-bs-theme=dark] {\n    color-scheme: dark;\n  }\n  [data-vc=calendar] button:focus-visible {\n    position: relative;\n    z-index: 1;\n    outline: var(--focus-ring);\n  }\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n  [data-vc=calendar]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n  [data-vc-position=bottom] {\n    margin-block-start: 0.25rem;\n  }\n  [data-vc-position=top] {\n    margin-block-end: -0.25rem;\n  }\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: var(--datepicker-color);\n    mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n    mask-repeat: no-repeat;\n    mask-position: center;\n  }\n  [data-vc-arrow]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-arrow=prev]::before {\n    transform: rotate(90deg);\n  }\n  [data-vc-arrow=next]::before {\n    transform: rotate(-90deg);\n  }\n  [data-vc=controls] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n  [data-vc=grid] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n  [data-vc=column] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n  [data-vc=header] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: 0.75rem;\n  }\n  [data-vc-header=content] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n  [data-vc=month],\n  [data-vc=year] {\n    padding: 0.25rem 0.5rem;\n    margin-inline: -0.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc=month]:disabled,\n  [data-vc=year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc=month]:hover:not(:disabled),\n  [data-vc=year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc=content] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n  [data-vc=months],\n  [data-vc=years] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: 0.25rem;\n    align-items: center;\n  }\n  [data-vc=years] {\n    --vc-columns: 5;\n  }\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: 0.25rem;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-months-month]:disabled,\n  [data-vc-years-year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc-months-month]:hover:not(:disabled),\n  [data-vc-years-year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected], [data-vc-months-month][data-vc-years-year-selected],\n  [data-vc-years-year][data-vc-months-month-selected],\n  [data-vc-years-year][data-vc-years-year-selected] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected]:hover, [data-vc-months-month][data-vc-years-year-selected]:hover,\n  [data-vc-years-year][data-vc-months-month-selected]:hover,\n  [data-vc-years-year][data-vc-years-year-selected]:hover {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc=week] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: 0.5rem;\n  }\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n  [data-vc=dates] {\n    pointer-events: none;\n  }\n  [data-vc-dates=row] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: 0.125rem;\n    padding-bottom: 0.125rem;\n    pointer-events: auto;\n  }\n  [data-vc-date]:not(:has([data-vc-date-btn])), [data-vc-date][data-vc-date-disabled], [data-vc-date][data-vc-date-disabled] [data-vc-date-btn] {\n    pointer-events: none;\n  }\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: 0.75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-date-btn]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n  [data-vc-date-month=next] [data-vc-date-btn],\n  [data-vc-date-month=prev] [data-vc-date-btn] {\n    opacity: 0.5;\n  }\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n  [data-vc-date-hover=first] [data-vc-date-btn] {\n    border-start-start-radius: var(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=middle] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: 0.8;\n  }\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-date-selected=first] [data-vc-date-btn] {\n    border-top-left-radius: var(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n@layer components {\n  :root.dialog-open {\n    overflow: hidden;\n  }\n  .dialog {\n    --dialog-padding: 1rem;\n    --dialog-width: 500px;\n    --dialog-margin: 1.75rem;\n    --dialog-color: var(--fg-body);\n    --dialog-bg: var(--bg-body);\n    --dialog-border-color: var(--border-color-translucent);\n    --dialog-border-width: var(--border-width);\n    --dialog-border-radius: var(--radius-7);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-transition-duration: 0.3s;\n    --dialog-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --dialog-backdrop-bg: light-dark(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.65));\n    --dialog-backdrop-blur: 8px;\n    --dialog-header-padding: 1rem;\n    --dialog-header-border-color: var(--border-color-translucent);\n    --dialog-header-border-width: var(--border-width);\n    --dialog-footer-padding: 1rem;\n    --dialog-footer-border-color: var(--border-color-translucent);\n    --dialog-footer-border-width: var(--border-width);\n    --dialog-footer-gap: 0.5rem;\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog:not(.dialog-instant) {\n    opacity: 0;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s var(--dialog-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).dialog-slide-down {\n    transform: translateY(-3rem);\n  }\n  .dialog:not(.dialog-instant).dialog-slide-up {\n    transform: translateY(3rem);\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)[open]:not(.hiding) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    transform: none;\n  }\n  .dialog:not(.dialog-instant)[open].dialog-static:not(.hiding) {\n    transform: scale(1.02);\n  }\n  .dialog:not(.dialog-instant)::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n    transition: background-color var(--dialog-transition-duration) var(--dialog-transition-timing), backdrop-filter var(--dialog-transition-duration) var(--dialog-transition-timing), display var(--dialog-transition-duration) allow-discrete, overlay var(--dialog-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)::backdrop {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).hiding::backdrop {\n    background-color: transparent;\n    backdrop-filter: blur(0);\n  }\n  .dialog.dialog-instant::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transform: none;\n  }\n  .dialog.dialog-nonmodal {\n    position: fixed;\n    inset-block-start: 50%;\n    inset-inline-start: 50%;\n    z-index: 1055;\n    margin-inline: 0;\n    transform: translate(-50%, -50%);\n  }\n  .dialog.dialog-scrollable[open] {\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n  }\n  .dialog-sm {\n    --dialog-width: 280px;\n  }\n  .dialog-lg {\n    --dialog-width: 800px;\n  }\n  .dialog-xl {\n    --dialog-width: 1140px;\n  }\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n  @media (width < 576px) {\n    .sm-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 768px) {\n    .md-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n  }\n  .dialog-header .btn-close {\n    margin-inline-start: auto;\n  }\n  .dialog-title {\n    margin-bottom: 0;\n    line-height: 1.5;\n    font-size: var(--font-size-md);\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n  }\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n@layer components {\n  .menu {\n    --menu-zindex: 1000;\n    --menu-gap: 0.125rem;\n    --menu-min-width: 10rem;\n    --menu-padding-x: 0.25rem;\n    --menu-padding-y: 0.25rem;\n    --menu-spacer: 0.125rem;\n    --menu-font-size: var(--font-size-sm);\n    --menu-color: var(--fg-body);\n    --menu-bg: var(--bg-body);\n    --menu-box-shadow: var(--box-shadow);\n    --menu-divider-bg: var(--border-color-translucent);\n    --menu-divider-margin-y: 0.125rem;\n    --menu-divider-margin-x: 0.25rem;\n    --menu-item-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-bg: var(--bg-1);\n    --menu-item-active-color: var(--primary-contrast);\n    --menu-item-active-bg: var(--primary-bg);\n    --menu-item-disabled-color: var(--fg-3);\n    --menu-item-gap: 0.5rem;\n    --menu-item-padding-x: 0.75rem;\n    --menu-item-padding-y: 0.25rem;\n    --menu-item-border-radius: var(--radius-5);\n    --menu-icon-size: 1rem;\n    --menu-description-font-size: var(--font-size-xs);\n    --menu-check-color: currentcolor;\n    --menu-header-color: var(--fg-3);\n    --menu-header-padding-x: 0.75rem;\n    --menu-header-padding-y: 0.25rem;\n    --menu-transition-duration: 0.15s;\n    --menu-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style-type: \"\";\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    border-radius: var(--menu-border-radius, var(--radius-7));\n    box-shadow: var(--menu-box-shadow);\n    opacity: 0;\n    transform: scale(0.95);\n    transform-origin: top start;\n  }\n  .menu[data-bs-placement^=top] {\n    transform-origin: bottom start;\n  }\n  .menu[data-bs-placement=bottom-end] {\n    transform-origin: top end;\n  }\n  .menu[data-bs-placement=top-end] {\n    transform-origin: bottom end;\n  }\n  .menu[data-bs-placement^=left] {\n    transform-origin: top end;\n  }\n  .menu {\n    transition: opacity var(--menu-transition-duration) var(--menu-transition-timing), transform var(--menu-transition-duration) var(--menu-transition-timing), display var(--menu-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .menu {\n      transition: none;\n    }\n  }\n  .menu.show {\n    display: flex;\n    opacity: 1;\n    transform: none;\n  }\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(0.95);\n    }\n  }\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-fg, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    border-radius: var(--menu-item-border-radius, 0);\n  }\n  .menu-item:hover, .menu-item:focus {\n    color: var(--theme-fg-emphasis, var(--menu-item-hover-color));\n    background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n  }\n  .menu-item.active, .menu-item:active {\n    color: var(--theme-contrast, var(--menu-item-active-color));\n    background-color: var(--theme-bg, var(--menu-item-active-bg));\n  }\n  .menu-item.active .menu-item-icon, .menu-item:active .menu-item-icon {\n    color: inherit !important;\n  }\n  .menu-item.selected {\n    font-weight: 600;\n  }\n  .menu-item.disabled, .menu-item:disabled {\n    color: var(--menu-item-disabled-color);\n    pointer-events: none;\n    background-color: transparent;\n    background-image: none;\n  }\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: 0.125rem;\n  }\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: 0.125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n  }\n  .selected > .menu-item-check {\n    visibility: visible;\n  }\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n  .submenu {\n    position: relative;\n  }\n  .submenu > .menu-item {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .submenu > .menu-item::after {\n    display: inline-block;\n    flex-shrink: 0;\n    width: 0.375em;\n    height: 0.375em;\n    margin-inline-start: auto;\n    content: \"\";\n    border-color: currentcolor;\n    border-style: solid;\n    border-width: 0 0.125em 0.125em 0;\n    transform: rotate(-45deg);\n  }\n  [dir=rtl] .submenu > .menu-item::after {\n    transform: rotate(135deg);\n  }\n  .submenu > .menu {\n    top: 0;\n    margin-top: calc(-1 * var(--menu-padding-y));\n  }\n  .submenu:hover > .menu-item, .submenu:focus-within > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n  .submenu.show > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n}\n@layer components {\n  .list-group {\n    --list-group-color: var(--fg-body);\n    --list-group-bg: var(--bg-body);\n    --list-group-border-color: var(--border-color);\n    --list-group-border-width: var(--border-width);\n    --list-group-border-radius: var(--radius-5);\n    --list-group-item-padding-x: var(--spacer);\n    --list-group-item-padding-y: var(--spacer-2);\n    --list-group-action-color: var(--fg-2);\n    --list-group-action-hover-color: var(--fg-1);\n    --list-group-action-hover-bg: var(--bg-1);\n    --list-group-action-active-color: var(--fg-body);\n    --list-group-action-active-bg: var(--bg-2);\n    --list-group-disabled-color: var(--fg-3);\n    --list-group-disabled-bg: var(--bg-body);\n    --list-group-active-color: var(--primary-contrast);\n    --list-group-active-bg: var(--primary-bg);\n    --list-group-active-border-color: var(--primary-bg);\n    display: flex;\n    flex-direction: column;\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    border-radius: var(--list-group-border-radius);\n  }\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n  }\n  .list-group-numbered > .list-group-item::before {\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-fg, var(--list-group-color));\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n  }\n  .list-group-item:first-child {\n    border-start-start-radius: inherit;\n    border-start-end-radius: inherit;\n  }\n  .list-group-item:last-child {\n    border-end-start-radius: inherit;\n    border-end-end-radius: inherit;\n  }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: var(--list-group-disabled-color);\n    pointer-events: none;\n    background-color: var(--list-group-disabled-bg);\n  }\n  .list-group-item.active {\n    z-index: 2;\n    color: var(--list-group-active-color);\n    background-color: var(--list-group-active-bg);\n    border-color: var(--list-group-active-border-color);\n  }\n  .list-group-item + .list-group-item {\n    border-block-start-width: 0;\n  }\n  .list-group-item + .list-group-item.active {\n    margin-top: calc(-1 * var(--list-group-border-width));\n    border-block-start-width: var(--list-group-border-width);\n  }\n  .list-group-item-action {\n    width: 100%;\n    color: var(--theme-fg, var(--list-group-action-color));\n    text-align: inherit;\n    text-decoration: none;\n  }\n  .list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {\n    z-index: 1;\n    color: var(--theme-fg-emphasis, var(--list-group-action-hover-color));\n    text-decoration: none;\n    background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n  }\n  .list-group-item-action:not(.active):active {\n    color: var(--theme-fg-emphasis, var(--list-group-action-active-color));\n    background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n  }\n  .list-group-horizontal {\n    flex-direction: row;\n  }\n  .list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n    border-end-start-radius: var(--list-group-border-radius);\n    border-start-end-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n    border-start-end-radius: var(--list-group-border-radius);\n    border-end-start-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item {\n    border-block-start-width: var(--list-group-border-width);\n    border-inline-start-width: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item.active {\n    margin-inline-start: calc(-1 * var(--list-group-border-width));\n    border-inline-start-width: var(--list-group-border-width);\n  }\n  @container (width >= 576px) {\n    .sm\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .sm\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .md\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .lg\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .xl\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  .list-group-flush {\n    border-radius: 0;\n  }\n  .list-group-flush > .list-group-item {\n    border-width: 0 0 var(--list-group-border-width);\n  }\n  .list-group-flush > .list-group-item:last-child {\n    border-block-end-width: 0;\n  }\n}\n@layer components {\n  .nav {\n    --nav-gap: 0.125rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-align: center;\n    --nav-link-justify: center;\n    --nav-link-padding-x: 0.75rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--fg-2);\n    --nav-link-hover-color: var(--fg-1);\n    --nav-link-hover-bg: var(--bg-1);\n    --nav-link-active-color: var(--fg-body);\n    --nav-link-active-bg: var(--bg-2);\n    --nav-link-disabled-color: var(--fg-4);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-transition-property: color, background-color, border-color;\n    --nav-link-transition-timing: 0.15s ease-in-out;\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n  .nav-item {\n    display: flex;\n  }\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    border-radius: var(--radius-5);\n    transition: var(--nav-link-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nav-link {\n      transition: none;\n    }\n  }\n  .nav-link:hover, .nav-link:focus {\n    color: var(--nav-link-hover-color);\n    background-color: var(--nav-link-hover-bg);\n  }\n  .nav-link:focus-visible {\n    --focus-ring-offset: 1px;\n    color: var(--nav-link-hover-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .nav-link.active, .nav-link:active {\n    color: var(--nav-link-active-color);\n    background-color: var(--nav-link-active-bg);\n  }\n  .nav-link.disabled, .nav-link:disabled {\n    color: var(--nav-link-disabled-color);\n    pointer-events: none;\n    cursor: default;\n  }\n  .nav-tabs {\n    --nav-tabs-border-width: var(--border-width);\n    --nav-tabs-border-color: var(--border-color);\n    --nav-tabs-border-radius: var(--radius-5);\n    --nav-tabs-link-hover-border-color: var(--border-subtle);\n    --nav-tabs-link-active-color: var(--fg-color);\n    --nav-tabs-link-active-bg: var(--bg-body);\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body);\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link {\n    border: var(--nav-tabs-border-width) solid transparent;\n    border-bottom-color: var(--nav-tabs-border-color);\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .nav-tabs .nav-link:hover {\n    isolation: isolate;\n    border-color: var(--nav-tabs-link-hover-border-color);\n    border-bottom-color: var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: var(--nav-tabs-link-active-color);\n    background-color: var(--nav-tabs-link-active-bg);\n    border-color: var(--nav-tabs-link-active-border-color);\n    border-bottom-color: var(--nav-tabs-link-active-bg);\n  }\n  .nav-tabs .menu {\n    margin-top: calc(-1 * var(--nav-tabs-border-width));\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .nav-pills {\n    --nav-pills-bg: var(--bg-1);\n    --nav-pills-padding: 0.25rem;\n    --nav-pills-border-radius: var(--radius-9);\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n    --nav-pills-link-border-radius: var(--radius-9);\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    border-radius: var(--nav-pills-border-radius);\n  }\n  .nav-pills .nav-link {\n    border-radius: var(--nav-pills-link-border-radius);\n  }\n  .nav-pills .nav-link.active,\n  .nav-pills .show > .nav-link {\n    color: var(--nav-pills-link-active-color);\n    background-color: var(--nav-pills-link-active-bg);\n    background-image: var(--gradient);\n  }\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n  }\n  .nav-pills-vertical .nav-item,\n  .nav-pills-vertical .nav-link {\n    width: 100%;\n  }\n  .nav-underline {\n    --nav-gap: 1rem;\n    --nav-link-active-bg: transparent;\n    --nav-underline-border-width: 0.125rem;\n    --nav-underline-link-active-color: var(--fg-color);\n  }\n  .nav-underline .nav-link {\n    padding-inline: 0;\n    border: 0;\n    border-block-end: var(--nav-underline-border-width) solid transparent;\n    border-radius: 0;\n  }\n  .nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n    border-block-end-color: currentcolor;\n  }\n  .nav-underline .nav-link.active,\n  .nav-underline .show > .nav-link {\n    font-weight: 700;\n    color: var(--nav-underline-link-active-color);\n    border-block-end-color: currentcolor;\n  }\n  .nav-fill > .nav-link,\n  .nav-fill .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n  .nav-justified > .nav-link,\n  .nav-justified .nav-item {\n    flex-grow: 1;\n    flex-basis: 0;\n    text-align: center;\n  }\n  .nav-fill .nav-item .nav-link,\n  .nav-justified .nav-item .nav-link {\n    width: 100%;\n  }\n  .tab-content > .tab-pane {\n    display: none;\n  }\n  .tab-content > .active {\n    display: block;\n  }\n}\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0;\n  }\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\n  }\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n  .nav-overflow [data-bs-nav-overflow=true] {\n    display: none;\n  }\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n@layer components {\n  .navbar {\n    --navbar-padding-x: 0;\n    --navbar-padding-y: 0.5rem;\n    --navbar-color: var(--fg-2);\n    --navbar-hover-color: var(--fg-1);\n    --navbar-disabled-color: var(--fg-3);\n    --navbar-active-color: var(--fg-body);\n    --navbar-brand-padding-y: 0.75rem;\n    --navbar-brand-margin-end: 1rem;\n    --navbar-brand-font-size: var(--font-size-md);\n    --navbar-brand-font-weight: var(--font-weight-medium);\n    --navbar-brand-color: var(--fg-body);\n    --navbar-brand-hover-color: var(--fg-body);\n    --navbar-nav-link-padding-x: 0.75rem;\n    --navbar-toggler-width: 2rem;\n    --navbar-toggler-padding-y: 0.25rem;\n    --navbar-toggler-padding-x: 0.75rem;\n    --navbar-toggler-font-size: var(--font-size-lg);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent);\n    --navbar-toggler-border-radius: var(--radius-5);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    --navbar-toggler-icon-size: 1.25rem;\n    --navbar-toggler-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e\");\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    container-type: inline-size;\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n  }\n  .navbar > .\\32 xl\\:container, .navbar > .xl\\:container, .navbar > .lg\\:container, .navbar > .md\\:container, .navbar > .sm\\:container, .navbar > .container,\n  .navbar > .container-fluid {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n  }\n  .navbar-brand:hover, .navbar-brand:focus {\n    color: var(--navbar-brand-hover-color);\n  }\n  .navbar-nav {\n    --nav-gap: 0.25rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-padding-x: 0.5rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n  .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n    color: var(--navbar-active-color);\n    border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n  }\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n  }\n  .navbar-text a,\n  .navbar-text a:hover,\n  .navbar-text a:focus {\n    color: var(--navbar-active-color);\n  }\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    mask-image: var(--navbar-toggler-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand .navbar-nav {\n    --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n    flex-direction: row;\n  }\n  .navbar-expand .navbar-toggler {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] {\n    position: static !important;\n    inset: auto !important;\n    z-index: auto;\n    display: flex !important;\n    flex-grow: 1;\n    width: auto !important;\n    max-width: none !important;\n    height: auto !important;\n    max-height: none !important;\n    padding: 0;\n    margin: 0;\n    visibility: visible !important;\n    background-color: transparent !important;\n    border: 0 !important;\n    transform: none !important;\n    box-shadow: none;\n    transition: none;\n  }\n  .navbar-expand [class*=drawer] .drawer-header {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] .drawer-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: row;\n    align-items: center;\n    padding: 0;\n    overflow-y: visible;\n  }\n  .navbar-expand {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  @container (width >= 576px) {\n    .sm\\:navbar-expand > .container,\n    .sm\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .sm\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .sm\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:navbar-expand > .container,\n    .md\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .md\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .md\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:navbar-expand > .container,\n    .lg\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .lg\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .lg\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:navbar-expand > .container,\n    .xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:navbar-expand > .container,\n    .\\32 xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .\\32 xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar [class*=drawer]:not([open], .hiding) {\n    transition: none !important;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .navbar [class*=drawer]:not([open], .hiding) {\n      transition: none;\n    }\n  }\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n  }\n  .navbar-translucent::before {\n    position: absolute;\n    inset: 0;\n    z-index: -1;\n    content: \"\";\n    background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n    background-image: none;\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .navbar[data-bs-theme=dark] {\n    --navbar-color: color-mix(in oklch, var(--white) 0.55, transparent);\n    --navbar-hover-color: color-mix(in oklch, var(--white) 0.75, transparent);\n    --navbar-disabled-color: color-mix(in oklch, var(--white) 0.25, transparent);\n    --navbar-active-color: var(--white);\n    --navbar-brand-color: var(--white);\n    --navbar-brand-hover-color: var(--white);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) 0.1, transparent);\n  }\n}\n.drawer, .\\32 xl\\:drawer, .xl\\:drawer, .lg\\:drawer, .md\\:drawer, .sm\\:drawer {\n  --drawer-inset: var(--spacer);\n  --drawer-zindex: 1045;\n  --drawer-width: 400px;\n  --drawer-height: 30vh;\n  --drawer-padding-x: var(--spacer);\n  --drawer-padding-y: var(--spacer);\n  --drawer-color: var(--fg-body);\n  --drawer-bg: var(--bg-body);\n  --drawer-border-width: var(--border-width);\n  --drawer-border-color: var(--border-color-translucent);\n  --drawer-border-radius: var(--radius-7);\n  --drawer-box-shadow: var(--box-shadow-lg);\n  --drawer-transition-duration: 0.3s;\n  --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n  --drawer-title-line-height: 1.5;\n  --drawer-backdrop-bg: color-mix(in oklch, var(--bg-body) 25%, transparent);\n  --drawer-backdrop-blur: 8px;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .sm\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .sm\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer .drawer-header {\n      display: none;\n    }\n    .sm\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .md\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .md\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer .drawer-header {\n      display: none;\n    }\n    .md\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .lg\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer .drawer-header {\n      display: none;\n    }\n    .lg\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .\\32 xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .\\32 xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .drawer {\n    position: fixed;\n    inset: auto;\n    z-index: var(--drawer-zindex);\n    display: flex;\n    flex-direction: column;\n    width: auto;\n    max-width: calc(100% - var(--drawer-inset) * 2);\n    height: auto;\n    max-height: calc(100% - var(--drawer-inset) * 2);\n    padding: 0;\n    margin: 0;\n    color: var(--drawer-color);\n    visibility: hidden;\n    background-color: var(--drawer-bg);\n    background-clip: padding-box;\n    border: var(--drawer-border-width) solid var(--drawer-border-color);\n    outline: 0;\n    border-radius: var(--drawer-border-radius);\n    box-shadow: var(--drawer-box-shadow);\n  }\n  .drawer:where(.drawer-start) {\n    inset-block: var(--drawer-inset);\n    inset-inline-start: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-end) {\n    inset-block: var(--drawer-inset);\n    inset-inline-end: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-top) {\n    inset: var(--drawer-inset) var(--drawer-inset) auto;\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-bottom) {\n    inset: auto var(--drawer-inset) var(--drawer-inset);\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-fullscreen) {\n    inset: var(--drawer-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n  }\n  .drawer:not(.drawer-instant) {\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-top) {\n    transform: translateY(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-bottom) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant)[open] {\n    visibility: visible;\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant)[open] {\n    transform: none;\n  }\n  .drawer[open] {\n    visibility: visible;\n    transform: none;\n  }\n  .sm\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .sm\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .md\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .md\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .lg\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .lg\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .xl\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .\\32 xl\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer::backdrop {\n      transition: none;\n    }\n  }\n  @starting-style {\n    .sm\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .md\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .lg\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .\\32 xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n  }\n  .drawer-static {\n    transform: scale(1.02);\n  }\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .drawer-sheet {\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100vw;\n    margin-inline: auto;\n    margin-bottom: calc(-1 * var(--drawer-border-width));\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  @media (width >= 1024px) {\n    .drawer-sheet {\n      max-width: var(--drawer-sheet-width, 760px);\n    }\n  }\n  .drawer-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n  }\n  .drawer-header .btn-close {\n    margin-block: calc(-0.5 * var(--drawer-padding-y));\n    margin-inline-start: auto;\n  }\n  .drawer-title {\n    margin-bottom: 0;\n    line-height: var(--drawer-title-line-height);\n  }\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    flex: 1 1 auto;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    overflow-y: auto;\n  }\n  .drawer-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    border-block-start: var(--drawer-border-width) solid var(--drawer-border-color);\n  }\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\n}\n@layer components {\n  .pagination {\n    --pagination-min-height: var(--btn-input-min-height);\n    --pagination-padding-x: var(--btn-input-padding-x);\n    --pagination-padding-y: var(--btn-input-padding-y);\n    --pagination-font-size: var(--btn-input-font-size);\n    --pagination-color: var(--link-color);\n    --pagination-bg: var(--bg-body);\n    --pagination-border-width: var(--border-width);\n    --pagination-border-color: var(--border-color);\n    --pagination-border-radius: var(--btn-input-border-radius);\n    --pagination-hover-color: var(--link-hover-color);\n    --pagination-hover-bg: var(--bg-1);\n    --pagination-hover-border-color: var(--border-color);\n    --pagination-focus-color: var(--link-hover-color);\n    --pagination-focus-bg: var(--bg-2);\n    --pagination-active-color: var(--primary-contrast);\n    --pagination-active-bg: var(--primary-bg);\n    --pagination-active-border-color: var(--primary-bg);\n    --pagination-disabled-color: var(--fg-3);\n    --pagination-disabled-bg: var(--bg-2);\n    --pagination-disabled-border-color: var(--border-color);\n    display: flex;\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .page-link {\n      transition: none;\n    }\n  }\n  .page-link:hover {\n    z-index: 2;\n    color: var(--pagination-hover-color);\n    background-color: var(--pagination-hover-bg);\n    border-color: var(--pagination-hover-border-color);\n  }\n  .page-link:focus-visible {\n    z-index: 3;\n    color: var(--pagination-focus-color);\n    background-color: var(--pagination-focus-bg);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .page-link.active, .active > .page-link {\n    z-index: 3;\n    color: var(--pagination-active-color);\n    background-color: var(--pagination-active-bg);\n    background-image: var(--gradient);\n    border-color: var(--pagination-active-border-color);\n  }\n  .page-link.disabled, .disabled > .page-link {\n    color: var(--pagination-disabled-color);\n    pointer-events: none;\n    background-color: var(--pagination-disabled-bg);\n    border-color: var(--pagination-disabled-border-color);\n  }\n  .page-item:not(:first-child) .page-link {\n    margin-inline-start: calc(-1 * var(--pagination-border-width));\n  }\n  .page-item:first-child .page-link {\n    border-start-start-radius: var(--pagination-border-radius);\n    border-end-start-radius: var(--pagination-border-radius);\n  }\n  .page-item:last-child .page-link {\n    border-start-end-radius: var(--pagination-border-radius);\n    border-end-end-radius: var(--pagination-border-radius);\n  }\n  .pagination-sm {\n    --pagination-min-height: var(--bs-btn-input-sm-min-height);\n    --pagination-padding-y: var(--btn-input-sm-padding-y);\n    --pagination-padding-x: var(--btn-input-sm-padding-x);\n    --pagination-font-size: var(--btn-input-sm-font-size);\n    --pagination-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .pagination-lg {\n    --pagination-min-height: var(--bs-btn-input-lg-min-height);\n    --pagination-padding-y: var(--btn-input-lg-padding-y);\n    --pagination-padding-x: var(--btn-input-lg-padding-x);\n    --pagination-font-size: var(--btn-input-lg-font-size);\n    --pagination-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer components {\n  .placeholder {\n    --placeholder-opacity-max: 0.5;\n    --placeholder-opacity-min: 0.2;\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n  }\n  .placeholder.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n  .placeholder-xs {\n    min-height: 0.6em;\n  }\n  .placeholder-sm {\n    min-height: 0.8em;\n  }\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n  .placeholder-glow .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, #000 55%, rgb(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, #000 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n@layer components {\n  .popover {\n    --popover-zindex: 1070;\n    --popover-max-width: 280px;\n    --popover-font-size: var(--font-size-sm);\n    --popover-bg: var(--bg-body);\n    --popover-border-width: var(--border-width);\n    --popover-border-color: var(--border-color-translucent);\n    --popover-border-radius: var(--radius-7);\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: var(--spacer);\n    --popover-header-padding-y: var(--spacer-3);\n    --popover-header-font-size: var(--font-size-sm);\n    --popover-header-color: inherit;\n    --popover-header-bg: var(--bg-1);\n    --popover-body-padding-x: var(--spacer);\n    --popover-body-padding-y: var(--spacer-3);\n    --popover-body-color: var(--fg-body);\n    --popover-arrow-width: 1rem;\n    --popover-arrow-height: 0.5rem;\n    --popover-arrow-border: var(--popover-border-color);\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--popover-font-size);\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    border-radius: var(--popover-border-radius);\n    box-shadow: var(--popover-box-shadow);\n  }\n  .popover .popover-arrow {\n    display: block;\n    width: var(--popover-arrow-width);\n    height: var(--popover-arrow-height);\n  }\n  .popover .popover-arrow::before, .popover .popover-arrow::after {\n    position: absolute;\n    display: block;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n    border-width: 0;\n  }\n  .bs-popover-top > .popover-arrow, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow {\n    bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before {\n    bottom: 0;\n    border-block-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    bottom: var(--popover-border-width);\n    border-block-start-color: var(--popover-bg);\n  }\n  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow {\n    left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before {\n    left: 0;\n    border-inline-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    left: var(--popover-border-width);\n    border-inline-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow {\n    top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    border-width: 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before {\n    top: 0;\n    border-block-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    top: var(--popover-border-width);\n    border-block-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow:has(+ .popover-header)::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow:has(+ .popover-header)::after {\n    border-block-end-color: var(--popover-header-bg);\n  }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[data-bs-placement^=bottom] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: var(--popover-arrow-width);\n    margin-inline-start: calc(-0.5 * var(--popover-arrow-width));\n    content: \"\";\n    border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n  }\n  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow {\n    right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before {\n    right: 0;\n    border-inline-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    right: var(--popover-border-width);\n    border-inline-start-color: var(--popover-bg);\n  }\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    border-start-start-radius: var(--popover-inner-border-radius);\n    border-start-end-radius: var(--popover-inner-border-radius);\n  }\n  .popover-header:empty {\n    display: none;\n  }\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n@layer components {\n  @keyframes progress-bar-stripes {\n    0% {\n      background-position-x: var(--progress-height);\n    }\n  }\n  .progress,\n  .progress-stacked {\n    --progress-height: 1rem;\n    --progress-font-size: var(--font-size-sm);\n    --progress-bg: var(--bg-2);\n    --progress-border-radius: var(--radius-5);\n    --progress-box-shadow: var(--box-shadow-inset);\n    --progress-bar-color: var(--white);\n    --progress-bar-bg: var(--primary-bg);\n    --progress-bar-transition: width 0.6s ease;\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite;\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    border-radius: var(--progress-border-radius);\n    box-shadow: var(--progress-box-shadow);\n  }\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    transition: var(--progress-bar-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      transition: none;\n    }\n  }\n  .progress-bar-striped {\n    background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n    background-size: var(--progress-height) var(--progress-height);\n  }\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n  .progress-bar-animated {\n    animation: var(--progress-bar-animation);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar-animated {\n      animation: none;\n    }\n  }\n}\n@layer components {\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n  @keyframes spinner-border {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n  .spinner-border {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-border-width: 0.25em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-border;\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n  .spinner-border-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n  }\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  .spinner-grow {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-grow;\n    background-color: currentcolor;\n    opacity: 0;\n  }\n  .spinner-grow-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      --spinner-animation-speed: 1.5s;\n    }\n  }\n}\n@layer components {\n  .stepper {\n    --stepper-size: 2rem;\n    --stepper-gap: 1rem;\n    --stepper-font-size: var(--font-size-sm);\n    --stepper-text-gap: 0.5rem;\n    --stepper-track-size: 0.125rem;\n    --stepper-bg: var(--bg-2);\n    --stepper-active-color: var(--primary-contrast);\n    --stepper-active-bg: var(--primary-bg);\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\n  }\n  .stepper-item {\n    position: relative;\n    display: grid;\n    grid-template-rows: auto;\n    grid-template-columns: var(--stepper-size) auto;\n    gap: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, center);\n    text-decoration: none;\n  }\n  .stepper-item::before {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--stepper-size);\n    height: var(--stepper-size);\n    padding: 0.5rem;\n    font-size: var(--stepper-font-size);\n    font-weight: 600;\n    line-height: 1;\n    text-align: center;\n    content: counter(stepper);\n    counter-increment: stepper;\n    background-color: var(--stepper-bg);\n    border-radius: 50%;\n  }\n  .stepper-item::after {\n    position: absolute;\n    inset-block-start: 50%;\n    inset-block-end: 100%;\n    inset-inline-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    width: var(--stepper-track-size);\n    height: calc(100% + var(--stepper-gap));\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n  .stepper-item:last-child::after {\n    display: none;\n  }\n  .stepper-item.active::before, .stepper-item.active::after {\n    color: var(--theme-contrast, var(--stepper-active-color));\n    background-color: var(--theme-bg, var(--stepper-active-bg));\n  }\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n  .stepper-horizontal {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal .stepper-item {\n    grid-template-rows: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n  }\n  .stepper-horizontal .stepper-item::after {\n    inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    inset-block-end: auto;\n    inset-inline-start: 50%;\n    inset-inline-end: 100%;\n    width: calc(100% + var(--stepper-gap));\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal .stepper-item:last-child::after {\n    right: 100%;\n  }\n  @container (width >= 576px) {\n    .sm\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .sm\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .sm\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .sm\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .md\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .md\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .md\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .lg\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .lg\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .lg\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  .stepper-overflow {\n    container-type: inline-size;\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n  }\n  .stepper-overflow > .stepper {\n    width: max-content;\n    min-width: 100%;\n  }\n}\n@layer components {\n  .toast {\n    --toast-zindex: 1090;\n    --toast-padding-x: 1rem;\n    --toast-padding-y: 0.75rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: var(--font-size-sm);\n    --toast-bg: var(--bg-body);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: var(--bg-1);\n    --toast-header-border-color: var(--border-color-translucent);\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius, var(--radius-7));\n  }\n  .toast.showing {\n    opacity: 0;\n  }\n  .toast:not(.show) {\n    display: none;\n  }\n  .toast-container {\n    --toast-zindex: 1090;\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n  }\n  .toast-container > :not(:last-child) {\n    margin-bottom: var(--toast-spacing);\n  }\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: calc(0.5 * var(--toast-padding-x));\n    margin-inline-end: calc(-0.25 * var(--toast-padding-x));\n    color: inherit;\n  }\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: var(--spacer-3);\n    --tooltip-padding-y: calc(var(--spacer) * 0.375);\n    --tooltip-font-size: var(--font-size-sm);\n    --tooltip-color: var(--bg-body);\n    --tooltip-bg: var(--fg-body);\n    --tooltip-border-radius: var(--radius-5);\n    --tooltip-opacity: 0.95;\n    --tooltip-arrow-width: 0.8rem;\n    --tooltip-arrow-height: 0.4rem;\n    z-index: var(--tooltip-zindex);\n    display: block;\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--tooltip-font-size);\n    word-wrap: break-word;\n    opacity: 0;\n  }\n  .tooltip.show {\n    opacity: var(--tooltip-opacity);\n  }\n  .tooltip .tooltip-arrow {\n    display: block;\n    width: var(--tooltip-arrow-width);\n    height: var(--tooltip-arrow-height);\n  }\n  .tooltip .tooltip-arrow::before {\n    position: absolute;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n  }\n  .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow::before {\n    top: -1px;\n    border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-block-start-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow::before {\n    right: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-inline-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow::before {\n    bottom: -1px;\n    border-width: 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-block-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow::before {\n    left: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-inline-start-color: var(--tooltip-bg);\n  }\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n}\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sm\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sm\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .md\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .lg\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .\\32 xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .sm\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .sm\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-fg: var(--primary-fg);\n    --theme-fg-emphasis: var(--primary-fg-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-fg: var(--accent-fg);\n    --theme-fg-emphasis: var(--accent-fg-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-fg: var(--success-fg);\n    --theme-fg-emphasis: var(--success-fg-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-fg: var(--danger-fg);\n    --theme-fg-emphasis: var(--danger-fg-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-fg: var(--warning-fg);\n    --theme-fg-emphasis: var(--warning-fg-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-fg: var(--info-fg);\n    --theme-fg-emphasis: var(--info-fg-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-fg: var(--inverse-fg);\n    --theme-fg-emphasis: var(--inverse-fg-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-fg: var(--secondary-fg);\n    --theme-fg-emphasis: var(--secondary-fg-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus, :focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus, :focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus, :focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .contains-inline {\n    container-type: inline-size;\n  }\n  .contains-size {\n    container-type: size;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-xs {\n    box-shadow: var(--box-shadow-xs);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    inset-inline-start: 0;\n  }\n  .start-50 {\n    inset-inline-start: 50%;\n  }\n  .start-100 {\n    inset-inline-start: 100%;\n  }\n  .end-0 {\n    inset-inline-end: 0;\n  }\n  .end-50 {\n    inset-inline-end: 50%;\n  }\n  .end-100 {\n    inset-inline-end: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-y {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-y-0 {\n    border-block: 0;\n  }\n  .border-x {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-x-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--primary-bg);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--accent-bg);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--success-bg);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--danger-bg);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--warning-bg);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--info-bg);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: var(--inverse-bg);\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: var(--secondary-bg);\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--border-bg);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: var(--border-body);\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: var(--border-muted);\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: var(--border-subtle);\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: var(--border-emphasized);\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--border-white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--border-black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: var(--primary-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: var(--accent-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: var(--success-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: var(--danger-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: var(--warning-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: var(--info-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: var(--inverse-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: var(--secondary-border);\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: start;\n  }\n  .justify-self-end {\n    justify-self: end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-1 {\n    grid-template-columns: 1fr;\n  }\n  .grid-cols-2 {\n    grid-template-columns: repeat(2, 1fr);\n  }\n  .grid-cols-3 {\n    grid-template-columns: repeat(3, 1fr);\n  }\n  .grid-cols-4 {\n    grid-template-columns: repeat(4, 1fr);\n  }\n  .grid-cols-6 {\n    grid-template-columns: repeat(6, 1fr);\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 0.75rem;\n  }\n  .m-4 {\n    margin: 1rem;\n  }\n  .m-5 {\n    margin: 1.25rem;\n  }\n  .m-6 {\n    margin: 1.5rem;\n  }\n  .m-7 {\n    margin: 2rem;\n  }\n  .m-8 {\n    margin: 2.5rem;\n  }\n  .m-9 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 0.75rem;\n  }\n  .mx-4 {\n    margin-inline: 1rem;\n  }\n  .mx-5 {\n    margin-inline: 1.25rem;\n  }\n  .mx-6 {\n    margin-inline: 1.5rem;\n  }\n  .mx-7 {\n    margin-inline: 2rem;\n  }\n  .mx-8 {\n    margin-inline: 2.5rem;\n  }\n  .mx-9 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 0.75rem;\n  }\n  .my-4 {\n    margin-block: 1rem;\n  }\n  .my-5 {\n    margin-block: 1.25rem;\n  }\n  .my-6 {\n    margin-block: 1.5rem;\n  }\n  .my-7 {\n    margin-block: 2rem;\n  }\n  .my-8 {\n    margin-block: 2.5rem;\n  }\n  .my-9 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 0.75rem;\n  }\n  .mt-4 {\n    margin-block-start: 1rem;\n  }\n  .mt-5 {\n    margin-block-start: 1.25rem;\n  }\n  .mt-6 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-7 {\n    margin-block-start: 2rem;\n  }\n  .mt-8 {\n    margin-block-start: 2.5rem;\n  }\n  .mt-9 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 0.75rem;\n  }\n  .me-4 {\n    margin-inline-end: 1rem;\n  }\n  .me-5 {\n    margin-inline-end: 1.25rem;\n  }\n  .me-6 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-7 {\n    margin-inline-end: 2rem;\n  }\n  .me-8 {\n    margin-inline-end: 2.5rem;\n  }\n  .me-9 {\n    margin-inline-end: 3rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 0.75rem;\n  }\n  .mb-4 {\n    margin-block-end: 1rem;\n  }\n  .mb-5 {\n    margin-block-end: 1.25rem;\n  }\n  .mb-6 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-7 {\n    margin-block-end: 2rem;\n  }\n  .mb-8 {\n    margin-block-end: 2.5rem;\n  }\n  .mb-9 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 0.75rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1rem;\n  }\n  .ms-5 {\n    margin-inline-start: 1.25rem;\n  }\n  .ms-6 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-7 {\n    margin-inline-start: 2rem;\n  }\n  .ms-8 {\n    margin-inline-start: 2.5rem;\n  }\n  .ms-9 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 0.75rem;\n  }\n  .p-4 {\n    padding: 1rem;\n  }\n  .p-5 {\n    padding: 1.25rem;\n  }\n  .p-6 {\n    padding: 1.5rem;\n  }\n  .p-7 {\n    padding: 2rem;\n  }\n  .p-8 {\n    padding: 2.5rem;\n  }\n  .p-9 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 0.75rem;\n  }\n  .px-4 {\n    padding-inline: 1rem;\n  }\n  .px-5 {\n    padding-inline: 1.25rem;\n  }\n  .px-6 {\n    padding-inline: 1.5rem;\n  }\n  .px-7 {\n    padding-inline: 2rem;\n  }\n  .px-8 {\n    padding-inline: 2.5rem;\n  }\n  .px-9 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 0.75rem;\n  }\n  .py-4 {\n    padding-block: 1rem;\n  }\n  .py-5 {\n    padding-block: 1.25rem;\n  }\n  .py-6 {\n    padding-block: 1.5rem;\n  }\n  .py-7 {\n    padding-block: 2rem;\n  }\n  .py-8 {\n    padding-block: 2.5rem;\n  }\n  .py-9 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 0.75rem;\n  }\n  .pt-4 {\n    padding-block-start: 1rem;\n  }\n  .pt-5 {\n    padding-block-start: 1.25rem;\n  }\n  .pt-6 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-7 {\n    padding-block-start: 2rem;\n  }\n  .pt-8 {\n    padding-block-start: 2.5rem;\n  }\n  .pt-9 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 0.75rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1rem;\n  }\n  .pe-5 {\n    padding-inline-end: 1.25rem;\n  }\n  .pe-6 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-7 {\n    padding-inline-end: 2rem;\n  }\n  .pe-8 {\n    padding-inline-end: 2.5rem;\n  }\n  .pe-9 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 0.75rem;\n  }\n  .pb-4 {\n    padding-block-end: 1rem;\n  }\n  .pb-5 {\n    padding-block-end: 1.25rem;\n  }\n  .pb-6 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-7 {\n    padding-block-end: 2rem;\n  }\n  .pb-8 {\n    padding-block-end: 2.5rem;\n  }\n  .pb-9 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 0.75rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1rem;\n  }\n  .ps-5 {\n    padding-inline-start: 1.25rem;\n  }\n  .ps-6 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-7 {\n    padding-inline-start: 2rem;\n  }\n  .ps-8 {\n    padding-inline-start: 2.5rem;\n  }\n  .ps-9 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 0.75rem;\n  }\n  .gap-4 {\n    gap: 1rem;\n  }\n  .gap-5 {\n    gap: 1.25rem;\n  }\n  .gap-6 {\n    gap: 1.5rem;\n  }\n  .gap-7 {\n    gap: 2rem;\n  }\n  .gap-8 {\n    gap: 2.5rem;\n  }\n  .gap-9 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 0.75rem;\n  }\n  .row-gap-4 {\n    row-gap: 1rem;\n  }\n  .row-gap-5 {\n    row-gap: 1.25rem;\n  }\n  .row-gap-6 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-7 {\n    row-gap: 2rem;\n  }\n  .row-gap-8 {\n    row-gap: 2.5rem;\n  }\n  .row-gap-9 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 0.75rem;\n  }\n  .column-gap-4 {\n    column-gap: 1rem;\n  }\n  .column-gap-5 {\n    column-gap: 1.25rem;\n  }\n  .column-gap-6 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-7 {\n    column-gap: 2rem;\n  }\n  .column-gap-8 {\n    column-gap: 2.5rem;\n  }\n  .column-gap-9 {\n    column-gap: 3rem;\n  }\n  :where(.space-x-0 > :not(:last-child)) {\n    margin-inline-end: 0;\n  }\n  :where(.space-x-1 > :not(:last-child)) {\n    margin-inline-end: 0.25rem;\n  }\n  :where(.space-x-2 > :not(:last-child)) {\n    margin-inline-end: 0.5rem;\n  }\n  :where(.space-x-3 > :not(:last-child)) {\n    margin-inline-end: 0.75rem;\n  }\n  :where(.space-x-4 > :not(:last-child)) {\n    margin-inline-end: 1rem;\n  }\n  :where(.space-x-5 > :not(:last-child)) {\n    margin-inline-end: 1.25rem;\n  }\n  :where(.space-x-6 > :not(:last-child)) {\n    margin-inline-end: 1.5rem;\n  }\n  :where(.space-x-7 > :not(:last-child)) {\n    margin-inline-end: 2rem;\n  }\n  :where(.space-x-8 > :not(:last-child)) {\n    margin-inline-end: 2.5rem;\n  }\n  :where(.space-x-9 > :not(:last-child)) {\n    margin-inline-end: 3rem;\n  }\n  :where(.space-y-0 > :not(:last-child)) {\n    margin-block-end: 0;\n  }\n  :where(.space-y-1 > :not(:last-child)) {\n    margin-block-end: 0.25rem;\n  }\n  :where(.space-y-2 > :not(:last-child)) {\n    margin-block-end: 0.5rem;\n  }\n  :where(.space-y-3 > :not(:last-child)) {\n    margin-block-end: 0.75rem;\n  }\n  :where(.space-y-4 > :not(:last-child)) {\n    margin-block-end: 1rem;\n  }\n  :where(.space-y-5 > :not(:last-child)) {\n    margin-block-end: 1.25rem;\n  }\n  :where(.space-y-6 > :not(:last-child)) {\n    margin-block-end: 1.5rem;\n  }\n  :where(.space-y-7 > :not(:last-child)) {\n    margin-block-end: 2rem;\n  }\n  :where(.space-y-8 > :not(:last-child)) {\n    margin-block-end: 2.5rem;\n  }\n  :where(.space-y-9 > :not(:last-child)) {\n    margin-block-end: 3rem;\n  }\n  :where(.divide-x > :not(:first-child)) {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-x-0 > :not(:first-child)) {\n    border-inline-start: 0;\n  }\n  :where(.divide-y > :not(:first-child)) {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-y-0 > :not(:first-child)) {\n    border-block-start: 0;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: 0.75rem;\n  }\n  .fs-sm {\n    font-size: 0.875rem;\n  }\n  .fs-md {\n    font-size: 1rem;\n  }\n  .fs-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  }\n  .fs-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  }\n  .fs-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  }\n  .fs-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  }\n  .fs-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  }\n  .fs-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n  }\n  .fs-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  }\n  .text-xs {\n    font-size: 0.75rem;\n    line-height: 1.25;\n  }\n  .text-sm {\n    font-size: 0.875rem;\n    line-height: 1.5;\n  }\n  .text-md {\n    font-size: 1rem;\n    line-height: 1.5;\n  }\n  .text-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n    line-height: 1.5;\n  }\n  .text-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n    line-height: 1.4285714286;\n  }\n  .text-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n    line-height: 1.3333333333;\n  }\n  .text-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n    line-height: 1.2;\n  }\n  .text-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n    line-height: 1.1;\n  }\n  .text-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n    line-height: 1.1;\n  }\n  .text-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n    line-height: 1;\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    text-wrap: wrap;\n  }\n  .text-nowrap {\n    text-wrap: nowrap;\n  }\n  .text-balance {\n    text-wrap: balance;\n  }\n  .text-pretty {\n    text-wrap: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: var(--primary-fg);\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: var(--accent-fg);\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: var(--success-fg);\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: var(--danger-fg);\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: var(--warning-fg);\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: var(--info-fg);\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: var(--inverse-fg);\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: var(--secondary-fg);\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: var(--fg-body);\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: var(--fg-1);\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: var(--fg-2);\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: var(--fg-3);\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: var(--fg-4);\n    color: var(--fg);\n  }\n  .fg-bg {\n    --fg: var(--fg-bg);\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--fg-white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--fg-black);\n    color: var(--fg);\n  }\n  .fg-reset {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: var(--primary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: var(--accent-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: var(--success-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: var(--danger-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: var(--warning-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: var(--info-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: var(--inverse-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: var(--secondary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--primary-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--accent-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--success-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--danger-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--warning-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--info-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: var(--inverse-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: var(--secondary-contrast);\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .hover\\:link-10:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .hover\\:link-20:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .hover\\:link-30:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .hover\\:link-40:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .hover\\:link-50:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .hover\\:link-60:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .hover\\:link-70:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .hover\\:link-80:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .hover\\:link-90:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .hover\\:link-100:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .hover\\:underline-offset-1:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .hover\\:underline-offset-2:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .hover\\:underline-offset-3:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .hover\\:underline-10:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .hover\\:underline-20:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .hover\\:underline-30:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .hover\\:underline-40:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .hover\\:underline-50:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .hover\\:underline-60:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .hover\\:underline-70:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .hover\\:underline-80:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .hover\\:underline-90:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .hover\\:underline-100:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .hover\\:underline-thickness-1:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .hover\\:underline-thickness-2:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .hover\\:underline-thickness-3:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .hover\\:underline-thickness-4:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .hover\\:underline-thickness-5:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--primary-bg);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--accent-bg);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--success-bg);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--danger-bg);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--warning-bg);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--info-bg);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: var(--inverse-bg);\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: var(--secondary-bg);\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: var(--bg-body);\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: var(--bg-1);\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: var(--bg-2);\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: var(--bg-3);\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: var(--bg-4);\n    background-color: var(--bg);\n  }\n  .bg-fg {\n    --bg: var(--bg-fg);\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--bg-white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--bg-black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: var(--bg-transparent);\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: var(--primary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: var(--accent-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: var(--success-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: var(--danger-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: var(--warning-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: var(--info-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: var(--inverse-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: var(--secondary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: var(--primary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: var(--accent-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: var(--success-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: var(--danger-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: var(--warning-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: var(--info-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: var(--inverse-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: var(--secondary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-fg);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-fg-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-text {\n    user-select: text;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded-0 {\n    --rounded-size: 0;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-1 {\n    --rounded-size: 0.125rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-2 {\n    --rounded-size: 0.1875rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-3 {\n    --rounded-size: 0.25rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-4 {\n    --rounded-size: 0.375rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-5 {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-6 {\n    --rounded-size: 0.625rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-7 {\n    --rounded-size: 0.75rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-8 {\n    --rounded-size: 1rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-9 {\n    --rounded-size: 1.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-circle {\n    --rounded-size: 50%;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-pill {\n    --rounded-size: var(--radius-pill);\n    border-radius: var(--rounded-size);\n  }\n  .rounded-size-0 {\n    --rounded-size: 0;\n  }\n  .rounded-size-1 {\n    --rounded-size: 0.125rem;\n  }\n  .rounded-size-2 {\n    --rounded-size: 0.1875rem;\n  }\n  .rounded-size-3 {\n    --rounded-size: 0.25rem;\n  }\n  .rounded-size-4 {\n    --rounded-size: 0.375rem;\n  }\n  .rounded-size-5 {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-6 {\n    --rounded-size: 0.625rem;\n  }\n  .rounded-size-7 {\n    --rounded-size: 0.75rem;\n  }\n  .rounded-size-8 {\n    --rounded-size: 1rem;\n  }\n  .rounded-size-9 {\n    --rounded-size: 1.5rem;\n  }\n  .rounded-size {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-circle {\n    --rounded-size: 50%;\n  }\n  .rounded-size-pill {\n    --rounded-size: var(--radius-pill);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: 0.125rem;\n    border-start-end-radius: 0.125rem;\n  }\n  .rounded-top-2 {\n    border-start-start-radius: 0.1875rem;\n    border-start-end-radius: 0.1875rem;\n  }\n  .rounded-top-3 {\n    border-start-start-radius: 0.25rem;\n    border-start-end-radius: 0.25rem;\n  }\n  .rounded-top-4 {\n    border-start-start-radius: 0.375rem;\n    border-start-end-radius: 0.375rem;\n  }\n  .rounded-top-5 {\n    border-start-start-radius: 0.5rem;\n    border-start-end-radius: 0.5rem;\n  }\n  .rounded-top-6 {\n    border-start-start-radius: 0.625rem;\n    border-start-end-radius: 0.625rem;\n  }\n  .rounded-top-7 {\n    border-start-start-radius: 0.75rem;\n    border-start-end-radius: 0.75rem;\n  }\n  .rounded-top-8 {\n    border-start-start-radius: 1rem;\n    border-start-end-radius: 1rem;\n  }\n  .rounded-top-9 {\n    border-start-start-radius: 1.5rem;\n    border-start-end-radius: 1.5rem;\n  }\n  .rounded-top {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-start-end-radius: var(--radius-pill);\n  }\n  .rounded-end-0 {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-end-1 {\n    border-start-end-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-end-2 {\n    border-start-end-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-end-3 {\n    border-start-end-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-end-4 {\n    border-start-end-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-end-5 {\n    border-start-end-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-end-6 {\n    border-start-end-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-end-7 {\n    border-start-end-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-end-8 {\n    border-start-end-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-end-9 {\n    border-start-end-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-end {\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-end-circle {\n    border-start-end-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-start-end-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-bottom-0 {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-start-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-bottom-2 {\n    border-end-start-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-bottom-3 {\n    border-end-start-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-bottom-4 {\n    border-end-start-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-bottom-5 {\n    border-end-start-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-bottom-6 {\n    border-end-start-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-bottom-7 {\n    border-end-start-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-bottom-8 {\n    border-end-start-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-bottom-9 {\n    border-end-start-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-bottom {\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-bottom-circle {\n    border-end-start-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-start-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: 0.125rem;\n    border-end-start-radius: 0.125rem;\n  }\n  .rounded-start-2 {\n    border-start-start-radius: 0.1875rem;\n    border-end-start-radius: 0.1875rem;\n  }\n  .rounded-start-3 {\n    border-start-start-radius: 0.25rem;\n    border-end-start-radius: 0.25rem;\n  }\n  .rounded-start-4 {\n    border-start-start-radius: 0.375rem;\n    border-end-start-radius: 0.375rem;\n  }\n  .rounded-start-5 {\n    border-start-start-radius: 0.5rem;\n    border-end-start-radius: 0.5rem;\n  }\n  .rounded-start-6 {\n    border-start-start-radius: 0.625rem;\n    border-end-start-radius: 0.625rem;\n  }\n  .rounded-start-7 {\n    border-start-start-radius: 0.75rem;\n    border-end-start-radius: 0.75rem;\n  }\n  .rounded-start-8 {\n    border-start-start-radius: 1rem;\n    border-end-start-radius: 1rem;\n  }\n  .rounded-start-9 {\n    border-start-start-radius: 1.5rem;\n    border-end-start-radius: 1.5rem;\n  }\n  .rounded-start {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-end-start-radius: var(--radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .sm\\:float-start {\n      float: inline-start;\n    }\n    .sm\\:float-end {\n      float: inline-end;\n    }\n    .sm\\:float-none {\n      float: none;\n    }\n    .sm\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .sm\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .sm\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .sm\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .sm\\:object-fit-none {\n      object-fit: none;\n    }\n    .sm\\:d-inline {\n      display: inline;\n    }\n    .sm\\:d-inline-block {\n      display: inline-block;\n    }\n    .sm\\:d-block {\n      display: block;\n    }\n    .sm\\:d-grid {\n      display: grid;\n    }\n    .sm\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .sm\\:d-table {\n      display: table;\n    }\n    .sm\\:d-table-row {\n      display: table-row;\n    }\n    .sm\\:d-table-cell {\n      display: table-cell;\n    }\n    .sm\\:d-flex {\n      display: flex;\n    }\n    .sm\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .sm\\:d-contents {\n      display: contents;\n    }\n    .sm\\:d-flow-root {\n      display: flow-root;\n    }\n    .sm\\:d-none {\n      display: none;\n    }\n    .sm\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .sm\\:flex-row {\n      flex-direction: row;\n    }\n    .sm\\:flex-column {\n      flex-direction: column;\n    }\n    .sm\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .sm\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .sm\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .sm\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .sm\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .sm\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .sm\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .sm\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .sm\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .sm\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .sm\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .sm\\:justify-content-center {\n      justify-content: center;\n    }\n    .sm\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .sm\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .sm\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .sm\\:justify-items-start {\n      justify-items: start;\n    }\n    .sm\\:justify-items-end {\n      justify-items: end;\n    }\n    .sm\\:justify-items-center {\n      justify-items: center;\n    }\n    .sm\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .sm\\:justify-self-start {\n      justify-self: start;\n    }\n    .sm\\:justify-self-end {\n      justify-self: end;\n    }\n    .sm\\:justify-self-center {\n      justify-self: center;\n    }\n    .sm\\:align-items-start {\n      align-items: flex-start;\n    }\n    .sm\\:align-items-end {\n      align-items: flex-end;\n    }\n    .sm\\:align-items-center {\n      align-items: center;\n    }\n    .sm\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .sm\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .sm\\:align-content-start {\n      align-content: flex-start;\n    }\n    .sm\\:align-content-end {\n      align-content: flex-end;\n    }\n    .sm\\:align-content-center {\n      align-content: center;\n    }\n    .sm\\:align-content-between {\n      align-content: space-between;\n    }\n    .sm\\:align-content-around {\n      align-content: space-around;\n    }\n    .sm\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .sm\\:align-self-auto {\n      align-self: auto;\n    }\n    .sm\\:align-self-start {\n      align-self: flex-start;\n    }\n    .sm\\:align-self-end {\n      align-self: flex-end;\n    }\n    .sm\\:align-self-center {\n      align-self: center;\n    }\n    .sm\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .sm\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .sm\\:place-items-start {\n      place-items: start;\n    }\n    .sm\\:place-items-end {\n      place-items: end;\n    }\n    .sm\\:place-items-center {\n      place-items: center;\n    }\n    .sm\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .sm\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .sm\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .sm\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .sm\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .sm\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .sm\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .sm\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .sm\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .sm\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .sm\\:order-first {\n      order: -1;\n    }\n    .sm\\:order-0 {\n      order: 0;\n    }\n    .sm\\:order-1 {\n      order: 1;\n    }\n    .sm\\:order-2 {\n      order: 2;\n    }\n    .sm\\:order-3 {\n      order: 3;\n    }\n    .sm\\:order-4 {\n      order: 4;\n    }\n    .sm\\:order-5 {\n      order: 5;\n    }\n    .sm\\:order-last {\n      order: 6;\n    }\n    .sm\\:m-0 {\n      margin: 0;\n    }\n    .sm\\:m-1 {\n      margin: 0.25rem;\n    }\n    .sm\\:m-2 {\n      margin: 0.5rem;\n    }\n    .sm\\:m-3 {\n      margin: 0.75rem;\n    }\n    .sm\\:m-4 {\n      margin: 1rem;\n    }\n    .sm\\:m-5 {\n      margin: 1.25rem;\n    }\n    .sm\\:m-6 {\n      margin: 1.5rem;\n    }\n    .sm\\:m-7 {\n      margin: 2rem;\n    }\n    .sm\\:m-8 {\n      margin: 2.5rem;\n    }\n    .sm\\:m-9 {\n      margin: 3rem;\n    }\n    .sm\\:m-auto {\n      margin: auto;\n    }\n    .sm\\:mx-0 {\n      margin-inline: 0;\n    }\n    .sm\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .sm\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .sm\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .sm\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .sm\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .sm\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .sm\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .sm\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .sm\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .sm\\:mx-auto {\n      margin-inline: auto;\n    }\n    .sm\\:my-0 {\n      margin-block: 0;\n    }\n    .sm\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .sm\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .sm\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .sm\\:my-4 {\n      margin-block: 1rem;\n    }\n    .sm\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .sm\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .sm\\:my-7 {\n      margin-block: 2rem;\n    }\n    .sm\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .sm\\:my-9 {\n      margin-block: 3rem;\n    }\n    .sm\\:my-auto {\n      margin-block: auto;\n    }\n    .sm\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .sm\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .sm\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .sm\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .sm\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .sm\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .sm\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .sm\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .sm\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .sm\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .sm\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .sm\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .sm\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .sm\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .sm\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .sm\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .sm\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .sm\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .sm\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .sm\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .sm\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .sm\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .sm\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .sm\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .sm\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .sm\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .sm\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .sm\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .sm\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .sm\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .sm\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .sm\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .sm\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .sm\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .sm\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .sm\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .sm\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .sm\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .sm\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .sm\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .sm\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .sm\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .sm\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .sm\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .sm\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .sm\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .sm\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .sm\\:p-0 {\n      padding: 0;\n    }\n    .sm\\:p-1 {\n      padding: 0.25rem;\n    }\n    .sm\\:p-2 {\n      padding: 0.5rem;\n    }\n    .sm\\:p-3 {\n      padding: 0.75rem;\n    }\n    .sm\\:p-4 {\n      padding: 1rem;\n    }\n    .sm\\:p-5 {\n      padding: 1.25rem;\n    }\n    .sm\\:p-6 {\n      padding: 1.5rem;\n    }\n    .sm\\:p-7 {\n      padding: 2rem;\n    }\n    .sm\\:p-8 {\n      padding: 2.5rem;\n    }\n    .sm\\:p-9 {\n      padding: 3rem;\n    }\n    .sm\\:px-0 {\n      padding-inline: 0;\n    }\n    .sm\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .sm\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .sm\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .sm\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .sm\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .sm\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .sm\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .sm\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .sm\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .sm\\:py-0 {\n      padding-block: 0;\n    }\n    .sm\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .sm\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .sm\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .sm\\:py-4 {\n      padding-block: 1rem;\n    }\n    .sm\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .sm\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .sm\\:py-7 {\n      padding-block: 2rem;\n    }\n    .sm\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .sm\\:py-9 {\n      padding-block: 3rem;\n    }\n    .sm\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .sm\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .sm\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .sm\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .sm\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .sm\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .sm\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .sm\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .sm\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .sm\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .sm\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .sm\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .sm\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .sm\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .sm\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .sm\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .sm\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .sm\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .sm\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .sm\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .sm\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .sm\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .sm\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .sm\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .sm\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .sm\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .sm\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .sm\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .sm\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .sm\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .sm\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .sm\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .sm\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .sm\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .sm\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .sm\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .sm\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .sm\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .sm\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .sm\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .sm\\:gap-0 {\n      gap: 0;\n    }\n    .sm\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .sm\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .sm\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .sm\\:gap-4 {\n      gap: 1rem;\n    }\n    .sm\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .sm\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .sm\\:gap-7 {\n      gap: 2rem;\n    }\n    .sm\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .sm\\:gap-9 {\n      gap: 3rem;\n    }\n    .sm\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .sm\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .sm\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .sm\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .sm\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .sm\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .sm\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .sm\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .sm\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .sm\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .sm\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .sm\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .sm\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .sm\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .sm\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .sm\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .sm\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .sm\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .sm\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .sm\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.sm\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.sm\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.sm\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.sm\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.sm\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.sm\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.sm\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.sm\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.sm\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.sm\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.sm\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.sm\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.sm\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.sm\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.sm\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.sm\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.sm\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.sm\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.sm\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.sm\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.sm\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.sm\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .sm\\:text-start {\n      text-align: start;\n    }\n    .sm\\:text-end {\n      text-align: end;\n    }\n    .sm\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:float-start {\n      float: inline-start;\n    }\n    .md\\:float-end {\n      float: inline-end;\n    }\n    .md\\:float-none {\n      float: none;\n    }\n    .md\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .md\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .md\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .md\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .md\\:object-fit-none {\n      object-fit: none;\n    }\n    .md\\:d-inline {\n      display: inline;\n    }\n    .md\\:d-inline-block {\n      display: inline-block;\n    }\n    .md\\:d-block {\n      display: block;\n    }\n    .md\\:d-grid {\n      display: grid;\n    }\n    .md\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .md\\:d-table {\n      display: table;\n    }\n    .md\\:d-table-row {\n      display: table-row;\n    }\n    .md\\:d-table-cell {\n      display: table-cell;\n    }\n    .md\\:d-flex {\n      display: flex;\n    }\n    .md\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .md\\:d-contents {\n      display: contents;\n    }\n    .md\\:d-flow-root {\n      display: flow-root;\n    }\n    .md\\:d-none {\n      display: none;\n    }\n    .md\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .md\\:flex-row {\n      flex-direction: row;\n    }\n    .md\\:flex-column {\n      flex-direction: column;\n    }\n    .md\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .md\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .md\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .md\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .md\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .md\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .md\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .md\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .md\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .md\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .md\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .md\\:justify-content-center {\n      justify-content: center;\n    }\n    .md\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .md\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .md\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .md\\:justify-items-start {\n      justify-items: start;\n    }\n    .md\\:justify-items-end {\n      justify-items: end;\n    }\n    .md\\:justify-items-center {\n      justify-items: center;\n    }\n    .md\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .md\\:justify-self-start {\n      justify-self: start;\n    }\n    .md\\:justify-self-end {\n      justify-self: end;\n    }\n    .md\\:justify-self-center {\n      justify-self: center;\n    }\n    .md\\:align-items-start {\n      align-items: flex-start;\n    }\n    .md\\:align-items-end {\n      align-items: flex-end;\n    }\n    .md\\:align-items-center {\n      align-items: center;\n    }\n    .md\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .md\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .md\\:align-content-start {\n      align-content: flex-start;\n    }\n    .md\\:align-content-end {\n      align-content: flex-end;\n    }\n    .md\\:align-content-center {\n      align-content: center;\n    }\n    .md\\:align-content-between {\n      align-content: space-between;\n    }\n    .md\\:align-content-around {\n      align-content: space-around;\n    }\n    .md\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .md\\:align-self-auto {\n      align-self: auto;\n    }\n    .md\\:align-self-start {\n      align-self: flex-start;\n    }\n    .md\\:align-self-end {\n      align-self: flex-end;\n    }\n    .md\\:align-self-center {\n      align-self: center;\n    }\n    .md\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .md\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .md\\:place-items-start {\n      place-items: start;\n    }\n    .md\\:place-items-end {\n      place-items: end;\n    }\n    .md\\:place-items-center {\n      place-items: center;\n    }\n    .md\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .md\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .md\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .md\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .md\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .md\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .md\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .md\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .md\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .md\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .md\\:order-first {\n      order: -1;\n    }\n    .md\\:order-0 {\n      order: 0;\n    }\n    .md\\:order-1 {\n      order: 1;\n    }\n    .md\\:order-2 {\n      order: 2;\n    }\n    .md\\:order-3 {\n      order: 3;\n    }\n    .md\\:order-4 {\n      order: 4;\n    }\n    .md\\:order-5 {\n      order: 5;\n    }\n    .md\\:order-last {\n      order: 6;\n    }\n    .md\\:m-0 {\n      margin: 0;\n    }\n    .md\\:m-1 {\n      margin: 0.25rem;\n    }\n    .md\\:m-2 {\n      margin: 0.5rem;\n    }\n    .md\\:m-3 {\n      margin: 0.75rem;\n    }\n    .md\\:m-4 {\n      margin: 1rem;\n    }\n    .md\\:m-5 {\n      margin: 1.25rem;\n    }\n    .md\\:m-6 {\n      margin: 1.5rem;\n    }\n    .md\\:m-7 {\n      margin: 2rem;\n    }\n    .md\\:m-8 {\n      margin: 2.5rem;\n    }\n    .md\\:m-9 {\n      margin: 3rem;\n    }\n    .md\\:m-auto {\n      margin: auto;\n    }\n    .md\\:mx-0 {\n      margin-inline: 0;\n    }\n    .md\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .md\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .md\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .md\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .md\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .md\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .md\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .md\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .md\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .md\\:mx-auto {\n      margin-inline: auto;\n    }\n    .md\\:my-0 {\n      margin-block: 0;\n    }\n    .md\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .md\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .md\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .md\\:my-4 {\n      margin-block: 1rem;\n    }\n    .md\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .md\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .md\\:my-7 {\n      margin-block: 2rem;\n    }\n    .md\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .md\\:my-9 {\n      margin-block: 3rem;\n    }\n    .md\\:my-auto {\n      margin-block: auto;\n    }\n    .md\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .md\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .md\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .md\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .md\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .md\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .md\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .md\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .md\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .md\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .md\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .md\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .md\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .md\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .md\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .md\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .md\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .md\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .md\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .md\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .md\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .md\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .md\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .md\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .md\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .md\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .md\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .md\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .md\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .md\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .md\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .md\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .md\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .md\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .md\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .md\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .md\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .md\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .md\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .md\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .md\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .md\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .md\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .md\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .md\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .md\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .md\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .md\\:p-0 {\n      padding: 0;\n    }\n    .md\\:p-1 {\n      padding: 0.25rem;\n    }\n    .md\\:p-2 {\n      padding: 0.5rem;\n    }\n    .md\\:p-3 {\n      padding: 0.75rem;\n    }\n    .md\\:p-4 {\n      padding: 1rem;\n    }\n    .md\\:p-5 {\n      padding: 1.25rem;\n    }\n    .md\\:p-6 {\n      padding: 1.5rem;\n    }\n    .md\\:p-7 {\n      padding: 2rem;\n    }\n    .md\\:p-8 {\n      padding: 2.5rem;\n    }\n    .md\\:p-9 {\n      padding: 3rem;\n    }\n    .md\\:px-0 {\n      padding-inline: 0;\n    }\n    .md\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .md\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .md\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .md\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .md\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .md\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .md\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .md\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .md\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .md\\:py-0 {\n      padding-block: 0;\n    }\n    .md\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .md\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .md\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .md\\:py-4 {\n      padding-block: 1rem;\n    }\n    .md\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .md\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .md\\:py-7 {\n      padding-block: 2rem;\n    }\n    .md\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .md\\:py-9 {\n      padding-block: 3rem;\n    }\n    .md\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .md\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .md\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .md\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .md\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .md\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .md\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .md\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .md\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .md\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .md\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .md\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .md\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .md\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .md\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .md\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .md\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .md\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .md\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .md\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .md\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .md\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .md\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .md\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .md\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .md\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .md\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .md\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .md\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .md\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .md\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .md\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .md\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .md\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .md\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .md\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .md\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .md\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .md\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .md\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .md\\:gap-0 {\n      gap: 0;\n    }\n    .md\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .md\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .md\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .md\\:gap-4 {\n      gap: 1rem;\n    }\n    .md\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .md\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .md\\:gap-7 {\n      gap: 2rem;\n    }\n    .md\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .md\\:gap-9 {\n      gap: 3rem;\n    }\n    .md\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .md\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .md\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .md\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .md\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .md\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .md\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .md\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .md\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .md\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .md\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .md\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .md\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .md\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .md\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .md\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .md\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .md\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .md\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .md\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.md\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.md\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.md\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.md\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.md\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.md\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.md\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.md\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.md\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.md\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.md\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.md\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.md\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.md\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.md\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.md\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.md\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.md\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.md\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.md\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.md\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.md\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .md\\:text-start {\n      text-align: start;\n    }\n    .md\\:text-end {\n      text-align: end;\n    }\n    .md\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:float-start {\n      float: inline-start;\n    }\n    .lg\\:float-end {\n      float: inline-end;\n    }\n    .lg\\:float-none {\n      float: none;\n    }\n    .lg\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .lg\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .lg\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .lg\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .lg\\:object-fit-none {\n      object-fit: none;\n    }\n    .lg\\:d-inline {\n      display: inline;\n    }\n    .lg\\:d-inline-block {\n      display: inline-block;\n    }\n    .lg\\:d-block {\n      display: block;\n    }\n    .lg\\:d-grid {\n      display: grid;\n    }\n    .lg\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .lg\\:d-table {\n      display: table;\n    }\n    .lg\\:d-table-row {\n      display: table-row;\n    }\n    .lg\\:d-table-cell {\n      display: table-cell;\n    }\n    .lg\\:d-flex {\n      display: flex;\n    }\n    .lg\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .lg\\:d-contents {\n      display: contents;\n    }\n    .lg\\:d-flow-root {\n      display: flow-root;\n    }\n    .lg\\:d-none {\n      display: none;\n    }\n    .lg\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .lg\\:flex-row {\n      flex-direction: row;\n    }\n    .lg\\:flex-column {\n      flex-direction: column;\n    }\n    .lg\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .lg\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .lg\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .lg\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .lg\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .lg\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .lg\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .lg\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .lg\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .lg\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .lg\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .lg\\:justify-content-center {\n      justify-content: center;\n    }\n    .lg\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .lg\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .lg\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .lg\\:justify-items-start {\n      justify-items: start;\n    }\n    .lg\\:justify-items-end {\n      justify-items: end;\n    }\n    .lg\\:justify-items-center {\n      justify-items: center;\n    }\n    .lg\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .lg\\:justify-self-start {\n      justify-self: start;\n    }\n    .lg\\:justify-self-end {\n      justify-self: end;\n    }\n    .lg\\:justify-self-center {\n      justify-self: center;\n    }\n    .lg\\:align-items-start {\n      align-items: flex-start;\n    }\n    .lg\\:align-items-end {\n      align-items: flex-end;\n    }\n    .lg\\:align-items-center {\n      align-items: center;\n    }\n    .lg\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .lg\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .lg\\:align-content-start {\n      align-content: flex-start;\n    }\n    .lg\\:align-content-end {\n      align-content: flex-end;\n    }\n    .lg\\:align-content-center {\n      align-content: center;\n    }\n    .lg\\:align-content-between {\n      align-content: space-between;\n    }\n    .lg\\:align-content-around {\n      align-content: space-around;\n    }\n    .lg\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .lg\\:align-self-auto {\n      align-self: auto;\n    }\n    .lg\\:align-self-start {\n      align-self: flex-start;\n    }\n    .lg\\:align-self-end {\n      align-self: flex-end;\n    }\n    .lg\\:align-self-center {\n      align-self: center;\n    }\n    .lg\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .lg\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .lg\\:place-items-start {\n      place-items: start;\n    }\n    .lg\\:place-items-end {\n      place-items: end;\n    }\n    .lg\\:place-items-center {\n      place-items: center;\n    }\n    .lg\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .lg\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .lg\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .lg\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .lg\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .lg\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .lg\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .lg\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .lg\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .lg\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .lg\\:order-first {\n      order: -1;\n    }\n    .lg\\:order-0 {\n      order: 0;\n    }\n    .lg\\:order-1 {\n      order: 1;\n    }\n    .lg\\:order-2 {\n      order: 2;\n    }\n    .lg\\:order-3 {\n      order: 3;\n    }\n    .lg\\:order-4 {\n      order: 4;\n    }\n    .lg\\:order-5 {\n      order: 5;\n    }\n    .lg\\:order-last {\n      order: 6;\n    }\n    .lg\\:m-0 {\n      margin: 0;\n    }\n    .lg\\:m-1 {\n      margin: 0.25rem;\n    }\n    .lg\\:m-2 {\n      margin: 0.5rem;\n    }\n    .lg\\:m-3 {\n      margin: 0.75rem;\n    }\n    .lg\\:m-4 {\n      margin: 1rem;\n    }\n    .lg\\:m-5 {\n      margin: 1.25rem;\n    }\n    .lg\\:m-6 {\n      margin: 1.5rem;\n    }\n    .lg\\:m-7 {\n      margin: 2rem;\n    }\n    .lg\\:m-8 {\n      margin: 2.5rem;\n    }\n    .lg\\:m-9 {\n      margin: 3rem;\n    }\n    .lg\\:m-auto {\n      margin: auto;\n    }\n    .lg\\:mx-0 {\n      margin-inline: 0;\n    }\n    .lg\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .lg\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .lg\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .lg\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .lg\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .lg\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .lg\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .lg\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .lg\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .lg\\:mx-auto {\n      margin-inline: auto;\n    }\n    .lg\\:my-0 {\n      margin-block: 0;\n    }\n    .lg\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .lg\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .lg\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .lg\\:my-4 {\n      margin-block: 1rem;\n    }\n    .lg\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .lg\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .lg\\:my-7 {\n      margin-block: 2rem;\n    }\n    .lg\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .lg\\:my-9 {\n      margin-block: 3rem;\n    }\n    .lg\\:my-auto {\n      margin-block: auto;\n    }\n    .lg\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .lg\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .lg\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .lg\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .lg\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .lg\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .lg\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .lg\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .lg\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .lg\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .lg\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .lg\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .lg\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .lg\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .lg\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .lg\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .lg\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .lg\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .lg\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .lg\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .lg\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .lg\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .lg\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .lg\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .lg\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .lg\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .lg\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .lg\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .lg\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .lg\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .lg\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .lg\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .lg\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .lg\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .lg\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .lg\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .lg\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .lg\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .lg\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .lg\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .lg\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .lg\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .lg\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .lg\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .lg\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .lg\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .lg\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .lg\\:p-0 {\n      padding: 0;\n    }\n    .lg\\:p-1 {\n      padding: 0.25rem;\n    }\n    .lg\\:p-2 {\n      padding: 0.5rem;\n    }\n    .lg\\:p-3 {\n      padding: 0.75rem;\n    }\n    .lg\\:p-4 {\n      padding: 1rem;\n    }\n    .lg\\:p-5 {\n      padding: 1.25rem;\n    }\n    .lg\\:p-6 {\n      padding: 1.5rem;\n    }\n    .lg\\:p-7 {\n      padding: 2rem;\n    }\n    .lg\\:p-8 {\n      padding: 2.5rem;\n    }\n    .lg\\:p-9 {\n      padding: 3rem;\n    }\n    .lg\\:px-0 {\n      padding-inline: 0;\n    }\n    .lg\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .lg\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .lg\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .lg\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .lg\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .lg\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .lg\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .lg\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .lg\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .lg\\:py-0 {\n      padding-block: 0;\n    }\n    .lg\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .lg\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .lg\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .lg\\:py-4 {\n      padding-block: 1rem;\n    }\n    .lg\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .lg\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .lg\\:py-7 {\n      padding-block: 2rem;\n    }\n    .lg\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .lg\\:py-9 {\n      padding-block: 3rem;\n    }\n    .lg\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .lg\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .lg\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .lg\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .lg\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .lg\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .lg\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .lg\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .lg\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .lg\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .lg\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .lg\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .lg\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .lg\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .lg\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .lg\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .lg\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .lg\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .lg\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .lg\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .lg\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .lg\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .lg\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .lg\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .lg\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .lg\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .lg\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .lg\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .lg\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .lg\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .lg\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .lg\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .lg\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .lg\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .lg\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .lg\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .lg\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .lg\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .lg\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .lg\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .lg\\:gap-0 {\n      gap: 0;\n    }\n    .lg\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .lg\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .lg\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .lg\\:gap-4 {\n      gap: 1rem;\n    }\n    .lg\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .lg\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .lg\\:gap-7 {\n      gap: 2rem;\n    }\n    .lg\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .lg\\:gap-9 {\n      gap: 3rem;\n    }\n    .lg\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .lg\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .lg\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .lg\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .lg\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .lg\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .lg\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .lg\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .lg\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .lg\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .lg\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .lg\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .lg\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .lg\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .lg\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .lg\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .lg\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .lg\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .lg\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .lg\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.lg\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.lg\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.lg\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.lg\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.lg\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.lg\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.lg\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.lg\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.lg\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.lg\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.lg\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.lg\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.lg\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.lg\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.lg\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.lg\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.lg\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.lg\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.lg\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.lg\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.lg\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.lg\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .lg\\:text-start {\n      text-align: start;\n    }\n    .lg\\:text-end {\n      text-align: end;\n    }\n    .lg\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:float-start {\n      float: inline-start;\n    }\n    .xl\\:float-end {\n      float: inline-end;\n    }\n    .xl\\:float-none {\n      float: none;\n    }\n    .xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .xl\\:d-inline {\n      display: inline;\n    }\n    .xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .xl\\:d-block {\n      display: block;\n    }\n    .xl\\:d-grid {\n      display: grid;\n    }\n    .xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .xl\\:d-table {\n      display: table;\n    }\n    .xl\\:d-table-row {\n      display: table-row;\n    }\n    .xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .xl\\:d-flex {\n      display: flex;\n    }\n    .xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .xl\\:d-contents {\n      display: contents;\n    }\n    .xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .xl\\:d-none {\n      display: none;\n    }\n    .xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .xl\\:flex-row {\n      flex-direction: row;\n    }\n    .xl\\:flex-column {\n      flex-direction: column;\n    }\n    .xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .xl\\:align-items-center {\n      align-items: center;\n    }\n    .xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .xl\\:align-content-center {\n      align-content: center;\n    }\n    .xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .xl\\:align-self-center {\n      align-self: center;\n    }\n    .xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .xl\\:place-items-start {\n      place-items: start;\n    }\n    .xl\\:place-items-end {\n      place-items: end;\n    }\n    .xl\\:place-items-center {\n      place-items: center;\n    }\n    .xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .xl\\:order-first {\n      order: -1;\n    }\n    .xl\\:order-0 {\n      order: 0;\n    }\n    .xl\\:order-1 {\n      order: 1;\n    }\n    .xl\\:order-2 {\n      order: 2;\n    }\n    .xl\\:order-3 {\n      order: 3;\n    }\n    .xl\\:order-4 {\n      order: 4;\n    }\n    .xl\\:order-5 {\n      order: 5;\n    }\n    .xl\\:order-last {\n      order: 6;\n    }\n    .xl\\:m-0 {\n      margin: 0;\n    }\n    .xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .xl\\:m-4 {\n      margin: 1rem;\n    }\n    .xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .xl\\:m-7 {\n      margin: 2rem;\n    }\n    .xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .xl\\:m-9 {\n      margin: 3rem;\n    }\n    .xl\\:m-auto {\n      margin: auto;\n    }\n    .xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .xl\\:my-0 {\n      margin-block: 0;\n    }\n    .xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .xl\\:my-auto {\n      margin-block: auto;\n    }\n    .xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .xl\\:p-0 {\n      padding: 0;\n    }\n    .xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .xl\\:p-4 {\n      padding: 1rem;\n    }\n    .xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .xl\\:p-7 {\n      padding: 2rem;\n    }\n    .xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .xl\\:p-9 {\n      padding: 3rem;\n    }\n    .xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .xl\\:py-0 {\n      padding-block: 0;\n    }\n    .xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .xl\\:gap-0 {\n      gap: 0;\n    }\n    .xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .xl\\:text-start {\n      text-align: start;\n    }\n    .xl\\:text-end {\n      text-align: end;\n    }\n    .xl\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:float-start {\n      float: inline-start;\n    }\n    .\\32 xl\\:float-end {\n      float: inline-end;\n    }\n    .\\32 xl\\:float-none {\n      float: none;\n    }\n    .\\32 xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .\\32 xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .\\32 xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .\\32 xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .\\32 xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .\\32 xl\\:d-inline {\n      display: inline;\n    }\n    .\\32 xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .\\32 xl\\:d-block {\n      display: block;\n    }\n    .\\32 xl\\:d-grid {\n      display: grid;\n    }\n    .\\32 xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .\\32 xl\\:d-table {\n      display: table;\n    }\n    .\\32 xl\\:d-table-row {\n      display: table-row;\n    }\n    .\\32 xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .\\32 xl\\:d-flex {\n      display: flex;\n    }\n    .\\32 xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .\\32 xl\\:d-contents {\n      display: contents;\n    }\n    .\\32 xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .\\32 xl\\:d-none {\n      display: none;\n    }\n    .\\32 xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .\\32 xl\\:flex-row {\n      flex-direction: row;\n    }\n    .\\32 xl\\:flex-column {\n      flex-direction: column;\n    }\n    .\\32 xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .\\32 xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .\\32 xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .\\32 xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .\\32 xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .\\32 xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .\\32 xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .\\32 xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .\\32 xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .\\32 xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .\\32 xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .\\32 xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .\\32 xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .\\32 xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .\\32 xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .\\32 xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .\\32 xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .\\32 xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .\\32 xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .\\32 xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .\\32 xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .\\32 xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .\\32 xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .\\32 xl\\:align-items-center {\n      align-items: center;\n    }\n    .\\32 xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .\\32 xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .\\32 xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .\\32 xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .\\32 xl\\:align-content-center {\n      align-content: center;\n    }\n    .\\32 xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .\\32 xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .\\32 xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .\\32 xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .\\32 xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .\\32 xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .\\32 xl\\:align-self-center {\n      align-self: center;\n    }\n    .\\32 xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .\\32 xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .\\32 xl\\:place-items-start {\n      place-items: start;\n    }\n    .\\32 xl\\:place-items-end {\n      place-items: end;\n    }\n    .\\32 xl\\:place-items-center {\n      place-items: center;\n    }\n    .\\32 xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .\\32 xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .\\32 xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .\\32 xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .\\32 xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .\\32 xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .\\32 xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .\\32 xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .\\32 xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .\\32 xl\\:order-first {\n      order: -1;\n    }\n    .\\32 xl\\:order-0 {\n      order: 0;\n    }\n    .\\32 xl\\:order-1 {\n      order: 1;\n    }\n    .\\32 xl\\:order-2 {\n      order: 2;\n    }\n    .\\32 xl\\:order-3 {\n      order: 3;\n    }\n    .\\32 xl\\:order-4 {\n      order: 4;\n    }\n    .\\32 xl\\:order-5 {\n      order: 5;\n    }\n    .\\32 xl\\:order-last {\n      order: 6;\n    }\n    .\\32 xl\\:m-0 {\n      margin: 0;\n    }\n    .\\32 xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .\\32 xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .\\32 xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .\\32 xl\\:m-4 {\n      margin: 1rem;\n    }\n    .\\32 xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .\\32 xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .\\32 xl\\:m-7 {\n      margin: 2rem;\n    }\n    .\\32 xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .\\32 xl\\:m-9 {\n      margin: 3rem;\n    }\n    .\\32 xl\\:m-auto {\n      margin: auto;\n    }\n    .\\32 xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .\\32 xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .\\32 xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .\\32 xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .\\32 xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .\\32 xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .\\32 xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .\\32 xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .\\32 xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .\\32 xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .\\32 xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .\\32 xl\\:my-0 {\n      margin-block: 0;\n    }\n    .\\32 xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .\\32 xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .\\32 xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .\\32 xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .\\32 xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .\\32 xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .\\32 xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .\\32 xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .\\32 xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .\\32 xl\\:my-auto {\n      margin-block: auto;\n    }\n    .\\32 xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .\\32 xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .\\32 xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .\\32 xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .\\32 xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .\\32 xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .\\32 xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .\\32 xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .\\32 xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .\\32 xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .\\32 xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .\\32 xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .\\32 xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .\\32 xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .\\32 xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .\\32 xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .\\32 xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .\\32 xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .\\32 xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .\\32 xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .\\32 xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .\\32 xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .\\32 xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .\\32 xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .\\32 xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .\\32 xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .\\32 xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .\\32 xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .\\32 xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .\\32 xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .\\32 xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .\\32 xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .\\32 xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .\\32 xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .\\32 xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .\\32 xl\\:p-0 {\n      padding: 0;\n    }\n    .\\32 xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .\\32 xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .\\32 xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .\\32 xl\\:p-4 {\n      padding: 1rem;\n    }\n    .\\32 xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .\\32 xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .\\32 xl\\:p-7 {\n      padding: 2rem;\n    }\n    .\\32 xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .\\32 xl\\:p-9 {\n      padding: 3rem;\n    }\n    .\\32 xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .\\32 xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .\\32 xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .\\32 xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .\\32 xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .\\32 xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .\\32 xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .\\32 xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .\\32 xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .\\32 xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .\\32 xl\\:py-0 {\n      padding-block: 0;\n    }\n    .\\32 xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .\\32 xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .\\32 xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .\\32 xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .\\32 xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .\\32 xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .\\32 xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .\\32 xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .\\32 xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .\\32 xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .\\32 xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .\\32 xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .\\32 xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .\\32 xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .\\32 xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .\\32 xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .\\32 xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .\\32 xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .\\32 xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .\\32 xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .\\32 xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .\\32 xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .\\32 xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .\\32 xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .\\32 xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .\\32 xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .\\32 xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .\\32 xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .\\32 xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .\\32 xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .\\32 xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .\\32 xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .\\32 xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .\\32 xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .\\32 xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .\\32 xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .\\32 xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .\\32 xl\\:gap-0 {\n      gap: 0;\n    }\n    .\\32 xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .\\32 xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .\\32 xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .\\32 xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .\\32 xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .\\32 xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .\\32 xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .\\32 xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .\\32 xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .\\32 xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .\\32 xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .\\32 xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .\\32 xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .\\32 xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .\\32 xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .\\32 xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .\\32 xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .\\32 xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .\\32 xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .\\32 xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .\\32 xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .\\32 xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .\\32 xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .\\32 xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .\\32 xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .\\32 xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .\\32 xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .\\32 xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .\\32 xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.\\32 xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.\\32 xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.\\32 xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.\\32 xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.\\32 xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.\\32 xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .\\32 xl\\:text-start {\n      text-align: start;\n    }\n    .\\32 xl\\:text-end {\n      text-align: end;\n    }\n    .\\32 xl\\:text-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-fg)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', monospace;\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(var(--gray-200), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow-xs: 0 .0625rem .1875rem rgb(0 0 0 / 7.5%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--radius-5),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--radius-5),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--radius-5),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--radius-7),\n    // scss-docs-end root-form-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n// Generate spacer tokens\n// scss-docs-start root-spacer-loop\n@each $key, $value in $spacers {\n  $root-tokens: map.set($root-tokens, --spacer-#{$key}, $value);\n}\n// scss-docs-end root-spacer-loop\n\n// Generate radius tokens\n// scss-docs-start root-radius-loop\n@each $key, $value in $radii {\n  $root-tokens: map.set($root-tokens, --radius-#{$key}, $value);\n}\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: map.set($root-tokens, --radius-pill, 50rem);\n// scss-docs-end root-radius-loop\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n  // Always reserve the viewport scrollbar gutter so layout doesn't shift\n  // when overflow: hidden is applied (e.g. when a dialog opens on Windows).\n  scrollbar-gutter: stable;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--radius-5),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Reset iframe color-scheme\n  //\n  // If the color scheme of an iframe differs from parent document, iframe gets\n  // an opaque canvas background appropriate (resulting in a white background\n  // on the iframe when in a page with a dark color scheme).\n  iframe {\n    color-scheme: light dark;\n    border: 0;\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: transparent; // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: var(--font-size-3xl);\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: var(--font-size-2xl);\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: var(--font-size-xl);\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: var(--font-size-lg);\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: var(--font-size-md);\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: var(--font-size-sm);\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-fg-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href], [class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"], [type=\"datetime-local\"], [type=\"month\"], [type=\"week\"], [type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-meridiem-field, // WebKit\n  ::-webkit-datetime-edit-ampm-field, // Chromium\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button,\n  ::-webkit-outer-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            true !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        false !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer * .75,\n  4: $spacer,\n  5: $spacer * 1.25,\n  6: $spacer * 1.5,\n  7: $spacer * 2,\n  8: $spacer * 2.5,\n  9: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: $spacer * 2,\n  3: $spacer * 3,\n  4: $spacer * 4,\n  5: $spacer * 5,\n  6: $spacer * 6,\n  7: $spacer * 7,\n  8: $spacer * 8,\n  9: $spacer * 9,\n  10: $spacer * 10,\n  11: $spacer * 11,\n  12: $spacer * 12,\n) !default;\n\n$radius: .5rem !default;\n$radii: (\n  0: 0,\n  1: $radius * .25,\n  2: $radius * .375,\n  3: $radius * .5,\n  4: $radius * .75,\n  5: $radius,\n  6: $radius * 1.25,\n  7: $radius * 1.5,\n  8: $radius * 2,\n  9: $radius * 3,\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      var(--spacer-2) !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n// $zindex-drawer-backdrop:         1040 !default;\n$zindex-drawer:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--radius-5), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/lists\" as *;\n@use \"../mixins/tokens\" as *;\n\n$blockquote-tokens: () !default;\n\n// scss-docs-start blockquote-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$blockquote-tokens: defaults(\n  (\n    --blockquote-gap: calc(var(--spacer) / 2),\n    --blockquote-padding-x: var(--spacer),\n    --blockquote-margin-y: 1rem,\n    --blockquote-font-size: var(--font-size-md),\n    --blockquote-border-width: .25rem,\n    --blockquote-border-color: var(--border-color),\n    --blockquote-footer-font-size: var(--font-size-sm),\n    --blockquote-footer-color: var(--fg-3),\n  ),\n  $blockquote-tokens\n);\n// scss-docs-end blockquote-tokens\n\n@layer content {\n  //\n  // Lists\n  //\n\n  .list-unstyled {\n    @include list-unstyled();\n  }\n\n  // Inline turns list items into inline-block\n  .list-inline {\n    @include list-unstyled();\n  }\n  .list-inline-item {\n    display: inline-block;\n\n    &:not(:last-child) {\n      margin-inline-end: var(--list-inline-padding, var(--spacer) / 2);\n    }\n  }\n\n  //\n  // Misc\n  //\n\n  // Builds on `abbr`\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n\n  // Blockquotes\n  .blockquote {\n    @include tokens($blockquote-tokens);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n\n    > * {\n      margin-bottom: 0;\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  figure.blockquote {\n    blockquote {\n      margin-bottom: 0;\n    }\n  }\n\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n\n    &::before {\n      content: \"\\2014\\00A0\"; // em dash, nbsp\n    }\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-inline-start: 0;\n  list-style-type: \"\";\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$table-tokens: () !default;\n\n// scss-docs-start table-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$table-tokens: defaults(\n  (\n    --table-cell-padding-y: .5rem,\n    --table-cell-padding-x: .5rem,\n    --table-cell-vertical-align: top,\n    --table-color: var(--fg-body),\n    --table-bg: var(--bg-body),\n    --table-accent-bg: transparent,\n    --table-border-width: var(--border-width),\n    --table-border-color: var(--border-color),\n    --table-group-separator-color: currentcolor,\n    --table-striped-color: var(--table-color),\n    --table-striped-bg-factor: 5%,\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent),\n    --table-active-color: var(--table-color),\n    --table-active-bg-factor: 10%,\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent),\n    --table-hover-color: var(--table-color),\n    --table-hover-bg-factor: 7.5%,\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent),\n  ),\n  $table-tokens\n);\n// scss-docs-end table-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n//\n// Basic Bootstrap table\n//\n\n@layer content {\n  .table {\n    @include tokens($table-tokens);\n\n    // Reset needed for nesting tables\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    // End of reset\n\n    width: 100%;\n    margin-bottom: var(--spacer);\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n\n    // Target th & td\n    // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n    // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n    // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n      // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb\n      color: var(--table-color-state, var(--table-color-type, var(--theme-fg, var(--table-color))));\n      background-color: var(--theme-bg-subtle, var(--table-bg));\n      border-block-end-width: var(--table-border-width);\n      box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n    }\n\n    > tbody {\n      vertical-align: inherit;\n    }\n\n    > thead {\n      vertical-align: bottom;\n    }\n  }\n\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n\n  //\n  // Change placement of captions with a class\n  //\n\n  .caption-top {\n    caption-side: top;\n  }\n\n  //\n  // Condensed table w/ half padding\n  //\n\n  .table-sm {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      --table-cell-padding-y: .25rem;\n      --table-cell-padding-x: .25rem;\n    }\n  }\n\n  // Border versions\n  //\n  // Add or remove borders all around the table and between all the columns.\n  //\n  // When borders are added on all sides of the cells, the corners can render odd when\n  // these borders do not have the same color or if they are semi-transparent.\n  // Therefore we add top and border bottoms to the `tr`s and left and right borders\n  // to the `td`s or `th`s\n\n  .table-bordered {\n    > :not(caption) > * {\n      border-width: var(--table-border-width) 0;\n\n      // stylelint-disable-next-line selector-max-universal\n      > * {\n        border-width: 0 var(--table-border-width);\n      }\n    }\n  }\n\n  .table-borderless {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      border-block-end-width: 0;\n    }\n\n    > :not(:first-child) {\n      border-block-start-width: 0;\n    }\n  }\n\n  // Zebra-striping\n  //\n  // Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n  // For rows\n  .table-striped {\n    > tbody > tr:nth-of-type(#{$table-striped-order}) > * {\n      --table-color-type: var(--theme-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // For columns\n  .table-striped-columns {\n    > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {\n      --table-color-type: var(--theme-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // Active table\n  //\n  // The `.table-active` class can be added to highlight rows or cells\n\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n\n  // Hover effect\n  //\n  // Placed here since it has to come after the potential zebra striping\n\n  .table-hover {\n    > tbody > tr:hover > * {\n      --table-color-state: var(--theme-fg, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate `.table-responsive` classes that act as container query contexts\n  // and enable horizontal scrolling when table content overflows.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    .#{$prefix}table-responsive {\n      container-type: inline-size;\n\n      @include media-breakpoint-down($breakpoint) {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n\n  // Stacked tables\n  //\n  // Generate `.table-stacked` classes that convert table rows into stacked\n  // blocks using container queries. Requires a `.table-responsive` ancestor\n  // and `data-cell` attributes on `<td>` elements for column labels.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include container-breakpoint-down($breakpoint) {\n      .#{$prefix}table-stacked {\n        > thead {\n          position: absolute;\n          width: 1px;\n          height: 1px;\n          padding: 0;\n          margin: -1px;\n          overflow: hidden;\n          clip: rect(0, 0, 0, 0);\n          white-space: nowrap;\n          border: 0;\n        }\n\n        > tbody > tr {\n          display: block;\n          padding-block: var(--table-cell-padding-y);\n\n          + tr {\n            border-block-start: var(--table-border-width) solid var(--table-border-color);\n          }\n\n          > td {\n            display: block;\n            padding: calc(var(--table-cell-padding-y) * .25) calc(var(--table-cell-padding-x) * 2);\n            border: 0;\n\n            &:first-child {\n              font-weight: var(--font-weight-bold);\n            }\n\n            // + td::before {\n            //   margin-block-start: .25rem;\n            // }\n\n            &[data-cell]:not(:first-child)::before {\n              display: block;\n              font-weight: var(--font-weight-semibold);\n              content: attr(data-cell);\n            }\n          }\n\n          > td:not(:first-child) + td::before {\n            margin-block-start: .25rem;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:string\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Escape a name for use at the start of a CSS identifier.\n// Leading digits are hex-escaped (e.g., 2xl becomes \\32 xl).\n@function css-escape-ident($name) {\n  $name-str: \"#{$name}\";\n  $digits: \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\";\n  $first: string.slice($name-str, 1, 1);\n\n  @if list.index($digits, $first) {\n    @return \"\\\\3#{$first} #{string.slice($name-str, 2)}\";\n  }\n\n  @return $name-str;\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name\n// with an escaped colon as a Tailwind-style prefix for responsive class names.\n// Leading digits are CSS-escaped (e.g., 2xl becomes \\32 xl) for valid identifiers.\n//\n//    >> breakpoint-prefix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-prefix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"sm\\:\"\n//    >> breakpoint-prefix(2xl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\\32 xl\\:\"\n@function breakpoint-prefix($name, $breakpoints: $breakpoints) {\n  @if breakpoint-min($name, $breakpoints) == null {\n    @return \"\";\n  }\n\n  @return \"#{css-escape-ident($name)}\\\\:\";\n}\n\n// Iterate all breakpoints and provide the current name and prefix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n    @content($breakpoint, $prefix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next prefix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $prefix: breakpoint-prefix($next, $breakpoints);\n    @content($breakpoint, $next, $prefix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $prefix) {\n    @content($breakpoint, $next, $prefix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/image\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/tokens\" as *;\n\n$thumbnail-tokens: () !default;\n\n// scss-docs-start thumbnail-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$thumbnail-tokens: defaults(\n  (\n    --thumbnail-padding: .25rem,\n    --thumbnail-bg: var(--bg-body),\n    --thumbnail-border-width: var(--border-width),\n    --thumbnail-border-color: var(--border-color),\n    --thumbnail-border-radius: var(--radius-5),\n    --thumbnail-box-shadow: var(--box-shadow-sm),\n  ),\n  $thumbnail-tokens\n);\n// scss-docs-end thumbnail-tokens\n\n$figure-tokens: () !default;\n\n// scss-docs-start figure-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$figure-tokens: defaults(\n  (\n    --figure-gap: calc(var(--spacer) * .5),\n    --figure-caption-font-size: var(--font-size-sm),\n    --figure-caption-color: var(--fg-3),\n  ),\n  $figure-tokens\n);\n// scss-docs-end figure-tokens\n\n@layer content {\n  // Responsive images (ensure images don't scale beyond their parents)\n  //\n  // This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n  // We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n  // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n  // which weren't expecting the images within themselves to be involuntarily resized.\n  // See also https://github.com/twbs/bootstrap/issues/18178\n  .img-fluid {\n    @include img-fluid();\n  }\n\n  .img-thumbnail {\n    @include tokens($thumbnail-tokens);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    @include border-radius(var(--thumbnail-border-radius));\n    @include box-shadow(var(--thumbnail-box-shadow));\n\n    // Keep them at most 100% wide\n    @include img-fluid();\n  }\n\n  .figure {\n    @include tokens($figure-tokens);\n    // Ensures the caption's text aligns with the image.\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n@mixin box-shadow($shadow...) {\n  @if $enable-shadows {\n    $result: ();\n    $has-single-value: false;\n    $single-value: null;\n\n    @each $value in $shadow {\n      @if $value != null {\n        @if $value == none or $value == initial or $value == inherit or $value == unset {\n          $has-single-value: true;\n          $single-value: $value;\n        } @else {\n          $result: list.append($result, $value, \"comma\");\n        }\n      }\n    }\n\n    @if $has-single-value {\n      box-shadow: $single-value;\n    } @else if (list.length($result) > 0) {\n      box-shadow: $result;\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$prose-tokens: () !default;\n\n// scss-docs-start prose-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$prose-tokens: defaults(\n  (\n    --content-font-size: 1rem,\n    --content-line-height: 1.5,\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height)),\n    --heading-color: light-dark(var(--gray-900), var(--white)),\n  ),\n  $prose-tokens\n);\n// scss-docs-end prose-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer content {\n  .prose {\n    @include tokens($prose-tokens);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: var(--content-line-height);\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n      // --content-gap: calc(var(--content-font-size) * var(--content-line-height));\n    }\n\n    :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n      margin-block: 0;\n    }\n\n    :where(ul, ol):not([class], :where(.not-prose, .not-prose *)) li:not(:last-child) {\n      margin-bottom: calc(var(--content-gap) / 4);\n    }\n\n    :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) / 4);\n    }\n\n    :where(hr):not(:where(.not-prose, .not-prose *)) {\n      margin: calc(var(--content-gap) * 1.5) 0;\n      border: 0;\n      border-block-start: var(--border-width) solid var(--hr-border-color);\n    }\n\n    :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) {\n      margin-top: 0;\n      margin-bottom: calc(var(--content-gap) / -2);\n      font-weight: 500;\n      line-height: 1.25;\n\n      code {\n        font-weight: 600;\n        color: inherit;\n      }\n    }\n\n    :where(h1, h2):not(:first-child, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .5);\n    }\n\n    :where(h1):not(:where(.not-prose, .not-prose *)) {\n      font-size: 2.25em;\n      line-height: 1.1;\n    }\n    :where(h2):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.75em;\n    }\n    :where(h3):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.5em;\n    }\n    :where(h4):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.25em;\n    }\n    :where(h5):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.125em;\n    }\n    :where(h6):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1em;\n    }\n\n    :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      color: var(--link-color);\n      text-decoration: underline;\n      text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n      text-underline-offset: 4px;\n      @include transition(.1s text-decoration-color ease-in-out);\n\n      &:hover {\n        text-decoration-color: var(--link-hover-color);\n      }\n    }\n\n    :where(img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n\n    :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n      padding-inline-start: calc(var(--content-gap) / 2);\n      margin: 0;\n      border-inline-start: 4px solid var(--border-color);\n    }\n\n    :where(table):not(:where(.not-prose, .not-prose *)) {\n      width: 100%;\n      border-spacing: 0;\n      border-collapse: collapse;\n    }\n\n    :where(table:not([class])):not(:where(.not-prose, .not-prose *)) {\n      td,\n      th {\n        padding: 6px 12px;\n        text-align: inherit;\n        border: 1px solid var(--border-color);\n      }\n    }\n\n    :where(dt):not(:where(.not-prose, .not-prose *)) {\n      font-weight: 500;\n    }\n\n    :where(video, img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .#{breakpoint-prefix($breakpoint, $breakpoints)}container {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .#{breakpoint-prefix($name, $breakpoints)}container {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      .#{$prefix}col {\n        flex: 1 0 0;\n      }\n\n      .#{$prefix}row-cols-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .#{$prefix}row-cols-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .#{$prefix}col-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}col-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($prefix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .#{$prefix}offset-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gx-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gy-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}g-col-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .#{$prefix}g-start-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n\n$form-label-tokens: () !default;\n\n// scss-docs-start form-label-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-label-tokens: defaults(\n  (\n    --label-margin-bottom: calc(var(--spacer) / 2),\n    --label-font-size: null,\n    --label-font-style: null,\n    --label-font-weight: null,\n    --label-color: null,\n  ),\n  $form-label-tokens\n);\n// scss-docs-end form-label-tokens\n\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\n    color: var(--label-color, var(--fg-body));\n  }\n\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n\n  // For use with horizontal and inline forms, when you need the label (or legend)\n  // text to align with the form controls.\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0; // Override the `<legend>` default\n  }\n\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-text-tokens: () !default;\n\n// scss-docs-start form-text-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-text-tokens: defaults(\n  (\n    --form-text-margin-top: .25rem,\n    --form-text-font-size: var(--font-size-sm),\n    --form-text-font-style: null,\n    --form-text-font-weight: null,\n    --form-text-color: var(--fg-2),\n  ),\n  $form-text-tokens\n);\n// scss-docs-end form-text-tokens\n\n@layer forms {\n  .form-text {\n    @include tokens($form-text-tokens);\n\n    // margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-control-tokens: () !default;\n\n// scss-docs-start form-control-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-tokens: defaults(\n  (\n    --control-min-height: var(--btn-input-min-height),\n    --control-padding-y: var(--btn-input-padding-y),\n    --control-padding-x: var(--btn-input-padding-x),\n    --control-font-size: var(--btn-input-font-size),\n    --control-line-height: var(--btn-input-line-height),\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--radius-5),\n    --control-box-shadow: var(--box-shadow-inset),\n    --control-action-bg: var(--bg-1),\n    --control-action-hover-bg: var(--bg-2),\n    --control-transition-property: \"border-color, box-shadow\",\n    --control-transition-timing: .15s ease-in-out,\n    --control-transition: var(--control-transition-property) var(--control-transition-timing),\n    --control-placeholder-color: var(--fg-3),\n    --control-disabled-color: var(--control-fg),\n    --control-disabled-bg: var(--bg-2),\n    --control-disabled-border-color: var(--control-border-color),\n    --control-select-bg: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#00000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n    --control-select-bg-position: right .75rem center,\n    --control-select-bg-size: 16px 12px,\n    --control-select-bg-dark: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n  ),\n  $form-control-tokens\n);\n// scss-docs-end form-control-tokens\n\n// scss-docs-start form-control-sizes\n$form-control-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $form-control-sizes\n);\n// scss-docs-end form-control-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .form-control {\n    @include tokens($form-control-tokens);\n\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n    @include box-shadow(var(--control-box-shadow));\n    @include transition(var(--control-transition));\n\n    // Customize the `:focus` state to imitate native WebKit styles.\n    &:focus-visible {\n      --focus-ring-offset: -1px;\n      @include focus-ring(true);\n    }\n\n    // Placeholder\n    &::placeholder {\n      color: var(--control-placeholder-color);\n      // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n      opacity: 1;\n    }\n\n    // Disabled inputs\n    //\n    // HTML5 says that controls under a fieldset > legend:first-child won't be\n    // disabled if the fieldset is disabled. Due to implementation difficulty, we\n    // don't honor that edge case; we style them as disabled anyway.\n    &:disabled {\n      color: var(--control-disabled-color);\n      background-color: var(--control-disabled-bg);\n      border-color: var(--control-disabled-border-color);\n      // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n      opacity: 1;\n    }\n\n    // Date and time inputs\n    // &::-webkit-date-and-time-value {\n    //   // On Android Chrome, form-control's \"width: 100%\" makes the input width too small\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   //\n    //   // On iOS Safari, form-control's \"appearance: none\" + \"width: 100%\" makes the input width too small\n    //   // Tested under iOS 16.2 / Safari 16.2\n    //   min-width: 85px; // Seems to be a good minimum safe width\n\n    //   // Add some height to date inputs on iOS\n    //   // https://github.com/twbs/bootstrap/issues/23307\n    //   // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n    //   // Multiply line-height by 1em if it has no unit\n    //   height: 1.5em;\n\n    //   // Android Chrome type=\"date\" is taller than the other inputs\n    //   // because of \"margin: 1px 24px 1px 4px\" inside the shadow DOM\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   margin: 0;\n    //   background-color: var(--red-500);\n    // }\n\n    // Prevent excessive date input height in Webkit\n    // https://github.com/twbs/bootstrap/issues/34433\n\n    // mdo-do: need to check this stuff out across browsers\n    &::-webkit-datetime-edit {\n      display: block;\n      height: 1.5rem;\n      padding: 0;\n      margin-bottom: -.125rem;\n    }\n    &::-webkit-datetime-edit-fields-wrapper {\n      height: 1.5rem;\n    }\n\n    // File inputs\n    &[type=\"file\"] {\n      overflow: hidden; // prevent pseudo element button overlap\n\n      &:not(:disabled, [readonly]) {\n        cursor: pointer;\n      }\n    }\n    &::file-selector-button {\n      min-height: var(--control-min-height);\n      padding: var(--control-padding-y) var(--control-padding-x);\n      margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n      margin-inline-end: var(--control-padding-x);\n      color: var(--control-fg);\n      // @include gradient-bg(var(--control-action-bg));\n      pointer-events: none;\n      background-color: var(--control-action-bg);\n      border-color: inherit;\n      border-style: solid;\n      border-width: 0;\n      border-inline-end-width: var(--control-border-width);\n      border-radius: 0; // stylelint-disable-line property-disallowed-list\n      @include transition(var(--control-transition));\n    }\n\n    &:hover:not(:disabled, [readonly])::file-selector-button {\n      background-color: var(--control-action-hover-bg);\n    }\n  }\n\n  // Readonly controls as plain text\n  //\n  // Apply class to a readonly input to make it appear like regular plain\n  // text (without any border, background color, focus indicator)\n\n  .form-control-plaintext {\n    // Plaintext is a standalone class (not combined with `.form-control`), so it\n    // needs its own copy of the control tokens. Without them the `var(--control-*)`\n    // references below are invalid and fall back to their initial values (e.g.\n    // `border-width: medium`), which adds phantom inline borders and misaligns the\n    // text from a floating label.\n    @include tokens($form-control-tokens);\n\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &.form-control-sm,\n    &.form-control-lg {\n      padding-inline: 0;\n    }\n  }\n\n  // stylelint-disable selector-no-qualifying-type\n  select.form-control,\n  .form-control-caret {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n\n    &[multiple],\n    &[size]:not([size=\"1\"]) {\n      padding-inline-end: var(--control-padding-x);\n      background-image: none;\n    }\n  }\n\n  [data-bs-theme=\"dark\"] {\n    select.form-control,\n    .form-control-caret {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  // Form control sizing\n  //\n  // Build on `.form-control` with modifier classes to decrease or increase the\n  // height and font-size of form controls.\n  //\n  // Repeated in `_input_group.scss` to avoid Sass extend issues.\n  @each $size, $_ in $form-control-sizes {\n    .form-control-#{$size} {\n      --control-min-height: var(--btn-input-#{$size}-min-height);\n      --control-padding-y: var(--btn-input-#{$size}-padding-y);\n      --control-padding-x: var(--btn-input-#{$size}-padding-x);\n      --control-font-size: var(--btn-input-#{$size}-font-size);\n      --control-line-height: var(--btn-input-#{$size}-line-height);\n      --control-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n\n    &:not(:disabled, [readonly]) {\n      cursor: pointer;\n    }\n\n    &::-moz-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\n    }\n  }\n\n  // Ghost input - removes all visual styling\n  // Used inside custom wrappers that handle their own styling\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &::placeholder {\n      color: var(--fg-3);\n      opacity: 1;\n    }\n\n    &:disabled {\n      color: var(--fg-4);\n      cursor: not-allowed;\n    }\n  }\n}\n","@mixin focus-ring($offset: false, $color: null) {\n  @if $color != null {\n    outline: var(--focus-ring-width) solid #{$color};\n  } @else {\n    outline: var(--focus-ring);\n  }\n  @if $offset {\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$check-tokens: () !default;\n\n// scss-docs-start check-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$check-tokens: defaults(\n  (\n    --check-size: 1.25rem,\n    --check-margin-block: .125rem,\n    --check-bg: var(--bg-body),\n    --check-border-color: var(--border-color),\n    --check-border-radius: var(--radius-5),\n    --check-icon-checked: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/></svg>\"))},\n    --check-icon-indeterminate: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/></svg>\"))},\n    --check-checked-bg: var(--control-checked-bg),\n    --check-checked-border-color: var(--control-checked-border-color),\n    --check-indeterminate-bg: var(--control-checked-bg),\n    --check-indeterminate-border-color: var(--control-checked-border-color),\n    --check-active-bg: var(--control-active-bg),\n    --check-active-border-color: var(--control-active-border-color),\n    --check-disabled-bg: var(--control-disabled-bg),\n    --check-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $check-tokens\n);\n// scss-docs-end check-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  // The class lives on the `<input>` itself; `appearance: none` controls render\n  // pseudo-elements, so the mark is drawn directly on the input — no wrapper.\n  .check {\n    @include tokens($check-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\n    appearance: none;\n    // later: maybe set a tertiary bg color?\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 33%;\n\n    &:checked,\n    &:indeterminate {\n      background-color: var(--theme-bg, var(--check-checked-bg));\n      border-color: var(--theme-bg, var(--check-checked-border-color));\n\n      // Check/indeterminate mark, overlaid on the input and rendered via a CSS\n      // mask so it inherits the contrast color without an inline SVG.\n      &::before {\n        position: absolute;\n        inset: 0;\n        pointer-events: none;\n        content: \"\";\n        background-color: var(--theme-contrast, var(--primary-contrast));\n        @include mask-icon();\n      }\n    }\n\n    &:checked::before { mask-image: var(--check-icon-checked); }\n    &:indeterminate::before { mask-image: var(--check-icon-indeterminate); }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: -1px;\n    }\n\n    &:disabled {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--check-disabled-opacity);\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","// Mask icon\n//\n// Renders an SVG icon via a CSS mask so the shape is painted with the\n// element's `background-color` and therefore inherits theme/dark-mode color.\n// Set `background-color` on the element itself; pass `null` for `$icon` when\n// the mask image is applied conditionally (e.g. per state or direction).\n\n// scss-docs-start mask-icon-mixin\n@mixin mask-icon($icon: null, $size: contain, $position: center) {\n  @if $icon != null {\n    mask-image: $icon;\n  }\n  mask-repeat: no-repeat;\n  @if $position != null {\n    mask-position: $position;\n  }\n  @if $size != null {\n    mask-size: $size;\n  }\n}\n// scss-docs-end mask-icon-mixin\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$radio-tokens: () !default;\n\n// scss-docs-start radio-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$radio-tokens: defaults(\n  (\n    --radio-size: 1.25rem,\n    --radio-margin-block: .125rem,\n    --radio-bg: var(--bg-body),\n    --radio-border-color: var(--border-color),\n    --radio-checked-bg: var(--control-checked-bg),\n    --radio-checked-border-color: var(--control-checked-border-color),\n    --radio-disabled-bg: var(--control-disabled-bg),\n    --radio-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $radio-tokens\n);\n// scss-docs-end radio-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .radio {\n    @include tokens($radio-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n\n    &:checked {\n      color: var(--theme-contrast, var(--primary-contrast));\n      background-color: var(--theme-bg, var(--radio-checked-bg));\n      border-color: var(--theme-bg, var(--radio-checked-border-color));\n\n      &::before {\n        position: absolute;\n        inset: calc(var(--radio-size) * .25);\n        content: \"\";\n        background-color: currentcolor;\n        // stylelint-disable-next-line property-disallowed-list\n        border-radius: 50%;\n      }\n    }\n\n    &:disabled {\n      --radio-bg: var(--radio-disabled-bg);\n\n      ~ label {\n        color: var(--secondary-fg);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--radio-disabled-opacity);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$switch-tokens: () !default;\n\n// scss-docs-start switch-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$switch-tokens: defaults(\n  (\n    --switch-height: 1.25rem,\n    --switch-width: calc(var(--switch-height) * 1.75),\n    --switch-padding: .0625rem,\n    --switch-margin-block: .125rem,\n    --switch-bg: var(--bg-3),\n    --switch-border-width: var(--border-width),\n    --switch-border-color: var(--border-color),\n    --switch-indicator-bg: var(--white),\n    --switch-indicator-width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-indicator-height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-checked-bg: var(--control-checked-bg),\n    --switch-checked-border-color: var(--switch-checked-bg),\n    --switch-checked-indicator-bg: var(--white),\n    --switch-disabled-bg: var(--control-disabled-bg),\n    --switch-disabled-indicator-bg: var(--fg-3),\n  ),\n  $switch-tokens\n);\n// scss-docs-end switch-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .switch {\n    @include tokens($switch-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgb(0 0 0 / .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: background-color .15s ease-in-out;\n\n    &::before {\n      position: absolute;\n      inset-block: var(--switch-padding);\n      inset-inline-start: var(--switch-padding);\n      width: var(--switch-indicator-width);\n      height: var(--switch-indicator-height);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 10rem;\n      box-shadow: 0 1px 2px rgb(0 0 0 / .1);\n      // stylelint-disable-next-line property-disallowed-list\n      transition: inset-inline-start .15s ease-in-out;\n    }\n\n    input {\n      position: absolute;\n      inset: 0;\n      appearance: none;\n      background-color: transparent;\n      outline: 0;\n    }\n\n    &:focus-within {\n      @include focus-ring(true);\n    }\n\n    &:has(input:disabled:not(:checked)) {\n      --switch-bg: var(--switch-disabled-bg);\n      --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n\n      &::before { opacity: .4; }\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n\n    &:has(input:checked) {\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n\n      &::before {\n        inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n      }\n    }\n\n    &:has(input:checked:disabled) {\n      opacity: .65;\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$range-tokens: () !default;\n\n// scss-docs-start range-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$range-tokens: defaults(\n  (\n    --range-track-width: 100%,\n    --range-track-height: .5rem,\n    --range-track-cursor: pointer,\n    --range-track-bg: var(--bg-3),\n    --range-track-border-radius: 1rem,\n    --range-track-fill-bg: var(--primary-base),\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3)),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color),\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: \"0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%)\",\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body)),\n    --range-thumb-disabled-bg: var(--fg-3),\n    --range-thumb-transition-property: \"background-color, border-color, box-shadow\",\n    --range-thumb-transition-timing: .15s ease-in-out,\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing),\n    --range-tick-width: var(--border-width),\n    --range-tick-height: .5rem,\n    --range-tick-bg: var(--border-color),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start range-mixins\n@mixin range-thumb() {\n  width: var(--range-thumb-width);\n  height: var(--range-thumb-height);\n  appearance: none;\n  @include gradient-bg(var(--range-thumb-bg));\n  border: var(--range-thumb-border);\n  @include border-radius(var(--range-thumb-border-radius));\n  @include box-shadow(var(--range-thumb-box-shadow));\n  @include transition(var(--range-thumb-transition));\n\n  &:active {\n    @include gradient-bg(var(--range-thumb-active-bg));\n  }\n}\n\n@mixin range-track() {\n  width: var(--range-track-width);\n  height: var(--range-track-height);\n  color: transparent;\n  cursor: var(--range-track-cursor);\n  // Fill (progress) up to the thumb. The Range plugin keeps `--range-fill` (0–1) in sync.\n  background-color: var(--range-track-bg);\n  background-image:\n    linear-gradient(\n      to right,\n      var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%),\n      transparent calc(var(--range-fill, 0) * 100%)\n    );\n  border-color: transparent;\n  @include border-radius(var(--range-track-border-radius));\n  @include box-shadow(var(--range-track-box-shadow));\n}\n// scss-docs-end range-mixins\n\n@layer forms {\n  .form-range {\n    @include tokens($range-tokens);\n\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n\n  .form-range-input {\n    display: block;\n    width: 100%;\n    height: calc(var(--range-thumb-height) + (var(--focus-ring-width) * 2));\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n\n    &:hover {\n      &::-webkit-slider-thumb {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n    }\n\n    &:focus-visible {\n      outline: 0;\n\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n    }\n\n    &::-moz-focus-outer {\n      border: 0;\n    }\n\n    &::-webkit-slider-thumb {\n      @include range-thumb();\n      margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * .5);\n    }\n\n    &::-moz-range-thumb {\n      @include range-thumb();\n    }\n\n    &::-webkit-slider-runnable-track {\n      @include range-track();\n    }\n\n    &::-moz-range-track {\n      @include range-track();\n    }\n\n    &:disabled {\n      pointer-events: none;\n\n      &::-webkit-slider-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-moz-range-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-webkit-slider-runnable-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n\n      &::-moz-range-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n    }\n  }\n\n  // Value bubble: reuses the tooltip styles (`.tooltip` markup) so we don't duplicate the\n  // pill and arrow. We only add the static positioning the Tooltip plugin would normally do.\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc((var(--range-thumb-width) * .5) + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n\n    .tooltip-arrow {\n      position: absolute;\n      bottom: calc(-1 * var(--tooltip-arrow-height));\n      left: 50%;\n      transform: translateX(-50%);\n    }\n  }\n\n  // Tick marks generated from the linked <datalist>. Plugin builds `grid-template-columns`\n  // from the gaps between values so each tick lands on a grid line (handles uneven values).\n  // Track is inset by 1/4th of the thumb width to keep alignment.\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * .25);\n  }\n\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    // Zero-width items so labels never widen their `fr` column; the tick line and label\n    // overflow centered on the grid line via `align-items`.\n    width: 0;\n\n    &::before {\n      width: var(--range-tick-width);\n      height: var(--range-tick-height);\n      content: \"\";\n      background-color: var(--range-tick-bg);\n    }\n\n    &:first-child {\n      align-items: flex-start;\n    }\n\n    &:last-child {\n      align-items: flex-end;\n    }\n  }\n\n  .form-range-tick-label {\n    margin-top: .125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n\n// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: var(--gray-700), $end-color: var(--gray-800), $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: var(--gray-700), $outer-color: var(--gray-800)) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgb(255 255 255 / .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-floating-tokens: () !default;\n\n// scss-docs-start form-floating-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-floating-tokens: defaults(\n  (\n    --form-floating-height: calc(3.75rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25),\n    --form-floating-padding-y: 1rem,\n    --form-floating-input-padding-t: 1.625rem,\n    --form-floating-input-padding-b: .625rem,\n    --form-floating-label-height: 1.5em,\n    // Backgrounds for the textarea label's masking pseudo-element. Mirrors\n    // `.form-control` here because the label is a sibling of the control, so it\n    // can't inherit the control's own `--control-bg`/`--control-disabled-bg`.\n    --form-floating-label-bg: var(--btn-input-bg),\n    --form-floating-label-disabled-bg: var(--bg-2),\n    --form-floating-label-opacity: .65,\n    --form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem),\n    --form-floating-label-disabled-color: var(--fg-3),\n    --form-floating-transition-property: \"opacity, transform\",\n    --form-floating-transition-timing: .1s ease-in-out,\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing),\n  ),\n  $form-floating-tokens\n);\n// scss-docs-end form-floating-tokens\n\n@layer forms {\n  .form-floating {\n    @include tokens($form-floating-tokens);\n\n    position: relative;\n\n    > label {\n      position: absolute;\n      inset-block-start: 0;\n      inset-inline-start: 0;\n      z-index: 2;\n      display: flex;\n      align-items: center;\n      max-width: 100%;\n      height: 100%; // allow textareas\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      overflow: hidden;\n      color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n      text-align: start;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      pointer-events: none;\n      border: var(--border-width) solid transparent; // Required for aligning label's text with the input as it affects inner box model\n      transform-origin: 0 0;\n      @include transition(var(--form-floating-transition));\n    }\n\n    // Anchor the label to the top for textareas so it floats correctly at any height\n    > label:has(~ textarea) {\n      align-items: flex-start;\n    }\n\n    > .form-control,\n    > .form-control-plaintext {\n      height: var(--form-floating-height);\n      min-height: var(--form-floating-height);\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      line-height: var(--form-floating-line-height);\n\n      &::placeholder {\n        color: transparent;\n      }\n\n      &:focus,\n      &:not(:placeholder-shown) {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n      // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n      &:-webkit-autofill {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n    }\n\n    // The label precedes the control in the DOM so screen readers announce it\n    // before the field's value, so we look forward with `:has()` to react to the\n    // control's state (focus, value, disabled, etc.).\n    > label:has(~ .form-control:focus),\n    > label:has(~ .form-control:not(:placeholder-shown)),\n    > label:has(~ .form-control-plaintext) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > label:has(~ .form-control:-webkit-autofill) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    > label:has(~ textarea:focus),\n    > label:has(~ textarea:not(:placeholder-shown)) {\n      &::after {\n        position: absolute;\n        inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * .5);\n        z-index: -1;\n        height: var(--form-floating-label-height);\n        content: \"\";\n        background-color: var(--form-floating-label-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > label:has(~ textarea:disabled)::after {\n      background-color: var(--form-floating-label-disabled-bg);\n    }\n\n    > label:has(~ .form-control-plaintext) {\n      border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n    }\n\n    > label:has(~ :disabled),\n    > label:has(~ .form-control:disabled) { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n$input-group-addon-tokens: () !default;\n\n// scss-docs-start input-group-addon-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-addon-tokens: defaults(\n  (\n    --input-group-addon-padding-y: var(--btn-input-padding-y),\n    --input-group-addon-padding-x: var(--btn-input-padding-x),\n    --input-group-addon-font-size: var(--btn-input-font-size),\n    --input-group-addon-line-height: var(--btn-input-line-height),\n    --input-group-addon-color: var(--fg-body),\n    --input-group-addon-bg: var(--bg-2),\n    --input-group-addon-border-color: var(--border-color),\n  ),\n  $input-group-addon-tokens\n);\n// scss-docs-end input-group-addon-tokens\n\n// scss-docs-start input-group-sizes\n$input-group-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $input-group-sizes\n);\n// scss-docs-end input-group-sizes\n\n@layer components {\n  .input-group {\n    @include tokens($input-group-addon-tokens);\n\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    width: 100%;\n\n    > .form-control,\n    > .form-floating {\n      position: relative; // For focus state's z-index\n      flex: 1 1 auto;\n      width: 1%;\n      min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n    }\n\n    // Bring the \"active\" form control to the top of surrounding elements\n    > .form-control:focus,\n    > .form-floating:focus-within {\n      z-index: 5;\n    }\n\n    // Ensure buttons are always above inputs for more visually pleasing borders.\n    // This isn't needed for `.input-group-text` since it shares the same border-color\n    // as our inputs.\n    > .input-group-btn {\n      position: relative;\n      z-index: 2;\n\n      &:focus {\n        z-index: 5;\n      }\n    }\n  }\n\n  // Textual addons\n  //\n  // Serves as a catch-all element for any text or radio/checkbox input you wish\n  // to prepend or append to an input.\n\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size); // Match inputs\n    // font-weight: $input-group-addon-font-weight;\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    @include border-radius(var(--btn-input-border-radius));\n  }\n\n  // Sizing\n  //\n  // Remix the default form control sizing classes into new ones for easier\n  // manipulation.\n\n  @each $size, $_ in $input-group-sizes {\n    .input-group-#{$size} {\n      > .form-control,\n      > .input-group-text,\n      > .btn {\n        min-height: var(--btn-input-#{$size}-min-height);\n        padding: var(--btn-input-#{$size}-padding-y) var(--btn-input-#{$size}-padding-x);\n        font-size: var(--btn-input-#{$size}-font-size);\n        @include border-radius(var(--btn-input-#{$size}-border-radius));\n      }\n    }\n  }\n\n  // Rounded corners\n  //\n  // These rulesets must come after the sizing ones to properly override sm and lg\n  // border-radius values when extending. They're more specific than we'd like\n  // with the `.input-group >` part, but without it, we cannot override the sizing.\n\n  // stylelint-disable-next-line no-duplicate-selectors\n  .input-group {\n    > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n    > .menu-toggle-split:nth-last-child(n + 3),\n    > .form-floating:not(:last-child) > .form-control,\n    > .form-floating:not(:last-child) > .form-select {\n      @include border-end-radius(0);\n    }\n\n    > :not(:first-child, .menu, .input-group-ignore) {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n      @include border-start-radius(var(--btn-input-border-radius));\n    }\n\n    > .form-floating:not(:first-child) > .form-control,\n    > .form-floating:not(:first-child) > .form-select {\n      @include border-start-radius(0);\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$strength-tokens: () !default;\n\n// scss-docs-start strength-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$strength-tokens: defaults(\n  (\n    --strength-height: .375rem,\n    --strength-gap: .25rem,\n    --strength-margin-top: .25rem,\n    --strength-border-radius: var(--radius-pill),\n    --strength-bg: var(--bg-2),\n    --strength-color: var(--bg-2),\n    --strength-weak-color: var(--danger-bg),\n    --strength-fair-color: var(--warning-bg),\n    --strength-good-color: var(--info-bg),\n    --strength-strong-color: var(--success-bg),\n  ),\n  $strength-tokens\n);\n// scss-docs-end strength-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start strength-levels\n$strength-levels: weak, fair, good, strong !default;\n// scss-docs-end strength-levels\n\n$strength-transition: background-color .2s ease-in-out, width .3s ease-in-out !default;\n\n@layer forms {\n  // Strength meter container\n  .strength {\n    @include tokens($strength-tokens);\n\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n\n  // Individual strength segments\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n    @include transition($strength-transition);\n\n    // Filled state\n    &.active {\n      background-color: var(--strength-color);\n    }\n  }\n\n  @each $level in $strength-levels {\n    .strength[data-bs-strength=\"#{$level}\"] {\n      --strength-color: var(--strength-#{$level}-color);\n    }\n  }\n  // Optional text feedback\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    @include transition(color .2s ease-in-out);\n\n    // Hide when empty\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Alternative: Single bar variant (like a progress bar)\n  .strength-bar {\n    @include tokens($strength-tokens);\n\n    --strength-color: transparent;\n    --strength-width: 0%;\n\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n\n    &::after {\n      display: block;\n      width: var(--strength-width);\n      height: 100%;\n      content: \"\";\n      background-color: var(--strength-color);\n      @include border-radius(var(--strength-border-radius));\n      @include transition($strength-transition);\n    }\n\n    @each $level in $strength-levels {\n      &[data-bs-strength=\"#{$level}\"] {\n        --strength-color: var(--strength-#{$level}-color);\n        --strength-width: #{list.index($strength-levels, $level) * 25%};\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-tokens: defaults(\n  (\n    --otp-size: var(--btn-input-lg-min-height),\n    --otp-font-size: var(--btn-input-font-size),\n    --otp-gap: .5rem,\n    --otp-slot-fg: var(--btn-input-fg),\n    --otp-slot-bg: var(--btn-input-bg),\n    --otp-slot-border-width: var(--border-width),\n    --otp-slot-border-color: var(--border-color),\n    --otp-slot-border-radius: var(--radius-5),\n  ),\n  $otp-tokens\n);\n// scss-docs-end otp-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start otp-sizes\n$otp-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $otp-sizes\n);\n// scss-docs-end otp-sizes\n\n@layer components {\n  .otp {\n    @include tokens($otp-tokens);\n\n    position: relative;\n    display: flex;\n  }\n\n  // A single real input backs the whole control. Once the JS renders the\n  // visual slots (`.otp-rendered`), the input becomes a transparent overlay\n  // that captures all interaction while the slots display the value.\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    text-align: center;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n\n    // Never reveal the underlying characters, even on selection\n    &::selection {\n      color: transparent;\n      background-color: transparent;\n    }\n  }\n\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none; // let clicks fall through to the input overlay\n  }\n\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    @include border-radius(var(--otp-slot-border-radius));\n    @include box-shadow(var(--box-shadow-inset));\n    @include transition(border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n  }\n\n  // The slot at the caret gets the focus ring; empty active slots show a\n  // blinking caret so the entry point is obvious.\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    @include focus-ring(true);\n\n    &:not(.otp-slot-filled)::after {\n      width: 1px;\n      height: 50%;\n      content: \"\";\n      background-color: var(--otp-slot-fg);\n      animation: otp-caret-blink 1s step-end infinite;\n    }\n  }\n\n  // Disabled state mirrors disabled form controls\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n\n  // Connected slots share borders for a single cohesive field\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n\n    &:not(:first-child) {\n      margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n    }\n    &:first-child {\n      @include border-start-radius(var(--otp-slot-border-radius));\n    }\n    &:last-child {\n      @include border-end-radius(var(--otp-slot-border-radius));\n    }\n  }\n\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n\n  // OTP input sizing — keep in sync with `$form-control-sizes`.\n  @each $size, $_ in $otp-sizes {\n    .otp-#{$size} {\n      --otp-size: var(--btn-input-#{$size}-min-height);\n      --otp-font-size: var(--btn-input-#{$size}-font-size);\n    }\n  }\n}\n\n@keyframes otp-caret-blink {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-adorn-tokens: () !default;\n\n// scss-docs-start form-adorn-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-adorn-tokens: defaults(\n  (\n    --form-adorn-gap: .375rem,\n    --form-adorn-icon-size: 1rem,\n    --form-adorn-icon-color: var(--fg-2),\n  ),\n  $form-adorn-tokens\n);\n// scss-docs-end form-adorn-tokens\n\n@layer forms {\n  .form-adorn {\n    @include tokens($form-adorn-tokens);\n\n    gap: var(--form-adorn-gap);\n    align-items: center;\n\n    // Prevent default `.form-control` focus\n    &:focus-visible {\n      outline: 0;\n    }\n\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1;\n      min-width: 0; // Prevent text overflow\n    }\n\n    &.form-adorn-end > .form-ghost {\n      order: -1;\n    }\n  }\n\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n\n    > svg {\n      width: var(--form-adorn-icon-size);\n      height: var(--form-adorn-icon-size);\n    }\n  }\n\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$chip-input-tokens: () !default;\n\n// scss-docs-start chip-input-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-input-tokens: defaults(\n  (\n    --chip-input-padding-y: .75rem,\n    --chip-input-padding-x: .75rem,\n    --chip-input-gap: .375rem,\n    --chip-input-ghost-min-width: 5rem,\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--radius-5),\n  ),\n  $chip-input-tokens\n);\n// scss-docs-end chip-input-tokens\n\n@layer forms {\n  .chip-input {\n    @include tokens($chip-input-tokens);\n\n    // Flexbox wrapping layout\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n\n    // Focus state when ghost input is focused\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1 1 0;\n      min-width: var(--chip-input-ghost-min-width);\n      min-height: 1.75rem;\n    }\n\n    // Disabled state\n    &.disabled,\n    &:has(.form-ghost:disabled) {\n      cursor: not-allowed;\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      &:focus-within {\n        border-color: var(--control-border-color);\n        outline: 0;\n      }\n\n      > .chip {\n        pointer-events: none;\n        opacity: var(--control-disabled-opacity);\n      }\n    }\n  }\n}\n","@use \"../mixins/transition\" as *;\n\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: .5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n\n    &.show {\n      background-color: var(--bg-1);\n    }\n\n    &:disabled,\n    &.disabled {\n      cursor: not-allowed;\n      opacity: .65;\n    }\n  }\n\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: .5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .combobox-caret {\n    flex-shrink: 0;\n    @include transition(transform .2s ease-in-out);\n\n    .show > & {\n      transform: rotate(180deg);\n    }\n  }\n\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, .25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n\n  .combobox-search-input {\n    width: 100%;\n  }\n\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n// scss-docs-start form-field\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: .5rem;\n    // width: 100%;\n\n    > label,\n    > .form-label {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n\n    &:has(> .check, > .radio, > .switch) {\n      grid-template-columns: auto 1fr;\n      column-gap: .5rem;\n      align-items: start;\n\n      > .check,\n      > .radio,\n      > .switch {\n        grid-column: 1;\n      }\n\n      > :not(.check, .radio, .switch) {\n        grid-column: 2;\n      }\n\n      > .form-label {\n        grid-column: 1 / -1;\n      }\n    }\n  }\n\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * .75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    @include border-radius(var(--radius-7));\n\n    &:hover {\n      background-color: var(--bg-1);\n    }\n\n    &:has(:checked) {\n      background-color: var(--bg-1);\n      border-color: var(--border-color);\n    }\n\n    label::before {\n      position: absolute;\n      inset: 0;\n      content: \"\";\n    }\n  }\n\n  .form-group {\n    display: grid;\n    gap: .5rem;\n\n    > label,\n    > .form-label,\n    > legend {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n  }\n}\n// scss-docs-end form-field\n","@use \"../config\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/form-validation\" as *;\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid.\n// Server-side: `.is-invalid` / `.is-valid` classes work globally.\n// Client-side: `:user-invalid` pseudo-class is scoped behind `[data-bs-validate]`.\n// `:user-valid` is scoped behind `[data-bs-validate~=\"valid\"]` so success styling is opt-in.\n// Custom states (e.g., \"warning\") use only `.is-*` classes.\n\n// scss-docs-start form-validation-states\n$validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$validation-states: defaults(\n  (\n    \"valid\": \"success\",\n    \"invalid\": \"danger\",\n  ),\n  $validation-states\n);\n// scss-docs-end form-validation-states\n\n// scss-docs-start form-validation-state-mixin\n@mixin form-validation-state($state, $theme) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--#{$theme}-fg);\n  }\n\n  // More specific to override base tooltip styles\n  .tooltip.#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: .1rem;\n    color: var(--#{$theme}-contrast);\n    text-align: center;\n    background-color: var(--#{$theme}-bg);\n    opacity: 1;\n    @include border-radius(var(--tooltip-border-radius));\n  }\n\n  // Generic sibling feedback display — works for .form-control, .form-range,\n  // and any element where feedback is a direct sibling.\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  // Form control\n  .form-control {\n    @include form-validation-state-selector($state) {\n      --control-border-color: var(--#{$theme}-border);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        --control-border-color: var(--#{$theme}-border);\n      }\n    }\n  }\n\n  // Checkbox — control-level styling (border, checked bg, focus ring).\n  .check {\n    @include form-validation-state-selector($state) {\n      --check-border-color: var(--#{$theme}-border);\n      --check-checked-bg: var(--#{$theme}-bg);\n      --check-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Checkbox — label color and feedback display via .form-field:has().\n  .form-field:has(.check.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.check:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.check:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Radio — control-level styling.\n  .radio {\n    @include form-validation-state-selector($state) {\n      --radio-border-color: var(--#{$theme}-border);\n      --radio-checked-bg: var(--#{$theme}-bg);\n      --radio-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Radio — label color and feedback display via .form-field:has().\n  .form-field:has(.radio.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.radio:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.radio:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Switch — control-level styling. The input is an invisible overlay;\n  // all visuals are on the .switch wrapper.\n  .switch:has(input.is-#{$state}) {\n    --switch-border-color: var(--#{$theme}-border);\n    --switch-checked-bg: var(--#{$theme}-bg);\n    --switch-checked-border-color: var(--#{$theme}-bg);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n    }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .switch:has(input:user-invalid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .switch:has(input:user-valid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Switch — label color and feedback display via .form-field:has().\n  .form-field:has(.switch input.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.switch input:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.switch input:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Chip input — wrapper has the visible border; the .form-ghost inside\n  // receives the native pseudo-class.\n  .chip-input:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .chip-input:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Form adorn — :user-invalid fires on the inner .form-ghost, so we\n  // propagate it to the visible wrapper with :has().\n  .form-adorn:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-adorn:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Range — the validation class lives on .form-range-input, while feedback sits outside\n  // the .form-range wrapper, so we use :has() to toggle it.\n  .form-range-input {\n    @include form-validation-state-selector($state) {\n      &::-webkit-slider-thumb { background: var(--#{$theme}-bg); }\n      &::-moz-range-thumb { background: var(--#{$theme}-bg); }\n\n      &:focus-visible {\n        &::-webkit-slider-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n        &::-moz-range-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n      }\n    }\n  }\n\n  .form-range:has(.form-range-input.is-#{$state}) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  // Input group — feedback lives outside the input-group in the parent\n  // .form-field, so we use :has() to toggle display.\n  .form-field:has(.input-group .form-control.is-#{$state}) {\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) {\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.input-group .form-control:user-valid) {\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  .input-group {\n    > .form-control:not(:focus),\n    > .form-floating:not(:focus-within) {\n      @include form-validation-state-selector($state) {\n        @if $state == \"valid\" {\n          z-index: 3;\n        } @else if $state == \"invalid\" {\n          z-index: 4;\n        }\n      }\n    }\n  }\n\n  // OTP — validation applies to the wrapper; the visual slots inherit the state.\n  .otp {\n    @include form-validation-state-selector($state) {\n      .otp-slot {\n        --otp-slot-border-color: var(--#{$theme}-border);\n      }\n\n      .otp-slot-active {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-mixin\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $theme in $validation-states {\n    @include form-validation-state($state, $theme);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-validation-state-selector\n@mixin form-validation-state-selector($state) {\n  @if & {\n    &.is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      @at-root [data-bs-validate] #{&}:user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      @at-root [data-bs-validate~=\"valid\"] #{&}:user-valid {\n        @content;\n      }\n    }\n  } @else {\n    .is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      [data-bs-validate] :user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      [data-bs-validate~=\"valid\"] :user-valid {\n        @content;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-selector\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n$button-tokens: () !default;\n\n// scss-docs-start btn-tokens\n$button-tokens: defaults(\n  (\n    --btn-min-height: var(--btn-input-min-height),\n    --btn-padding-x: var(--btn-input-padding-x),\n    --btn-padding-y: var(--btn-input-padding-y),\n    --btn-font-size: var(--btn-input-font-size),\n    --btn-font-weight: var(--btn-input-font-weight),\n    --btn-line-height: var(--btn-input-line-height),\n    --btn-color: var(--fg-body),\n    --btn-white-space: nowrap,\n    --btn-border-width: var(--border-width),\n    --btn-border-color: transparent,\n    --btn-border-radius: var(--radius-5),\n    --btn-hover-border-color: transparent,\n    --btn-disabled-opacity: .65,\n    --btn-transition-timing: .15s ease-in-out,\n    --btn-transition-property: \"color, background-color, border-color, box-shadow\",\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing),\n  ),\n  $button-tokens\n);\n// scss-docs-end btn-tokens\n\n$button-link-tokens: () !default;\n\n// scss-docs-start button-link-tokens\n$button-link-tokens: defaults(\n  (\n    --btn-font-weight: var(--font-weight-normal),\n    --btn-color: var(--link-color),\n    --btn-bg: transparent,\n    --btn-border-color: transparent,\n    --btn-hover-color: var(--link-hover-color),\n    --btn-hover-bg: transparent,\n    --btn-hover-border-color: transparent,\n    --btn-active-color: var(--link-hover-color),\n    --btn-active-bg: transparent,\n    --btn-active-border-color: transparent,\n    --btn-disabled-color: var(--fg-3),\n    --btn-disabled-border-color: transparent,\n  ),\n  $button-link-tokens\n);\n// scss-docs-end button-link-tokens\n\n$button-styled-tokens: () !default;\n\n// scss-docs-start button-styled-tokens\n$button-styled-tokens: defaults(\n  (\n    --btn-gradient-start: rgb(255 255 255 / 12.5%),\n    --btn-gradient-end: rgb(0 0 0 / 7.5%) ,\n    --btn-border-mix-color: #000,\n    --btn-border-mix-amount: 10%,\n    --btn-border-hover-mix-amount: 12.5%,\n    --btn-border-active-mix-amount: 20%,\n    --btn-shadow: \"0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%)\",\n    --btn-active-shadow: inset 0 2px 4px rgb(0 0 0 / .15) ,\n  ),\n  $button-styled-tokens\n);\n// scss-docs-end button-styled-tokens\n\n// scss-docs-start button-sizes\n$button-sizes: () !default;\n$button-sizes: defaults(\n  (\"xs\", \"sm\", \"lg\"),\n  $button-sizes\n);\n// scss-docs-end button-sizes\n\n$button-variants: () !default;\n\n// scss-docs-start btn-variants\n$button-variants: defaults(\n  (\n    \"solid\": (\n      \"base\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      )\n    ),\n    \"outline\": (\n      \"base\": (\n        \"bg\": \"transparent\",\n        \"color\": \"fg\",\n        \"border-color\": \"border\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      )\n    ),\n    \"subtle\": (\n      \"base\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"fg-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"fg\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      )\n    )\n  ),\n  $button-variants\n);\n// scss-docs-end btn-variants\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n//\n// Base styles\n//\n\n// scss-docs-start btn-variant-selectors\n$btn-variant-selectors: (string.unquote(\".btn\"), string.unquote(\".btn-link\"), string.unquote(\".btn-icon\")) !default;\n@each $variant, $config in $button-variants {\n  $btn-variant-selectors: list.append($btn-variant-selectors, string.unquote(\".btn-#{$variant}\"), comma);\n}\n// scss-docs-end btn-variant-selectors\n\n@layer components {\n  #{$btn-variant-selectors} {\n    @include tokens($button-tokens);\n\n    display: inline-flex;\n    gap: var(--btn-gap, .25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    // font-family: var(--btn-font-family);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    cursor: if(sass($enable-button-pointers): pointer; else: null);\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    @include border-radius(var(--btn-border-radius));\n    @include transition(var(--btn-transition));\n\n    &:hover {\n      color: var(--btn-hover-color);\n      background-color: var(--btn-hover-bg, var(--bg-3));\n      border-color: var(--btn-hover-border-color);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &.active,\n    &.show {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      border-color: var(--btn-active-border-color);\n\n      &:focus-visible {\n        @include focus-ring(true);\n      }\n    }\n\n    &:disabled,\n    &.disabled,\n    fieldset:disabled & {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n    }\n  }\n\n  // Main button style generator mixin\n  // Generate button variant classes (e.g., .btn-solid, .btn-outline, etc.)\n  // scss-docs-start btn-variant-mixin\n  @each $variant, $config in $button-variants {\n    .btn-#{$variant} {\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-#{$property}: transparent;\n        } @else {\n          --btn-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      @each $property, $value in map.get($button-variants, $variant, \"active\") {\n        @if $value == \"transparent\" {\n          --btn-active-#{$property}: transparent;\n        } @else if $value == \"bg-subtle\" {\n          --btn-active-#{$property}: var(--theme-#{$value});\n        } @else {\n          --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n        }\n      }\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-disabled-#{$property}: transparent;\n        } @else {\n          --btn-disabled-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      &:hover {\n        @each $property, $value in map.get($button-variants, $variant, \"hover\") {\n          @if $value == \"transparent\" {\n            --btn-hover-#{$property}: transparent;\n          } @else if meta.type-of($value) == \"list\" {\n            $first-value: list.nth($value, 1);\n            $second-value: list.nth($value, 2);\n            --btn-hover-#{$property}: color-mix(in oklch, var(--theme-#{$first-value}) 50%, var(--theme-#{$second-value}));\n          } @else if $value == \"bg-subtle\" {\n            --btn-hover-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-hover-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .95) calc(c * 1.1) h);\n          }\n        }\n      }\n\n      &:focus-visible {\n        outline-color: var(--theme-focus-ring);\n      }\n\n      &:active,\n      &.active,\n      &.btn-check:has(input:checked) {\n        @each $property, $value in map.get($button-variants, $variant, \"active\") {\n          @if $value == \"transparent\" {\n            --btn-active-#{$property}: transparent;\n          } @else if $value == \"bg-subtle\" {\n            --btn-active-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n          }\n        }\n      }\n\n      // Disabled state for toggle buttons\n      &:disabled,\n      &.disabled,\n      &.btn-check:has(input:disabled) {\n        @each $property, $value in map.get($button-variants, $variant, \"base\") {\n          @if $value == \"transparent\" {\n            --btn-disabled-#{$property}: transparent;\n          } @else {\n            --btn-disabled-#{$property}: var(--theme-#{$value});\n          }\n        }\n      }\n    }\n  }\n  // scss-docs-end btn-variant-mixin\n\n  //\n  // Link buttons\n  //\n\n  // Make a button look and behave like a link\n  .btn-link {\n    @include tokens($button-link-tokens);\n\n    color: var(--theme-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n\n    @if $enable-gradients {\n      background-image: none;\n    }\n\n    &:focus-visible {\n      color: var(--theme-fg, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-fg-emphasis, var(--btn-hover-color));\n    }\n\n    // No need for an active state here\n  }\n\n  //\n  // Button Sizes\n  //\n\n  // Generate button size classes from the $button-sizes map\n  // Skip \"md\" as it's the default size for .btn\n\n  // scss-docs-start btn-sizes-loop\n  @each $size, $_ in $button-sizes {\n    .btn-#{$size},\n    .btn-group-#{$size} > [class*=\"btn-\"] {\n      --btn-min-height: var(--btn-input-#{$size}-min-height);\n      --btn-padding-y: var(--btn-input-#{$size}-padding-y);\n      --btn-padding-x: var(--btn-input-#{$size}-padding-x);\n      --btn-font-size: var(--btn-input-#{$size}-font-size);\n      --btn-line-height: var(--btn-input-#{$size}-line-height);\n      --btn-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end btn-sizes-loop\n\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n\n  //\n  // Toggle buttons (.btn-check)\n  //\n  // Checkbox and radio inputs that look like buttons. Add .btn-check to a\n  // label with button classes, with the input nested inside.\n  //\n  // Example: <label class=\"btn-check btn-solid theme-primary\"><input type=\"checkbox\">Toggle</label>\n\n  .btn-check {\n    > input {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n\n    &:has(input:checked) {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-active-border-color);\n      @include box-shadow(var(--btn-active-shadow));\n    }\n\n    &:has(input:focus-visible) {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &:has(input:disabled) {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n      @include box-shadow(none);\n    }\n  }\n\n  //\n  // Styled buttons\n  //\n  // Add visual depth with gradients and shadows. Customize via CSS variables.\n\n  .btn-styled {\n    @include tokens($button-styled-tokens);\n\n    background-image:\n      linear-gradient(\n        to bottom,\n        var(--btn-gradient-start),\n        var(--btn-gradient-end)\n      );\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n\n    &:hover {\n      background-image:\n        linear-gradient(\n          to bottom,\n          var(--btn-gradient-start),\n          var(--btn-gradient-end)\n        );\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n    }\n\n    &:active,\n    &.active {\n      background-image: none;\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n      box-shadow: var(--btn-active-shadow);\n    }\n\n    &:disabled,\n    &.disabled {\n      background-image: none;\n      box-shadow: none;\n    }\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n@layer components {\n  // Make the div behave like a button\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle; // match .btn alignment given font-size hack above\n\n    > [class*=\"btn-\"] {\n      position: relative;\n      flex: 1 1 auto;\n\n      &:hover {\n        z-index: 1;\n      }\n    }\n\n    > .btn-check:has(input:checked),\n    > [class*=\"btn-\"]:active,\n    > [class*=\"btn-\"].active {\n      z-index: 2;\n    }\n\n    > .btn-check:has(input:focus),\n    > [class*=\"btn-\"]:focus {\n      z-index: 3;\n    }\n  }\n\n  .btn-group-divider {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        position: absolute;\n        // top: 25%;\n        // bottom: 25%;\n        // left: calc(var(--btn-border-width) * -1);\n        z-index: 3;\n        // width: var(--btn-border-width);\n        content: \"\";\n        background-color: var(--btn-color);\n        opacity: .25;\n      }\n    }\n  }\n\n  .btn-group:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: 25%;\n        bottom: 25%;\n        left: calc(var(--btn-border-width) * -1);\n        width: var(--btn-border-width);\n      }\n    }\n  }\n\n  .btn-group-vertical:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: calc(var(--btn-border-width) * -1);\n        right: var(--btn-padding-x);\n        left: var(--btn-padding-x);\n        height: var(--btn-border-width);\n      }\n    }\n  }\n\n  // Optional: Group multiple button groups together for a toolbar\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: .5rem;\n    justify-content: flex-start;\n\n    .input-group {\n      width: auto;\n    }\n  }\n\n  .btn-group {\n    @include border-radius(var(--btn-border-radius));\n\n    // Prevent double borders when buttons are next to each other\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-inline-start: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child, :has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-end-radius(0);\n    }\n\n    // The left radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-start-radius(0);\n    }\n  }\n\n  //\n  // Vertical button groups\n  //\n\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    > [class*=\"btn-\"],\n    > .btn-group {\n      width: 100%;\n    }\n\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-top: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child, :has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-bottom-radius(0);\n    }\n\n    // The top radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-top-radius(0);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" as *;\n@use \"../mixins/tokens\" as *;\n\n$btn-close-tokens: () !default;\n\n// scss-docs-start btn-close-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$btn-close-tokens: defaults(\n  (\n    --btn-close-size: 1.5rem,\n    --btn-close-color: inherit,\n    --btn-close-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/></svg>\"))},\n    --btn-close-opacity: .5,\n    --btn-close-hover-opacity: .75,\n    --btn-close-focus-opacity: .85,\n    --btn-close-disabled-opacity: .25,\n  ),\n  $btn-close-tokens\n);\n// scss-docs-end btn-close-tokens\n\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n@layer components {\n  .btn-close {\n    @include tokens($btn-close-tokens);\n\n    box-sizing: content-box;\n    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0; // for button elements\n    @include border-radius(var(--radius-5));\n    opacity: var(--btn-close-opacity);\n    @include mask-icon(var(--btn-close-icon));\n\n    // Override <a>'s hover style\n    &:hover {\n      color: var(--btn-close-color);\n      text-decoration: none;\n      opacity: var(--btn-close-hover-opacity);\n    }\n\n    &:focus-visible {\n      opacity: var(--btn-close-focus-opacity);\n      @include focus-ring();\n    }\n\n    &:disabled,\n    &.disabled {\n      pointer-events: none;\n      user-select: none;\n      opacity: var(--btn-close-disabled-opacity);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$accordion-tokens: () !default;\n\n// scss-docs-start accordion-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$accordion-tokens: defaults(\n  (\n    --accordion-padding-x: 1.25rem,\n    --accordion-padding-y: 1rem,\n    --accordion-color: var(--fg-body),\n    --accordion-bg: var(--bg-body),\n    --accordion-transition-property: \"color, background-color, border-radius\",\n    --accordion-transition-timing: \".15s ease-in-out\",\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing),\n    --accordion-border-color: var(--border-color),\n    --accordion-border-width: var(--border-width),\n    --accordion-border-radius: var(--accordion-radius, var(--radius-7)),\n    --accordion-btn-color: var(--fg-2),\n    --accordion-btn-bg: var(--bg-body),\n    --accordion-btn-icon-width: 1rem,\n    --accordion-btn-icon-transform: rotate(-180deg),\n    --accordion-btn-icon-transition: transform .2s ease-in-out,\n    --accordion-active-color: var(--fg),\n    --accordion-active-bg: var(--bg-2),\n  ),\n  $accordion-tokens\n);\n// scss-docs-end accordion-tokens\n\n@layer components {\n  .accordion {\n    @include tokens($accordion-tokens);\n  }\n\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none; // Remove default marker\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    @include transition(var(--accordion-transition));\n\n    &::-webkit-details-marker {\n      display: none;\n    }\n\n    .accordion-icon {\n      flex-shrink: 0;\n      width: var(--accordion-btn-icon-width);\n      height: var(--accordion-btn-icon-width);\n      margin-inline-start: auto;\n      color: currentcolor;\n      @include transition(var(--accordion-btn-icon-transition));\n    }\n\n    &:hover {\n      z-index: 2;\n    }\n\n    &:focus-visible {\n      position: relative;\n      z-index: 3;\n      @include focus-ring(true);\n      outline-offset: -1px;\n    }\n  }\n\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n\n    @media (prefers-reduced-motion: no-preference) {\n      interpolate-size: allow-keywords;\n    }\n\n    &::details-content {\n      block-size: 0;\n      overflow-y: clip;\n      @include transition(content-visibility .2s allow-discrete, block-size .2s);\n    }\n\n    &:first-of-type {\n      @include border-top-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-top-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n    }\n\n    &:not(:first-of-type) {\n      border-block-start: 0;\n    }\n\n    // Only set a border-radius on the last item if the accordion is collapsed\n    &:last-of-type {\n      @include border-bottom-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-bottom-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n\n      > .accordion-body {\n        @include border-bottom-radius(var(--accordion-border-radius));\n      }\n    }\n\n    // Open state - details[open] applies these styles\n    &[open] {\n\n      border-color: var(--theme-border, var(--accordion-border-color));\n      &::details-content {\n        block-size: auto;\n      }\n\n      > .accordion-header {\n        color: var(--theme-fg, var(--accordion-active-color));\n        background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n        box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n\n        .accordion-icon {\n          transform: var(--accordion-btn-icon-transform);\n        }\n      }\n\n      // Remove bottom radius from header when open (even on last item)\n      &:last-of-type > .accordion-header {\n        @include border-bottom-radius(0);\n      }\n    }\n  }\n\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n\n\n  // Flush accordion items\n  //\n  // Remove borders and border-radius to keep accordion items edge-to-edge.\n\n  .accordion-flush {\n    > .accordion-item {\n      border-inline: 0;\n      @include border-radius(0);\n\n      &:first-child {\n        border-block-start: 0;\n      }\n\n      &:last-child {\n        border-block-end: 0;\n      }\n\n      > .accordion-header,\n      > .accordion-body {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$alert-tokens: () !default;\n\n// scss-docs-start alert-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$alert-tokens: defaults(\n  (\n    --alert-gap: var(--spacer-3),\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: var(--spacer),\n    --alert-padding-y: var(--spacer),\n    --alert-color: var(--theme-fg, inherit),\n    --alert-border-color: var(--theme-border, var(--border-color)),\n    --alert-border: var(--border-width) solid var(--alert-border-color),\n    --alert-border-radius: var(--radius-5),\n    --alert-link-color: inherit,\n    --hr-border-color: var(--theme-border, var(--border-color)),\n  ),\n  $alert-tokens\n);\n// scss-docs-end alert-tokens\n\n@layer components {\n  .alert {\n    @include tokens($alert-tokens);\n\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    @include border-radius(var(--alert-border-radius));\n  }\n\n  .alert > p {\n    margin-bottom: 0;\n  }\n\n  .alert-heading {\n    // Specified to prevent conflicts of changing $headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n","@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$avatar-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start avatar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-tokens: defaults(\n  (\n    --avatar-size: 2.5rem,\n    --avatar-border-radius: 50%,\n    --avatar-border-width: 2px,\n    --avatar-border-color: var(--bg-body),\n    --avatar-bg: var(--bg-2),\n    --avatar-color: var(--fg-body),\n    // --avatar-font-weight: var(--font-weight-medium), // Defaults to fallback\n    --avatar-status-size: .75rem,\n    --avatar-status-border-width: 2px,\n    --avatar-status-border-color: var(--bg-body),\n    --avatar-stack-spacing: -.3,\n    --avatar-stack-transition: \"transform .2s ease-in-out\",\n  ),\n  $avatar-tokens\n);\n// scss-docs-end avatar-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start avatar-sizes\n$avatar-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-sizes: defaults(\n  (\n    \"xs\": (\n      size: 1.5rem,\n      status-size: .625rem,\n    ),\n    \"sm\": (\n      size: 2rem,\n    ),\n    \"lg\": (\n      size: 3rem,\n      status-size: 1rem,\n      border-width: 3px,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n      border-width: 4px,\n    ),\n  ),\n  $avatar-sizes\n);\n// scss-docs-end avatar-sizes\n\n@layer components {\n  .avatar {\n    @include tokens($avatar-tokens);\n\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * .4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    @include border-radius(var(--avatar-border-radius));\n\n    > .avatar-img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n  }\n\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    @include border-radius(var(--avatar-border-radius, 50%));\n  }\n\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    @include border-radius(50%);\n\n    &.status-online {\n      background-color: var(--green-500);\n    }\n\n    &.status-offline {\n      background-color: var(--gray-400);\n      @include border-radius(20%);\n    }\n\n    &.status-busy {\n      background-color: var(--red-500);\n      @include border-radius(20%);\n    }\n\n    &.status-away {\n      background-color: var(--yellow-500);\n    }\n  }\n\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n\n    .avatar {\n      // Stack spacing is calculated as a percentage of avatar size\n      margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n      border: var(--avatar-border-width) solid var(--avatar-border-color);\n      mask-image: none;\n      @include transition(var(--avatar-stack-transition));\n\n      &:last-child {\n        margin-left: 0;\n      }\n\n      &:hover {\n        z-index: 1;\n        transform: translateY(-2px);\n      }\n    }\n  }\n\n  @each $size, $tokens in $avatar-sizes {\n    .avatar-#{$size},\n    .avatar-stack-#{$size} > .avatar {\n      --avatar-size: #{map.get($tokens, size)};\n\n      @if map.has-key($tokens, status-size) {\n        --avatar-status-size: #{map.get($tokens, status-size)};\n      }\n\n      @if map.has-key($tokens, border-width) {\n        --avatar-border-width: #{map.get($tokens, border-width)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$badge-tokens: () !default;\n\n// scss-docs-start badge-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$badge-tokens: defaults(\n  (\n    --badge-padding-x: .625em,\n    --badge-padding-y: .25em,\n    --badge-font-size: clamp(12px, .75em, .75em),\n    --badge-font-weight: var(--font-weight-semibold),\n    --badge-color: inherit,\n    --badge-bg: var(--bg-2),\n    --badge-border-width: var(--border-width),\n    --badge-border-color: transparent,\n    --badge-border-radius: var(--radius-7),\n  ),\n  $badge-tokens\n);\n// scss-docs-end badge-tokens\n\n// scss-docs-start badge-variants\n$badge-variants: (\n  \"subtle\": (\n    \"color\": \"fg\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"fg\",\n    \"bg\": \"transparent\",\n    \"border-color\": \"border\"\n  )\n) !default;\n// scss-docs-end badge-variants\n\n@layer components {\n  .badge {\n    @include tokens($badge-tokens);\n\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    @include border-radius(var(--badge-border-radius));\n    // @include gradient-bg();\n\n    // Empty badges collapse automatically\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Quick fix for badges in buttons\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n\n  // scss-docs-start badge-variant-loop\n  @each $variant, $properties in $badge-variants {\n    .badge-#{$variant} {\n      @each $property, $value in $properties {\n        @if $value == \"transparent\" {\n          --badge-#{$property}: transparent;\n        } @else {\n          --badge-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      color: var(--badge-color);\n      background-color: var(--badge-bg);\n      border-color: var(--badge-border-color);\n    }\n  }\n  // scss-docs-end badge-variant-loop\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$breadcrumb-tokens: () !default;\n\n// scss-docs-start breadcrumb-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$breadcrumb-tokens: defaults(\n  (\n    --breadcrumb-margin-bottom: 1rem,\n    --breadcrumb-font-size: inherit,\n    --breadcrumb-bg: transparent,\n    --breadcrumb-border-radius: var(--radius-5),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-divider-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/></svg>\"))},\n    --breadcrumb-divider-width: .375rem,\n    --breadcrumb-divider-height: .75rem,\n    --breadcrumb-link-padding-x: .75rem,\n    --breadcrumb-link-padding-y: .25rem,\n    --breadcrumb-link-color: var(--fg-3),\n    --breadcrumb-link-hover-color: var(--fg-2),\n    --breadcrumb-link-hover-bg: var(--bg-1),\n    --breadcrumb-link-active-color: var(--fg-1),\n    --breadcrumb-link-border-radius: var(--radius-7),\n  ),\n  $breadcrumb-tokens\n);\n// scss-docs-end breadcrumb-tokens\n\n@layer components {\n  .breadcrumb {\n    @include tokens($breadcrumb-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style-type: \"\";\n    background-color: var(--breadcrumb-bg);\n    @include border-radius(var(--breadcrumb-border-radius));\n  }\n\n  .breadcrumb-item {\n    display: flex;\n  }\n\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n\n    // Render a default chevron, painted with `currentcolor` via a mask, when the\n    // divider has no explicit content. Any content (an inline SVG, a text\n    // character, etc.) added to the element overrides this default.\n    &:empty::before {\n      display: block;\n      width: var(--breadcrumb-divider-width);\n      height: var(--breadcrumb-divider-height);\n      content: \"\";\n      background-color: currentcolor;\n      @include mask-icon(var(--breadcrumb-divider-icon));\n    }\n  }\n\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    @include border-radius(var(--breadcrumb-link-border-radius));\n    @include transition(.1s text-decoration-color ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--breadcrumb-link-hover-color);\n      background-color: var(--breadcrumb-link-hover-bg);\n    }\n\n    &.active {\n      color: var(--breadcrumb-link-active-color);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$chip-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start chip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-tokens: defaults(\n  (\n    --chip-height: 1.75rem,\n    --chip-padding-x: .625rem,\n    --chip-gap: .3125rem,\n    --chip-border-radius: var(--radius-pill),\n    --chip-img-size: 1.25rem,\n    --chip-icon-size: 1rem,\n    --chip-dismiss-size: 1rem,\n    --chip-dismiss-opacity: .65,\n    --chip-dismiss-hover-opacity: 1,\n    --chip-color: var(--theme-fg, var(--fg-body)),\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2)),\n    --chip-border-color: transparent,\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast)),\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg)),\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg)),\n  ),\n  $chip-tokens\n);\n// scss-docs-end chip-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .chip {\n    @include tokens($chip-tokens);\n\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    @include border-radius(var(--chip-border-radius));\n\n    &:hover {\n      --chip-bg: var(--theme-bg-muted, var(--bg-3));\n    }\n\n    &:focus-visible {\n      outline: 0;\n      // @include focus-ring();\n    }\n\n    &.active {\n      --chip-color: var(--chip-selected-color);\n      --chip-bg: var(--chip-selected-bg);\n      --chip-border-color: var(--chip-selected-border-color);\n\n      &:hover {\n        --chip-bg: var(--chip-selected-bg);\n        opacity: .9;\n      }\n    }\n\n    &.disabled,\n    &:disabled {\n      pointer-events: none;\n      opacity: .65;\n    }\n  }\n\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    @include border-radius(50%);\n\n    &:first-child {\n      margin-inline-start: -.375rem;\n    }\n  }\n\n  // Chip icon (left side)\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -.25);\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n    }\n\n    > img {\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n      object-fit: cover;\n      @include border-radius(50%);\n    }\n  }\n\n  // Dismiss button (right side)\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    // margin-inline-start: calc(var(--chip-padding-x) * -.5);\n    margin-inline-end: calc(var(--chip-padding-x) * -.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n    // @include transition(opacity .15s ease-in-out);\n\n    &:hover {\n      opacity: var(--chip-dismiss-hover-opacity);\n    }\n\n    &:focus-visible {\n      outline: 0;\n      opacity: 1;\n      @include focus-ring();\n    }\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-dismiss-size);\n      height: var(--chip-dismiss-size);\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"layout/breakpoints\" as *;\n\n$card-tokens: () !default;\n\n// scss-docs-start card-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$card-tokens: defaults(\n  (\n    --card-spacer-y: var(--spacer-5),\n    --card-spacer-x: var(--spacer-5),\n    --card-subtitle-color: inherit,\n    --card-border-width: var(--border-width),\n    --card-border-color: var(--border-color-translucent),\n    --card-border-radius: var(--radius-7),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --card-cap-padding-y: var(--spacer-3),\n    --card-cap-padding-x: var(--spacer),\n    --card-cap-bg: var(--bg-1),\n    --card-cap-color: inherit,\n    --card-height: auto,\n    --card-color: inherit,\n    --card-bg: var(--bg-body),\n    --card-img-overlay-padding: var(--card-spacer-y),\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: calc(var(--card-spacer-y) * .5),\n  ),\n  $card-tokens\n);\n// scss-docs-end card-tokens\n\n@layer components {\n  .card {\n    @include tokens($card-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    // border: var(--card-border-width) solid var(--card-border-color);\n    @include border-radius(var(--card-border-radius));\n    @include box-shadow(var(--card-box-shadow));\n\n    > hr {\n      margin-inline: 0;\n    }\n  }\n\n  .card-body {\n    display: flex;\n    // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n    // as much space as possible, ensuring footers are aligned to the bottom.\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    &:first-child {\n      @include border-top-radius(var(--card-border-radius));\n      border-top-width: var(--card-border-width);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(var(--card-border-radius));\n      border-bottom-width: var(--card-border-width);\n    }\n\n    &:not(:first-child, :last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n\n    // The footer draws a full border (including its top edge), so a body/list\n    // segment that precedes it must not also draw a bottom border or the seam\n    // doubles up.\n    &:has(+ .card-footer) {\n      border-block-end-width: 0;\n    }\n  }\n\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -.5);\n  }\n\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0; // Removes the default margin-bottom of <hN>\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:first-child {\n      @include border-radius(var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0);\n    }\n  }\n\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:last-child {\n      @include border-radius(0 0 var(--card-inner-border-radius) var(--card-inner-border-radius));\n    }\n  }\n\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n\n    .card-header,\n    .card-footer {\n      background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n    }\n  }\n\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n\n    .card-header {\n      color: var(--theme-fg-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-footer {\n      color: var(--theme-fg-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-body,\n    .card-list {\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n  }\n\n  //\n  // Header navs\n  //\n\n  // Combined selector because of specificity match with `.nav` base class\n  .nav.card-header-tabs {\n    margin-inline: calc(-.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y) - var(--nav-tabs-border-width));\n    border-block-end: 0;\n\n    .nav-link.active {\n      background-color: var(--card-bg);\n      border-block-end-color: var(--card-bg);\n    }\n  }\n\n  // Card image\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    @include border-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n\n  .card-img,\n  .card-img-top {\n    @include border-top-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-bottom {\n    @include border-bottom-radius(var(--card-inner-border-radius));\n  }\n\n  .card-row {\n    flex-direction: row;\n\n    .card-body,\n    .card-list {\n      border-width: var(--card-border-width) 0;\n      @include border-radius(0);\n\n      &:first-child {\n        @include border-start-radius(var(--card-inner-border-radius));\n        border-inline-start-width: var(--card-border-width);\n      }\n\n      &:last-child {\n        @include border-end-radius(var(--card-inner-border-radius));\n        border-inline-end-width: var(--card-border-width);\n      }\n\n      &:not(:first-child, :last-child) {\n        border-inline-end-width: var(--card-border-width);\n      }\n    }\n  }\n\n  .card-img-start {\n    @include border-start-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img-end {\n    @include border-end-radius(var(--card-inner-border-radius));\n  }\n\n  //\n  // Card groups\n  //\n\n  // Card groups lay out their cards in a row using a container query, so wrap the\n  // group in a query container (e.g., the `.contains-inline` utility) for the row\n  // layout to take effect. Without a query container the cards remain stacked.\n  .card-group {\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      margin-bottom: var(--card-group-margin);\n    }\n\n    @include container-breakpoint-up(sm) {\n      display: flex;\n      flex-flow: row wrap;\n      // The child selector allows nested `.card` within `.card-group`\n      // to display properly.\n      > .card {\n        flex: 1 0 0;\n        margin-bottom: 0;\n\n        // Borders now live on the inner segments (header, body, list, footer)\n        // and the card images use outlines, so adjacent cards would otherwise\n        // render a doubled-up border at each seam. Pull subsequent cards back by\n        // one border width so their leading edges overlap the previous card's\n        // trailing edge, collapsing the seam into a single line. Gap can't be\n        // negative, so this relies on a negative margin.\n        + .card {\n          margin-inline-start: calc(-1 * var(--card-border-width));\n        }\n\n        // Handle rounded corners\n        @if $enable-rounded {\n          &:not(:last-child) {\n            @include border-end-radius(0);\n\n            > .card-img-top,\n            > .card-header,\n            > .card-body {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-end-radius: 0;\n            }\n          }\n\n          &:not(:first-child) {\n            @include border-start-radius(0);\n\n            > .card-img-top,\n            > .card-header,\n            > .card-body {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-gap: .75rem,\n    --carousel-indicator-bg: var(--fg-3),\n    --carousel-indicator-width: .75rem,\n    --carousel-indicator-height: .75rem,\n    --carousel-indicator-spacer: .25rem,\n    --carousel-indicator-transition: \"opacity .6s ease, width .3s ease\",\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg),\n    --carousel-control-icon-width: 1rem,\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\"),\n    --carousel-control-next-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\"),\n    --carousel-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\"),\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\"),\n    // Scroll-snap engine. `gap` must carry a length unit: it feeds the\n    // `.carousel-item` flex-basis `calc()`, and subtracting a unitless `0` from a\n    // percentage is invalid CSS (it would drop the whole declaration and collapse\n    // every slide to its content width). `peek` only feeds `padding-inline`/\n    // `scroll-padding-inline`, so a bare `0` would be valid there, but we keep it\n    // unit-bearing for consistency.\n    --carousel-items: 1,\n    --carousel-items-gap: 0px,\n    --carousel-items-peek: 0px,\n    --carousel-fade-duration: .6s,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .carousel {\n    @include tokens($carousel-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n\n  // The scroll viewport\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none; // Hide the scrollbar without losing scrollability\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n  }\n\n  // Smooth programmatic/keyboard scrolling, disabled under reduced-motion\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n\n  .carousel-item {\n    // `100%` here is `.carousel-inner`'s content box, which `padding-inline`\n    // has already inset by the peek on each side, so the peek must NOT be\n    // subtracted again — doing so makes every slide `2 * peek` too narrow and\n    // the peek lopsided. Only the inter-slide gaps need removing.\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n\n  //\n  // Layout variants\n  //\n\n  // Center the active slide in the viewport (pairs well with `--carousel-items-peek`)\n  .carousel-center {\n    .carousel-item {\n      scroll-snap-align: center;\n    }\n  }\n\n  // Let each slide size itself; snap points still land on every item\n  .carousel-auto {\n    .carousel-item {\n      flex-basis: auto;\n    }\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  // Fade can't ride scroll-snap (it stacks slides instead of scrolling), so it\n  // becomes a JavaScript-driven mode: every slide is stacked and the active one\n  // is faded in via a CSS opacity transition.\n  .carousel-fade {\n    .carousel-inner {\n      display: grid;\n      overflow: hidden;\n      scroll-snap-type: none;\n    }\n\n    .carousel-item {\n      grid-area: 1 / 1;\n      width: 100%;\n      visibility: hidden;\n      opacity: 0;\n      @include transition(opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration));\n    }\n\n    .carousel-item.active {\n      visibility: visible;\n      opacity: 1;\n      @include transition(opacity var(--carousel-fade-duration) ease);\n    }\n  }\n\n  // Icons for within, rendered via CSS mask so they inherit the current text\n  // color (white on the overlay controls, the button color inside `.btn-*`).\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    @include mask-icon($size: 100% 100%, $position: 50%);\n  }\n\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n\n  [dir=\"rtl\"] .carousel-icon-prev,\n  [dir=\"rtl\"] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n\n  // Optional play/pause control\n  //\n  // A discoverable toggle so users can stop an autoplaying carousel, as required\n  // by WCAG 2.2.2 (Pause, Stop, Hide). `.carousel-control-play-pause` is only a\n  // behavior hook—JS toggles `.paused` on it and its appearance comes from the\n  // wrapping button (e.g. `.btn-icon`). The button holds both glyphs and we show\n  // whichever `.carousel-icon-*` matches the current state.\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n\n  .carousel-control-play-pause.paused {\n    .carousel-icon-pause {\n      display: none;\n    }\n\n    .carousel-icon-play {\n      display: inline-block;\n    }\n  }\n\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n\n    [data-bs-target] {\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      cursor: pointer;\n      background-color: transparent;\n      border: 1px solid var(--carousel-indicator-bg);\n      @include border-radius(var(--carousel-indicator-width));\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      width: calc(var(--carousel-indicator-width) * 2.5);\n      background-color: var(--carousel-indicator-bg);\n      border-color: var(--carousel-indicator-bg);\n    }\n  }\n\n  // Autoplay progress: fill the active indicator like a progress bar over the\n  // current slide's interval. The JS adds `.carousel-playing` and sets\n  // `--carousel-interval` (shipped as `--bs-carousel-interval`) while autoplay is\n  // running. The fill restarts on its own each slide because `.active` moves to a\n  // fresh indicator, so its `::after` animation begins from scratch.\n  @if $enable-transitions {\n    @keyframes carousel-indicator-progress {\n      from { inline-size: 0; }\n      to { inline-size: 100%; }\n    }\n\n    .carousel-playing .carousel-indicators .active {\n      @media (prefers-reduced-motion: no-preference) {\n        position: relative;\n        overflow: hidden;\n        // Empty the pill so it reads as a track that the fill grows across.\n        background-color: transparent;\n\n        &::after {\n          position: absolute;\n          inset-block: 0;\n          inset-inline-start: 0;\n          inline-size: 0;\n          content: \"\";\n          background-color: var(--carousel-indicator-progress-bg);\n          animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n        }\n      }\n    }\n  }\n\n  // Overlay layout\n  //\n  // Overlays the prev/next controls, play/pause button, and indicators on top of\n  // the slides (the classic carousel look) instead of stacking them in the flow.\n\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n\n    .carousel-overlay-controls {\n      position: absolute;\n      inset-block-end: 1rem;\n      inset-inline: 1rem;\n      z-index: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n  }\n}\n","// stylelint-disable selector-max-attribute, property-disallowed-list, selector-no-qualifying-type -- VCP uses extensive data attributes and requires direct border-radius properties for range selection\n\n@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$datepicker-tokens: () !default;\n\n// scss-docs-start datepicker-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$datepicker-tokens: defaults(\n  (\n    --datepicker-padding: 1rem,\n    --datepicker-bg: var(--bg-body),\n    --datepicker-color: var(--fg-body),\n    --datepicker-border-color: var(--border-color-translucent),\n    --datepicker-border-width: var(--border-width),\n    --datepicker-border-radius: var(--radius-7),\n    --datepicker-box-shadow: var(--box-shadow),\n    --datepicker-font-size: var(--font-size-sm),\n    --datepicker-min-width: 280px,\n    --datepicker-zindex: #{$zindex-menu},\n    --datepicker-header-font-weight: 600,\n    --datepicker-weekday-color: var(--fg-3),\n    --datepicker-day-hover-bg: var(--bg-1),\n    --datepicker-day-selected-bg: var(--primary-bg),\n    --datepicker-day-selected-color: var(--primary-contrast),\n    --datepicker-day-today-bg: var(--bg-2),\n    --datepicker-day-today-color: var(--fg-1),\n    --datepicker-day-disabled-color: var(--fg-4),\n  ),\n  $datepicker-tokens\n);\n// scss-docs-end datepicker-tokens\n\n@layer components {\n  [data-vc=\"calendar\"] {\n    @include tokens($datepicker-tokens);\n\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    @include border-radius(var(--datepicker-border-radius));\n\n    // Respond to Bootstrap's color mode system\n    &[data-bs-theme=\"light\"] {\n      color-scheme: light;\n    }\n\n    &[data-bs-theme=\"dark\"] {\n      color-scheme: dark;\n    }\n\n    // Catch-all for focus styles\n    button:focus-visible {\n      position: relative;\n      z-index: 1;\n      @include focus-ring();\n    }\n  }\n\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n\n  // Inline calendars\n  //\n  // Remove popover styling for more neutral styling\n  [data-vc=\"calendar\"]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n\n  [data-vc-position=\"bottom\"] {\n    margin-block-start: .25rem;\n  }\n\n  [data-vc-position=\"top\"] {\n    margin-block-end: -.25rem;\n  }\n\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-color: var(--datepicker-color);\n      @include mask-icon(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\"), $size: null);\n    }\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc-arrow=\"prev\"]::before {\n    transform: rotate(90deg);\n  }\n\n  [data-vc-arrow=\"next\"]::before {\n    transform: rotate(-90deg);\n  }\n\n  // Grid layout\n  [data-vc=\"controls\"] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n\n  [data-vc=\"grid\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n\n  [data-vc=\"column\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n\n  //\n  // Header\n  //\n\n  [data-vc=\"header\"] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: .75rem;\n  }\n\n  // Month and year\n  [data-vc-header=\"content\"] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n\n  [data-vc=\"month\"],\n  [data-vc=\"year\"] {\n    padding: .25rem .5rem;\n    margin-inline: -.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    // cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc=\"content\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n\n  // Month/Year grids\n  [data-vc=\"months\"],\n  [data-vc=\"years\"] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: .25rem;\n    align-items: center;\n  }\n\n  [data-vc=\"years\"] {\n    --vc-columns: 5;\n  }\n\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: .25rem;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n\n    &[data-vc-months-month-selected],\n    &[data-vc-years-year-selected] {\n      color: var(--datepicker-day-selected-color);\n      background-color: var(--datepicker-day-selected-bg);\n\n      &:hover {\n        color: var(--datepicker-day-selected-color);\n        background-color: var(--datepicker-day-selected-bg);\n      }\n    }\n  }\n\n  // Week days header\n  [data-vc=\"week\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: .5rem;\n  }\n\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n\n  // Dates grid\n  [data-vc=\"dates\"] {\n    pointer-events: none;\n  }\n\n  [data-vc-dates=\"row\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: .125rem;\n    padding-bottom: .125rem;\n    pointer-events: auto;\n\n    &:not(:has([data-vc-date-btn])),\n    &[data-vc-date-disabled],\n    &[data-vc-date-disabled] [data-vc-date-btn] {\n      pointer-events: none;\n    }\n  }\n\n  // Date button\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: .75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  // Today\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n\n  // Outside month\n  [data-vc-date-month=\"next\"] [data-vc-date-btn],\n  [data-vc-date-month=\"prev\"] [data-vc-date-btn] {\n    opacity: .5;\n  }\n\n  // Disabled\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n\n  // Range selection styles\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n\n  [data-vc-date-hover=\"first\"] [data-vc-date-btn] {\n    border-start-start-radius: var(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"middle\"] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: .8;\n  }\n\n  // Selected\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n\n  }\n\n  [data-vc-date-selected=\"first\"] [data-vc-date-btn] {\n    border-top-left-radius: var(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// Native <dialog> component\n// Uses the browser's native dialog element with showModal()/show()/close() APIs\n// Leverages native [open] attribute and ::backdrop pseudo-element\n\n// stylelint-disable custom-property-no-missing-var-function\n$dialog-tokens: () !default;\n\n// scss-docs-start dialog-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-tokens: defaults(\n  (\n    --dialog-padding: 1rem,\n    --dialog-width: 500px,\n    --dialog-margin: 1.75rem,\n    --dialog-color: var(--fg-body),\n    --dialog-bg: var(--bg-body),\n    --dialog-border-color: var(--border-color-translucent),\n    --dialog-border-width: var(--border-width),\n    --dialog-border-radius: var(--radius-7),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-transition-duration: .3s,\n    --dialog-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --dialog-backdrop-bg: light-dark(rgb(0 0 0 / 50%), rgb(0 0 0 / 65%)),\n    --dialog-backdrop-blur: 8px,\n    --dialog-header-padding: 1rem,\n    --dialog-header-border-color: var(--border-color-translucent),\n    --dialog-header-border-width: var(--border-width),\n    --dialog-footer-padding: 1rem,\n    --dialog-footer-border-color: var(--border-color-translucent),\n    --dialog-footer-border-width: var(--border-width),\n    --dialog-footer-gap: .5rem,\n  ),\n  $dialog-tokens\n);\n// scss-docs-end dialog-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start dialog-sizes\n$dialog-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-sizes: defaults(\n  (\n    sm: 280px,\n    lg: 800px,\n    xl: 1140px,\n  ),\n  $dialog-sizes\n);\n// scss-docs-end dialog-sizes\n\n@layer components {\n  // Prevent page scroll when a dialog is open. Applied to the root element so\n  // `overflow: hidden` sits on the same element as `scrollbar-gutter: stable`\n  // (see _root.scss): the gutter stays reserved while the scrollbar is hidden,\n  // so the page doesn't shift when a dialog opens.\n  :root.dialog-open {\n    overflow: hidden;\n  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Override UA display:none so visibility controls the hidden state,\n    // enabling reliable cross-browser exit animations after close().\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    @include border-radius(var(--dialog-border-radius));\n    @include box-shadow(var(--dialog-box-shadow));\n\n    // Animated variant (default) — transitions, opacity fade, slide transforms.\n    // Adding .dialog-instant skips all animations (instant show/hide).\n    &:not(.dialog-instant) {\n      // Exit state: faded out\n      opacity: 0;\n\n      // Exit transition: opacity and transform animate out, then visibility\n      // flips hidden after the animation completes (via the delay).\n      @include transition(\n        opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n        transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n        visibility 0s var(--dialog-transition-duration)\n      );\n\n      // Slide-down variant: enters from above sliding down, exits by reversing\n      // back up. Base value is the entry-from / exit-to position so the\n      // animation works on every open (not just the first, which is the only\n      // time @starting-style applies for a persistent <dialog> element).\n      &.dialog-slide-down {\n        transform: translateY(-3rem);\n      }\n\n      // Slide-up variant: enters from below sliding up, exits by reversing\n      // back down. See note above re: base value choice.\n      &.dialog-slide-up {\n        transform: translateY(3rem);\n      }\n\n      // Open state: visible and faded in.\n      // Entry transition: visibility flips visible immediately (0s, no delay),\n      // then opacity and transform animate in.\n      // The :not(.hiding) qualifier lets the exit transition fall back to the\n      // base \"exit\" state above while [open] is still present (the JS keeps\n      // the dialog in the top layer during the exit so the ::backdrop and\n      // the browser's modal centering remain intact).\n      &[open]:not(.hiding) {\n        overflow: visible;\n        visibility: visible;\n        opacity: 1;\n        @include transition(\n          opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n          transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n          visibility 0s\n        );\n        transform: none;\n      }\n\n      // Static backdrop \"bounce\" animation (modal dialogs only). Qualified\n      // with [open] (to outrank the open-state `transform: none` selector\n      // which now also includes `:not(.hiding)`) and `:not(.hiding)` (so\n      // a backdrop click while the dialog is mid-exit doesn't fight the\n      // slide-out transform).\n      &[open].dialog-static:not(.hiding) {\n        transform: scale(1.02);\n      }\n\n      // Native backdrop styling with transitions\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n        @include backdrop-transitions(var(--dialog-transition-duration), var(--dialog-transition-timing));\n      }\n\n      // Exit: fade the native backdrop out alongside the dialog. The dialog\n      // is kept in the top layer (and thus the ::backdrop is still rendered)\n      // for the duration of the exit transition.\n      &.hiding::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n\n    // Instant variant — no transitions, just snap visibility\n    &.dialog-instant {\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n      }\n    }\n\n    // Open state base (always applies, regardless of animation mode).\n    // Excluded while .hiding is present so the animated exit (above) can\n    // fall through to the base \"exit\" state — for instant dialogs, .hiding\n    // is removed synchronously after close() so this still applies normally.\n    &[open]:not(.hiding) {\n      overflow: visible;\n      visibility: visible;\n      opacity: 1;\n      transform: none;\n    }\n\n    // Non-modal dialog positioning\n    // show() doesn't use the top layer, so we need explicit positioning and z-index\n    &.dialog-nonmodal {\n      position: fixed;\n      inset-block-start: 50%;\n      inset-inline-start: 50%;\n      z-index: $zindex-dialog;\n      margin-inline: 0;\n      transform: translate(-50%, -50%);\n    }\n\n    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Entry animation for ::backdrop via @starting-style. The backdrop only\n  // exists while the dialog is in the top layer, so its starting state can't\n  // be expressed on the base selector.\n  // Default dialog (fade only) and the slide variants do NOT need\n  // @starting-style — the base opacity: 0 (and base transform for slides)\n  // serves as the entry-from state with the visibility trick.\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n\n    // Swap entry: when this dialog is opened as the target of a swap, the\n    // outgoing dialog's ::backdrop is being removed synchronously in the same\n    // JS tick. To avoid any flicker (either a dip from a fade-in over nothing,\n    // or double-darkening from two stacked backdrops), start this backdrop\n    // already-opaque so it takes over from the outgoing one seamlessly.\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n  }\n\n  // Dialog sizes\n  @each $size, $value in $dialog-sizes {\n    .dialog-#{$size} { --dialog-width: #{$value}; }\n  }\n\n  // Fullscreen dialog\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n\n  // Responsive fullscreen dialogs\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @if $prefix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .#{css-escape-ident($breakpoint)}-down\\:dialog-fullscreen {\n          --dialog-width: 100vw;\n          --dialog-margin: 0;\n          --dialog-border-radius: 0;\n\n          width: 100%;\n          max-width: none;\n          height: 100%;\n          max-height: none;\n        }\n      }\n    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    @include dialog-header(var(--dialog-header-padding));\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n\n    .btn-close {\n      margin-inline-start: auto;\n    }\n  }\n\n  // Dialog title\n  .dialog-title {\n    @include dialog-title();\n    font-size: var(--font-size-md);\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    @include dialog-body(var(--dialog-padding));\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    @include dialog-footer(var(--dialog-footer-padding), var(--dialog-footer-gap), var(--dialog-footer-border-width), var(--dialog-footer-border-color));\n  }\n}\n","// Shared mixins for Dialog and Drawer sub-components.\n// Both components use identical header/footer/body/title patterns\n// with different token namespaces.\n\n@use \"transition\" as *;\n\n// Header: flex row with close button alignment\n@mixin dialog-header($padding) {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  padding: $padding;\n}\n\n// Footer: flex row with end-aligned actions\n@mixin dialog-footer($padding, $gap, $border-width, $border-color) {\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  gap: $gap;\n  align-items: center;\n  justify-content: flex-end;\n  padding: $padding;\n  border-block-start: $border-width solid $border-color;\n}\n\n// Body: flexible scrollable content area\n@mixin dialog-body($padding) {\n  flex: 1 1 auto;\n  padding: $padding;\n}\n\n// Title: reset margin, set line-height\n@mixin dialog-title($line-height: 1.5) {\n  margin-bottom: 0;\n  line-height: $line-height;\n}\n\n// Backdrop transitions for ::backdrop pseudo-element.\n// Both Dialog and Drawer use identical allow-discrete transitions\n// on display and overlay to keep ::backdrop in the top layer.\n@mixin backdrop-transitions($duration, $timing) {\n  @include transition(\n    background-color $duration $timing,\n    backdrop-filter $duration $timing,\n    display $duration allow-discrete,\n    overlay $duration allow-discrete\n  );\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// stylelint-disable scss/dollar-variable-default, custom-property-no-missing-var-function\n$menu-tokens: () !default;\n\n// scss-docs-start menu-tokens\n$menu-tokens: defaults(\n  (\n    --menu-zindex: #{$zindex-menu},\n    --menu-gap: .125rem,\n    --menu-min-width: 10rem,\n    --menu-padding-x: .25rem,\n    --menu-padding-y: .25rem,\n    --menu-spacer: .125rem,\n    --menu-font-size: var(--font-size-sm),\n    --menu-color: var(--fg-body),\n    --menu-bg: var(--bg-body),\n    // --menu-border-color: var(--border-color-translucent),\n    // --menu-border-radius: var(--radius-7),\n    // --menu-border-width: var(--border-width),\n    --menu-box-shadow: var(--box-shadow),\n    // --menu-max-height: none,\n    --menu-divider-bg: var(--border-color-translucent),\n    --menu-divider-margin-y: .125rem,\n    --menu-divider-margin-x: .25rem,\n    --menu-item-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-bg: var(--bg-1),\n    --menu-item-active-color: var(--primary-contrast),\n    --menu-item-active-bg: var(--primary-bg),\n    --menu-item-disabled-color: var(--fg-3),\n    --menu-item-gap: .5rem,\n    --menu-item-padding-x: .75rem,\n    --menu-item-padding-y: .25rem,\n    --menu-item-border-radius: var(--radius-5),\n    --menu-icon-size: 1rem,\n    --menu-description-font-size: var(--font-size-xs),\n    --menu-check-color: currentcolor,\n    --menu-header-color: var(--fg-3),\n    --menu-header-padding-x: .75rem,\n    --menu-header-padding-y: .25rem,\n    --menu-transition-duration: .15s,\n    --menu-transition-timing: cubic-bezier(.22, 1, .36, 1),\n  ),\n  $menu-tokens\n);\n// scss-docs-end menu-tokens\n\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n@layer components {\n  .menu {\n    @include tokens($menu-tokens);\n\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style-type: \"\";\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    @include border-radius(var(--menu-border-radius, var(--radius-7)));\n    @include box-shadow(var(--menu-box-shadow));\n    opacity: 0;\n    transform: scale(.95);\n    transform-origin: top start;\n\n    &[data-bs-placement^=\"top\"] {\n      transform-origin: bottom start;\n    }\n\n    &[data-bs-placement=\"bottom-end\"] {\n      transform-origin: top end;\n    }\n\n    &[data-bs-placement=\"top-end\"] {\n      transform-origin: bottom end;\n    }\n\n    &[data-bs-placement^=\"left\"] {\n      transform-origin: top end;\n    }\n\n    @include transition(\n      opacity var(--menu-transition-duration) var(--menu-transition-timing),\n      transform var(--menu-transition-duration) var(--menu-transition-timing),\n      display var(--menu-transition-duration) allow-discrete\n    );\n\n    &.show {\n      display: flex;\n      opacity: 1;\n      transform: none;\n    }\n  }\n\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(.95);\n    }\n  }\n\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-fg, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    @include border-radius(var(--menu-item-border-radius, 0));\n\n    &:hover,\n    &:focus {\n      color: var(--theme-fg-emphasis, var(--menu-item-hover-color));\n      background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n      // @include gradient-bg(var(--theme-bg-subtle, var(--menu-item-hover-bg)));\n    }\n\n    &.active,\n    &:active {\n      color: var(--theme-contrast, var(--menu-item-active-color));\n      background-color: var(--theme-bg, var(--menu-item-active-bg));\n      // @include gradient-bg(var(--theme-bg, var(--menu-item-active-bg)));\n\n      .menu-item-icon {\n        color: inherit !important; // stylelint-disable-line declaration-no-important\n      }\n    }\n\n    &.selected {\n      font-weight: $font-weight-semibold;\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--menu-item-disabled-color);\n      pointer-events: none;\n      background-color: transparent;\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n    }\n  }\n\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: .125rem;\n  }\n\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: .125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n\n    .selected > & {\n      visibility: visible;\n    }\n  }\n\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n\n  // scss-docs-start submenu\n  .submenu {\n    position: relative;\n\n    > .menu-item {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .menu-item::after {\n      display: inline-block;\n      flex-shrink: 0;\n      width: .375em;\n      height: .375em;\n      margin-inline-start: auto;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0 .125em .125em 0;\n      transform: rotate(-45deg);\n\n      [dir=\"rtl\"] & {\n        transform: rotate(135deg);\n      }\n    }\n\n    > .menu {\n      top: 0;\n      margin-top: calc(-1 * var(--menu-padding-y));\n    }\n\n    &:hover > .menu-item,\n    &:focus-within > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n\n    &.show > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n  }\n  // scss-docs-end submenu\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n$list-group-tokens: () !default;\n\n// scss-docs-start list-group-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$list-group-tokens: defaults(\n  (\n    --list-group-color: var(--fg-body),\n    --list-group-bg: var(--bg-body),\n    --list-group-border-color: var(--border-color),\n    --list-group-border-width: var(--border-width),\n    --list-group-border-radius: var(--radius-5),\n    --list-group-item-padding-x: var(--spacer),\n    --list-group-item-padding-y: var(--spacer-2),\n    --list-group-action-color: var(--fg-2),\n    --list-group-action-hover-color: var(--fg-1),\n    --list-group-action-hover-bg: var(--bg-1),\n    --list-group-action-active-color: var(--fg-body),\n    --list-group-action-active-bg: var(--bg-2),\n    --list-group-disabled-color: var(--fg-3),\n    --list-group-disabled-bg: var(--bg-body),\n    --list-group-active-color: var(--primary-contrast),\n    --list-group-active-bg: var(--primary-bg),\n    --list-group-active-border-color: var(--primary-bg),\n  ),\n  $list-group-tokens\n);\n// scss-docs-end list-group-tokens\n\n@layer components {\n  .list-group {\n    @include tokens($list-group-tokens);\n\n    display: flex;\n    flex-direction: column;\n\n    // No need to set list-style-type: \"\"; since .list-group-item is block level\n    padding-inline-start: 0; // reset padding because ul and ol\n    margin-bottom: 0;\n    @include border-radius(var(--list-group-border-radius));\n  }\n\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n\n    > .list-group-item::before {\n      // Increments only this instance of the section counter\n      content: counters(section, \".\") \". \";\n      counter-increment: section;\n    }\n  }\n\n  // Individual list items\n  //\n  // Use on `li`s or `div`s within the `.list-group` parent.\n\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-fg, var(--list-group-color));\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    text-decoration: if(sass($link-decoration == none): null);\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n\n    &:first-child {\n      @include border-top-radius(inherit);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(inherit);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--list-group-disabled-color);\n      pointer-events: none;\n      background-color: var(--list-group-disabled-bg);\n    }\n\n    // Include both here for `<a>`s and `<button>`s\n    &.active {\n      z-index: 2; // Place active items above their siblings for proper border styling\n      color: var(--list-group-active-color);\n      background-color: var(--list-group-active-bg);\n      border-color: var(--list-group-active-border-color);\n    }\n\n    // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector\n    & + .list-group-item {\n      border-block-start-width: 0;\n\n      &.active {\n        margin-top: calc(-1 * var(--list-group-border-width));\n        border-block-start-width: var(--list-group-border-width);\n      }\n    }\n  }\n\n  // Interactive list items\n  //\n  // Use anchor or button elements instead of `li`s or `div`s to create interactive\n  // list items. Includes an extra `.active` modifier class for selected items.\n\n  .list-group-item-action {\n    width: 100%; // For `<button>`s (anchors become 100% by default though)\n    color: var(--theme-fg, var(--list-group-action-color));\n    text-align: inherit; // For `<button>`s (anchors inherit)\n    text-decoration: none;\n\n    &:not(.active) {\n      // Hover state\n      &:hover,\n      &:focus {\n        z-index: 1; // Place hover/focus items above their siblings for proper border styling\n        color: var(--theme-fg-emphasis, var(--list-group-action-hover-color));\n        text-decoration: none;\n        background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n      }\n\n      &:active {\n        color: var(--theme-fg-emphasis, var(--list-group-action-active-color));\n        background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n      }\n    }\n  }\n\n  // Horizontal\n  //\n  // Change the layout of list group items from vertical (default) to horizontal.\n  // The responsive variants use container queries, so wrap the list group in a\n  // query container (e.g., the `.contains-inline` utility) for them to take effect.\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}list-group-horizontal {\n      @include container-breakpoint-up($breakpoint) {\n        flex-direction: row;\n\n        > .list-group-item {\n          &:first-child:not(:last-child) {\n            @include border-bottom-start-radius(var(--list-group-border-radius));\n            @include border-top-end-radius(0);\n          }\n\n          &:last-child:not(:first-child) {\n            @include border-top-end-radius(var(--list-group-border-radius));\n            @include border-bottom-start-radius(0);\n          }\n\n          &.active {\n            margin-top: 0;\n          }\n\n          + .list-group-item {\n            border-block-start-width: var(--list-group-border-width);\n            border-inline-start-width: 0;\n\n            &.active {\n              margin-inline-start: calc(-1 * var(--list-group-border-width));\n              border-inline-start-width: var(--list-group-border-width);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Flush list items\n  //\n  // Remove borders and border-radius to keep list group items edge-to-edge. Most\n  // useful within other components (e.g., cards).\n\n  .list-group-flush {\n    @include border-radius(0);\n\n    > .list-group-item {\n      border-width: 0 0 var(--list-group-border-width);\n\n      &:last-child {\n        border-block-end-width: 0;\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n$nav-tokens: () !default;\n\n// scss-docs-start nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tokens: defaults(\n  (\n    --nav-gap: .125rem,\n    --nav-link-gap: .5rem,\n    --nav-link-align: center,\n    --nav-link-justify: center,\n    --nav-link-padding-x: .75rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--fg-2),\n    --nav-link-hover-color: var(--fg-1),\n    --nav-link-hover-bg: var(--bg-1),\n    --nav-link-active-color: var(--fg-body),\n    --nav-link-active-bg: var(--bg-2),\n    --nav-link-disabled-color: var(--fg-4),\n    --nav-link-border-width: var(--border-width),\n    --nav-link-transition-property: \"color, background-color, border-color\",\n    --nav-link-transition-timing: .15s ease-in-out,\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing),\n  ),\n  $nav-tokens\n);\n// scss-docs-end nav-tokens\n\n$nav-tabs-tokens: () !default;\n\n// scss-docs-start nav-tabs-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tabs-tokens: defaults(\n  (\n    --nav-tabs-border-width: var(--border-width),\n    --nav-tabs-border-color: var(--border-color),\n    --nav-tabs-border-radius: var(--radius-5),\n    --nav-tabs-link-hover-border-color: var(--border-subtle),\n    --nav-tabs-link-active-color: var(--fg-color),\n    --nav-tabs-link-active-bg: var(--bg-body),\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body),\n  ),\n  $nav-tabs-tokens\n);\n// scss-docs-end nav-tabs-tokens\n\n$nav-pills-tokens: () !default;\n\n// scss-docs-start nav-pills-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-pills-tokens: defaults(\n  (\n    --nav-pills-bg: var(--bg-1),\n    --nav-pills-padding: .25rem,\n    --nav-pills-border-radius: var(--radius-9),\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n    --nav-pills-link-border-radius: var(--radius-9),\n  ),\n  $nav-pills-tokens\n);\n// scss-docs-end nav-pills-tokens\n\n$nav-underline-tokens: () !default;\n\n// scss-docs-start nav-underline-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-underline-tokens: defaults(\n  (\n    --nav-gap: 1rem,\n    --nav-link-active-bg: transparent,\n    --nav-underline-border-width: .125rem,\n    --nav-underline-link-active-color: var(--fg-color),\n  ),\n  $nav-underline-tokens\n);\n// scss-docs-end nav-underline-tokens\n\n// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n@layer components {\n  .nav {\n    @include tokens($nav-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n\n  .nav-item {\n    display: flex;\n  }\n\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    @include border-radius(var(--radius-5));\n    @include transition(var(--nav-link-transition));\n\n    &:hover,\n    &:focus {\n      color: var(--nav-link-hover-color);\n      background-color: var(--nav-link-hover-bg);\n    }\n\n    &:focus-visible {\n      --focus-ring-offset: 1px;\n      color: var(--nav-link-hover-color);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    &:active {\n      color: var(--nav-link-active-color);\n      background-color: var(--nav-link-active-bg);\n    }\n\n    // Disabled state lightens text\n    &.disabled,\n    &:disabled {\n      color: var(--nav-link-disabled-color);\n      pointer-events: none;\n      cursor: default;\n    }\n  }\n\n  //\n  // Tabs\n  //\n\n  .nav-tabs {\n    // scss-docs-start nav-tabs-css-vars\n    @include tokens($nav-tabs-tokens);\n    // scss-docs-end nav-tabs-css-vars\n\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n\n    .nav-link {\n      border: var(--nav-tabs-border-width) solid transparent;\n      border-bottom-color: var(--nav-tabs-border-color);\n      @include border-bottom-radius(0);\n\n      &:hover {\n        // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n        isolation: isolate;\n        border-color: var(--nav-tabs-link-hover-border-color);\n        border-bottom-color: var(--nav-tabs-border-color);\n      }\n    }\n\n    .nav-link.active,\n    .nav-item.show .nav-link {\n      color: var(--nav-tabs-link-active-color);\n      background-color: var(--nav-tabs-link-active-bg);\n      border-color: var(--nav-tabs-link-active-border-color);\n      border-bottom-color: var(--nav-tabs-link-active-bg);\n    }\n\n    .menu {\n      margin-top: calc(-1 * var(--nav-tabs-border-width));\n      @include border-top-radius(0);\n    }\n  }\n\n  //\n  // Pills\n  //\n\n  .nav-pills {\n    @include tokens($nav-pills-tokens);\n\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    @include border-radius(var(--nav-pills-border-radius));\n\n    .nav-link {\n      @include border-radius(var(--nav-pills-link-border-radius));\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      color: var(--nav-pills-link-active-color);\n      @include gradient-bg(var(--nav-pills-link-active-bg));\n    }\n  }\n\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n\n    .nav-item,\n    .nav-link {\n      width: 100%;\n    }\n  }\n\n  //\n  // Underline\n  //\n\n  .nav-underline {\n    // scss-docs-start nav-underline-css-vars\n    @include tokens($nav-underline-tokens);\n    // scss-docs-end nav-underline-css-vars\n\n    .nav-link {\n      padding-inline: 0;\n      border: 0;\n      border-block-end: var(--nav-underline-border-width) solid transparent;\n      @include border-radius(0);\n\n      &:hover,\n      &:focus {\n        border-block-end-color: currentcolor;\n      }\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      font-weight: $font-weight-bold;\n      color: var(--nav-underline-link-active-color);\n      border-block-end-color: currentcolor;\n    }\n  }\n\n  //\n  // Justified variants\n  //\n\n  .nav-fill {\n    > .nav-link,\n    .nav-item {\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n\n  .nav-justified {\n    > .nav-link,\n    .nav-item {\n      flex-grow: 1;\n      flex-basis: 0;\n      text-align: center;\n    }\n  }\n\n  .nav-fill,\n  .nav-justified {\n    .nav-item .nav-link {\n      width: 100%; // Make sure button will grow\n    }\n  }\n\n  // Tabbable tabs\n  //\n  // Hide tabbable panes to start, show them when `.active`\n\n  .tab-content {\n    > .tab-pane {\n      display: none;\n    }\n    > .active {\n      display: block;\n    }\n  }\n}\n","// Nav Overflow (Priority+ Pattern)\n//\n// A responsive navigation pattern that automatically moves items\n// to an overflow menu when space is limited.\n\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0; // Allow flex child to shrink below content width\n  }\n\n  // Pills use inline-flex by default; override so the nav fills its container\n  // and the ResizeObserver can detect width changes.\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n\n  // Inside a navbar the nav is a flex child that sizes to content by default;\n  // grow it so it fills remaining space and shrinks with the container.\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\n  }\n\n  // Container item for overflow\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n\n  // Hide items that have been moved to overflow\n  .nav-overflow [data-bs-nav-overflow=\"true\"] {\n    display: none;\n  }\n\n  // Preserve items that should never overflow\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// mdo-do: fix nav-link-height and navbar-brand-height, which we previously calculated with font-size, line-height, and block padding\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start navbar-breakpoints\n$navbar-breakpoints: $breakpoints !default;\n// scss-docs-end navbar-breakpoints\n\n$navbar-tokens: () !default;\n$navbar-dark-tokens: () !default;\n$navbar-nav-tokens: () !default;\n\n// scss-docs-start navbar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-tokens: defaults(\n  (\n    --navbar-padding-x: 0,\n    --navbar-padding-y: .5rem,\n    --navbar-color: var(--fg-2),\n    --navbar-hover-color: var(--fg-1),\n    --navbar-disabled-color: var(--fg-3),\n    --navbar-active-color: var(--fg-body),\n    --navbar-brand-padding-y: .75rem,\n    --navbar-brand-margin-end: 1rem,\n    --navbar-brand-font-size: var(--font-size-md),\n    --navbar-brand-font-weight: var(--font-weight-medium),\n    --navbar-brand-color: var(--fg-body),\n    --navbar-brand-hover-color: var(--fg-body),\n    --navbar-nav-link-padding-x: .75rem,\n    --navbar-toggler-width: 2rem,\n    --navbar-toggler-padding-y: .25rem,\n    --navbar-toggler-padding-x: .75rem,\n    --navbar-toggler-font-size: var(--font-size-lg),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    --navbar-toggler-border-radius: var(--radius-5),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n    --navbar-toggler-icon-size: 1.25rem,\n    --navbar-toggler-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/></svg>\"))},\n  ),\n  $navbar-tokens\n);\n// scss-docs-end navbar-tokens\n\n// scss-docs-start navbar-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-dark-tokens: defaults(\n  (\n    --navbar-color: color-mix(in oklch, var(--white) .55, transparent),\n    --navbar-hover-color: color-mix(in oklch, var(--white) .75, transparent),\n    --navbar-disabled-color: color-mix(in oklch, var(--white) .25, transparent),\n    --navbar-active-color: var(--white),\n    --navbar-brand-color: var(--white),\n    --navbar-brand-hover-color: var(--white),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) .1, transparent),\n  ),\n  $navbar-dark-tokens\n);\n// scss-docs-end navbar-dark-tokens\n\n// scss-docs-start navbar-nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-nav-tokens: defaults(\n  (\n    --nav-gap: .25rem,\n    --nav-link-gap: .5rem,\n    --nav-link-padding-x: .5rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--navbar-color),\n    --nav-link-border-width: var(--border-width),\n    //--nav-link-border-color: var(--border-color),\n    --nav-link-hover-color: var(--navbar-hover-color),\n    --nav-link-hover-bg: transparent,\n    --nav-link-active-color: var(--navbar-active-color),\n    --nav-link-active-bg: transparent,\n    --nav-link-disabled-color: var(--navbar-disabled-color),\n  ),\n  $navbar-nav-tokens\n);\n// scss-docs-end navbar-nav-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  // Base navbar\n  .navbar {\n    @include tokens($navbar-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    @include set-container();\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n    // @include gradient-bg(var(--navbar-bg, var(--bg-body)));\n\n    // Container properties for nested containers\n    %container-flex-properties {\n      display: flex;\n      flex-wrap: inherit;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .container,\n    > .container-fluid {\n      @extend %container-flex-properties;\n    }\n\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      > .#{breakpoint-prefix($breakpoint, $container-max-widths)}container {\n        @extend %container-flex-properties;\n      }\n    }\n  }\n\n  // Navbar brand\n  //\n  // Used for brand, project, or site names.\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n\n    &:hover,\n    &:focus {\n      color: var(--navbar-brand-hover-color);\n    }\n  }\n\n  // Navigation within navbars. Sets all nav-link CSS variables needed for\n  // proper styling.\n  //\n  // Relies on `.nav` base class.\n  .navbar-nav {\n    @include tokens($navbar-nav-tokens);\n\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n\n    .nav-link {\n      &.active,\n      &.show {\n        color: var(--navbar-active-color);\n        border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n      }\n    }\n  }\n\n  // Navbar text\n  //\n  // For adding text or inline elements to the navbar\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n\n    a,\n    a:hover,\n    a:focus {\n      color: var(--navbar-active-color);\n    }\n  }\n\n  // Button for toggling the navbar when in its collapsed state\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n\n  // Hamburger icon, rendered via CSS mask so it inherits the navbar color\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    @include mask-icon(var(--navbar-toggler-icon));\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of responsive `.navbar-expand` classes for configuring\n  // where your navbar collapses and expands. Uses container queries so the\n  // navbar responds to its own width, not the viewport width.\n\n  // Mixin for expanded state styles (applied to descendants)\n  @mixin navbar-expanded {\n    // Style the inner container since we can't style .navbar itself with container queries\n    > .container,\n    > .container-fluid,\n    %navbar-expand-container {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n\n    .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n\n    .navbar-toggler {\n      display: none !important; // stylelint-disable-line declaration-no-important\n    }\n\n    [class*=\"drawer\"] {\n      // stylelint-disable declaration-no-important\n      // Reset native <dialog> UA styles and below-breakpoint drawer styles.\n      // Must use !important to override both UA <dialog> defaults and the\n      // responsive drawer styles from media-breakpoint-down().\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      @include box-shadow(none);\n      @include transition(none);\n      // stylelint-enable declaration-no-important\n\n      .drawer-header {\n        display: none !important; // stylelint-disable-line declaration-no-important\n      }\n\n      .drawer-body {\n        display: flex;\n        flex-grow: 1;\n        flex-direction: row;\n        align-items: center;\n        padding: 0;\n        overflow-y: visible;\n      }\n    }\n  }\n\n  // Always expanded (no responsive behavior)\n  .navbar-expand {\n    @include navbar-expanded();\n\n    // Also set on navbar itself for non-responsive case\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n\n  // Responsive navbar expand classes using container queries\n  @include loop-breakpoints-down($navbar-breakpoints) using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}navbar-expand {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  // Prevent drawer flash on breakpoint crossing.\n  // When the navbar crosses from expanded (inline) to collapsed (drawer),\n  // the drawer transitions from visibility:visible to visibility:hidden.\n  // Without this override, the slide transition plays — briefly showing the\n  // panel sliding away. Disabling transitions when not [open] ensures only\n  // intentional show/hide actions animate.\n  // stylelint-disable-next-line no-duplicate-selectors\n  .navbar {\n    [class*=\"drawer\"]:not([open], .hiding) {\n      @include transition(none !important);\n    }\n  }\n\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n\n    &::before {\n      position: absolute;\n      inset: 0;\n      z-index: -1;\n      content: \"\";\n      background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n      background-image: none;\n      backdrop-filter: blur(5px) saturate(180%);\n    }\n  }\n\n  .navbar[data-bs-theme=\"dark\"] {\n    @include tokens($navbar-dark-tokens);\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$drawer-tokens: () !default;\n\n// scss-docs-start drawer-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-tokens: defaults(\n  (\n    --drawer-inset: var(--spacer),\n    --drawer-zindex: #{$zindex-drawer},\n    --drawer-width: 400px,\n    --drawer-height: 30vh,\n    --drawer-padding-x: var(--spacer),\n    --drawer-padding-y: var(--spacer),\n    --drawer-color: var(--fg-body),\n    --drawer-bg: var(--bg-body),\n    --drawer-border-width: var(--border-width),\n    --drawer-border-color: var(--border-color-translucent),\n    --drawer-border-radius: var(--radius-7),\n    --drawer-box-shadow: var(--box-shadow-lg),\n    --drawer-transition-duration: .3s,\n    --drawer-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --drawer-title-line-height: 1.5,\n    --drawer-backdrop-bg: color-mix(in oklch, var(--bg-body) 25%, transparent),\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-tokens\n);\n// scss-docs-end drawer-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$drawer-backdrop-tokens: () !default;\n\n// scss-docs-start drawer-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-backdrop-tokens: defaults(\n  (\n    --drawer-backdrop-bg: var(--bg-body),\n    --drawer-backdrop-opacity: 25%,\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-backdrop-tokens\n);\n// scss-docs-end drawer-backdrop-tokens\n\n%drawer-css-vars {\n  @include tokens($drawer-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all drawer responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @extend %drawer-css-vars;\n    }\n  }\n\n  // Responsive drawer styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @include media-breakpoint-down($next) {\n        // Reset native <dialog> UA defaults (fit-content sizing, inset, margins)\n        // and override display:none so visibility controls the hidden state.\n        position: fixed;\n        inset: auto;\n        z-index: var(--drawer-zindex);\n        display: flex;\n        flex-direction: column;\n        width: auto;\n        max-width: calc(100% - var(--drawer-inset) * 2);\n        height: auto;\n        max-height: calc(100% - var(--drawer-inset) * 2);\n        padding: 0;\n        margin: 0;\n        color: var(--drawer-color);\n        visibility: hidden;\n        background-color: var(--drawer-bg);\n        background-clip: padding-box;\n        border: var(--drawer-border-width) solid var(--drawer-border-color);\n        outline: 0;\n\n        @include border-radius(var(--drawer-border-radius));\n        @include box-shadow(var(--drawer-box-shadow));\n\n        // Placement positioning and sizing — always applied regardless of animation mode.\n        &:where(.drawer-start) {\n          inset-block: var(--drawer-inset);\n          inset-inline-start: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-end) {\n          inset-block: var(--drawer-inset);\n          inset-inline-end: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-top) {\n          inset: var(--drawer-inset) var(--drawer-inset) auto;\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-bottom) {\n          inset: auto var(--drawer-inset) var(--drawer-inset);\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-fullscreen) {\n          inset: var(--drawer-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n        }\n\n        // Animated variant (default) — transitions + off-screen transforms.\n        // Adding .drawer-instant skips all animations.\n        &:not(.drawer-instant) {\n          @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration));\n\n          // Off-screen transforms per placement\n          &:where(.drawer-start) {\n            transform: translateX(calc(-100% - var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(100% + var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-end) {\n            transform: translateX(calc(100% + var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(-100% - var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-top) {\n            transform: translateY(calc(-100% - var(--drawer-inset)));\n          }\n\n          &:where(.drawer-bottom) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          &:where(.drawer-fullscreen) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          // Open state: slide in with transition\n          &[open] {\n            visibility: visible;\n            @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s);\n            transform: none;\n          }\n        }\n\n        // Open state base (always applies, regardless of animation mode)\n        &[open] {\n          visibility: visible;\n          transform: none;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive drawer)\n      // Above breakpoint - show content inline (for responsive drawer).\n      // Must fully reset all drawer styles so the element behaves as an\n      // inline flex container within its parent (e.g., a navbar).\n      @if not ($prefix == \"\") {\n        @include media-breakpoint-up($next) {\n          // stylelint-disable declaration-no-important\n          --drawer-height: auto;\n          --drawer-border-width: 0;\n          // Reset native <dialog> UA styles\n          position: static !important;\n          inset: auto;\n          z-index: auto;\n          display: flex !important;\n          flex-grow: 1;\n          width: auto !important;\n          max-width: none;\n          height: auto !important;\n          max-height: none;\n          padding: 0;\n          margin: 0;\n          visibility: visible !important;\n          background-color: transparent !important;\n          border: 0 !important;\n          transform: none !important;\n          @include transition(none !important);\n          // stylelint-enable declaration-no-important\n\n          .drawer-header {\n            display: none;\n          }\n\n          .drawer-body {\n            display: flex;\n            flex-grow: 0;\n            flex-direction: row;\n            width: 100%;\n            padding: 0;\n            overflow-y: visible;\n            // stylelint-disable-next-line declaration-no-important\n            background-color: transparent !important;\n          }\n          @include border-radius(0);\n          @include box-shadow(none);\n        }\n      }\n    }\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer::backdrop {\n      background-color: var(--drawer-backdrop-bg);\n      backdrop-filter: blur(var(--drawer-backdrop-blur));\n      @include backdrop-transitions(var(--drawer-transition-duration), var(--drawer-transition-timing));\n    }\n  }\n\n  // Backdrop entry animation — ::backdrop can safely use @starting-style\n  // since it only exists when the dialog is in the top layer (no responsive issue).\n  @starting-style {\n    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n      .#{$prefix}drawer::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n  }\n\n  // Static backdrop transition (\"bounce\")\n  .drawer-static {\n    transform: scale(1.02);\n  }\n\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  // Sheet variant: flush-to-edge panel with no inset, border-radius, or shadow.\n  // Overrides tokens so placement transforms (which use calc() with --drawer-inset)\n  // automatically position the drawer at the viewport edge.\n  .drawer-sheet {\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100vw;\n    margin-inline: auto;\n    margin-bottom: calc(-1 * var(--drawer-border-width));\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n\n    @include media-breakpoint-up(lg) {\n      max-width: var(--drawer-sheet-width, 760px);\n    }\n  }\n\n  // Header with close button\n  .drawer-header {\n    @include dialog-header(var(--drawer-padding-y) var(--drawer-padding-x));\n\n    .btn-close {\n      margin-block: calc(-.5 * var(--drawer-padding-y));\n      margin-inline-start: auto;\n    }\n  }\n\n  // Title\n  .drawer-title {\n    @include dialog-title(var(--drawer-title-line-height));\n  }\n\n  // Scrollable body\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    @include dialog-body(var(--drawer-padding-y) var(--drawer-padding-x));\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .drawer-footer {\n    @include dialog-footer(var(--drawer-padding-y) var(--drawer-padding-x), .5rem, var(--drawer-border-width), var(--drawer-border-color));\n  }\n\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/lists\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// mdo-do: Update pagination to support variant themes\n\n// stylelint-disable custom-property-no-missing-var-function\n$pagination-tokens: () !default;\n\n// scss-docs-start pagination-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-tokens: defaults(\n  (\n    --pagination-min-height: var(--btn-input-min-height),\n    --pagination-padding-x: var(--btn-input-padding-x),\n    --pagination-padding-y: var(--btn-input-padding-y),\n    --pagination-font-size: var(--btn-input-font-size),\n    --pagination-color: var(--link-color),\n    --pagination-bg: var(--bg-body),\n    --pagination-border-width: var(--border-width),\n    --pagination-border-color: var(--border-color),\n    --pagination-border-radius: var(--btn-input-border-radius),\n    --pagination-hover-color: var(--link-hover-color),\n    --pagination-hover-bg: var(--bg-1),\n    --pagination-hover-border-color: var(--border-color),\n    --pagination-focus-color: var(--link-hover-color),\n    --pagination-focus-bg: var(--bg-2),\n    --pagination-active-color: var(--primary-contrast),\n    --pagination-active-bg: var(--primary-bg),\n    --pagination-active-border-color: var(--primary-bg),\n    --pagination-disabled-color: var(--fg-3),\n    --pagination-disabled-bg: var(--bg-2),\n    --pagination-disabled-border-color: var(--border-color),\n  ),\n  $pagination-tokens\n);\n// scss-docs-end pagination-tokens\n\n// scss-docs-start pagination-sizes\n$pagination-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $pagination-sizes\n);\n// scss-docs-end pagination-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .pagination {\n    @include tokens($pagination-tokens);\n\n    display: flex;\n    @include list-unstyled();\n  }\n\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    @include transition(color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--pagination-hover-color);\n      background-color: var(--pagination-hover-bg);\n      border-color: var(--pagination-hover-border-color);\n    }\n\n    &:focus-visible {\n      z-index: 3;\n      color: var(--pagination-focus-color);\n      background-color: var(--pagination-focus-bg);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    .active > & {\n      z-index: 3;\n      color: var(--pagination-active-color);\n      @include gradient-bg(var(--pagination-active-bg));\n      border-color: var(--pagination-active-border-color);\n    }\n\n    &.disabled,\n    .disabled > & {\n      color: var(--pagination-disabled-color);\n      pointer-events: none;\n      background-color: var(--pagination-disabled-bg);\n      border-color: var(--pagination-disabled-border-color);\n    }\n  }\n\n  .page-item {\n    &:not(:first-child) .page-link {\n      margin-inline-start: calc(-1 * var(--pagination-border-width));\n    }\n\n    &:first-child {\n      .page-link {\n        @include border-start-radius(var(--pagination-border-radius));\n      }\n    }\n\n    &:last-child {\n      .page-link {\n        @include border-end-radius(var(--pagination-border-radius));\n      }\n    }\n  }\n\n  //\n  // Sizing\n  //\n\n  // scss-docs-start pagination-sizes-loop\n  @each $size, $_ in $pagination-sizes {\n    .pagination-#{$size} {\n      --pagination-min-height: var(--bs-btn-input-#{$size}-min-height);\n      --pagination-padding-y: var(--btn-input-#{$size}-padding-y);\n      --pagination-padding-x: var(--btn-input-#{$size}-padding-x);\n      --pagination-font-size: var(--btn-input-#{$size}-font-size);\n      --pagination-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end pagination-sizes-loop\n}\n","@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n$placeholder-tokens: () !default;\n\n// scss-docs-start placeholder-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$placeholder-tokens: defaults(\n  (\n    --placeholder-opacity-max: .5,\n    --placeholder-opacity-min: .2,\n  ),\n  $placeholder-tokens\n);\n// scss-docs-end placeholder-tokens\n\n@layer components {\n  .placeholder {\n    @include tokens($placeholder-tokens);\n\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n\n    &.btn::before {\n      display: inline-block;\n      content: \"\";\n    }\n  }\n\n  // Sizing\n  .placeholder-xs {\n    min-height: .6em;\n  }\n\n  .placeholder-sm {\n    min-height: .8em;\n  }\n\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n\n  // Animation\n  .placeholder-glow {\n    .placeholder {\n      animation: placeholder-glow 2s ease-in-out infinite;\n    }\n  }\n\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, $black 55%, rgb(0 0 0 / calc(1 - var(--placeholder-opacity-min))) 75%, $black 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$popover-tokens: () !default;\n\n// scss-docs-start popover-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$popover-tokens: defaults(\n  (\n    --popover-zindex: #{$zindex-popover},\n    --popover-max-width: 280px,\n    --popover-font-size: var(--font-size-sm),\n    --popover-bg: var(--bg-body),\n    --popover-border-width: var(--border-width),\n    --popover-border-color: var(--border-color-translucent),\n    --popover-border-radius: var(--radius-7),\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: var(--spacer),\n    --popover-header-padding-y: var(--spacer-3),\n    --popover-header-font-size: var(--font-size-sm),\n    --popover-header-color: #{$headings-color},\n    --popover-header-bg: var(--bg-1),\n    --popover-body-padding-x: var(--spacer),\n    --popover-body-padding-y: var(--spacer-3),\n    --popover-body-color: var(--fg-body),\n    --popover-arrow-width: 1rem,\n    --popover-arrow-height: .5rem,\n    --popover-arrow-border: var(--popover-border-color),\n  ),\n  $popover-tokens\n);\n// scss-docs-end popover-tokens\n\n@layer components {\n  .popover {\n    // scss-docs-start popover-css-vars\n    @include tokens($popover-tokens);\n    // scss-docs-end popover-css-vars\n\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--popover-font-size);\n    // Allow breaking very long words so they don't overflow the popover's bounds\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-radius(var(--popover-border-radius));\n    @include box-shadow(var(--popover-box-shadow));\n\n    .popover-arrow {\n      display: block;\n      width: var(--popover-arrow-width);\n      height: var(--popover-arrow-height);\n\n      &::before,\n      &::after {\n        position: absolute;\n        display: block;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n        border-width: 0;\n      }\n    }\n  }\n\n  .bs-popover-top {\n    > .popover-arrow {\n      bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        bottom: 0;\n        border-block-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        bottom: var(--popover-border-width);\n        border-block-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-end {\n    > .popover-arrow {\n      left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        left: 0;\n        border-inline-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        left: var(--popover-border-width);\n        border-inline-end-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-bottom {\n    > .popover-arrow {\n      top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        top: 0;\n        border-block-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        top: var(--popover-border-width);\n        border-block-end-color: var(--popover-bg);\n      }\n\n      // When the popover has a header, the bottom arrow points into the header,\n      // so its fill should match the header background, not the body background.\n      &:has(+ .popover-header)::after {\n        border-block-end-color: var(--popover-header-bg);\n      }\n    }\n\n    // This will remove the popover-header's border just below the arrow\n    .popover-header::before {\n      position: absolute;\n      top: 0;\n      left: 50%;\n      display: block;\n      width: var(--popover-arrow-width);\n      margin-inline-start: calc(-.5 * var(--popover-arrow-width));\n      content: \"\";\n      border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n    }\n  }\n\n  .bs-popover-start {\n    > .popover-arrow {\n      right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        right: 0;\n        border-inline-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        right: var(--popover-border-width);\n        border-inline-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-popover-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-popover-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-popover-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-popover-start;\n    }\n  }\n\n  // Offset the popover to account for the popover arrow\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0; // Reset the default from Reboot\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-top-radius(var(--popover-inner-border-radius));\n\n    &:empty {\n      display: none;\n    }\n  }\n\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n","@mixin reset-text {\n  font-family: var(--body-font-family);\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: var(--body-font-weight);\n  line-height: var(--body-line-height);\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  white-space: normal;\n  word-spacing: normal;\n  line-break: auto;\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n\n$progress-tokens: () !default;\n\n// scss-docs-start progress-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$progress-tokens: defaults(\n  (\n    --progress-height: 1rem,\n    --progress-font-size: var(--font-size-sm),\n    --progress-bg: var(--bg-2),\n    --progress-border-radius: var(--radius-5),\n    --progress-box-shadow: var(--box-shadow-inset),\n    --progress-bar-color: var(--white),\n    --progress-bar-bg: var(--primary-bg),\n    --progress-bar-transition: width .6s ease,\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite,\n  ),\n  $progress-tokens\n);\n// scss-docs-end progress-tokens\n\n// Disable animation if transitions are disabled\n\n@layer components {\n  // scss-docs-start progress-keyframes\n  @if $enable-transitions {\n    @keyframes progress-bar-stripes {\n      0% { background-position-x: var(--progress-height); }\n    }\n  }\n  // scss-docs-end progress-keyframes\n\n  .progress,\n  .progress-stacked {\n    @include tokens($progress-tokens);\n\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    @include border-radius(var(--progress-border-radius));\n    @include box-shadow(var(--progress-box-shadow));\n  }\n\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    @include transition(var(--progress-bar-transition));\n  }\n\n  .progress-bar-striped {\n    @include gradient-striped();\n    background-size: var(--progress-height) var(--progress-height);\n  }\n\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n\n  @if $enable-transitions {\n    .progress-bar-animated {\n      animation: var(--progress-bar-animation);\n\n      @if $enable-reduced-motion {\n        @media (prefers-reduced-motion: reduce) {\n          animation: none;\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$spinner-border-tokens: () !default;\n\n// scss-docs-start spinner-border-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-border-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-border-width: .25em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-border,\n  ),\n  $spinner-border-tokens\n);\n// scss-docs-end spinner-border-tokens\n\n$spinner-grow-tokens: () !default;\n\n// scss-docs-start spinner-grow-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-grow-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-grow,\n  ),\n  $spinner-grow-tokens\n);\n// scss-docs-end spinner-grow-tokens\n\n// stylelint-enable custom-property-no-missing-var-function\n\n//\n// Rotating border\n//\n\n@layer components {\n  // mdo-do: Refactor this to assume flex parent and remove `vertical-align`\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n\n  // scss-docs-start spinner-border-keyframes\n  @keyframes spinner-border {\n    to { transform: rotate(360deg); }\n  }\n  // scss-docs-end spinner-border-keyframes\n\n  .spinner-border {\n    @include tokens($spinner-border-tokens);\n\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n\n  .spinner-border-sm {\n    // scss-docs-start spinner-border-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n    // scss-docs-end spinner-border-sm-css-vars\n  }\n\n  //\n  // Growing circle\n  //\n\n  // scss-docs-start spinner-grow-keyframes\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  // scss-docs-end spinner-grow-keyframes\n\n  .spinner-grow {\n    @include tokens($spinner-grow-tokens);\n\n    background-color: currentcolor;\n    opacity: 0;\n  }\n\n  .spinner-grow-sm {\n    // scss-docs-start spinner-grow-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    // scss-docs-end spinner-grow-sm-css-vars\n  }\n\n  @if $enable-reduced-motion {\n    @media (prefers-reduced-motion: reduce) {\n      .spinner-border,\n      .spinner-grow {\n        --spinner-animation-speed: 1.5s;\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$stepper-tokens: () !default;\n\n// scss-docs-start stepper-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$stepper-tokens: defaults(\n  (\n    --stepper-size: 2rem,\n    --stepper-gap: 1rem,\n    --stepper-font-size: var(--font-size-sm),\n    --stepper-text-gap: .5rem,\n    --stepper-track-size: .125rem,\n    --stepper-bg: var(--bg-2),\n    --stepper-active-color: var(--primary-contrast),\n    --stepper-active-bg: var(--primary-bg),\n  ),\n  $stepper-tokens\n);\n// scss-docs-end stepper-tokens\n\n// scss-docs-start stepper-horizontal-mixin\n@mixin stepper-horizontal() {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n\n  .stepper-item {\n    grid-template-rows: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n\n    &::after {\n      inset-block-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 100%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n@layer components {\n  .stepper {\n    @include tokens($stepper-tokens);\n\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\n  }\n\n  .stepper-item {\n    position: relative;\n    display: grid;\n    grid-template-rows: auto;\n    grid-template-columns: var(--stepper-size) auto;\n    gap: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, center);\n    text-decoration: none;\n\n    // The counter\n    &::before {\n      position: relative;\n      z-index: 1;\n      display: flex;\n      flex-shrink: 0;\n      align-items: center;\n      justify-content: center;\n      width: var(--stepper-size);\n      height: var(--stepper-size);\n      padding: .5rem;\n      font-size: var(--stepper-font-size);\n      font-weight: 600;\n      line-height: 1;\n      text-align: center;\n      content: counter(stepper);\n      counter-increment: stepper;\n      background-color: var(--stepper-bg);\n      @include border-radius(50%);\n    }\n\n    // Connecting lines\n    &::after {\n      position: absolute;\n      inset-block-start: 50%;\n      inset-block-end: 100%;\n      inset-inline-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      width: var(--stepper-track-size);\n      height: calc(100% + var(--stepper-gap));\n      content: \"\";\n      background-color: var(--stepper-bg);\n    }\n\n    // Avoid sibling selector for easier CSS overrides\n    &:last-child::after {\n      display: none;\n    }\n\n    &.active {\n      &::before,\n      &::after {\n        color: var(--theme-contrast, var(--stepper-active-color));\n        background-color: var(--theme-bg, var(--stepper-active-bg));\n      }\n    }\n  }\n\n  // Targets the last .active element from a sequence of active elements\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n\n  .stepper-horizontal {\n    @include stepper-horizontal();\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}stepper-horizontal {\n        @include container-breakpoint-up($next) {\n          @include stepper-horizontal();\n        }\n      }\n    }\n  }\n\n  // scss-docs-start stepper-overflow\n  .stepper-overflow {\n    container-type: inline-size;\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n\n    > .stepper {\n      width: max-content;\n      min-width: 100%;\n    }\n  }\n  // scss-docs-end stepper-overflow\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$toast-tokens: () !default;\n\n// scss-docs-start toast-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$toast-tokens: defaults(\n  (\n    --toast-zindex: #{$zindex-toast},\n    --toast-padding-x: 1rem,\n    --toast-padding-y: .75rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: var(--font-size-sm),\n    --toast-color: null,\n    --toast-bg: var(--bg-body),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: null,\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: var(--bg-1),\n    --toast-header-border-color: var(--border-color-translucent),\n  ),\n  $toast-tokens\n);\n// stylelint-enable custom-property-no-missing-var-function\n// scss-docs-end toast-tokens\n\n@layer components {\n  .toast {\n    @include tokens($toast-tokens);\n\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius, var(--radius-7)));\n\n    &.showing {\n      opacity: 0;\n    }\n\n    &:not(.show) {\n      display: none;\n    }\n  }\n\n  .toast-container {\n    --toast-zindex: #{$zindex-toast};\n\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n\n    > :not(:last-child) {\n      margin-bottom: var(--toast-spacing);\n    }\n  }\n\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    // background-clip: padding-box;\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n\n    .btn-close {\n      margin-inline-start: calc(.5 * var(--toast-padding-x));\n      margin-inline-end: calc(-.25 * var(--toast-padding-x));\n      color: inherit;\n    }\n  }\n\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$tooltip-tokens: () !default;\n\n// scss-docs-start tooltip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$tooltip-tokens: defaults(\n  (\n    --tooltip-zindex: #{$zindex-tooltip},\n    --tooltip-max-width: 200px,\n    --tooltip-padding-x: var(--spacer-3),\n    --tooltip-padding-y: calc(var(--spacer) * .375),\n    --tooltip-font-size: var(--font-size-sm),\n    --tooltip-color: var(--bg-body),\n    --tooltip-bg: var(--fg-body),\n    --tooltip-border-radius: var(--radius-5),\n    --tooltip-opacity: .95,\n    --tooltip-arrow-width: .8rem,\n    --tooltip-arrow-height: .4rem,\n  ),\n  $tooltip-tokens\n);\n// scss-docs-end tooltip-tokens\n\n@layer components {\n  .tooltip {\n    @include tokens($tooltip-tokens);\n\n    z-index: var(--tooltip-zindex);\n    display: block;\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--tooltip-font-size);\n    // Allow breaking very long words so they don't overflow the tooltip's bounds\n    word-wrap: break-word;\n    opacity: 0;\n\n    &.show { opacity: var(--tooltip-opacity); }\n\n    .tooltip-arrow {\n      display: block;\n      width: var(--tooltip-arrow-width);\n      height: var(--tooltip-arrow-height);\n\n      &::before {\n        position: absolute;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n      }\n    }\n  }\n\n  .bs-tooltip-top .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      top: -1px;\n      border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-block-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-end .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      right: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-inline-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-bottom .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-block-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-start .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      left: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-inline-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-tooltip-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-tooltip-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-tooltip-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-tooltip-start;\n    }\n  }\n\n  // Wrapper for the tooltip content\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    @include border-radius(var(--tooltip-border-radius));\n  }\n}\n","@use \"config\" as *;\n@use \"mixins/transition\" as *;\n\n.fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","@layer helpers {\n  .focus-ring:focus-visible {\n    // outline: var(--focus-ring);\n    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}sticky-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .#{$prefix}sticky-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}vstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .#{$prefix}hstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Themes map sub-keys\n//\n// Return var() references to root tokens instead of raw values.\n// Ex: theme-color-refs(\"bg\") => (primary: var(--primary-bg), accent: var(--accent-bg), ...)\n@function theme-color-refs($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: var(--#{$color-name}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Theme token to root tokens\n//\n// Returns the global :root token reference for a given a given token map, prefix, and key.\n// Ex: theme-token-refs($theme-bgs, \"bg\") => (body: var(--bg-body), 1: var(--bg-1), ...)\n// Skips `inherit` since it's a CSS-wide keyword that can't be stored in a custom property.\n@function theme-token-refs($map, $prefix) {\n  $result: ();\n\n  @each $key, $value in $map {\n    @if $value != inherit {\n      $result: map.merge($result, ($key: var(--#{$prefix}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"fg\": light-dark(var(--blue-600), var(--blue-400)),\n    \"fg-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"fg\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"fg-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"fg\": light-dark(var(--green-600), var(--green-400)),\n    \"fg-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"fg\": light-dark(var(--red-600), var(--red-400)),\n    \"fg-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"fg\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"fg-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"fg\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"fg-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"fg\": light-dark(var(--gray-900), var(--gray-200)),\n    \"fg-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"fg\": light-dark(var(--gray-600), var(--gray-400)),\n    \"fg-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"fg\": var(--fg-body),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"bg\": var(--bg-body),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus, :focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus, :focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../config\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  @include generate-utilities-loop($utilities, $breakpoints);\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../layout/breakpoints\" as bp;\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can target children via `child-selector`, wrapped in :where() for zero specificity\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to emit CSS custom properties from a utility's `variables` key.\n// When variables is a map, the provided static values are used on each class.\n// When variables is a list or single identifier, each variable receives the current utility value.\n@mixin generate-variables($utility, $value) {\n  @if map.has-key($utility, variables) {\n    $variables: map.get($utility, variables);\n    @if meta.type-of($variables) == \"map\" {\n      @each $var-key, $var-value in $variables {\n        --#{$var-key}: #{$var-value};\n      }\n    } @else {\n      // Treat as a list (or single identifier) — each variable gets the utility value\n      @each $var-name in $variables {\n        --#{$var-name}: #{$value};\n      }\n    }\n  }\n}\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $property-map, $properties, $value) {\n  @if $property-map != null {\n    // Property-Value Mapping approach\n    @each $property, $default-value in $property-map {\n      // If value is a map, check if it has a key for this property.\n      // Otherwise, use default-value (or $value if default-value is null).\n      $actual-value: $default-value;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actual-value: map.get($value, $property);\n      } @else if $default-value == null {\n        $actual-value: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actual-value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actual-value;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $prefix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, dark, important, state, variables, child-selector, enabled;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Validate boolean keys\n  @each $bool-key in (responsive, print, dark, important, enabled) {\n    @if map.has-key($utility, $bool-key) {\n      $val: map.get($utility, $bool-key);\n      @if $val != true and $val != false {\n        @error \"Utility key `#{$bool-key}` should be a boolean (true or false), got: #{$val}\";\n      }\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selector-type: \"class\";\n  @if map.has-key($utility, selector) {\n    $selector-type: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selector-type) {\n      @error \"Invalid `selector` value `#{$selector-type}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in an attribute selector (e.g., [class^=\"class\"])\n  $selector-class: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selector-type != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selector-type}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $property-map: null;\n    $custom-class: \"\";\n\n    // Check if property is a map (Property-Value Mapping approach)\n    @if meta.type-of($properties) == \"map\" {\n      $property-map: $properties;\n      @if map.has-key($utility, class) {\n        $custom-class: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $custom-class: map.get($utility, class);\n      } @else {\n        $custom-class: list.nth($properties, 1);\n      }\n      @if $custom-class == null {\n        $custom-class: \"\";\n      }\n    }\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // Don't add a dash before value key if value key is null (e.g. with shadow class)\n    $custom-class-modifier: \"\";\n    @if $key {\n      @if $custom-class == \"\" {\n        $custom-class-modifier: $key;\n      } @else {\n        $custom-class-modifier: \"-\" + $key;\n      }\n    }\n\n    // Build the class name fragment (without prefix or dot) for reuse in state variants\n    $class-name: \"\";\n    @if $selector-type == \"class\" {\n      @if $custom-class != \"\" {\n        $class-name: $custom-class + $custom-class-modifier;\n      } @else if $selector-class != null and $selector-class != \"\" {\n        $class-name: $selector-class + $custom-class-modifier;\n      } @else {\n        $class-name: $custom-class-modifier;\n      }\n    }\n\n    $selector: \"\";\n    @if $selector-type == \"class\" {\n      $selector: \".#{$prefix + $class-name}\";\n    } @else if $selector-type == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selector-class}\\\"]\";\n    } @else if $selector-type == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selector-class}\\\"]\";\n    }\n\n    // Apply child-selector wrapping if present (wraps in :where() for zero specificity)\n    $child-sel: null;\n    @if map.has-key($utility, child-selector) {\n      $child-sel: map.get($utility, child-selector);\n    }\n\n    $final-selector: $selector;\n    @if $child-sel {\n      $final-selector: \":where(#{$selector} #{$child-sel})\";\n    }\n\n    #{$final-selector} {\n      @include generate-variables($utility, $value);\n      @include generate-properties($utility, $property-map, $properties, $value);\n    }\n\n    // Generate state variants (e.g., hover:link-10 instead of link-10-hover)\n    @if $state != () {\n      @each $state-variant in $state {\n        $state-selector: \".#{$prefix}#{$state-variant}\\\\:#{$class-name}:#{$state-variant}\";\n        @if $child-sel {\n          $state-selector: \":where(#{$state-selector} #{$child-sel})\";\n        }\n\n        #{$state-selector} {\n          @include generate-variables($utility, $value);\n          @include generate-properties($utility, $property-map, $properties, $value);\n        }\n      }\n    }\n  }\n}\n\n// Generates all utility classes: base, responsive, print, and dark.\n// Extracted so that tests can call this mixin directly with a custom $utilities map\n// rather than having to mirror the loop conditions inline.\n@mixin generate-utilities-loop($utilities, $breakpoints) {\n  // Base + responsive (one pass per breakpoint)\n  @each $breakpoint in map.keys($breakpoints) {\n    @include bp.media-breakpoint-up($breakpoint, $breakpoints) {\n      $prefix: bp.breakpoint-prefix($breakpoint, $breakpoints);\n\n      @each $key, $utility in $utilities {\n        @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and (map.get($utility, responsive) or $prefix == \"\") {\n          @include generate-utility($utility, $prefix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, print) == true {\n        @include generate-utility($utility, \"print\\\\:\");\n      }\n    }\n  }\n\n  // Dark utilities\n  @media (prefers-color-scheme: dark) {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, dark) == true {\n        @include generate-utility($utility, \"dark\\\\:\");\n      }\n    }\n  }\n}\n"],"names":[]}
\ No newline at end of file
+{"version":3,"sourceRoot":null,"mappings":"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,yD2CwII,wDhDnBN,qBgD2BI,qDhDxCJ,sBgD3DA,sZ3C7CE,0D2C6CF,6BhD2DA,sBgD0EM,wCAIA,+IhDjEN,qBgDxEA,+gBA0BI,2IAMA,uIAMA,uHAKA,0HAKA,yHAUA,mL3CvGF,yD2CuGE,kDhDcJ,qBgDVM,iHAGE,mLAQA,8HAKF,+GAIA,4KASA,sL3CxIJ,yD2CwII,wDhDnBN,qBgD2BI,qDhDxCJ,sBgD3DA,sZ3C7CE,0D2C6CF,6BhD2DA,sBgD0EM,wCAIA,+IhDjEN,sBgDxEA,+gBA0BI,2IAMA,uIAMA,uHAKA,0HAKA,yHAUA,mL3CvGF,0D2CuGE,kDhDcJ,sBgDVM,iHAGE,mLAQA,8HAKF,+GAIA,4KASA,sL3CxIJ,0D2CwII,wDhDnBN,sBgD2BI,qDhDxCJ,uBgD3DA,sZ3C7CE,2D2C6CF,6BhD2DA,uBgD0EM,wCAIA,+IhDjEN,sBgDxEA,+gBA0BI,2IAMA,uIAMA,uHAKA,0HAKA,yHAUA,mL3CvGF,0D2CuGE,kDhDcJ,sBgDVM,iHAGE,mLAQA,8HAKF,+GAIA,4KASA,sL3CxIJ,0D2CwII,wDhDnBN,sBgD2BI,qDhDxCJ,uBgD3DA,sZ3C7CE,2D2C6CF,6BhD2DA,uBgD0EM,wCAIA,+IhDjEN,sBgDxEA,mhBA0BI,+IAMA,2IAMA,2HAKA,8HAKA,6HAUA,uL3CvGF,0D2CuGE,sDhDcJ,sBgDVM,qHAGE,2LAQA,kIAKF,mHAIA,oLASA,0L3CxIJ,0D2CwII,4DhDnBN,sBgD2BI,yDhDxCJ,uBgD3DA,0Z3C7CE,2D2C6CF,iChD2DA,uBgD0EM,4CAIA,mJAzIN,2gBA0BI,uIAMA,mIAMA,mHAKA,sHAKA,qHAUA,8K3CvGF,uC2CuGE,8CAIE,6GAGE,2KAQA,0HAKF,2GAIA,oKASA,kK3CxIJ,uC2CwII,oDAAA,kDAQF,gDAwDJ,gb3CxME,uC2CwMF,uCAAA,gb3CxME,uC2CwMF,uCAAA,gb3CxME,uC2CwMF,uCAAA,gb3CxME,uC2CwMF,uCAAA,ob3CxME,uC2CwMF,2CAAA,4a3CxME,uC2CwMF,mCASF,gBAEI,mLAQJ,qCAIA,uIAQA,8KhD/HE,uBgD+HF,4DAgBA,2HAGE,uGAO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","sources":["bootstrap.css","../../scss/_banner.scss","../../scss/_colors.scss","../../scss/mixins/_tokens.scss","../../scss/_root.scss","../../scss/content/_reboot.scss","../../scss/_config.scss","../../scss/mixins/_border-radius.scss","../../scss/content/_type.scss","../../scss/mixins/_lists.scss","../../scss/content/_tables.scss","../../scss/layout/_breakpoints.scss","../../scss/content/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_box-shadow.scss","../../scss/content/_prose.scss","../../scss/mixins/_transition.scss","../../scss/layout/_containers.scss","../../scss/layout/_grid.scss","../../scss/mixins/_grid.scss","../../scss/forms/_labels.scss","../../scss/forms/_form-text.scss","../../scss/forms/_form-control.scss","../../scss/mixins/_focus-ring.scss","../../scss/forms/_check.scss","../../scss/mixins/_mask-icon.scss","../../scss/forms/_radio.scss","../../scss/forms/_switch.scss","../../scss/forms/_form-range.scss","../../scss/mixins/_gradients.scss","../../scss/forms/_floating-labels.scss","../../scss/forms/_input-group.scss","../../scss/forms/_strength.scss","../../scss/forms/_otp-input.scss","../../scss/forms/_form-adorn.scss","../../scss/forms/_chip-input.scss","../../scss/forms/_combobox.scss","../../scss/forms/_form-field.scss","../../scss/forms/_validation.scss","../../scss/mixins/_form-validation.scss","../../scss/buttons/_button.scss","../../scss/buttons/_button-group.scss","../../scss/buttons/_close.scss","../../scss/_accordion.scss","../../scss/_alert.scss","../../scss/_avatar.scss","../../scss/_badge.scss","../../scss/_breadcrumb.scss","../../scss/_chip.scss","../../scss/_card.scss","../../scss/_carousel.scss","../../scss/_datepicker.scss","../../scss/_dialog.scss","../../scss/mixins/_dialog-shared.scss","../../scss/_menu.scss","../../scss/_list-group.scss","../../scss/_nav.scss","../../scss/_nav-overflow.scss","../../scss/_navbar.scss","../../scss/_drawer.scss","../../scss/_pagination.scss","../../scss/_placeholder.scss","../../scss/_popover.scss","../../scss/mixins/_reset-text.scss","../../scss/_progress.scss","../../scss/_spinner.scss","../../scss/_stepper.scss","../../scss/_toasts.scss","../../scss/_tooltip.scss","../../scss/_transitions.scss","../../scss/helpers/_focus-ring.scss","../../scss/helpers/_icon-link.scss","../../scss/helpers/_position.scss","../../scss/helpers/_stacks.scss","../../scss/helpers/_theme-colors.scss","../../scss/_theme.scss","../../scss/helpers/_visually-hidden.scss","../../scss/mixins/_visually-hidden.scss","../../scss/helpers/_stretched-link.scss","../../scss/helpers/_text-truncation.scss","../../scss/mixins/_text-truncate.scss","../../scss/helpers/_vr.scss","../../scss/utilities/_api.scss","../../scss/mixins/_utilities.scss"],"sourcesContent":["@charset \"UTF-8\";\n/*!\n  * Bootstrap  v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n:root {\n  --blue-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.24 240deg));\n  --blue-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.24 240deg));\n  --blue-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.24 240deg));\n  --blue-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.24 240deg));\n  --blue-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.24 240deg));\n  --blue-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.24 240deg));\n  --blue-500: oklch(60% 0.24 240deg);\n  --blue-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.24 240deg));\n  --blue-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.24 240deg));\n  --blue-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.24 240deg));\n  --blue-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.24 240deg));\n  --blue-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.24 240deg));\n  --blue-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.24 240deg));\n  --indigo-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.26 288deg));\n  --indigo-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.26 288deg));\n  --indigo-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.26 288deg));\n  --indigo-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.26 288deg));\n  --indigo-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.26 288deg));\n  --indigo-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.26 288deg));\n  --indigo-500: oklch(56% 0.26 288deg);\n  --indigo-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.26 288deg));\n  --indigo-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.26 288deg));\n  --indigo-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.26 288deg));\n  --indigo-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.26 288deg));\n  --indigo-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.26 288deg));\n  --indigo-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.26 288deg));\n  --violet-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 300deg));\n  --violet-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 300deg));\n  --violet-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 300deg));\n  --violet-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 300deg));\n  --violet-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 300deg));\n  --violet-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 300deg));\n  --violet-500: oklch(56% 0.24 300deg);\n  --violet-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 300deg));\n  --violet-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 300deg));\n  --violet-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 300deg));\n  --violet-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 300deg));\n  --violet-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 300deg));\n  --violet-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 300deg));\n  --purple-025: color-mix(in lab, var(--white) 94%, oklch(56% 0.24 320deg));\n  --purple-050: color-mix(in lab, var(--white) 90%, oklch(56% 0.24 320deg));\n  --purple-100: color-mix(in lab, var(--white) 80%, oklch(56% 0.24 320deg));\n  --purple-200: color-mix(in lab, var(--white) 60%, oklch(56% 0.24 320deg));\n  --purple-300: color-mix(in lab, var(--white) 40%, oklch(56% 0.24 320deg));\n  --purple-400: color-mix(in lab, var(--white) 20%, oklch(56% 0.24 320deg));\n  --purple-500: oklch(56% 0.24 320deg);\n  --purple-600: color-mix(in lab, var(--black) 16%, oklch(56% 0.24 320deg));\n  --purple-700: color-mix(in lab, var(--black) 32%, oklch(56% 0.24 320deg));\n  --purple-800: color-mix(in lab, var(--black) 48%, oklch(56% 0.24 320deg));\n  --purple-900: color-mix(in lab, var(--black) 64%, oklch(56% 0.24 320deg));\n  --purple-950: color-mix(in lab, var(--black) 76%, oklch(56% 0.24 320deg));\n  --purple-975: color-mix(in lab, var(--black) 88%, oklch(56% 0.24 320deg));\n  --pink-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 4deg));\n  --pink-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 4deg));\n  --pink-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 4deg));\n  --pink-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 4deg));\n  --pink-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 4deg));\n  --pink-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 4deg));\n  --pink-500: oklch(60% 0.22 4deg);\n  --pink-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 4deg));\n  --pink-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 4deg));\n  --pink-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 4deg));\n  --pink-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 4deg));\n  --pink-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 4deg));\n  --pink-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 4deg));\n  --red-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.22 20deg));\n  --red-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.22 20deg));\n  --red-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.22 20deg));\n  --red-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.22 20deg));\n  --red-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.22 20deg));\n  --red-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.22 20deg));\n  --red-500: oklch(60% 0.22 20deg);\n  --red-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.22 20deg));\n  --red-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.22 20deg));\n  --red-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.22 20deg));\n  --red-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.22 20deg));\n  --red-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.22 20deg));\n  --red-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.22 20deg));\n  --orange-025: color-mix(in lab, var(--white) 94%, oklch(70% 0.22 52deg));\n  --orange-050: color-mix(in lab, var(--white) 90%, oklch(70% 0.22 52deg));\n  --orange-100: color-mix(in lab, var(--white) 80%, oklch(70% 0.22 52deg));\n  --orange-200: color-mix(in lab, var(--white) 60%, oklch(70% 0.22 52deg));\n  --orange-300: color-mix(in lab, var(--white) 40%, oklch(70% 0.22 52deg));\n  --orange-400: color-mix(in lab, var(--white) 20%, oklch(70% 0.22 52deg));\n  --orange-500: oklch(70% 0.22 52deg);\n  --orange-600: color-mix(in lab, var(--black) 16%, oklch(70% 0.22 52deg));\n  --orange-700: color-mix(in lab, var(--black) 32%, oklch(70% 0.22 52deg));\n  --orange-800: color-mix(in lab, var(--black) 48%, oklch(70% 0.22 52deg));\n  --orange-900: color-mix(in lab, var(--black) 64%, oklch(70% 0.22 52deg));\n  --orange-950: color-mix(in lab, var(--black) 76%, oklch(70% 0.22 52deg));\n  --orange-975: color-mix(in lab, var(--black) 88%, oklch(70% 0.22 52deg));\n  --amber-025: color-mix(in lab, var(--white) 94%, oklch(79% 0.2 78deg));\n  --amber-050: color-mix(in lab, var(--white) 90%, oklch(79% 0.2 78deg));\n  --amber-100: color-mix(in lab, var(--white) 80%, oklch(79% 0.2 78deg));\n  --amber-200: color-mix(in lab, var(--white) 60%, oklch(79% 0.2 78deg));\n  --amber-300: color-mix(in lab, var(--white) 40%, oklch(79% 0.2 78deg));\n  --amber-400: color-mix(in lab, var(--white) 20%, oklch(79% 0.2 78deg));\n  --amber-500: oklch(79% 0.2 78deg);\n  --amber-600: color-mix(in lab, var(--black) 16%, oklch(79% 0.2 78deg));\n  --amber-700: color-mix(in lab, var(--black) 32%, oklch(79% 0.2 78deg));\n  --amber-800: color-mix(in lab, var(--black) 48%, oklch(79% 0.2 78deg));\n  --amber-900: color-mix(in lab, var(--black) 64%, oklch(79% 0.2 78deg));\n  --amber-950: color-mix(in lab, var(--black) 76%, oklch(79% 0.2 78deg));\n  --amber-975: color-mix(in lab, var(--black) 88%, oklch(79% 0.2 78deg));\n  --yellow-025: color-mix(in lab, var(--white) 94%, oklch(88% 0.24 88deg));\n  --yellow-050: color-mix(in lab, var(--white) 90%, oklch(88% 0.24 88deg));\n  --yellow-100: color-mix(in lab, var(--white) 80%, oklch(88% 0.24 88deg));\n  --yellow-200: color-mix(in lab, var(--white) 60%, oklch(88% 0.24 88deg));\n  --yellow-300: color-mix(in lab, var(--white) 40%, oklch(88% 0.24 88deg));\n  --yellow-400: color-mix(in lab, var(--white) 20%, oklch(88% 0.24 88deg));\n  --yellow-500: oklch(88% 0.24 88deg);\n  --yellow-600: color-mix(in lab, var(--black) 16%, oklch(88% 0.24 88deg));\n  --yellow-700: color-mix(in lab, var(--black) 32%, oklch(88% 0.24 88deg));\n  --yellow-800: color-mix(in lab, var(--black) 48%, oklch(88% 0.24 88deg));\n  --yellow-900: color-mix(in lab, var(--black) 64%, oklch(88% 0.24 88deg));\n  --yellow-950: color-mix(in lab, var(--black) 76%, oklch(88% 0.24 88deg));\n  --yellow-975: color-mix(in lab, var(--black) 88%, oklch(88% 0.24 88deg));\n  --lime-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.24 135deg));\n  --lime-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.24 135deg));\n  --lime-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.24 135deg));\n  --lime-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.24 135deg));\n  --lime-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.24 135deg));\n  --lime-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.24 135deg));\n  --lime-500: oklch(65% 0.24 135deg);\n  --lime-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.24 135deg));\n  --lime-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.24 135deg));\n  --lime-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.24 135deg));\n  --lime-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.24 135deg));\n  --lime-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.24 135deg));\n  --lime-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.24 135deg));\n  --green-025: color-mix(in lab, var(--white) 94%, oklch(64% 0.22 160deg));\n  --green-050: color-mix(in lab, var(--white) 90%, oklch(64% 0.22 160deg));\n  --green-100: color-mix(in lab, var(--white) 80%, oklch(64% 0.22 160deg));\n  --green-200: color-mix(in lab, var(--white) 60%, oklch(64% 0.22 160deg));\n  --green-300: color-mix(in lab, var(--white) 40%, oklch(64% 0.22 160deg));\n  --green-400: color-mix(in lab, var(--white) 20%, oklch(64% 0.22 160deg));\n  --green-500: oklch(64% 0.22 160deg);\n  --green-600: color-mix(in lab, var(--black) 16%, oklch(64% 0.22 160deg));\n  --green-700: color-mix(in lab, var(--black) 32%, oklch(64% 0.22 160deg));\n  --green-800: color-mix(in lab, var(--black) 48%, oklch(64% 0.22 160deg));\n  --green-900: color-mix(in lab, var(--black) 64%, oklch(64% 0.22 160deg));\n  --green-950: color-mix(in lab, var(--black) 76%, oklch(64% 0.22 160deg));\n  --green-975: color-mix(in lab, var(--black) 88%, oklch(64% 0.22 160deg));\n  --teal-025: color-mix(in lab, var(--white) 94%, oklch(68% 0.22 190deg));\n  --teal-050: color-mix(in lab, var(--white) 90%, oklch(68% 0.22 190deg));\n  --teal-100: color-mix(in lab, var(--white) 80%, oklch(68% 0.22 190deg));\n  --teal-200: color-mix(in lab, var(--white) 60%, oklch(68% 0.22 190deg));\n  --teal-300: color-mix(in lab, var(--white) 40%, oklch(68% 0.22 190deg));\n  --teal-400: color-mix(in lab, var(--white) 20%, oklch(68% 0.22 190deg));\n  --teal-500: oklch(68% 0.22 190deg);\n  --teal-600: color-mix(in lab, var(--black) 16%, oklch(68% 0.22 190deg));\n  --teal-700: color-mix(in lab, var(--black) 32%, oklch(68% 0.22 190deg));\n  --teal-800: color-mix(in lab, var(--black) 48%, oklch(68% 0.22 190deg));\n  --teal-900: color-mix(in lab, var(--black) 64%, oklch(68% 0.22 190deg));\n  --teal-950: color-mix(in lab, var(--black) 76%, oklch(68% 0.22 190deg));\n  --teal-975: color-mix(in lab, var(--black) 88%, oklch(68% 0.22 190deg));\n  --cyan-025: color-mix(in lab, var(--white) 94%, oklch(69% 0.22 220deg));\n  --cyan-050: color-mix(in lab, var(--white) 90%, oklch(69% 0.22 220deg));\n  --cyan-100: color-mix(in lab, var(--white) 80%, oklch(69% 0.22 220deg));\n  --cyan-200: color-mix(in lab, var(--white) 60%, oklch(69% 0.22 220deg));\n  --cyan-300: color-mix(in lab, var(--white) 40%, oklch(69% 0.22 220deg));\n  --cyan-400: color-mix(in lab, var(--white) 20%, oklch(69% 0.22 220deg));\n  --cyan-500: oklch(69% 0.22 220deg);\n  --cyan-600: color-mix(in lab, var(--black) 16%, oklch(69% 0.22 220deg));\n  --cyan-700: color-mix(in lab, var(--black) 32%, oklch(69% 0.22 220deg));\n  --cyan-800: color-mix(in lab, var(--black) 48%, oklch(69% 0.22 220deg));\n  --cyan-900: color-mix(in lab, var(--black) 64%, oklch(69% 0.22 220deg));\n  --cyan-950: color-mix(in lab, var(--black) 76%, oklch(69% 0.22 220deg));\n  --cyan-975: color-mix(in lab, var(--black) 88%, oklch(69% 0.22 220deg));\n  --brown-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.12 54deg));\n  --brown-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.12 54deg));\n  --brown-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.12 54deg));\n  --brown-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.12 54deg));\n  --brown-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.12 54deg));\n  --brown-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.12 54deg));\n  --brown-500: oklch(60% 0.12 54deg);\n  --brown-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.12 54deg));\n  --brown-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.12 54deg));\n  --brown-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.12 54deg));\n  --brown-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.12 54deg));\n  --brown-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.12 54deg));\n  --brown-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.12 54deg));\n  --gray-025: color-mix(in lab, var(--white) 94%, oklch(60% 0.02 245deg));\n  --gray-050: color-mix(in lab, var(--white) 90%, oklch(60% 0.02 245deg));\n  --gray-100: color-mix(in lab, var(--white) 80%, oklch(60% 0.02 245deg));\n  --gray-200: color-mix(in lab, var(--white) 60%, oklch(60% 0.02 245deg));\n  --gray-300: color-mix(in lab, var(--white) 40%, oklch(60% 0.02 245deg));\n  --gray-400: color-mix(in lab, var(--white) 20%, oklch(60% 0.02 245deg));\n  --gray-500: oklch(60% 0.02 245deg);\n  --gray-600: color-mix(in lab, var(--black) 16%, oklch(60% 0.02 245deg));\n  --gray-700: color-mix(in lab, var(--black) 32%, oklch(60% 0.02 245deg));\n  --gray-800: color-mix(in lab, var(--black) 48%, oklch(60% 0.02 245deg));\n  --gray-900: color-mix(in lab, var(--black) 64%, oklch(60% 0.02 245deg));\n  --gray-950: color-mix(in lab, var(--black) 76%, oklch(60% 0.02 245deg));\n  --gray-975: color-mix(in lab, var(--black) 88%, oklch(60% 0.02 245deg));\n  --pewter-025: color-mix(in lab, var(--white) 94%, oklch(65% 0.01 290deg));\n  --pewter-050: color-mix(in lab, var(--white) 90%, oklch(65% 0.01 290deg));\n  --pewter-100: color-mix(in lab, var(--white) 80%, oklch(65% 0.01 290deg));\n  --pewter-200: color-mix(in lab, var(--white) 60%, oklch(65% 0.01 290deg));\n  --pewter-300: color-mix(in lab, var(--white) 40%, oklch(65% 0.01 290deg));\n  --pewter-400: color-mix(in lab, var(--white) 20%, oklch(65% 0.01 290deg));\n  --pewter-500: oklch(65% 0.01 290deg);\n  --pewter-600: color-mix(in lab, var(--black) 16%, oklch(65% 0.01 290deg));\n  --pewter-700: color-mix(in lab, var(--black) 32%, oklch(65% 0.01 290deg));\n  --pewter-800: color-mix(in lab, var(--black) 48%, oklch(65% 0.01 290deg));\n  --pewter-900: color-mix(in lab, var(--black) 64%, oklch(65% 0.01 290deg));\n  --pewter-950: color-mix(in lab, var(--black) 76%, oklch(65% 0.01 290deg));\n  --pewter-975: color-mix(in lab, var(--black) 88%, oklch(65% 0.01 290deg));\n}\n\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n:root {\n  --black: #000;\n  --white: #fff;\n  --gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent));\n  --font-weight-lighter: lighter;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-bolder: bolder;\n  --body-font-family: system-ui;\n  --body-font-size: var(--font-size-base);\n  --body-font-weight: 400;\n  --body-line-height: 1.5;\n  --heading-color: inherit;\n  --hr-border-color: var(--border-color);\n  --link-color: light-dark(var(--primary-base), var(--primary-fg));\n  --link-decoration: underline;\n  --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000);\n  --font-mono: ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', monospace;;\n  --code-font-size: 95%;\n  --code-color: var(--fg-2);\n  --border-width: 1px;\n  --border-style: solid;\n  --border-color: light-dark(var(--gray-200), var(--gray-700));\n  --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent);\n  --box-shadow-xs: 0 0.0625rem 0.1875rem rgba(0, 0, 0, 0.075);\n  --box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);\n  --box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  --box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);\n  --box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);\n  --spacer: 1rem;\n  --focus-ring-width: 3px;\n  --focus-ring-offset: 1px;\n  --focus-ring-color: var(--primary-focus-ring);\n  --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color);\n  --control-checked-bg: var(--primary-base);\n  --control-checked-border-color: var(--control-checked-bg);\n  --control-active-bg: var(--primary-base);\n  --control-active-border-color: var(--control-active-bg);\n  --control-disabled-bg: var(--bg-3);\n  --control-disabled-opacity: 0.65;\n  --btn-input-fg: var(--fg-body);\n  --btn-input-bg: var(--bg-body);\n  --btn-input-min-height: 2.375rem;\n  --btn-input-padding-y: 0.375rem;\n  --btn-input-padding-x: 0.75rem;\n  --btn-input-font-size: var(--font-size-base);\n  --btn-input-line-height: var(--line-height-base);\n  --btn-input-border-radius: var(--radius-5);\n  --btn-input-xs-min-height: 1.5rem;\n  --btn-input-xs-padding-y: 0.125rem;\n  --btn-input-xs-padding-x: 0.5rem;\n  --btn-input-xs-font-size: var(--font-size-xs);\n  --btn-input-xs-line-height: 1.125;\n  --btn-input-xs-border-radius: var(--radius-5);\n  --btn-input-sm-min-height: 2rem;\n  --btn-input-sm-padding-y: 0.25rem;\n  --btn-input-sm-padding-x: 0.625rem;\n  --btn-input-sm-font-size: var(--font-size-sm);\n  --btn-input-sm-line-height: var(--line-height-sm);\n  --btn-input-sm-border-radius: var(--radius-5);\n  --btn-input-lg-min-height: 2.75rem;\n  --btn-input-lg-padding-y: 0.5rem;\n  --btn-input-lg-padding-x: 1rem;\n  --btn-input-lg-font-size: var(--font-size-md);\n  --btn-input-lg-line-height: var(--line-height-md);\n  --btn-input-lg-border-radius: var(--radius-7);\n  --font-size-xs: 0.75rem;\n  --line-height-xs: 1.25;\n  --font-size-sm: 0.875rem;\n  --line-height-sm: 1.5;\n  --font-size-md: 1rem;\n  --line-height-md: 1.5;\n  --font-size-lg: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  --line-height-lg: 1.5;\n  --font-size-xl: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  --line-height-xl: 1.4285714286;\n  --font-size-2xl: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  --line-height-2xl: 1.3333333333;\n  --font-size-3xl: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  --line-height-3xl: 1.2;\n  --font-size-4xl: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  --line-height-4xl: 1.1;\n  --font-size-5xl: clamp(3rem, 2rem + 5vw, 4rem);\n  --line-height-5xl: 1.1;\n  --font-size-6xl: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  --line-height-6xl: 1;\n  --primary-base: var(--blue-500);\n  --primary-fg: light-dark(var(--blue-600), var(--blue-400));\n  --primary-fg-emphasis: light-dark(var(--blue-800), var(--blue-200));\n  --primary-bg: var(--blue-500);\n  --primary-bg-subtle: light-dark(var(--blue-100), var(--blue-900));\n  --primary-bg-muted: light-dark(var(--blue-200), var(--blue-800));\n  --primary-border: light-dark(var(--blue-300), var(--blue-600));\n  --primary-focus-ring: light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body)));\n  --primary-contrast: var(--white);\n  --accent-base: var(--indigo-500);\n  --accent-fg: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  --accent-fg-emphasis: light-dark(var(--indigo-800), var(--indigo-300));\n  --accent-bg: var(--indigo-500);\n  --accent-bg-subtle: light-dark(var(--indigo-100), var(--indigo-900));\n  --accent-bg-muted: light-dark(var(--indigo-200), var(--indigo-800));\n  --accent-border: light-dark(var(--indigo-300), var(--indigo-600));\n  --accent-focus-ring: light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body)));\n  --accent-contrast: var(--white);\n  --success-base: var(--green-500);\n  --success-fg: light-dark(var(--green-600), var(--green-400));\n  --success-fg-emphasis: light-dark(var(--green-800), var(--green-300));\n  --success-bg: var(--green-500);\n  --success-bg-subtle: light-dark(var(--green-100), var(--green-900));\n  --success-bg-muted: light-dark(var(--green-200), var(--green-800));\n  --success-border: light-dark(var(--green-300), var(--green-600));\n  --success-focus-ring: light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body)));\n  --success-contrast: var(--white);\n  --danger-base: var(--red-500);\n  --danger-fg: light-dark(var(--red-600), var(--red-400));\n  --danger-fg-emphasis: light-dark(var(--red-800), var(--red-300));\n  --danger-bg: var(--red-500);\n  --danger-bg-subtle: light-dark(var(--red-100), var(--red-900));\n  --danger-bg-muted: light-dark(var(--red-200), var(--red-800));\n  --danger-border: light-dark(var(--red-300), var(--red-600));\n  --danger-focus-ring: light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body)));\n  --danger-contrast: var(--white);\n  --warning-base: var(--yellow-500);\n  --warning-fg: light-dark(var(--yellow-700), var(--yellow-400));\n  --warning-fg-emphasis: light-dark(var(--yellow-800), var(--yellow-300));\n  --warning-bg: var(--yellow-500);\n  --warning-bg-subtle: light-dark(var(--yellow-100), var(--yellow-900));\n  --warning-bg-muted: light-dark(var(--yellow-200), var(--yellow-800));\n  --warning-border: light-dark(var(--yellow-300), var(--yellow-600));\n  --warning-focus-ring: light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body)));\n  --warning-contrast: var(--gray-900);\n  --info-base: var(--cyan-500);\n  --info-fg: light-dark(var(--cyan-600), var(--cyan-400));\n  --info-fg-emphasis: light-dark(var(--cyan-800), var(--cyan-300));\n  --info-bg: var(--cyan-500);\n  --info-bg-subtle: light-dark(var(--cyan-100), var(--cyan-900));\n  --info-bg-muted: light-dark(var(--cyan-200), var(--cyan-800));\n  --info-border: light-dark(var(--cyan-300), var(--cyan-600));\n  --info-focus-ring: light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body)));\n  --info-contrast: var(--gray-900);\n  --inverse-base: var(--gray-900);\n  --inverse-fg: light-dark(var(--gray-900), var(--gray-200));\n  --inverse-fg-emphasis: light-dark(var(--gray-975), var(--white));\n  --inverse-bg: light-dark(var(--gray-900), var(--gray-025));\n  --inverse-bg-subtle: light-dark(var(--gray-100), var(--gray-900));\n  --inverse-bg-muted: light-dark(var(--gray-200), var(--gray-300));\n  --inverse-border: light-dark(var(--gray-400), var(--gray-100));\n  --inverse-focus-ring: color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body));\n  --inverse-contrast: light-dark(var(--white), var(--gray-900));\n  --secondary-base: var(--gray-200);\n  --secondary-fg: light-dark(var(--gray-600), var(--gray-400));\n  --secondary-fg-emphasis: light-dark(var(--gray-800), var(--gray-200));\n  --secondary-bg: light-dark(var(--gray-100), var(--gray-600));\n  --secondary-bg-subtle: light-dark(var(--gray-050), var(--gray-800));\n  --secondary-bg-muted: light-dark(var(--gray-100), var(--gray-700));\n  --secondary-border: light-dark(var(--gray-300), var(--gray-600));\n  --secondary-focus-ring: color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body));\n  --secondary-contrast: light-dark(var(--gray-900), var(--white));\n  --bg-body: light-dark(var(--white), var(--gray-975));\n  --bg-1: light-dark(var(--gray-025), var(--gray-950));\n  --bg-2: light-dark(var(--gray-050), var(--gray-900));\n  --bg-3: light-dark(var(--gray-100), var(--gray-800));\n  --bg-4: light-dark(var(--gray-200), var(--gray-700));\n  --bg-fg: var(--fg-body);\n  --bg-white: var(--white);\n  --bg-black: var(--black);\n  --bg-transparent: transparent;\n  --bg-inherit: inherit;\n  --fg-body: light-dark(var(--gray-900), var(--gray-050));\n  --fg-1: light-dark(var(--gray-800), var(--gray-200));\n  --fg-2: light-dark(var(--gray-700), var(--gray-300));\n  --fg-3: light-dark(var(--gray-600), var(--gray-500));\n  --fg-4: light-dark(var(--gray-500), var(--gray-600));\n  --fg-bg: var(--bg-body);\n  --fg-white: var(--white);\n  --fg-black: var(--black);\n  --fg-inherit: inherit;\n  --border-bg: var(--bg-body);\n  --border-body: light-dark(var(--gray-300), var(--gray-800));\n  --border-muted: light-dark(var(--gray-200), var(--gray-800));\n  --border-subtle: light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-900));\n  --border-emphasized: light-dark(var(--gray-400), var(--gray-600));\n  --border-white: var(--white);\n  --border-black: var(--black);\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 1024px;\n  --breakpoint-xl: 1280px;\n  --breakpoint-2xl: 1536px;\n  --spacer-0: 0;\n  --spacer-1: 0.25rem;\n  --spacer-2: 0.5rem;\n  --spacer-3: 0.75rem;\n  --spacer-4: 1rem;\n  --spacer-5: 1.25rem;\n  --spacer-6: 1.5rem;\n  --spacer-7: 2rem;\n  --spacer-8: 2.5rem;\n  --spacer-9: 3rem;\n  --radius-0: 0;\n  --radius-1: 0.125rem;\n  --radius-2: 0.1875rem;\n  --radius-3: 0.25rem;\n  --radius-4: 0.375rem;\n  --radius-5: 0.5rem;\n  --radius-6: 0.625rem;\n  --radius-7: 0.75rem;\n  --radius-8: 1rem;\n  --radius-9: 1.5rem;\n  --radius-pill: 50rem;\n  color-scheme: light dark;\n  scrollbar-gutter: stable;\n}\n\n[data-bs-theme=dark] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=light] {\n  color-scheme: light;\n}\n\n@layer reboot {\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n  :root {\n    accent-color: var(--primary-base);\n  }\n  iframe {\n    color-scheme: light dark;\n    border: 0;\n  }\n  body {\n    margin: 0;\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body);\n    -webkit-text-size-adjust: 100%;\n    -webkit-tap-highlight-color: transparent;\n  }\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  h6,\n  .h6, h5,\n  .h5, h4,\n  .h4, h3,\n  .h3, h2,\n  .h2, h1,\n  .h1 {\n    margin-top: 0;\n    margin-bottom: var(--spacer-2);\n    font-weight: 500;\n    line-height: 1.2;\n    color: var(--heading-color);\n  }\n  h1,\n  .h1 {\n    font-size: var(--font-size-3xl);\n  }\n  h2,\n  .h2 {\n    font-size: var(--font-size-2xl);\n  }\n  h3,\n  .h3 {\n    font-size: var(--font-size-xl);\n  }\n  h4,\n  .h4 {\n    font-size: var(--font-size-lg);\n  }\n  h5,\n  .h5 {\n    font-size: var(--font-size-md);\n  }\n  h6,\n  .h6 {\n    font-size: var(--font-size-sm);\n  }\n  p {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  abbr[title] {\n    text-decoration: underline dotted;\n    cursor: help;\n    text-decoration-skip-ink: none;\n  }\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n  dt {\n    font-weight: 700;\n  }\n  dd {\n    margin-inline-start: 0;\n    margin-bottom: 0.5rem;\n  }\n  blockquote {\n    margin: 0 0 1rem;\n  }\n  blockquote > * {\n    margin-block: 0;\n  }\n  b,\n  strong {\n    font-weight: bolder;\n  }\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n  mark,\n  .mark {\n    --mark-padding: 0.1875em;\n    --mark-color: var(--fg-body);\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900));\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, 0.75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n  sub {\n    bottom: -0.25em;\n  }\n  sup {\n    top: -0.5em;\n  }\n  a {\n    color: var(--theme-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: 0.2em;\n  }\n  a:hover {\n    color: var(--theme-fg-emphasis, var(--link-hover-color));\n    text-decoration: var(--link-hover-decoration, var(--link-decoration));\n  }\n  a:not([href], [class]), a:not([href], [class]):hover {\n    color: inherit;\n    text-decoration: none;\n  }\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em;\n  }\n  pre {\n    display: block;\n    margin-top: 0;\n    margin-bottom: 1rem;\n    overflow: auto;\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n  }\n  pre code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n  }\n  a > code {\n    color: inherit;\n  }\n  kbd {\n    --kbd-padding-y: 0.125rem;\n    --kbd-padding-x: 0.25rem;\n    --kbd-font-size: var(--font-size-xs);\n    --kbd-color: var(--bg-body);\n    --kbd-bg: var(--fg-2);\n    --kbd-border-radius: var(--radius-5);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    border-radius: var(--kbd-border-radius);\n  }\n  kbd kbd {\n    padding: 0;\n    font-size: 1em;\n    font-weight: inherit;\n  }\n  figure {\n    margin: 0 0 1rem;\n  }\n  img,\n  svg {\n    vertical-align: middle;\n  }\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n  caption {\n    padding-block: 0.5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n  th {\n    text-align: inherit;\n    text-align: -webkit-match-parent;\n  }\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n  label {\n    display: inline-block;\n  }\n  button {\n    border-radius: 0;\n  }\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0;\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n  [role=button] {\n    cursor: pointer;\n  }\n  select {\n    word-wrap: normal;\n  }\n  select:disabled {\n    opacity: 1;\n  }\n  [list]:not([type=date], [type=datetime-local], [type=month], [type=week], [type=time])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n  button,\n  [type=button],\n  [type=reset],\n  [type=submit] {\n    -webkit-appearance: button;\n  }\n  button:not(:disabled),\n  [type=button]:not(:disabled),\n  [type=reset]:not(:disabled),\n  [type=submit]:not(:disabled) {\n    cursor: pointer;\n  }\n  textarea {\n    resize: vertical;\n  }\n  fieldset {\n    min-width: 0;\n    padding: 0;\n    margin: 0;\n    border: 0;\n  }\n  legend {\n    float: inline-start;\n    width: 100%;\n    padding: 0;\n    margin-bottom: 0.5rem;\n    font-size: 1.5rem;\n    line-height: inherit;\n  }\n  legend + * {\n    clear: inline-start;\n  }\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-meridiem-field,\n  ::-webkit-datetime-edit-ampm-field,\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n  ::-webkit-inner-spin-button,\n  ::-webkit-outer-spin-button {\n    height: auto;\n  }\n  [type=search] {\n    -webkit-appearance: textfield;\n    outline-offset: -2px;\n  }\n  [type=search]::-webkit-search-cancel-button {\n    cursor: pointer;\n    filter: grayscale(1);\n  }\n  [type=tel],\n  [type=url],\n  [type=email],\n  [type=number] {\n    direction: ltr;\n  }\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n  ::file-selector-button {\n    font: inherit;\n    -webkit-appearance: button;\n  }\n  output {\n    display: inline-block;\n  }\n  summary {\n    display: list-item;\n    cursor: pointer;\n  }\n  progress {\n    vertical-align: baseline;\n  }\n  [hidden] {\n    display: none !important;\n  }\n}\n@layer content {\n  .list-unstyled {\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .list-inline {\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .list-inline-item {\n    display: inline-block;\n  }\n  .list-inline-item:not(:last-child) {\n    margin-inline-end: var(--list-inline-padding, var(--spacer)/2);\n  }\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n  .blockquote {\n    --blockquote-gap: calc(var(--spacer) / 2);\n    --blockquote-padding-x: var(--spacer);\n    --blockquote-margin-y: 1rem;\n    --blockquote-font-size: var(--font-size-md);\n    --blockquote-border-width: 0.25rem;\n    --blockquote-border-color: var(--border-color);\n    --blockquote-footer-font-size: var(--font-size-sm);\n    --blockquote-footer-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n  }\n  .blockquote > * {\n    margin-bottom: 0;\n  }\n  figure.blockquote blockquote {\n    margin-bottom: 0;\n  }\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n  }\n  .blockquote-footer::before {\n    content: \"— \";\n  }\n}\n@layer content {\n  .table {\n    --table-cell-padding-y: 0.5rem;\n    --table-cell-padding-x: 0.5rem;\n    --table-cell-vertical-align: top;\n    --table-color: var(--fg-body);\n    --table-bg: var(--bg-body);\n    --table-accent-bg: transparent;\n    --table-border-width: var(--border-width);\n    --table-border-color: var(--border-color);\n    --table-group-separator-color: currentcolor;\n    --table-striped-color: var(--table-color);\n    --table-striped-bg-factor: 5%;\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent);\n    --table-active-color: var(--table-color);\n    --table-active-bg-factor: 10%;\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent);\n    --table-hover-color: var(--table-color);\n    --table-hover-bg-factor: 7.5%;\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent);\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    width: 100%;\n    margin-bottom: var(--spacer);\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n  }\n  .table > :not(caption) > * > * {\n    padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n    color: var(--table-color-state, var(--table-color-type, var(--theme-fg, var(--table-color))));\n    background-color: var(--theme-bg-subtle, var(--table-bg));\n    border-block-end-width: var(--table-border-width);\n    box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n  }\n  .table > tbody {\n    vertical-align: inherit;\n  }\n  .table > thead {\n    vertical-align: bottom;\n  }\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n  .caption-top {\n    caption-side: top;\n  }\n  .table-sm > :not(caption) > * > * {\n    --table-cell-padding-y: .25rem;\n    --table-cell-padding-x: .25rem;\n  }\n  .table-bordered > :not(caption) > * {\n    border-width: var(--table-border-width) 0;\n  }\n  .table-bordered > :not(caption) > * > * {\n    border-width: 0 var(--table-border-width);\n  }\n  .table-borderless > :not(caption) > * > * {\n    border-block-end-width: 0;\n  }\n  .table-borderless > :not(:first-child) {\n    border-block-start-width: 0;\n  }\n  .table-striped > tbody > tr:nth-of-type(odd) > * {\n    --table-color-type: var(--theme-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-striped-columns > :not(caption) > tr > :nth-child(even) {\n    --table-color-type: var(--theme-fg, var(--table-striped-color));\n    --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n  }\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n  .table-hover > tbody > tr:hover > * {\n    --table-color-state: var(--theme-fg, var(--table-hover-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n  }\n  .table-responsive {\n    container-type: inline-size;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n  .sm\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 576px) {\n    .sm\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .md\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 768px) {\n    .md\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .lg\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1024px) {\n    .lg\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1280px) {\n    .xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .\\32 xl\\:table-responsive {\n    container-type: inline-size;\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:table-responsive {\n      overflow-x: auto;\n      -webkit-overflow-scrolling: touch;\n    }\n  }\n  .table-stacked > thead {\n    position: absolute;\n    width: 1px;\n    height: 1px;\n    padding: 0;\n    margin: -1px;\n    overflow: hidden;\n    clip: rect(0, 0, 0, 0);\n    white-space: nowrap;\n    border: 0;\n  }\n  .table-stacked > tbody > tr {\n    display: block;\n    padding-block: var(--table-cell-padding-y);\n  }\n  .table-stacked > tbody > tr + tr {\n    border-block-start: var(--table-border-width) solid var(--table-border-color);\n  }\n  .table-stacked > tbody > tr > td {\n    display: block;\n    padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n    border: 0;\n  }\n  .table-stacked > tbody > tr > td:first-child {\n    font-weight: var(--font-weight-bold);\n  }\n  .table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n    display: block;\n    font-weight: var(--font-weight-semibold);\n    content: attr(data-cell);\n  }\n  .table-stacked > tbody > tr > td:not(:first-child) + td::before {\n    margin-block-start: 0.25rem;\n  }\n  @container (width < 576px) {\n    .sm\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .sm\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .sm\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .sm\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .sm\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .sm\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 768px) {\n    .md\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .md\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .md\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .md\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .md\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .md\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1024px) {\n    .lg\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .lg\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .lg\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .lg\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .lg\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .lg\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1280px) {\n    .xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n  @container (width < 1536px) {\n    .\\32 xl\\:table-stacked > thead {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr {\n      display: block;\n      padding-block: var(--table-cell-padding-y);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr + tr {\n      border-block-start: var(--table-border-width) solid var(--table-border-color);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td {\n      display: block;\n      padding: calc(var(--table-cell-padding-y) * 0.25) calc(var(--table-cell-padding-x) * 2);\n      border: 0;\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:first-child {\n      font-weight: var(--font-weight-bold);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td[data-cell]:not(:first-child)::before {\n      display: block;\n      font-weight: var(--font-weight-semibold);\n      content: attr(data-cell);\n    }\n    .\\32 xl\\:table-stacked > tbody > tr > td:not(:first-child) + td::before {\n      margin-block-start: 0.25rem;\n    }\n  }\n}\n@layer content {\n  .img-fluid {\n    max-width: 100%;\n    height: auto;\n  }\n  .img-thumbnail {\n    --thumbnail-padding: 0.25rem;\n    --thumbnail-bg: var(--bg-body);\n    --thumbnail-border-width: var(--border-width);\n    --thumbnail-border-color: var(--border-color);\n    --thumbnail-border-radius: var(--radius-5);\n    --thumbnail-box-shadow: var(--box-shadow-sm);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    border-radius: var(--thumbnail-border-radius);\n    box-shadow: var(--thumbnail-box-shadow);\n    max-width: 100%;\n    height: auto;\n  }\n  .figure {\n    --figure-gap: calc(var(--spacer) * 0.5);\n    --figure-caption-font-size: var(--font-size-sm);\n    --figure-caption-color: var(--fg-3);\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n@layer content {\n  .prose {\n    --content-font-size: 1rem;\n    --content-line-height: 1.5;\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height));\n    --heading-color: light-dark(var(--gray-900), var(--white));\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: var(--content-line-height);\n  }\n  @media (width >= 1024px) {\n    .prose {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n    }\n  }\n  .prose :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n    margin-block: 0;\n  }\n  .prose :where(ul, ol):not([class], :where(.not-prose, .not-prose *)) li:not(:last-child) {\n    margin-bottom: calc(var(--content-gap) / 4);\n  }\n  .prose :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) / 4);\n  }\n  .prose :where(hr):not(:where(.not-prose, .not-prose *)) {\n    margin: calc(var(--content-gap) * 1.5) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) {\n    margin-top: 0;\n    margin-bottom: calc(var(--content-gap) / -2);\n    font-weight: 500;\n    line-height: 1.25;\n  }\n  .prose :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) code {\n    font-weight: 600;\n    color: inherit;\n  }\n  .prose :where(h1, h2):not(:first-child, :where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.75);\n  }\n  .prose :where(h3, h4, h5, h6):not(:first-child, :where(.not-prose, .not-prose *)) {\n    margin-top: calc(var(--content-gap) * 0.5);\n  }\n  .prose :where(h1):not(:where(.not-prose, .not-prose *)) {\n    font-size: 2.25em;\n    line-height: 1.1;\n  }\n  .prose :where(h2):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.75em;\n  }\n  .prose :where(h3):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.5em;\n  }\n  .prose :where(h4):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.25em;\n  }\n  .prose :where(h5):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1.125em;\n  }\n  .prose :where(h6):not(:where(.not-prose, .not-prose *)) {\n    font-size: 1em;\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n    color: var(--link-color);\n    text-decoration: underline;\n    text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n    text-underline-offset: 4px;\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      transition: none;\n    }\n  }\n  .prose :where(a:not([class])):not(:where(.not-prose, .not-prose *)):hover {\n    text-decoration-color: var(--link-hover-color);\n  }\n  .prose :where(img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n  .prose :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n    padding-inline-start: calc(var(--content-gap) / 2);\n    margin: 0;\n    border-inline-start: 4px solid var(--border-color);\n  }\n  .prose :where(table):not(:where(.not-prose, .not-prose *)) {\n    width: 100%;\n    border-spacing: 0;\n    border-collapse: collapse;\n  }\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) td,\n  .prose :where(table:not([class])):not(:where(.not-prose, .not-prose *)) th {\n    padding: 6px 12px;\n    text-align: inherit;\n    border: 1px solid var(--border-color);\n  }\n  .prose :where(dt):not(:where(.not-prose, .not-prose *)) {\n    font-weight: 500;\n  }\n  .prose :where(video, img):not(:where(.not-prose, .not-prose *)) {\n    max-width: 100%;\n  }\n}\n@layer layout {\n  .container,\n  .container-fluid,\n  .\\32 xl\\:container,\n  .xl\\:container,\n  .lg\\:container,\n  .md\\:container,\n  .sm\\:container {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-inline: auto;\n  }\n  @media (width >= 576px) {\n    .sm\\:container, .container {\n      max-width: 540px;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:container, .sm\\:container, .container {\n      max-width: 720px;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 960px;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1200px;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:container, .xl\\:container, .lg\\:container, .md\\:container, .sm\\:container, .container {\n      max-width: 1440px;\n    }\n  }\n}\n@layer layout {\n  .row {\n    --gutter-x: 1.5rem;\n    --gutter-y: 0;\n    display: flex;\n    flex-wrap: wrap;\n    margin-inline: calc(-0.5 * var(--gutter-x));\n    margin-top: calc(-1 * var(--gutter-y));\n  }\n  .row > * {\n    flex-shrink: 0;\n    width: 100%;\n    max-width: 100%;\n    padding-inline: calc(var(--gutter-x) * 0.5);\n    margin-top: var(--gutter-y);\n  }\n  .col {\n    flex: 1 0 0;\n  }\n  .row-cols-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .row-cols-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .row-cols-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .row-cols-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .row-cols-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .row-cols-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n  .row-cols-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n  .col-1 {\n    flex: 0 0 auto;\n    width: 8.3333333333%;\n  }\n  .col-2 {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n  .col-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n  .col-4 {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n  .col-5 {\n    flex: 0 0 auto;\n    width: 41.6666666667%;\n  }\n  .col-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n  .col-7 {\n    flex: 0 0 auto;\n    width: 58.3333333333%;\n  }\n  .col-8 {\n    flex: 0 0 auto;\n    width: 66.6666666667%;\n  }\n  .col-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n  .col-10 {\n    flex: 0 0 auto;\n    width: 83.3333333333%;\n  }\n  .col-11 {\n    flex: 0 0 auto;\n    width: 91.6666666667%;\n  }\n  .col-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n  .offset-1 {\n    margin-inline-start: 8.3333333333%;\n  }\n  .offset-2 {\n    margin-inline-start: 16.6666666667%;\n  }\n  .offset-3 {\n    margin-inline-start: 25%;\n  }\n  .offset-4 {\n    margin-inline-start: 33.3333333333%;\n  }\n  .offset-5 {\n    margin-inline-start: 41.6666666667%;\n  }\n  .offset-6 {\n    margin-inline-start: 50%;\n  }\n  .offset-7 {\n    margin-inline-start: 58.3333333333%;\n  }\n  .offset-8 {\n    margin-inline-start: 66.6666666667%;\n  }\n  .offset-9 {\n    margin-inline-start: 75%;\n  }\n  .offset-10 {\n    margin-inline-start: 83.3333333333%;\n  }\n  .offset-11 {\n    margin-inline-start: 91.6666666667%;\n  }\n  .g-0,\n  .gx-0 {\n    --gutter-x: 0;\n  }\n  .g-0,\n  .gy-0 {\n    --gutter-y: 0;\n  }\n  .g-1,\n  .gx-1 {\n    --gutter-x: 0.25rem;\n  }\n  .g-1,\n  .gy-1 {\n    --gutter-y: 0.25rem;\n  }\n  .g-2,\n  .gx-2 {\n    --gutter-x: 0.5rem;\n  }\n  .g-2,\n  .gy-2 {\n    --gutter-y: 0.5rem;\n  }\n  .g-3,\n  .gx-3 {\n    --gutter-x: 0.75rem;\n  }\n  .g-3,\n  .gy-3 {\n    --gutter-y: 0.75rem;\n  }\n  .g-4,\n  .gx-4 {\n    --gutter-x: 1rem;\n  }\n  .g-4,\n  .gy-4 {\n    --gutter-y: 1rem;\n  }\n  .g-5,\n  .gx-5 {\n    --gutter-x: 1.25rem;\n  }\n  .g-5,\n  .gy-5 {\n    --gutter-y: 1.25rem;\n  }\n  .g-6,\n  .gx-6 {\n    --gutter-x: 1.5rem;\n  }\n  .g-6,\n  .gy-6 {\n    --gutter-y: 1.5rem;\n  }\n  .g-7,\n  .gx-7 {\n    --gutter-x: 2rem;\n  }\n  .g-7,\n  .gy-7 {\n    --gutter-y: 2rem;\n  }\n  .g-8,\n  .gx-8 {\n    --gutter-x: 2.5rem;\n  }\n  .g-8,\n  .gy-8 {\n    --gutter-y: 2.5rem;\n  }\n  .g-9,\n  .gx-9 {\n    --gutter-x: 3rem;\n  }\n  .g-9,\n  .gy-9 {\n    --gutter-y: 3rem;\n  }\n  @media (width >= 576px) {\n    .sm\\:col {\n      flex: 1 0 0;\n    }\n    .sm\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .sm\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .sm\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .sm\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .sm\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .sm\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .sm\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .sm\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .sm\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .sm\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .sm\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .sm\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .sm\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .sm\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .sm\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .sm\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .sm\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .sm\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .sm\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .sm\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .sm\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .sm\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .sm\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .sm\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .sm\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .sm\\:g-0,\n    .sm\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .sm\\:g-0,\n    .sm\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .sm\\:g-1,\n    .sm\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .sm\\:g-1,\n    .sm\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .sm\\:g-2,\n    .sm\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .sm\\:g-3,\n    .sm\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .sm\\:g-4,\n    .sm\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .sm\\:g-5,\n    .sm\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .sm\\:g-6,\n    .sm\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .sm\\:g-7,\n    .sm\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .sm\\:g-8,\n    .sm\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .sm\\:g-9,\n    .sm\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:col {\n      flex: 1 0 0;\n    }\n    .md\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .md\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .md\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .md\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .md\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .md\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .md\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .md\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .md\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .md\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .md\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .md\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .md\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .md\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .md\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .md\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .md\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .md\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .md\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .md\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .md\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .md\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .md\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .md\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .md\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .md\\:g-0,\n    .md\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .md\\:g-0,\n    .md\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .md\\:g-1,\n    .md\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .md\\:g-1,\n    .md\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .md\\:g-2,\n    .md\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .md\\:g-2,\n    .md\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .md\\:g-3,\n    .md\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .md\\:g-3,\n    .md\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .md\\:g-4,\n    .md\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .md\\:g-4,\n    .md\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .md\\:g-5,\n    .md\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .md\\:g-5,\n    .md\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .md\\:g-6,\n    .md\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .md\\:g-6,\n    .md\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .md\\:g-7,\n    .md\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .md\\:g-7,\n    .md\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .md\\:g-8,\n    .md\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .md\\:g-8,\n    .md\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .md\\:g-9,\n    .md\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .md\\:g-9,\n    .md\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:col {\n      flex: 1 0 0;\n    }\n    .lg\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .lg\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .lg\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .lg\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .lg\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .lg\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .lg\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .lg\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .lg\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .lg\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .lg\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .lg\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .lg\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .lg\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .lg\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .lg\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .lg\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .lg\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .lg\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .lg\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .lg\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .lg\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .lg\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .lg\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .lg\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .lg\\:g-0,\n    .lg\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .lg\\:g-0,\n    .lg\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .lg\\:g-1,\n    .lg\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .lg\\:g-1,\n    .lg\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .lg\\:g-2,\n    .lg\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .lg\\:g-3,\n    .lg\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .lg\\:g-4,\n    .lg\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .lg\\:g-5,\n    .lg\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .lg\\:g-6,\n    .lg\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .lg\\:g-7,\n    .lg\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .lg\\:g-8,\n    .lg\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .lg\\:g-9,\n    .lg\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:col {\n      flex: 1 0 0;\n    }\n    .xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .xl\\:g-0,\n    .xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .xl\\:g-0,\n    .xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .xl\\:g-1,\n    .xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .xl\\:g-1,\n    .xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .xl\\:g-2,\n    .xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .xl\\:g-3,\n    .xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .xl\\:g-4,\n    .xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .xl\\:g-5,\n    .xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .xl\\:g-6,\n    .xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .xl\\:g-7,\n    .xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .xl\\:g-8,\n    .xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .xl\\:g-9,\n    .xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:col {\n      flex: 1 0 0;\n    }\n    .\\32 xl\\:row-cols-auto > * {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:row-cols-1 > * {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:row-cols-2 > * {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:row-cols-3 > * {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:row-cols-4 > * {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:row-cols-5 > * {\n      flex: 0 0 auto;\n      width: 20%;\n    }\n    .\\32 xl\\:row-cols-6 > * {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-auto {\n      flex: 0 0 auto;\n      width: auto;\n    }\n    .\\32 xl\\:col-1 {\n      flex: 0 0 auto;\n      width: 8.3333333333%;\n    }\n    .\\32 xl\\:col-2 {\n      flex: 0 0 auto;\n      width: 16.6666666667%;\n    }\n    .\\32 xl\\:col-3 {\n      flex: 0 0 auto;\n      width: 25%;\n    }\n    .\\32 xl\\:col-4 {\n      flex: 0 0 auto;\n      width: 33.3333333333%;\n    }\n    .\\32 xl\\:col-5 {\n      flex: 0 0 auto;\n      width: 41.6666666667%;\n    }\n    .\\32 xl\\:col-6 {\n      flex: 0 0 auto;\n      width: 50%;\n    }\n    .\\32 xl\\:col-7 {\n      flex: 0 0 auto;\n      width: 58.3333333333%;\n    }\n    .\\32 xl\\:col-8 {\n      flex: 0 0 auto;\n      width: 66.6666666667%;\n    }\n    .\\32 xl\\:col-9 {\n      flex: 0 0 auto;\n      width: 75%;\n    }\n    .\\32 xl\\:col-10 {\n      flex: 0 0 auto;\n      width: 83.3333333333%;\n    }\n    .\\32 xl\\:col-11 {\n      flex: 0 0 auto;\n      width: 91.6666666667%;\n    }\n    .\\32 xl\\:col-12 {\n      flex: 0 0 auto;\n      width: 100%;\n    }\n    .\\32 xl\\:offset-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:offset-1 {\n      margin-inline-start: 8.3333333333%;\n    }\n    .\\32 xl\\:offset-2 {\n      margin-inline-start: 16.6666666667%;\n    }\n    .\\32 xl\\:offset-3 {\n      margin-inline-start: 25%;\n    }\n    .\\32 xl\\:offset-4 {\n      margin-inline-start: 33.3333333333%;\n    }\n    .\\32 xl\\:offset-5 {\n      margin-inline-start: 41.6666666667%;\n    }\n    .\\32 xl\\:offset-6 {\n      margin-inline-start: 50%;\n    }\n    .\\32 xl\\:offset-7 {\n      margin-inline-start: 58.3333333333%;\n    }\n    .\\32 xl\\:offset-8 {\n      margin-inline-start: 66.6666666667%;\n    }\n    .\\32 xl\\:offset-9 {\n      margin-inline-start: 75%;\n    }\n    .\\32 xl\\:offset-10 {\n      margin-inline-start: 83.3333333333%;\n    }\n    .\\32 xl\\:offset-11 {\n      margin-inline-start: 91.6666666667%;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gx-0 {\n      --gutter-x: 0;\n    }\n    .\\32 xl\\:g-0,\n    .\\32 xl\\:gy-0 {\n      --gutter-y: 0;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gx-1 {\n      --gutter-x: 0.25rem;\n    }\n    .\\32 xl\\:g-1,\n    .\\32 xl\\:gy-1 {\n      --gutter-y: 0.25rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gx-2 {\n      --gutter-x: 0.5rem;\n    }\n    .\\32 xl\\:g-2,\n    .\\32 xl\\:gy-2 {\n      --gutter-y: 0.5rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gx-3 {\n      --gutter-x: 0.75rem;\n    }\n    .\\32 xl\\:g-3,\n    .\\32 xl\\:gy-3 {\n      --gutter-y: 0.75rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gx-4 {\n      --gutter-x: 1rem;\n    }\n    .\\32 xl\\:g-4,\n    .\\32 xl\\:gy-4 {\n      --gutter-y: 1rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gx-5 {\n      --gutter-x: 1.25rem;\n    }\n    .\\32 xl\\:g-5,\n    .\\32 xl\\:gy-5 {\n      --gutter-y: 1.25rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gx-6 {\n      --gutter-x: 1.5rem;\n    }\n    .\\32 xl\\:g-6,\n    .\\32 xl\\:gy-6 {\n      --gutter-y: 1.5rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gx-7 {\n      --gutter-x: 2rem;\n    }\n    .\\32 xl\\:g-7,\n    .\\32 xl\\:gy-7 {\n      --gutter-y: 2rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gx-8 {\n      --gutter-x: 2.5rem;\n    }\n    .\\32 xl\\:g-8,\n    .\\32 xl\\:gy-8 {\n      --gutter-y: 2.5rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gx-9 {\n      --gutter-x: 3rem;\n    }\n    .\\32 xl\\:g-9,\n    .\\32 xl\\:gy-9 {\n      --gutter-y: 3rem;\n    }\n  }\n  .grid {\n    --columns: 12;\n    --rows: 1;\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-rows: repeat(var(--rows), 1fr);\n    grid-template-columns: repeat(var(--columns), 1fr);\n    gap: var(--gap);\n  }\n  .g-col-1 {\n    grid-column: auto/span 1;\n  }\n  .g-col-2 {\n    grid-column: auto/span 2;\n  }\n  .g-col-3 {\n    grid-column: auto/span 3;\n  }\n  .g-col-4 {\n    grid-column: auto/span 4;\n  }\n  .g-col-5 {\n    grid-column: auto/span 5;\n  }\n  .g-col-6 {\n    grid-column: auto/span 6;\n  }\n  .g-col-7 {\n    grid-column: auto/span 7;\n  }\n  .g-col-8 {\n    grid-column: auto/span 8;\n  }\n  .g-col-9 {\n    grid-column: auto/span 9;\n  }\n  .g-col-10 {\n    grid-column: auto/span 10;\n  }\n  .g-col-11 {\n    grid-column: auto/span 11;\n  }\n  .g-col-12 {\n    grid-column: auto/span 12;\n  }\n  .g-start-1 {\n    grid-column-start: 1;\n  }\n  .g-start-2 {\n    grid-column-start: 2;\n  }\n  .g-start-3 {\n    grid-column-start: 3;\n  }\n  .g-start-4 {\n    grid-column-start: 4;\n  }\n  .g-start-5 {\n    grid-column-start: 5;\n  }\n  .g-start-6 {\n    grid-column-start: 6;\n  }\n  .g-start-7 {\n    grid-column-start: 7;\n  }\n  .g-start-8 {\n    grid-column-start: 8;\n  }\n  .g-start-9 {\n    grid-column-start: 9;\n  }\n  .g-start-10 {\n    grid-column-start: 10;\n  }\n  .g-start-11 {\n    grid-column-start: 11;\n  }\n  @media (width >= 576px) {\n    .sm\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .sm\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .sm\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .sm\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .sm\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .sm\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .sm\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .sm\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .sm\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .sm\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .sm\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .sm\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .sm\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .sm\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .sm\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .sm\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .sm\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .sm\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .sm\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .sm\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .sm\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .sm\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .sm\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .md\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .md\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .md\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .md\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .md\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .md\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .md\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .md\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .md\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .md\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .md\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .md\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .md\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .md\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .md\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .md\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .md\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .md\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .md\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .md\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .md\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .md\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .lg\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .lg\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .lg\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .lg\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .lg\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .lg\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .lg\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .lg\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .lg\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .lg\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .lg\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .lg\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .lg\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .lg\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .lg\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .lg\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .lg\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .lg\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .lg\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .lg\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .lg\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .lg\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:g-col-1 {\n      grid-column: auto/span 1;\n    }\n    .\\32 xl\\:g-col-2 {\n      grid-column: auto/span 2;\n    }\n    .\\32 xl\\:g-col-3 {\n      grid-column: auto/span 3;\n    }\n    .\\32 xl\\:g-col-4 {\n      grid-column: auto/span 4;\n    }\n    .\\32 xl\\:g-col-5 {\n      grid-column: auto/span 5;\n    }\n    .\\32 xl\\:g-col-6 {\n      grid-column: auto/span 6;\n    }\n    .\\32 xl\\:g-col-7 {\n      grid-column: auto/span 7;\n    }\n    .\\32 xl\\:g-col-8 {\n      grid-column: auto/span 8;\n    }\n    .\\32 xl\\:g-col-9 {\n      grid-column: auto/span 9;\n    }\n    .\\32 xl\\:g-col-10 {\n      grid-column: auto/span 10;\n    }\n    .\\32 xl\\:g-col-11 {\n      grid-column: auto/span 11;\n    }\n    .\\32 xl\\:g-col-12 {\n      grid-column: auto/span 12;\n    }\n    .\\32 xl\\:g-start-1 {\n      grid-column-start: 1;\n    }\n    .\\32 xl\\:g-start-2 {\n      grid-column-start: 2;\n    }\n    .\\32 xl\\:g-start-3 {\n      grid-column-start: 3;\n    }\n    .\\32 xl\\:g-start-4 {\n      grid-column-start: 4;\n    }\n    .\\32 xl\\:g-start-5 {\n      grid-column-start: 5;\n    }\n    .\\32 xl\\:g-start-6 {\n      grid-column-start: 6;\n    }\n    .\\32 xl\\:g-start-7 {\n      grid-column-start: 7;\n    }\n    .\\32 xl\\:g-start-8 {\n      grid-column-start: 8;\n    }\n    .\\32 xl\\:g-start-9 {\n      grid-column-start: 9;\n    }\n    .\\32 xl\\:g-start-10 {\n      grid-column-start: 10;\n    }\n    .\\32 xl\\:g-start-11 {\n      grid-column-start: 11;\n    }\n  }\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n  .grid-fill {\n    --gap: 1.5rem;\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n}\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\n    color: var(--label-color, var(--fg-body));\n  }\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0;\n  }\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n@layer forms {\n  .form-text {\n    --form-text-margin-top: 0.25rem;\n    --form-text-font-size: var(--font-size-sm);\n    --form-text-color: var(--fg-2);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n@layer forms {\n  .form-control {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n    box-shadow: var(--control-box-shadow);\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control {\n      transition: none;\n    }\n  }\n  .form-control:focus-visible {\n    --focus-ring-offset: -1px;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-control::placeholder {\n    color: var(--control-placeholder-color);\n    opacity: 1;\n  }\n  .form-control:disabled {\n    color: var(--control-disabled-color);\n    background-color: var(--control-disabled-bg);\n    border-color: var(--control-disabled-border-color);\n    opacity: 1;\n  }\n  .form-control::-webkit-datetime-edit {\n    display: block;\n    height: 1.5rem;\n    padding: 0;\n    margin-bottom: -0.125rem;\n  }\n  .form-control::-webkit-datetime-edit-fields-wrapper {\n    height: 1.5rem;\n  }\n  .form-control[type=file] {\n    overflow: hidden;\n  }\n  .form-control[type=file]:not(:disabled, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control::file-selector-button {\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n    margin-inline-end: var(--control-padding-x);\n    color: var(--control-fg);\n    pointer-events: none;\n    background-color: var(--control-action-bg);\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n    border-inline-end-width: var(--control-border-width);\n    border-radius: 0;\n    transition: var(--control-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-control::file-selector-button {\n      transition: none;\n    }\n  }\n  .form-control:hover:not(:disabled, [readonly])::file-selector-button {\n    background-color: var(--control-action-hover-bg);\n  }\n  .form-control-plaintext {\n    --control-min-height: var(--btn-input-min-height);\n    --control-padding-y: var(--btn-input-padding-y);\n    --control-padding-x: var(--btn-input-padding-x);\n    --control-font-size: var(--btn-input-font-size);\n    --control-line-height: var(--btn-input-line-height);\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    --control-box-shadow: var(--box-shadow-inset);\n    --control-action-bg: var(--bg-1);\n    --control-action-hover-bg: var(--bg-2);\n    --control-transition-property: border-color, box-shadow;\n    --control-transition-timing: 0.15s ease-in-out;\n    --control-transition: var(--control-transition-property) var(--control-transition-timing);\n    --control-placeholder-color: var(--fg-3);\n    --control-disabled-color: var(--control-fg);\n    --control-disabled-bg: var(--bg-2);\n    --control-disabled-border-color: var(--control-border-color);\n    --control-select-bg: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%2300000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    --control-select-bg-position: right 0.75rem center;\n    --control-select-bg-size: 16px 12px;\n    --control-select-bg-dark: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e\");\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0;\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n  }\n  .form-control-plaintext:focus {\n    outline: 0;\n  }\n  .form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n    padding-inline: 0;\n  }\n  select.form-control,\n  .form-control-caret {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n  }\n  select.form-control[multiple], select.form-control[size]:not([size=\"1\"]),\n  .form-control-caret[multiple],\n  .form-control-caret[size]:not([size=\"1\"]) {\n    padding-inline-end: var(--control-padding-x);\n    background-image: none;\n  }\n  [data-bs-theme=dark] select.form-control,\n  [data-bs-theme=dark] .form-control-caret {\n    background-image: var(--control-select-bg-dark);\n  }\n  .form-control-sm {\n    --control-min-height: var(--btn-input-sm-min-height);\n    --control-padding-y: var(--btn-input-sm-padding-y);\n    --control-padding-x: var(--btn-input-sm-padding-x);\n    --control-font-size: var(--btn-input-sm-font-size);\n    --control-line-height: var(--btn-input-sm-line-height);\n    --control-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .form-control-lg {\n    --control-min-height: var(--btn-input-lg-min-height);\n    --control-padding-y: var(--btn-input-lg-padding-y);\n    --control-padding-x: var(--btn-input-lg-padding-x);\n    --control-font-size: var(--btn-input-lg-font-size);\n    --control-line-height: var(--btn-input-lg-line-height);\n    --control-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n  }\n  .form-control-color:not(:disabled, [readonly]) {\n    cursor: pointer;\n  }\n  .form-control-color::-moz-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-control-color::-webkit-color-swatch {\n    border: 0 !important;\n    border-radius: var(--radius-5);\n  }\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n  }\n  .form-ghost:focus {\n    outline: 0;\n  }\n  .form-ghost::placeholder {\n    color: var(--fg-3);\n    opacity: 1;\n  }\n  .form-ghost:disabled {\n    color: var(--fg-4);\n    cursor: not-allowed;\n  }\n}\n@layer forms {\n  .check {\n    --check-size: 1.25rem;\n    --check-margin-block: 0.125rem;\n    --check-bg: var(--bg-body);\n    --check-border-color: var(--border-color);\n    --check-border-radius: var(--radius-5);\n    --check-icon-checked: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/%3e%3c/svg%3e\");\n    --check-icon-indeterminate: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/%3e%3c/svg%3e\");\n    --check-checked-bg: var(--control-checked-bg);\n    --check-checked-border-color: var(--control-checked-border-color);\n    --check-indeterminate-bg: var(--control-checked-bg);\n    --check-indeterminate-border-color: var(--control-checked-border-color);\n    --check-active-bg: var(--control-active-bg);\n    --check-active-border-color: var(--control-active-border-color);\n    --check-disabled-bg: var(--control-disabled-bg);\n    --check-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    border-radius: 33%;\n  }\n  .check:checked, .check:indeterminate {\n    background-color: var(--theme-bg, var(--check-checked-bg));\n    border-color: var(--theme-bg, var(--check-checked-border-color));\n  }\n  .check:checked::before, .check:indeterminate::before {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    content: \"\";\n    background-color: var(--theme-contrast, var(--primary-contrast));\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .check:checked::before {\n    mask-image: var(--check-icon-checked);\n  }\n  .check:indeterminate::before {\n    mask-image: var(--check-icon-indeterminate);\n  }\n  .check:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: -1px;\n  }\n  .check:disabled {\n    --check-bg: var(--check-disabled-bg);\n  }\n  .check:disabled ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .check:disabled:checked {\n    opacity: var(--check-disabled-opacity);\n  }\n  .check-sm {\n    --check-size: 1rem;\n  }\n  .check-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n  }\n  .check-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .radio {\n    --radio-size: 1.25rem;\n    --radio-margin-block: 0.125rem;\n    --radio-bg: var(--bg-body);\n    --radio-border-color: var(--border-color);\n    --radio-checked-bg: var(--control-checked-bg);\n    --radio-checked-border-color: var(--control-checked-border-color);\n    --radio-disabled-bg: var(--control-disabled-bg);\n    --radio-disabled-opacity: var(--control-disabled-opacity);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    border-radius: 50%;\n  }\n  .radio:checked {\n    color: var(--theme-contrast, var(--primary-contrast));\n    background-color: var(--theme-bg, var(--radio-checked-bg));\n    border-color: var(--theme-bg, var(--radio-checked-border-color));\n  }\n  .radio:checked::before {\n    position: absolute;\n    inset: calc(var(--radio-size) * 0.25);\n    content: \"\";\n    background-color: currentcolor;\n    border-radius: 50%;\n  }\n  .radio:disabled {\n    --radio-bg: var(--radio-disabled-bg);\n  }\n  .radio:disabled ~ label {\n    color: var(--secondary-fg);\n    cursor: default;\n  }\n  .radio:disabled:checked {\n    opacity: var(--radio-disabled-opacity);\n  }\n  .radio:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .radio-sm {\n    --radio-size: 1rem;\n  }\n  .radio-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n  }\n  .radio-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .switch {\n    --switch-height: 1.25rem;\n    --switch-width: calc(var(--switch-height) * 1.75);\n    --switch-padding: 0.0625rem;\n    --switch-margin-block: 0.125rem;\n    --switch-bg: var(--bg-3);\n    --switch-border-width: var(--border-width);\n    --switch-border-color: var(--border-color);\n    --switch-indicator-bg: var(--white);\n    --switch-indicator-width: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-indicator-height: calc(var(--switch-height) - var(--switch-padding) * 2 - var(--switch-border-width) * 2);\n    --switch-checked-bg: var(--control-checked-bg);\n    --switch-checked-border-color: var(--switch-checked-bg);\n    --switch-checked-indicator-bg: var(--white);\n    --switch-disabled-bg: var(--control-disabled-bg);\n    --switch-disabled-indicator-bg: var(--fg-3);\n    position: relative;\n    flex-shrink: 0;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.05);\n    transition: background-color 0.15s ease-in-out;\n  }\n  .switch::before {\n    position: absolute;\n    inset-block: var(--switch-padding);\n    inset-inline-start: var(--switch-padding);\n    width: var(--switch-indicator-width);\n    height: var(--switch-indicator-height);\n    content: \"\";\n    background-color: var(--theme-contrast, var(--switch-indicator-bg));\n    border-radius: 10rem;\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);\n    transition: inset-inline-start 0.15s ease-in-out;\n  }\n  .switch input {\n    position: absolute;\n    inset: 0;\n    appearance: none;\n    background-color: transparent;\n    outline: 0;\n  }\n  .switch:focus-within {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .switch:has(input:disabled:not(:checked)) {\n    --switch-bg: var(--switch-disabled-bg);\n    --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n  }\n  .switch:has(input:disabled:not(:checked))::before {\n    opacity: 0.4;\n  }\n  .switch:has(input:disabled:not(:checked)) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch:has(input:checked) {\n    background-color: var(--theme-bg, var(--switch-checked-bg));\n    border-color: var(--theme-bg, var(--switch-checked-border-color));\n  }\n  .switch:has(input:checked)::before {\n    inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n  }\n  .switch:has(input:checked:disabled) {\n    opacity: 0.65;\n  }\n  .switch:has(input:checked:disabled) ~ label {\n    color: var(--fg-3);\n    cursor: default;\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n  }\n  .switch-sm + label {\n    font-size: var(--font-size-sm);\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n  }\n  .switch-lg + label {\n    font-size: var(--font-size-lg);\n  }\n}\n@layer forms {\n  .form-range {\n    --range-track-width: 100%;\n    --range-track-height: 0.5rem;\n    --range-track-cursor: pointer;\n    --range-track-bg: var(--bg-3);\n    --range-track-border-radius: 1rem;\n    --range-track-fill-bg: var(--primary-base);\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3));\n    --range-thumb-width: 1rem;\n    --range-thumb-height: var(--range-thumb-width);\n    --range-thumb-bg: var(--primary-base);\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color);\n    --range-thumb-border-radius: 1rem;\n    --range-thumb-box-shadow: 0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%);\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body));\n    --range-thumb-disabled-bg: var(--fg-3);\n    --range-thumb-transition-property: background-color, border-color, box-shadow;\n    --range-thumb-transition-timing: 0.15s ease-in-out;\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing);\n    --range-tick-width: var(--border-width);\n    --range-tick-height: 0.5rem;\n    --range-tick-bg: var(--border-color);\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n  .form-range-input {\n    display: block;\n    width: 100%;\n    height: calc(var(--range-thumb-height) + var(--focus-ring-width) * 2);\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n  }\n  .form-range-input:hover::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:hover::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid color-mix(in oklch, var(--primary-focus-ring), transparent);\n  }\n  .form-range-input:focus-visible {\n    outline: 0;\n  }\n  .form-range-input:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 0;\n  }\n  .form-range-input::-moz-focus-outer {\n    border: 0;\n  }\n  .form-range-input::-webkit-slider-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    background-image: var(--gradient);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range-input::-webkit-slider-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-webkit-slider-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-thumb {\n    margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * 0.5);\n  }\n  .form-range-input::-moz-range-thumb {\n    width: var(--range-thumb-width);\n    height: var(--range-thumb-height);\n    appearance: none;\n    background-color: var(--range-thumb-bg);\n    background-image: var(--gradient);\n    border: var(--range-thumb-border);\n    border-radius: var(--range-thumb-border-radius);\n    box-shadow: var(--range-thumb-box-shadow);\n    transition: var(--range-thumb-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-range-input::-moz-range-thumb {\n      transition: none;\n    }\n  }\n  .form-range-input::-moz-range-thumb:active {\n    background-color: var(--range-thumb-active-bg);\n    background-image: var(--gradient);\n  }\n  .form-range-input::-webkit-slider-runnable-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input::-moz-range-track {\n    width: var(--range-track-width);\n    height: var(--range-track-height);\n    color: transparent;\n    cursor: var(--range-track-cursor);\n    background-color: var(--range-track-bg);\n    background-image: linear-gradient(to right, var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%), transparent calc(var(--range-fill, 0) * 100%));\n    border-color: transparent;\n    border-radius: var(--range-track-border-radius);\n    box-shadow: var(--range-track-box-shadow);\n  }\n  .form-range-input:disabled {\n    pointer-events: none;\n  }\n  .form-range-input:disabled::-webkit-slider-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-thumb {\n    background-color: var(--range-thumb-disabled-bg);\n  }\n  .form-range-input:disabled::-webkit-slider-runnable-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-input:disabled::-moz-range-track {\n    --range-track-fill-bg: var(--range-track-disabled-bg);\n  }\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc(var(--range-thumb-width) * 0.5 + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n  }\n  .form-range-bubble .tooltip-arrow {\n    position: absolute;\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n    left: 50%;\n    transform: translateX(-50%);\n  }\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * 0.25);\n  }\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    width: 0;\n  }\n  .form-range-tick::before {\n    width: var(--range-tick-width);\n    height: var(--range-tick-height);\n    content: \"\";\n    background-color: var(--range-tick-bg);\n  }\n  .form-range-tick:first-child {\n    align-items: flex-start;\n  }\n  .form-range-tick:last-child {\n    align-items: flex-end;\n  }\n  .form-range-tick-label {\n    margin-top: 0.125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n@layer forms {\n  .form-floating {\n    --form-floating-height: calc(3.75rem + var(--border-width) * 2);\n    --form-floating-line-height: 1.25;\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25);\n    --form-floating-padding-y: 1rem;\n    --form-floating-input-padding-t: 1.625rem;\n    --form-floating-input-padding-b: 0.625rem;\n    --form-floating-label-height: 1.5em;\n    --form-floating-label-bg: var(--btn-input-bg);\n    --form-floating-label-disabled-bg: var(--bg-2);\n    --form-floating-label-opacity: 0.65;\n    --form-floating-label-transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n    --form-floating-label-disabled-color: var(--fg-3);\n    --form-floating-transition-property: opacity, transform;\n    --form-floating-transition-timing: 0.1s ease-in-out;\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing);\n    position: relative;\n  }\n  .form-floating > label {\n    position: absolute;\n    inset-block-start: 0;\n    inset-inline-start: 0;\n    z-index: 2;\n    display: flex;\n    align-items: center;\n    max-width: 100%;\n    height: 100%;\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    overflow: hidden;\n    color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n    text-align: start;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n    pointer-events: none;\n    border: var(--border-width) solid transparent;\n    transform-origin: 0 0;\n    transition: var(--form-floating-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .form-floating > label {\n      transition: none;\n    }\n  }\n  .form-floating > label:has(~ textarea) {\n    align-items: flex-start;\n  }\n  .form-floating > .form-control,\n  .form-floating > .form-control-plaintext {\n    height: var(--form-floating-height);\n    min-height: var(--form-floating-height);\n    padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n    line-height: var(--form-floating-line-height);\n  }\n  .form-floating > .form-control::placeholder,\n  .form-floating > .form-control-plaintext::placeholder {\n    color: transparent;\n  }\n  .form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown),\n  .form-floating > .form-control-plaintext:focus,\n  .form-floating > .form-control-plaintext:not(:placeholder-shown) {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > .form-control:-webkit-autofill,\n  .form-floating > .form-control-plaintext:-webkit-autofill {\n    padding-top: var(--form-floating-input-padding-t);\n    padding-bottom: var(--form-floating-input-padding-b);\n  }\n  .form-floating > label:has(~ .form-control:focus),\n  .form-floating > label:has(~ .form-control:not(:placeholder-shown)),\n  .form-floating > label:has(~ .form-control-plaintext) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ .form-control:-webkit-autofill) {\n    transform: var(--form-floating-label-transform);\n  }\n  .form-floating > label:has(~ textarea:focus)::after,\n  .form-floating > label:has(~ textarea:not(:placeholder-shown))::after {\n    position: absolute;\n    inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * 0.5);\n    z-index: -1;\n    height: var(--form-floating-label-height);\n    content: \"\";\n    background-color: var(--form-floating-label-bg);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .form-floating > label:has(~ textarea:disabled)::after {\n    background-color: var(--form-floating-label-disabled-bg);\n  }\n  .form-floating > label:has(~ .form-control-plaintext) {\n    border-width: var(--control-border-width) 0;\n  }\n  .form-floating > label:has(~ :disabled),\n  .form-floating > label:has(~ .form-control:disabled) {\n    color: var(--form-floating-label-disabled-color);\n  }\n}\n@layer components {\n  .input-group {\n    --input-group-addon-padding-y: var(--btn-input-padding-y);\n    --input-group-addon-padding-x: var(--btn-input-padding-x);\n    --input-group-addon-font-size: var(--btn-input-font-size);\n    --input-group-addon-line-height: var(--btn-input-line-height);\n    --input-group-addon-color: var(--fg-body);\n    --input-group-addon-bg: var(--bg-2);\n    --input-group-addon-border-color: var(--border-color);\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    width: 100%;\n  }\n  .input-group > .form-control,\n  .input-group > .form-floating {\n    position: relative;\n    flex: 1 1 auto;\n    width: 1%;\n    min-width: 0;\n  }\n  .input-group > .form-control:focus,\n  .input-group > .form-floating:focus-within {\n    z-index: 5;\n  }\n  .input-group > .input-group-btn {\n    position: relative;\n    z-index: 2;\n  }\n  .input-group > .input-group-btn:focus {\n    z-index: 5;\n  }\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size);\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    border-radius: var(--btn-input-border-radius);\n  }\n  .input-group-sm > .form-control,\n  .input-group-sm > .input-group-text,\n  .input-group-sm > .btn {\n    min-height: var(--btn-input-sm-min-height);\n    padding: var(--btn-input-sm-padding-y) var(--btn-input-sm-padding-x);\n    font-size: var(--btn-input-sm-font-size);\n    border-radius: var(--btn-input-sm-border-radius);\n  }\n  .input-group-lg > .form-control,\n  .input-group-lg > .input-group-text,\n  .input-group-lg > .btn {\n    min-height: var(--btn-input-lg-min-height);\n    padding: var(--btn-input-lg-padding-y) var(--btn-input-lg-padding-x);\n    font-size: var(--btn-input-lg-font-size);\n    border-radius: var(--btn-input-lg-border-radius);\n  }\n  .input-group > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n  .input-group > .menu-toggle-split:nth-last-child(n+3),\n  .input-group > .form-floating:not(:last-child) > .form-control,\n  .input-group > .form-floating:not(:last-child) > .form-select {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .input-group > :not(:first-child, .menu, .input-group-ignore) {\n    margin-inline-start: calc(-1 * var(--border-width));\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .input-group > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n    border-start-start-radius: var(--btn-input-border-radius);\n    border-end-start-radius: var(--btn-input-border-radius);\n  }\n  .input-group > .form-floating:not(:first-child) > .form-control,\n  .input-group > .form-floating:not(:first-child) > .form-select {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n}\n@layer forms {\n  .strength {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-segment {\n      transition: none;\n    }\n  }\n  .strength-segment.active {\n    background-color: var(--strength-color);\n  }\n  .strength[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n  }\n  .strength[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n  }\n  .strength[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n  }\n  .strength[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n  }\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    transition: color 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-text {\n      transition: none;\n    }\n  }\n  .strength-text:empty {\n    display: none;\n  }\n  .strength-bar {\n    --strength-height: 0.375rem;\n    --strength-gap: 0.25rem;\n    --strength-margin-top: 0.25rem;\n    --strength-border-radius: var(--radius-pill);\n    --strength-bg: var(--bg-2);\n    --strength-color: var(--bg-2);\n    --strength-weak-color: var(--danger-bg);\n    --strength-fair-color: var(--warning-bg);\n    --strength-good-color: var(--info-bg);\n    --strength-strong-color: var(--success-bg);\n    --strength-color: transparent;\n    --strength-width: 0%;\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    border-radius: var(--strength-border-radius);\n  }\n  .strength-bar::after {\n    display: block;\n    width: var(--strength-width);\n    height: 100%;\n    content: \"\";\n    background-color: var(--strength-color);\n    border-radius: var(--strength-border-radius);\n    transition: background-color 0.2s ease-in-out, width 0.3s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .strength-bar::after {\n      transition: none;\n    }\n  }\n  .strength-bar[data-bs-strength=weak] {\n    --strength-color: var(--strength-weak-color);\n    --strength-width: 25%;\n  }\n  .strength-bar[data-bs-strength=fair] {\n    --strength-color: var(--strength-fair-color);\n    --strength-width: 50%;\n  }\n  .strength-bar[data-bs-strength=good] {\n    --strength-color: var(--strength-good-color);\n    --strength-width: 75%;\n  }\n  .strength-bar[data-bs-strength=strong] {\n    --strength-color: var(--strength-strong-color);\n    --strength-width: 100%;\n  }\n}\n@layer components {\n  .otp {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-font-size);\n    --otp-gap: 0.5rem;\n    --otp-slot-fg: var(--btn-input-fg);\n    --otp-slot-bg: var(--btn-input-bg);\n    --otp-slot-border-width: var(--border-width);\n    --otp-slot-border-color: var(--border-color);\n    --otp-slot-border-radius: var(--radius-5);\n    position: relative;\n    display: flex;\n  }\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    pointer-events: auto;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n  }\n  .otp-rendered .otp-input::selection {\n    color: transparent;\n    background-color: transparent;\n  }\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none;\n  }\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    user-select: none;\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    border-radius: var(--otp-slot-border-radius);\n    box-shadow: var(--box-shadow-inset);\n    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .otp-slot {\n      transition: none;\n    }\n  }\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .otp-slot-active:not(.otp-slot-filled)::after {\n    width: 1px;\n    height: 50%;\n    content: \"\";\n    background-color: var(--otp-slot-fg);\n    animation: otp-caret-blink 1s step-end infinite;\n  }\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0;\n  }\n  .otp-connected .otp-slot:not(:first-child) {\n    margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n  }\n  .otp-connected .otp-slot:first-child {\n    border-start-start-radius: var(--otp-slot-border-radius);\n    border-end-start-radius: var(--otp-slot-border-radius);\n  }\n  .otp-connected .otp-slot:last-child {\n    border-start-end-radius: var(--otp-slot-border-radius);\n    border-end-end-radius: var(--otp-slot-border-radius);\n  }\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n  .otp-sm {\n    --otp-size: var(--btn-input-sm-min-height);\n    --otp-font-size: var(--btn-input-sm-font-size);\n  }\n  .otp-lg {\n    --otp-size: var(--btn-input-lg-min-height);\n    --otp-font-size: var(--btn-input-lg-font-size);\n  }\n}\n@keyframes otp-caret-blink {\n  0%, 100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\n  }\n}\n@layer forms {\n  .form-adorn {\n    --form-adorn-gap: 0.375rem;\n    --form-adorn-icon-size: 1rem;\n    --form-adorn-icon-color: var(--fg-2);\n    gap: var(--form-adorn-gap);\n    align-items: center;\n  }\n  .form-adorn:focus-visible {\n    outline: 0;\n  }\n  .form-adorn:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-adorn > .form-ghost {\n    flex: 1;\n    min-width: 0;\n  }\n  .form-adorn.form-adorn-end > .form-ghost {\n    order: -1;\n  }\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n  }\n  .form-adorn-icon > svg {\n    width: var(--form-adorn-icon-size);\n    height: var(--form-adorn-icon-size);\n  }\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n@layer forms {\n  .chip-input {\n    --chip-input-padding-y: 0.75rem;\n    --chip-input-padding-x: 0.75rem;\n    --chip-input-gap: 0.375rem;\n    --chip-input-ghost-min-width: 5rem;\n    --control-fg: var(--btn-input-fg);\n    --control-bg: var(--btn-input-bg);\n    --control-border-width: var(--border-width);\n    --control-border-color: var(--border-color);\n    --control-border-radius: var(--radius-5);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    border-radius: var(--control-border-radius);\n  }\n  .chip-input:focus-within {\n    --focus-ring-offset: -1px;\n    border-color: var(--focus-ring-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .chip-input > .form-ghost {\n    flex: 1 1 0;\n    min-width: var(--chip-input-ghost-min-width);\n    min-height: 1.75rem;\n  }\n  .chip-input.disabled, .chip-input:has(.form-ghost:disabled) {\n    cursor: not-allowed;\n    background-color: var(--bg-2);\n    opacity: 1;\n  }\n  .chip-input.disabled:focus-within, .chip-input:has(.form-ghost:disabled):focus-within {\n    border-color: var(--control-border-color);\n    outline: 0;\n  }\n  .chip-input.disabled > .chip, .chip-input:has(.form-ghost:disabled) > .chip {\n    pointer-events: none;\n    opacity: var(--control-disabled-opacity);\n  }\n}\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n  }\n  .combobox-toggle.show {\n    background-color: var(--bg-1);\n  }\n  .combobox-toggle:disabled, .combobox-toggle.disabled {\n    cursor: not-allowed;\n    opacity: 0.65;\n  }\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: 0.5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .combobox-caret {\n    flex-shrink: 0;\n    transition: transform 0.2s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .combobox-caret {\n      transition: none;\n    }\n  }\n  .show > .combobox-caret {\n    transform: rotate(180deg);\n  }\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, 0.25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n  .combobox-search-input {\n    width: 100%;\n  }\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-field > label,\n  .form-field > .form-label {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n  .form-field:has(> .check, > .radio, > .switch) {\n    grid-template-columns: auto 1fr;\n    column-gap: 0.5rem;\n    align-items: start;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .check,\n  .form-field:has(> .check, > .radio, > .switch) > .radio,\n  .form-field:has(> .check, > .radio, > .switch) > .switch {\n    grid-column: 1;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > :not(.check, .radio, .switch) {\n    grid-column: 2;\n  }\n  .form-field:has(> .check, > .radio, > .switch) > .form-label {\n    grid-column: 1/-1;\n  }\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * 0.75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    border-radius: var(--radius-7);\n  }\n  .form-field-card:hover {\n    background-color: var(--bg-1);\n  }\n  .form-field-card:has(:checked) {\n    background-color: var(--bg-1);\n    border-color: var(--border-color);\n  }\n  .form-field-card label::before {\n    position: absolute;\n    inset: 0;\n    content: \"\";\n  }\n  .form-group {\n    display: grid;\n    gap: 0.5rem;\n  }\n  .form-group > label,\n  .form-group > .form-label,\n  .form-group > legend {\n    justify-self: start;\n    margin-bottom: 0;\n  }\n}\n@layer components {\n  .valid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--success-fg);\n  }\n  .tooltip.valid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    color: var(--success-contrast);\n    text-align: center;\n    background-color: var(--success-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-valid ~ .valid-feedback,\n  .is-valid ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] :user-valid ~ .valid-feedback,\n  [data-bs-validate~=valid] :user-valid ~ .valid-tooltip {\n    display: block;\n  }\n  .form-control.is-valid {\n    --control-border-color: var(--success-border);\n  }\n  .form-control.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid {\n    --control-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-control:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--success-border);\n  }\n  .check.is-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  .check.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .check:user-valid {\n    --check-border-color: var(--success-border);\n    --check-checked-bg: var(--success-bg);\n    --check-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .check:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.check.is-valid) .valid-feedback,\n  .form-field:has(.check.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.check:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .radio.is-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  .radio.is-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .radio:user-valid {\n    --radio-border-color: var(--success-border);\n    --radio-checked-bg: var(--success-bg);\n    --radio-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .radio:user-valid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.radio.is-valid) .valid-feedback,\n  .form-field:has(.radio.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.radio:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  .switch:has(input.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid) {\n    --switch-border-color: var(--success-border);\n    --switch-checked-bg: var(--success-bg);\n    --switch-checked-border-color: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .switch:has(input:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-valid) label {\n    color: var(--success-fg);\n  }\n  .form-field:has(.switch input.is-valid) .valid-feedback,\n  .form-field:has(.switch input.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) label {\n    color: var(--success-fg);\n  }\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.switch input:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .chip-input:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .chip-input:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-valid) {\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-feedback,\n  .form-adorn:has(.form-ghost.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) {\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid):focus-within {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-feedback,\n  [data-bs-validate~=valid] .form-adorn:has(.form-ghost:user-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  .form-range-input.is-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-webkit-slider-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid::-moz-range-thumb {\n    background: var(--success-bg);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .form-range-input:user-valid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-valid) ~ .valid-feedback,\n  .form-range:has(.form-range-input.is-valid) ~ .valid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-valid) .valid-feedback,\n  .form-field:has(.input-group .form-control.is-valid) .valid-tooltip {\n    display: block;\n  }\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-feedback,\n  [data-bs-validate~=valid] .form-field:has(.input-group .form-control:user-valid) .valid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-valid,\n  .input-group > .form-floating:not(:focus-within).is-valid {\n    z-index: 3;\n  }\n  [data-bs-validate~=valid] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-valid {\n    z-index: 3;\n  }\n  .otp.is-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  .otp.is-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot {\n    --otp-slot-border-color: var(--success-border);\n  }\n  [data-bs-validate~=valid] .otp:user-valid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--success-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .invalid-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--danger-fg);\n  }\n  .tooltip.invalid-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: 0.1rem;\n    color: var(--danger-contrast);\n    text-align: center;\n    background-color: var(--danger-bg);\n    opacity: 1;\n    border-radius: var(--tooltip-border-radius);\n  }\n  .is-invalid ~ .invalid-feedback,\n  .is-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] :user-invalid ~ .invalid-feedback,\n  [data-bs-validate] :user-invalid ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-control.is-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  .form-control.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid {\n    --control-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-control:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --control-border-color: var(--danger-border);\n  }\n  .check.is-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  .check.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .check:user-invalid {\n    --check-border-color: var(--danger-border);\n    --check-checked-bg: var(--danger-bg);\n    --check-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .check:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.check.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.check.is-invalid) .invalid-feedback,\n  .form-field:has(.check.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.check:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .radio.is-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  .radio.is-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .radio:user-invalid {\n    --radio-border-color: var(--danger-border);\n    --radio-checked-bg: var(--danger-bg);\n    --radio-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .radio:user-invalid:focus-visible {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.radio.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.radio.is-invalid) .invalid-feedback,\n  .form-field:has(.radio.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.radio:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .switch:has(input.is-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  .switch:has(input.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid) {\n    --switch-border-color: var(--danger-border);\n    --switch-checked-bg: var(--danger-bg);\n    --switch-checked-border-color: var(--danger-bg);\n  }\n  [data-bs-validate] .switch:has(input:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-field:has(.switch input.is-invalid) label {\n    color: var(--danger-fg);\n  }\n  .form-field:has(.switch input.is-invalid) .invalid-feedback,\n  .form-field:has(.switch input.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) label {\n    color: var(--danger-fg);\n  }\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.switch input:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .chip-input:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .chip-input:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-adorn:has(.form-ghost.is-invalid) {\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-feedback,\n  .form-adorn:has(.form-ghost.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid):focus-within {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    border-color: var(--danger-border);\n  }\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-feedback,\n  [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-range-input.is-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  .form-range-input.is-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range-input.is-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-webkit-slider-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid::-moz-range-thumb {\n    background: var(--danger-bg);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-webkit-slider-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .form-range-input:user-invalid:focus-visible::-moz-range-thumb {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-feedback,\n  .form-range:has(.form-range-input.is-invalid) ~ .invalid-tooltip {\n    display: block;\n  }\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-feedback,\n  .form-field:has(.input-group .form-control.is-invalid) .invalid-tooltip {\n    display: block;\n  }\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-feedback,\n  [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) .invalid-tooltip {\n    display: block;\n  }\n  .input-group > .form-control:not(:focus).is-invalid,\n  .input-group > .form-floating:not(:focus-within).is-invalid {\n    z-index: 4;\n  }\n  [data-bs-validate] .input-group > .form-control:not(:focus), .input-group > .form-floating:not(:focus-within):user-invalid {\n    z-index: 4;\n  }\n  .otp.is-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  .otp.is-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot {\n    --otp-slot-border-color: var(--danger-border);\n  }\n  [data-bs-validate] .otp:user-invalid .otp-slot-active {\n    outline: var(--focus-ring-width) solid var(--danger-focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n@layer components {\n  .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n    --btn-min-height: var(--btn-input-min-height);\n    --btn-padding-x: var(--btn-input-padding-x);\n    --btn-padding-y: var(--btn-input-padding-y);\n    --btn-font-size: var(--btn-input-font-size);\n    --btn-font-weight: var(--btn-input-font-weight);\n    --btn-line-height: var(--btn-input-line-height);\n    --btn-color: var(--fg-body);\n    --btn-white-space: nowrap;\n    --btn-border-width: var(--border-width);\n    --btn-border-color: transparent;\n    --btn-border-radius: var(--radius-5);\n    --btn-hover-border-color: transparent;\n    --btn-disabled-opacity: 0.65;\n    --btn-transition-timing: 0.15s ease-in-out;\n    --btn-transition-property: color, background-color, border-color, box-shadow;\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing);\n    display: inline-flex;\n    gap: var(--btn-gap, 0.25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    cursor: pointer;\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    border-radius: var(--btn-border-radius);\n    transition: var(--btn-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .btn, .btn-link, .btn-icon, .btn-solid, .btn-outline, .btn-subtle, .btn-text {\n      transition: none;\n    }\n  }\n  .btn:hover, .btn-link:hover, .btn-icon:hover, .btn-solid:hover, .btn-outline:hover, .btn-subtle:hover, .btn-text:hover {\n    color: var(--btn-hover-color);\n    background-color: var(--btn-hover-bg, var(--bg-3));\n    border-color: var(--btn-hover-border-color);\n  }\n  .btn:focus-visible, .btn-link:focus-visible, .btn-icon:focus-visible, .btn-solid:focus-visible, .btn-outline:focus-visible, .btn-subtle:focus-visible, .btn-text:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn.active, .btn.show, .btn-link.active, .btn-link.show, .btn-icon.active, .btn-icon.show, .btn-solid.active, .btn-solid.show, .btn-outline.active, .btn-outline.show, .btn-subtle.active, .btn-subtle.show, .btn-text.active, .btn-text.show {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    border-color: var(--btn-active-border-color);\n  }\n  .btn.active:focus-visible, .btn.show:focus-visible, .btn-link.active:focus-visible, .btn-link.show:focus-visible, .btn-icon.active:focus-visible, .btn-icon.show:focus-visible, .btn-solid.active:focus-visible, .btn-solid.show:focus-visible, .btn-outline.active:focus-visible, .btn-outline.show:focus-visible, .btn-subtle.active:focus-visible, .btn-subtle.show:focus-visible, .btn-text.active:focus-visible, .btn-text.show:focus-visible {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .btn:disabled, .btn.disabled, fieldset:disabled .btn, .btn-link:disabled, .btn-link.disabled, fieldset:disabled .btn-link, .btn-icon:disabled, .btn-icon.disabled, fieldset:disabled .btn-icon, .btn-solid:disabled, .btn-solid.disabled, fieldset:disabled .btn-solid, .btn-outline:disabled, .btn-outline.disabled, fieldset:disabled .btn-outline, .btn-subtle:disabled, .btn-subtle.disabled, fieldset:disabled .btn-subtle, .btn-text:disabled, .btn-text.disabled, fieldset:disabled .btn-text {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    background-image: none;\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n  }\n  .btn-solid {\n    --btn-bg: var(--theme-bg);\n    --btn-color: var(--theme-contrast);\n    --btn-border-color: var(--theme-bg);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-solid:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-solid:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-solid:active, .btn-solid.active, .btn-solid.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-solid:disabled, .btn-solid.disabled, .btn-solid.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg);\n    --btn-disabled-color: var(--theme-contrast);\n    --btn-disabled-border-color: var(--theme-bg);\n  }\n  .btn-outline {\n    --btn-bg: transparent;\n    --btn-color: var(--theme-fg);\n    --btn-border-color: var(--theme-border);\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-outline:hover {\n    --btn-hover-bg: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-color: oklch(from var(--theme-contrast) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-border-color: oklch(from var(--theme-bg) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-outline:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-outline:active, .btn-outline.active, .btn-outline.btn-check:has(input:checked) {\n    --btn-active-bg: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-color: oklch(from var(--theme-contrast) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-border-color: oklch(from var(--theme-bg) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-outline:disabled, .btn-outline.disabled, .btn-outline.btn-check:has(input:disabled) {\n    --btn-disabled-bg: transparent;\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: var(--theme-border);\n  }\n  .btn-subtle {\n    --btn-bg: var(--theme-bg-subtle);\n    --btn-color: var(--theme-fg);\n    --btn-border-color: transparent;\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-subtle:hover {\n    --btn-hover-bg: color-mix(in oklch, var(--theme-bg-muted) 50%, var(--theme-bg-subtle));\n    --btn-hover-color: oklch(from var(--theme-fg-emphasis) calc(l * .95) calc(c * 1.1) h);\n  }\n  .btn-subtle:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-subtle:active, .btn-subtle.active, .btn-subtle.btn-check:has(input:checked) {\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-active-color: oklch(from var(--theme-fg-emphasis) calc(l * .9) calc(c * 1.15) h);\n  }\n  .btn-subtle:disabled, .btn-subtle.disabled, .btn-subtle.btn-check:has(input:disabled) {\n    --btn-disabled-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text {\n    --btn-color: var(--theme-fg);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-text:hover {\n    --btn-hover-color: oklch(from var(--theme-fg) calc(l * .95) calc(c * 1.1) h);\n    --btn-hover-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:focus-visible {\n    outline-color: var(--theme-focus-ring);\n  }\n  .btn-text:active, .btn-text.active, .btn-text.btn-check:has(input:checked) {\n    --btn-active-color: oklch(from var(--theme-fg) calc(l * .9) calc(c * 1.15) h);\n    --btn-active-bg: var(--theme-bg-subtle);\n  }\n  .btn-text:disabled, .btn-text.disabled, .btn-text.btn-check:has(input:disabled) {\n    --btn-disabled-color: var(--theme-fg);\n    --btn-disabled-bg: transparent;\n    --btn-disabled-border-color: transparent;\n  }\n  .btn-link {\n    --btn-font-weight: var(--font-weight-normal);\n    --btn-color: var(--link-color);\n    --btn-bg: transparent;\n    --btn-border-color: transparent;\n    --btn-hover-color: var(--link-hover-color);\n    --btn-hover-bg: transparent;\n    --btn-hover-border-color: transparent;\n    --btn-active-color: var(--link-hover-color);\n    --btn-active-bg: transparent;\n    --btn-active-border-color: transparent;\n    --btn-disabled-color: var(--fg-3);\n    --btn-disabled-border-color: transparent;\n    color: var(--theme-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n    background-image: none;\n  }\n  .btn-link:focus-visible {\n    color: var(--theme-fg, var(--btn-color));\n  }\n  .btn-link:hover {\n    color: var(--theme-fg-emphasis, var(--btn-hover-color));\n  }\n  .btn-xs,\n  .btn-group-xs > [class*=btn-] {\n    --btn-min-height: var(--btn-input-xs-min-height);\n    --btn-padding-y: var(--btn-input-xs-padding-y);\n    --btn-padding-x: var(--btn-input-xs-padding-x);\n    --btn-font-size: var(--btn-input-xs-font-size);\n    --btn-line-height: var(--btn-input-xs-line-height);\n    --btn-border-radius: var(--btn-input-xs-border-radius);\n  }\n  .btn-sm,\n  .btn-group-sm > [class*=btn-] {\n    --btn-min-height: var(--btn-input-sm-min-height);\n    --btn-padding-y: var(--btn-input-sm-padding-y);\n    --btn-padding-x: var(--btn-input-sm-padding-x);\n    --btn-font-size: var(--btn-input-sm-font-size);\n    --btn-line-height: var(--btn-input-sm-line-height);\n    --btn-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .btn-lg,\n  .btn-group-lg > [class*=btn-] {\n    --btn-min-height: var(--btn-input-lg-min-height);\n    --btn-padding-y: var(--btn-input-lg-padding-y);\n    --btn-padding-x: var(--btn-input-lg-padding-x);\n    --btn-font-size: var(--btn-input-lg-font-size);\n    --btn-line-height: var(--btn-input-lg-line-height);\n    --btn-border-radius: var(--btn-input-lg-border-radius);\n  }\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n  .btn-check > input {\n    position: absolute;\n    clip: rect(0, 0, 0, 0);\n    pointer-events: none;\n  }\n  .btn-check:has(input:checked) {\n    color: var(--btn-active-color);\n    background-color: var(--btn-active-bg, var(--bg-3));\n    background-image: none;\n    border-color: var(--btn-active-border-color);\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-check:has(input:focus-visible) {\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    --focus-ring-offset: 1px;\n  }\n  .btn-check:has(input:disabled) {\n    color: var(--btn-disabled-color);\n    pointer-events: none;\n    background-color: var(--btn-disabled-bg, var(--bg-1));\n    background-image: none;\n    border-color: var(--btn-disabled-border-color);\n    opacity: var(--btn-disabled-opacity);\n    box-shadow: none;\n  }\n  .btn-styled {\n    --btn-gradient-start: rgba(255, 255, 255, 0.125);\n    --btn-gradient-end: rgba(0, 0, 0, 0.075);\n    --btn-border-mix-color: #000;\n    --btn-border-mix-amount: 10%;\n    --btn-border-hover-mix-amount: 12.5%;\n    --btn-border-active-mix-amount: 20%;\n    --btn-shadow: 0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%);\n    --btn-active-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n  }\n  .btn-styled:hover {\n    background-image: linear-gradient(to bottom, var(--btn-gradient-start), var(--btn-gradient-end));\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n  }\n  .btn-styled:active, .btn-styled.active {\n    background-image: none;\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n    box-shadow: var(--btn-active-shadow);\n  }\n  .btn-styled:disabled, .btn-styled.disabled {\n    background-image: none;\n    box-shadow: none;\n  }\n}\n@layer components {\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle;\n  }\n  .btn-group > [class*=btn-],\n  .btn-group-vertical > [class*=btn-] {\n    position: relative;\n    flex: 1 1 auto;\n  }\n  .btn-group > [class*=btn-]:hover,\n  .btn-group-vertical > [class*=btn-]:hover {\n    z-index: 1;\n  }\n  .btn-group > .btn-check:has(input:checked),\n  .btn-group > [class*=btn-]:active,\n  .btn-group > [class*=btn-].active,\n  .btn-group-vertical > .btn-check:has(input:checked),\n  .btn-group-vertical > [class*=btn-]:active,\n  .btn-group-vertical > [class*=btn-].active {\n    z-index: 2;\n  }\n  .btn-group > .btn-check:has(input:focus),\n  .btn-group > [class*=btn-]:focus,\n  .btn-group-vertical > .btn-check:has(input:focus),\n  .btn-group-vertical > [class*=btn-]:focus {\n    z-index: 3;\n  }\n  .btn-group-divider > [class*=btn-] + [class*=btn-]::before {\n    position: absolute;\n    z-index: 3;\n    content: \"\";\n    background-color: var(--btn-color);\n    opacity: 0.25;\n  }\n  .btn-group:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: 25%;\n    bottom: 25%;\n    left: calc(var(--btn-border-width) * -1);\n    width: var(--btn-border-width);\n  }\n  .btn-group-vertical:where(.btn-group-divider) > [class*=btn-] + [class*=btn-]::before {\n    top: calc(var(--btn-border-width) * -1);\n    right: var(--btn-padding-x);\n    left: var(--btn-padding-x);\n    height: var(--btn-border-width);\n  }\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    justify-content: flex-start;\n  }\n  .btn-toolbar .input-group {\n    width: auto;\n  }\n  .btn-group {\n    border-radius: var(--btn-border-radius);\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) {\n    margin-inline-start: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group > [class*=btn-]:not(:last-child, :has(+ .menu)),\n  .btn-group > .btn-group:not(:last-child) > [class*=btn-] {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group > [class*=btn-]:not(:first-child),\n  .btn-group > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n  }\n  .btn-group-vertical > [class*=btn-],\n  .btn-group-vertical > .btn-group {\n    width: 100%;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) {\n    margin-top: calc(-1 * var(--btn-border-width));\n  }\n  .btn-group-vertical > [class*=btn-]:not(:last-child, :has(+ .menu)),\n  .btn-group-vertical > .btn-group:not(:last-child) > [class*=btn-] {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .btn-group-vertical > [class*=btn-]:not(:first-child),\n  .btn-group-vertical > .btn-group:not(:first-child) > [class*=btn-] {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n}\n@layer components {\n  .btn-close {\n    --btn-close-size: 1.5rem;\n    --btn-close-color: inherit;\n    --btn-close-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/%3e%3c/svg%3e\");\n    --btn-close-opacity: 0.5;\n    --btn-close-hover-opacity: 0.75;\n    --btn-close-focus-opacity: 0.85;\n    --btn-close-disabled-opacity: 0.25;\n    box-sizing: content-box;\n    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0;\n    border-radius: var(--radius-5);\n    opacity: var(--btn-close-opacity);\n    mask-image: var(--btn-close-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .btn-close:hover {\n    color: var(--btn-close-color);\n    text-decoration: none;\n    opacity: var(--btn-close-hover-opacity);\n  }\n  .btn-close:focus-visible {\n    opacity: var(--btn-close-focus-opacity);\n    outline: var(--focus-ring);\n  }\n  .btn-close:disabled, .btn-close.disabled {\n    pointer-events: none;\n    user-select: none;\n    opacity: var(--btn-close-disabled-opacity);\n  }\n}\n@layer components {\n  .accordion {\n    --accordion-padding-x: 1.25rem;\n    --accordion-padding-y: 1rem;\n    --accordion-color: var(--fg-body);\n    --accordion-bg: var(--bg-body);\n    --accordion-transition-property: color, background-color, border-radius;\n    --accordion-transition-timing: .15s ease-in-out;\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing);\n    --accordion-border-color: var(--border-color);\n    --accordion-border-width: var(--border-width);\n    --accordion-border-radius: var(--accordion-radius, var(--radius-7));\n    --accordion-btn-color: var(--fg-2);\n    --accordion-btn-bg: var(--bg-body);\n    --accordion-btn-icon-width: 1rem;\n    --accordion-btn-icon-transform: rotate(-180deg);\n    --accordion-btn-icon-transition: transform 0.2s ease-in-out;\n    --accordion-active-color: var(--fg);\n    --accordion-active-bg: var(--bg-2);\n  }\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none;\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    transition: var(--accordion-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header {\n      transition: none;\n    }\n  }\n  .accordion-header::-webkit-details-marker {\n    display: none;\n  }\n  .accordion-header .accordion-icon {\n    flex-shrink: 0;\n    width: var(--accordion-btn-icon-width);\n    height: var(--accordion-btn-icon-width);\n    margin-inline-start: auto;\n    color: currentcolor;\n    transition: var(--accordion-btn-icon-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-header .accordion-icon {\n      transition: none;\n    }\n  }\n  .accordion-header:hover {\n    z-index: 2;\n  }\n  .accordion-header:focus-visible {\n    position: relative;\n    z-index: 3;\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n    outline-offset: -1px;\n  }\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .accordion-item {\n      interpolate-size: allow-keywords;\n    }\n  }\n  .accordion-item::details-content {\n    block-size: 0;\n    overflow-y: clip;\n    transition: content-visibility 0.2s allow-discrete, block-size 0.2s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .accordion-item::details-content {\n      transition: none;\n    }\n  }\n  .accordion-item:first-of-type {\n    border-start-start-radius: var(--accordion-border-radius);\n    border-start-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:first-of-type > .accordion-header {\n    border-start-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-start-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:not(:first-of-type) {\n    border-block-start: 0;\n  }\n  .accordion-item:last-of-type {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item:last-of-type > .accordion-header {\n    border-end-start-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n    border-end-end-radius: calc(var(--accordion-border-radius) - var(--accordion-border-width));\n  }\n  .accordion-item:last-of-type > .accordion-body {\n    border-end-start-radius: var(--accordion-border-radius);\n    border-end-end-radius: var(--accordion-border-radius);\n  }\n  .accordion-item[open] {\n    border-color: var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open]::details-content {\n    block-size: auto;\n  }\n  .accordion-item[open] > .accordion-header {\n    color: var(--theme-fg, var(--accordion-active-color));\n    background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n    box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n  }\n  .accordion-item[open] > .accordion-header .accordion-icon {\n    transform: var(--accordion-btn-icon-transform);\n  }\n  .accordion-item[open]:last-of-type > .accordion-header {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n  .accordion-flush > .accordion-item {\n    border-inline: 0;\n    border-radius: 0;\n  }\n  .accordion-flush > .accordion-item:first-child {\n    border-block-start: 0;\n  }\n  .accordion-flush > .accordion-item:last-child {\n    border-block-end: 0;\n  }\n  .accordion-flush > .accordion-item > .accordion-header,\n  .accordion-flush > .accordion-item > .accordion-body {\n    border-radius: 0;\n  }\n}\n@layer components {\n  .alert {\n    --alert-gap: var(--spacer-3);\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1));\n    --alert-padding-x: var(--spacer);\n    --alert-padding-y: var(--spacer);\n    --alert-color: var(--theme-fg, inherit);\n    --alert-border-color: var(--theme-border, var(--border-color));\n    --alert-border: var(--border-width) solid var(--alert-border-color);\n    --alert-border-radius: var(--radius-5);\n    --alert-link-color: inherit;\n    --hr-border-color: var(--theme-border, var(--border-color));\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    border-radius: var(--alert-border-radius);\n  }\n  .alert > p {\n    margin-bottom: 0;\n  }\n  .alert-heading {\n    color: inherit;\n  }\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n@layer components {\n  .avatar {\n    --avatar-size: 2.5rem;\n    --avatar-border-radius: 50%;\n    --avatar-border-width: 2px;\n    --avatar-border-color: var(--bg-body);\n    --avatar-bg: var(--bg-2);\n    --avatar-color: var(--fg-body);\n    --avatar-status-size: 0.75rem;\n    --avatar-status-border-width: 2px;\n    --avatar-status-border-color: var(--bg-body);\n    --avatar-stack-spacing: -0.3;\n    --avatar-stack-transition: transform .2s ease-in-out;\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * 0.4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    border-radius: var(--avatar-border-radius);\n  }\n  .avatar > .avatar-img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n  }\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n  .avatar-img {\n    border-radius: var(--avatar-border-radius, 50%);\n  }\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    border-radius: 50%;\n  }\n  .avatar-status.status-online {\n    background-color: var(--green-500);\n  }\n  .avatar-status.status-offline {\n    background-color: var(--gray-400);\n    border-radius: 20%;\n  }\n  .avatar-status.status-busy {\n    background-color: var(--red-500);\n    border-radius: 20%;\n  }\n  .avatar-status.status-away {\n    background-color: var(--yellow-500);\n  }\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n  }\n  .avatar-stack .avatar {\n    margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n    border: var(--avatar-border-width) solid var(--avatar-border-color);\n    mask-image: none;\n    transition: var(--avatar-stack-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .avatar-stack .avatar {\n      transition: none;\n    }\n  }\n  .avatar-stack .avatar:last-child {\n    margin-left: 0;\n  }\n  .avatar-stack .avatar:hover {\n    z-index: 1;\n    transform: translateY(-2px);\n  }\n  .avatar-xs,\n  .avatar-stack-xs > .avatar {\n    --avatar-size: 1.5rem;\n    --avatar-status-size: 0.625rem;\n  }\n  .avatar-sm,\n  .avatar-stack-sm > .avatar {\n    --avatar-size: 2rem;\n  }\n  .avatar-lg,\n  .avatar-stack-lg > .avatar {\n    --avatar-size: 3rem;\n    --avatar-status-size: 1rem;\n    --avatar-border-width: 3px;\n  }\n  .avatar-xl,\n  .avatar-stack-xl > .avatar {\n    --avatar-size: 4rem;\n    --avatar-status-size: 1.25rem;\n    --avatar-border-width: 4px;\n  }\n}\n@layer components {\n  .badge {\n    --badge-padding-x: 0.625em;\n    --badge-padding-y: 0.25em;\n    --badge-font-size: clamp(12px, 0.75em, 0.75em);\n    --badge-font-weight: var(--font-weight-semibold);\n    --badge-color: inherit;\n    --badge-bg: var(--bg-2);\n    --badge-border-width: var(--border-width);\n    --badge-border-color: transparent;\n    --badge-border-radius: var(--radius-7);\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    border-radius: var(--badge-border-radius);\n  }\n  .badge:empty {\n    display: none;\n  }\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n  .badge-subtle {\n    --badge-color: var(--theme-fg);\n    --badge-bg: var(--theme-bg-subtle);\n    --badge-border-color: transparent;\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n  .badge-outline {\n    --badge-color: var(--theme-fg);\n    --badge-bg: transparent;\n    --badge-border-color: var(--theme-border);\n    color: var(--badge-color);\n    background-color: var(--badge-bg);\n    border-color: var(--badge-border-color);\n  }\n}\n@layer components {\n  .breadcrumb {\n    --breadcrumb-margin-bottom: 1rem;\n    --breadcrumb-font-size: inherit;\n    --breadcrumb-bg: transparent;\n    --breadcrumb-border-radius: var(--radius-5);\n    --breadcrumb-divider-color: var(--fg-4);\n    --breadcrumb-divider-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'%3e%3cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/%3e%3c/svg%3e\");\n    --breadcrumb-divider-width: 0.375rem;\n    --breadcrumb-divider-height: 0.75rem;\n    --breadcrumb-link-padding-x: 0.75rem;\n    --breadcrumb-link-padding-y: 0.25rem;\n    --breadcrumb-link-color: var(--fg-3);\n    --breadcrumb-link-hover-color: var(--fg-2);\n    --breadcrumb-link-hover-bg: var(--bg-1);\n    --breadcrumb-link-active-color: var(--fg-1);\n    --breadcrumb-link-border-radius: var(--radius-7);\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style-type: \"\";\n    background-color: var(--breadcrumb-bg);\n    border-radius: var(--breadcrumb-border-radius);\n  }\n  .breadcrumb-item {\n    display: flex;\n  }\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n  }\n  .breadcrumb-divider:empty::before {\n    display: block;\n    width: var(--breadcrumb-divider-width);\n    height: var(--breadcrumb-divider-height);\n    content: \"\";\n    background-color: currentcolor;\n    mask-image: var(--breadcrumb-divider-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    border-radius: var(--breadcrumb-link-border-radius);\n    transition: 0.1s text-decoration-color ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .breadcrumb-link {\n      transition: none;\n    }\n  }\n  .breadcrumb-link:hover {\n    z-index: 2;\n    color: var(--breadcrumb-link-hover-color);\n    background-color: var(--breadcrumb-link-hover-bg);\n  }\n  .breadcrumb-link.active {\n    color: var(--breadcrumb-link-active-color);\n  }\n}\n@layer components {\n  .chip {\n    --chip-height: 1.75rem;\n    --chip-padding-x: 0.625rem;\n    --chip-gap: 0.3125rem;\n    --chip-border-radius: var(--radius-pill);\n    --chip-img-size: 1.25rem;\n    --chip-icon-size: 1rem;\n    --chip-dismiss-size: 1rem;\n    --chip-dismiss-opacity: 0.65;\n    --chip-dismiss-hover-opacity: 1;\n    --chip-color: var(--theme-fg, var(--fg-body));\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2));\n    --chip-border-color: transparent;\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast));\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg));\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg));\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    border-radius: var(--chip-border-radius);\n  }\n  .chip:hover {\n    --chip-bg: var(--theme-bg-muted, var(--bg-3));\n  }\n  .chip:focus-visible {\n    outline: 0;\n  }\n  .chip.active {\n    --chip-color: var(--chip-selected-color);\n    --chip-bg: var(--chip-selected-bg);\n    --chip-border-color: var(--chip-selected-border-color);\n  }\n  .chip.active:hover {\n    --chip-bg: var(--chip-selected-bg);\n    opacity: 0.9;\n  }\n  .chip.disabled, .chip:disabled {\n    pointer-events: none;\n    opacity: 0.65;\n  }\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    border-radius: 50%;\n  }\n  .chip-img:first-child {\n    margin-inline-start: -0.375rem;\n  }\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -0.25);\n  }\n  .chip-icon > svg {\n    display: block;\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n  }\n  .chip-icon > img {\n    width: var(--chip-icon-size);\n    height: var(--chip-icon-size);\n    object-fit: cover;\n    border-radius: 50%;\n  }\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    margin-inline-end: calc(var(--chip-padding-x) * -0.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n  }\n  .chip-dismiss:hover {\n    opacity: var(--chip-dismiss-hover-opacity);\n  }\n  .chip-dismiss:focus-visible {\n    outline: 0;\n    opacity: 1;\n    outline: var(--focus-ring);\n  }\n  .chip-dismiss > svg {\n    display: block;\n    width: var(--chip-dismiss-size);\n    height: var(--chip-dismiss-size);\n  }\n}\n@layer components {\n  .card {\n    --card-spacer-y: var(--spacer-5);\n    --card-spacer-x: var(--spacer-5);\n    --card-subtitle-color: inherit;\n    --card-border-width: var(--border-width);\n    --card-border-color: var(--border-color-translucent);\n    --card-border-radius: var(--radius-7);\n    --card-box-shadow: none;\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --card-cap-padding-y: var(--spacer-3);\n    --card-cap-padding-x: var(--spacer);\n    --card-cap-bg: var(--bg-1);\n    --card-cap-color: inherit;\n    --card-height: auto;\n    --card-color: inherit;\n    --card-bg: var(--bg-body);\n    --card-img-overlay-padding: var(--card-spacer-y);\n    --card-group-margin: 0.75rem;\n    --card-body-gap: calc(var(--card-spacer-y) * 0.5);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0;\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    border-radius: var(--card-border-radius);\n    box-shadow: var(--card-box-shadow);\n  }\n  .card > hr {\n    margin-inline: 0;\n  }\n  .card-body {\n    display: flex;\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body > * {\n    margin-block: 0;\n  }\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n  }\n  .card-body:first-child,\n  .card-list:first-child {\n    border-start-start-radius: var(--card-border-radius);\n    border-start-end-radius: var(--card-border-radius);\n    border-top-width: var(--card-border-width);\n  }\n  .card-body:last-child,\n  .card-list:last-child {\n    border-end-start-radius: var(--card-border-radius);\n    border-end-end-radius: var(--card-border-radius);\n    border-bottom-width: var(--card-border-width);\n  }\n  .card-body:not(:first-child, :last-child),\n  .card-list:not(:first-child, :last-child) {\n    border-block-end-width: var(--card-border-width);\n  }\n  .card-body:has(+ .card-footer),\n  .card-list:has(+ .card-footer) {\n    border-block-end-width: 0;\n  }\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -0.5);\n  }\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0;\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-header:first-child {\n    border-radius: var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0;\n  }\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n  }\n  .card-footer:last-child {\n    border-radius: 0 0 var(--card-inner-border-radius) var(--card-inner-border-radius);\n  }\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .card-translucent .card-header,\n  .card-translucent .card-footer {\n    background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n  }\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-header {\n    color: var(--theme-fg-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-footer {\n    color: var(--theme-fg-emphasis, currentcolor);\n    background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .card-subtle .card-body,\n  .card-subtle .card-list {\n    border-color: var(--theme-border, var(--card-border-color));\n  }\n  .nav.card-header-tabs {\n    margin-inline: calc(-0.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y) - var(--nav-tabs-border-width));\n    border-block-end: 0;\n  }\n  .nav.card-header-tabs .nav-link.active {\n    background-color: var(--card-bg);\n    border-block-end-color: var(--card-bg);\n  }\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    border-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%;\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n  .card-img,\n  .card-img-top {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-start-end-radius: var(--card-inner-border-radius);\n  }\n  .card-img,\n  .card-img-bottom {\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-row {\n    flex-direction: row;\n  }\n  .card-row .card-body,\n  .card-row .card-list {\n    border-width: var(--card-border-width) 0;\n    border-radius: 0;\n  }\n  .card-row .card-body:first-child,\n  .card-row .card-list:first-child {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n    border-inline-start-width: var(--card-border-width);\n  }\n  .card-row .card-body:last-child,\n  .card-row .card-list:last-child {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-row .card-body:not(:first-child, :last-child),\n  .card-row .card-list:not(:first-child, :last-child) {\n    border-inline-end-width: var(--card-border-width);\n  }\n  .card-img-start {\n    border-start-start-radius: var(--card-inner-border-radius);\n    border-end-start-radius: var(--card-inner-border-radius);\n  }\n  .card-img-end {\n    border-start-end-radius: var(--card-inner-border-radius);\n    border-end-end-radius: var(--card-inner-border-radius);\n  }\n  .card-group > .card {\n    margin-bottom: var(--card-group-margin);\n  }\n  @container (width >= 576px) {\n    .card-group {\n      display: flex;\n      flex-flow: row wrap;\n    }\n    .card-group > .card {\n      flex: 1 0 0;\n      margin-bottom: 0;\n    }\n    .card-group > .card + .card {\n      margin-inline-start: calc(-1 * var(--card-border-width));\n    }\n    .card-group > .card:not(:last-child) {\n      border-start-end-radius: 0;\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-top,\n    .card-group > .card:not(:last-child) > .card-header,\n    .card-group > .card:not(:last-child) > .card-body {\n      border-start-end-radius: 0;\n    }\n    .card-group > .card:not(:last-child) > .card-img-bottom,\n    .card-group > .card:not(:last-child) > .card-footer,\n    .card-group > .card:not(:last-child) > .card-body {\n      border-end-end-radius: 0;\n    }\n    .card-group > .card:not(:first-child) {\n      border-start-start-radius: 0;\n      border-end-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-top,\n    .card-group > .card:not(:first-child) > .card-header,\n    .card-group > .card:not(:first-child) > .card-body {\n      border-start-start-radius: 0;\n    }\n    .card-group > .card:not(:first-child) > .card-img-bottom,\n    .card-group > .card:not(:first-child) > .card-footer,\n    .card-group > .card:not(:first-child) > .card-body {\n      border-end-start-radius: 0;\n    }\n  }\n}\n@layer components {\n  .carousel {\n    --carousel-gap: 0.75rem;\n    --carousel-indicator-bg: var(--fg-3);\n    --carousel-indicator-width: 0.75rem;\n    --carousel-indicator-height: 0.75rem;\n    --carousel-indicator-spacer: 0.25rem;\n    --carousel-indicator-transition: opacity .6s ease, width .3s ease;\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg);\n    --carousel-control-icon-width: 1rem;\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\");\n    --carousel-control-next-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\");\n    --carousel-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\");\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\");\n    --carousel-items: 1;\n    --carousel-items-gap: 0px;\n    --carousel-items-peek: 0px;\n    --carousel-fade-duration: 0.6s;\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none;\n  }\n  .carousel-inner::-webkit-scrollbar {\n    display: none;\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n  .carousel-item {\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n  .carousel-center .carousel-item {\n    scroll-snap-align: center;\n  }\n  .carousel-auto .carousel-item {\n    flex-basis: auto;\n  }\n  .carousel-fade .carousel-inner {\n    display: grid;\n    overflow: hidden;\n    scroll-snap-type: none;\n  }\n  .carousel-fade .carousel-item {\n    grid-area: 1/1;\n    width: 100%;\n    visibility: hidden;\n    opacity: 0;\n    transition: opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item {\n      transition: none;\n    }\n  }\n  .carousel-fade .carousel-item.active {\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--carousel-fade-duration) ease;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-fade .carousel-item.active {\n      transition: none;\n    }\n  }\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    mask-repeat: no-repeat;\n    mask-position: 50%;\n    mask-size: 100% 100%;\n  }\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n  [dir=rtl] .carousel-icon-prev,\n  [dir=rtl] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-pause {\n    display: none;\n  }\n  .carousel-control-play-pause.paused .carousel-icon-play {\n    display: inline-block;\n  }\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n  }\n  .carousel-indicators [data-bs-target] {\n    flex: 0 1 auto;\n    width: var(--carousel-indicator-width);\n    height: var(--carousel-indicator-height);\n    padding: 0;\n    cursor: pointer;\n    background-color: transparent;\n    border: 1px solid var(--carousel-indicator-bg);\n    border-radius: var(--carousel-indicator-width);\n    transition: var(--carousel-indicator-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .carousel-indicators [data-bs-target] {\n      transition: none;\n    }\n  }\n  .carousel-indicators .active {\n    width: calc(var(--carousel-indicator-width) * 2.5);\n    background-color: var(--carousel-indicator-bg);\n    border-color: var(--carousel-indicator-bg);\n  }\n  @keyframes carousel-indicator-progress {\n    from {\n      inline-size: 0;\n    }\n    to {\n      inline-size: 100%;\n    }\n  }\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-playing .carousel-indicators .active {\n      position: relative;\n      overflow: hidden;\n      background-color: transparent;\n    }\n    .carousel-playing .carousel-indicators .active::after {\n      position: absolute;\n      inset-block: 0;\n      inset-inline-start: 0;\n      inline-size: 0;\n      content: \"\";\n      background-color: var(--carousel-indicator-progress-bg);\n      animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n    }\n  }\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n  }\n  .carousel-overlay .carousel-overlay-controls {\n    position: absolute;\n    inset-block-end: 1rem;\n    inset-inline: 1rem;\n    z-index: 1;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n}\n@layer components {\n  [data-vc=calendar] {\n    --datepicker-padding: 1rem;\n    --datepicker-bg: var(--bg-body);\n    --datepicker-color: var(--fg-body);\n    --datepicker-border-color: var(--border-color-translucent);\n    --datepicker-border-width: var(--border-width);\n    --datepicker-border-radius: var(--radius-7);\n    --datepicker-box-shadow: var(--box-shadow);\n    --datepicker-font-size: var(--font-size-sm);\n    --datepicker-min-width: 280px;\n    --datepicker-zindex: 1000;\n    --datepicker-header-font-weight: 600;\n    --datepicker-weekday-color: var(--fg-3);\n    --datepicker-day-hover-bg: var(--bg-1);\n    --datepicker-day-selected-bg: var(--primary-bg);\n    --datepicker-day-selected-color: var(--primary-contrast);\n    --datepicker-day-today-bg: var(--bg-2);\n    --datepicker-day-today-color: var(--fg-1);\n    --datepicker-day-disabled-color: var(--fg-4);\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    border-radius: var(--datepicker-border-radius);\n  }\n  [data-vc=calendar][data-bs-theme=light] {\n    color-scheme: light;\n  }\n  [data-vc=calendar][data-bs-theme=dark] {\n    color-scheme: dark;\n  }\n  [data-vc=calendar] button:focus-visible {\n    position: relative;\n    z-index: 1;\n    outline: var(--focus-ring);\n  }\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n  [data-vc=calendar]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n  [data-vc-position=bottom] {\n    margin-block-start: 0.25rem;\n  }\n  [data-vc-position=top] {\n    margin-block-end: -0.25rem;\n  }\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-arrow]::before {\n    position: absolute;\n    inset: 0.25rem;\n    content: \"\";\n    background-color: var(--datepicker-color);\n    mask-image: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\");\n    mask-repeat: no-repeat;\n    mask-position: center;\n  }\n  [data-vc-arrow]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-arrow=prev]::before {\n    transform: rotate(90deg);\n  }\n  [data-vc-arrow=next]::before {\n    transform: rotate(-90deg);\n  }\n  [data-vc=controls] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n  [data-vc=grid] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n  [data-vc=column] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n  [data-vc=header] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: 0.75rem;\n  }\n  [data-vc-header=content] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n  [data-vc=month],\n  [data-vc=year] {\n    padding: 0.25rem 0.5rem;\n    margin-inline: -0.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc=month]:disabled,\n  [data-vc=year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc=month]:hover:not(:disabled),\n  [data-vc=year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc=content] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n  [data-vc=months],\n  [data-vc=years] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: 0.25rem;\n    align-items: center;\n  }\n  [data-vc=years] {\n    --vc-columns: 5;\n  }\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: 0.25rem;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-months-month]:disabled,\n  [data-vc-years-year]:disabled {\n    color: var(--datepicker-day-disabled-color);\n    pointer-events: none;\n  }\n  [data-vc-months-month]:hover:not(:disabled),\n  [data-vc-years-year]:hover:not(:disabled) {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected], [data-vc-months-month][data-vc-years-year-selected],\n  [data-vc-years-year][data-vc-months-month-selected],\n  [data-vc-years-year][data-vc-years-year-selected] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-months-month][data-vc-months-month-selected]:hover, [data-vc-months-month][data-vc-years-year-selected]:hover,\n  [data-vc-years-year][data-vc-months-month-selected]:hover,\n  [data-vc-years-year][data-vc-years-year-selected]:hover {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc=week] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: 0.5rem;\n  }\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: 0.75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n  [data-vc=dates] {\n    pointer-events: none;\n  }\n  [data-vc-dates=row] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: 0.125rem;\n    padding-bottom: 0.125rem;\n    pointer-events: auto;\n  }\n  [data-vc-date]:not(:has([data-vc-date-btn])), [data-vc-date][data-vc-date-disabled], [data-vc-date][data-vc-date-disabled] [data-vc-date-btn] {\n    pointer-events: none;\n  }\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: 0.75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n  }\n  [data-vc-date-btn]:hover {\n    background-color: var(--datepicker-day-hover-bg);\n  }\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n  [data-vc-date-month=next] [data-vc-date-btn],\n  [data-vc-date-month=prev] [data-vc-date-btn] {\n    opacity: 0.5;\n  }\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n  [data-vc-date-hover=first] [data-vc-date-btn] {\n    border-start-start-radius: var(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=last] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n  [data-vc-date-hover=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=middle] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: 0.8;\n  }\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n  }\n  [data-vc-date-selected=first] [data-vc-date-btn] {\n    border-top-left-radius: var(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n  [data-vc-date-selected=last] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n  [data-vc-date-selected=first-and-last] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n@layer components {\n  :root.dialog-open {\n    overflow: hidden;\n  }\n  .dialog {\n    --dialog-padding: 1rem;\n    --dialog-width: 500px;\n    --dialog-margin: 1.75rem;\n    --dialog-color: var(--fg-body);\n    --dialog-bg: var(--bg-body);\n    --dialog-border-color: var(--border-color-translucent);\n    --dialog-border-width: var(--border-width);\n    --dialog-border-radius: var(--radius-7);\n    --dialog-box-shadow: var(--box-shadow-lg);\n    --dialog-transition-duration: 0.3s;\n    --dialog-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    --dialog-backdrop-bg: light-dark(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.65));\n    --dialog-backdrop-blur: 8px;\n    --dialog-header-padding: 1rem;\n    --dialog-header-border-color: var(--border-color-translucent);\n    --dialog-header-border-width: var(--border-width);\n    --dialog-footer-padding: 1rem;\n    --dialog-footer-border-color: var(--border-color-translucent);\n    --dialog-footer-border-width: var(--border-width);\n    --dialog-footer-gap: 0.5rem;\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    border-radius: var(--dialog-border-radius);\n    box-shadow: var(--dialog-box-shadow);\n  }\n  .dialog:not(.dialog-instant) {\n    opacity: 0;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s var(--dialog-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).dialog-slide-down {\n    transform: translateY(-3rem);\n  }\n  .dialog:not(.dialog-instant).dialog-slide-up {\n    transform: translateY(3rem);\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transition: opacity var(--dialog-transition-duration) var(--dialog-transition-timing), transform var(--dialog-transition-duration) var(--dialog-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)[open]:not(.hiding) {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant)[open]:not(.hiding) {\n    transform: none;\n  }\n  .dialog:not(.dialog-instant)[open].dialog-static:not(.hiding) {\n    transform: scale(1.02);\n  }\n  .dialog:not(.dialog-instant)::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n    transition: background-color var(--dialog-transition-duration) var(--dialog-transition-timing), backdrop-filter var(--dialog-transition-duration) var(--dialog-transition-timing), display var(--dialog-transition-duration) allow-discrete, overlay var(--dialog-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .dialog:not(.dialog-instant)::backdrop {\n      transition: none;\n    }\n  }\n  .dialog:not(.dialog-instant).hiding::backdrop {\n    background-color: transparent;\n    backdrop-filter: blur(0);\n  }\n  .dialog.dialog-instant::backdrop {\n    background-color: var(--dialog-backdrop-bg);\n    backdrop-filter: blur(var(--dialog-backdrop-blur));\n  }\n  .dialog[open]:not(.hiding) {\n    overflow: visible;\n    visibility: visible;\n    opacity: 1;\n    transform: none;\n  }\n  .dialog.dialog-nonmodal {\n    position: fixed;\n    inset-block-start: 50%;\n    inset-inline-start: 50%;\n    z-index: 1055;\n    margin-inline: 0;\n    transform: translate(-50%, -50%);\n  }\n  .dialog.dialog-scrollable[open] {\n    max-height: calc(100% - var(--dialog-margin) * 2);\n  }\n  .dialog.dialog-scrollable[open] .dialog-body {\n    overflow-y: auto;\n  }\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n  }\n  .dialog-sm {\n    --dialog-width: 280px;\n  }\n  .dialog-lg {\n    --dialog-width: 800px;\n  }\n  .dialog-xl {\n    --dialog-width: 1140px;\n  }\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n  @media (width < 576px) {\n    .sm-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 768px) {\n    .md-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl-down\\:dialog-fullscreen {\n      --dialog-width: 100vw;\n      --dialog-margin: 0;\n      --dialog-border-radius: 0;\n      width: 100%;\n      max-width: none;\n      height: 100%;\n      max-height: none;\n    }\n  }\n  .dialog-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--dialog-header-padding);\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n  }\n  .dialog-header .btn-close {\n    margin-inline-start: auto;\n  }\n  .dialog-title {\n    margin-bottom: 0;\n    line-height: 1.5;\n    font-size: var(--font-size-md);\n  }\n  .dialog-body {\n    position: relative;\n    flex: 1 1 auto;\n    padding: var(--dialog-padding);\n  }\n  .dialog-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: var(--dialog-footer-gap);\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--dialog-footer-padding);\n    border-block-start: var(--dialog-footer-border-width) solid var(--dialog-footer-border-color);\n  }\n}\n@layer components {\n  .menu {\n    --menu-zindex: 1000;\n    --menu-gap: 0.125rem;\n    --menu-min-width: 10rem;\n    --menu-padding-x: 0.25rem;\n    --menu-padding-y: 0.25rem;\n    --menu-spacer: 0.125rem;\n    --menu-font-size: var(--font-size-sm);\n    --menu-color: var(--fg-body);\n    --menu-bg: var(--bg-body);\n    --menu-box-shadow: var(--box-shadow);\n    --menu-divider-bg: var(--border-color-translucent);\n    --menu-divider-margin-y: 0.125rem;\n    --menu-divider-margin-x: 0.25rem;\n    --menu-item-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-color: var(--menu-color, var(--fg-body));\n    --menu-item-hover-bg: var(--bg-1);\n    --menu-item-active-color: var(--primary-contrast);\n    --menu-item-active-bg: var(--primary-bg);\n    --menu-item-disabled-color: var(--fg-3);\n    --menu-item-gap: 0.5rem;\n    --menu-item-padding-x: 0.75rem;\n    --menu-item-padding-y: 0.25rem;\n    --menu-item-border-radius: var(--radius-5);\n    --menu-icon-size: 1rem;\n    --menu-description-font-size: var(--font-size-xs);\n    --menu-check-color: currentcolor;\n    --menu-header-color: var(--fg-3);\n    --menu-header-padding-x: 0.75rem;\n    --menu-header-padding-y: 0.25rem;\n    --menu-transition-duration: 0.15s;\n    --menu-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style-type: \"\";\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    border-radius: var(--menu-border-radius, var(--radius-7));\n    box-shadow: var(--menu-box-shadow);\n    opacity: 0;\n    transform: scale(0.95);\n    transform-origin: top start;\n  }\n  .menu[data-bs-placement^=top] {\n    transform-origin: bottom start;\n  }\n  .menu[data-bs-placement=bottom-end] {\n    transform-origin: top end;\n  }\n  .menu[data-bs-placement=top-end] {\n    transform-origin: bottom end;\n  }\n  .menu[data-bs-placement^=left] {\n    transform-origin: top end;\n  }\n  .menu {\n    transition: opacity var(--menu-transition-duration) var(--menu-transition-timing), transform var(--menu-transition-duration) var(--menu-transition-timing), display var(--menu-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .menu {\n      transition: none;\n    }\n  }\n  .menu.show {\n    display: flex;\n    opacity: 1;\n    transform: none;\n  }\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(0.95);\n    }\n  }\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-fg, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    border-radius: var(--menu-item-border-radius, 0);\n  }\n  .menu-item:hover, .menu-item:focus {\n    color: var(--theme-fg-emphasis, var(--menu-item-hover-color));\n    background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n  }\n  .menu-item.active, .menu-item:active {\n    color: var(--theme-contrast, var(--menu-item-active-color));\n    background-color: var(--theme-bg, var(--menu-item-active-bg));\n  }\n  .menu-item.active .menu-item-icon, .menu-item:active .menu-item-icon {\n    color: inherit !important;\n  }\n  .menu-item.selected {\n    font-weight: 600;\n  }\n  .menu-item.disabled, .menu-item:disabled {\n    color: var(--menu-item-disabled-color);\n    pointer-events: none;\n    background-color: transparent;\n    background-image: none;\n  }\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: 0.125rem;\n  }\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: 0.125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n  }\n  .selected > .menu-item-check {\n    visibility: visible;\n  }\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n  .submenu {\n    position: relative;\n  }\n  .submenu > .menu-item {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .submenu > .menu-item::after {\n    display: inline-block;\n    flex-shrink: 0;\n    width: 0.375em;\n    height: 0.375em;\n    margin-inline-start: auto;\n    content: \"\";\n    border-color: currentcolor;\n    border-style: solid;\n    border-width: 0 0.125em 0.125em 0;\n    transform: rotate(-45deg);\n  }\n  [dir=rtl] .submenu > .menu-item::after {\n    transform: rotate(135deg);\n  }\n  .submenu > .menu {\n    top: 0;\n    margin-top: calc(-1 * var(--menu-padding-y));\n  }\n  .submenu:hover > .menu-item, .submenu:focus-within > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n  .submenu.show > .menu-item {\n    color: var(--menu-item-hover-color);\n    background-color: var(--menu-item-hover-bg);\n  }\n}\n@layer components {\n  .list-group {\n    --list-group-color: var(--fg-body);\n    --list-group-bg: var(--bg-body);\n    --list-group-border-color: var(--border-color);\n    --list-group-border-width: var(--border-width);\n    --list-group-border-radius: var(--radius-5);\n    --list-group-item-padding-x: var(--spacer);\n    --list-group-item-padding-y: var(--spacer-2);\n    --list-group-action-color: var(--fg-2);\n    --list-group-action-hover-color: var(--fg-1);\n    --list-group-action-hover-bg: var(--bg-1);\n    --list-group-action-active-color: var(--fg-body);\n    --list-group-action-active-bg: var(--bg-2);\n    --list-group-disabled-color: var(--fg-3);\n    --list-group-disabled-bg: var(--bg-body);\n    --list-group-active-color: var(--primary-contrast);\n    --list-group-active-bg: var(--primary-bg);\n    --list-group-active-border-color: var(--primary-bg);\n    display: flex;\n    flex-direction: column;\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    border-radius: var(--list-group-border-radius);\n  }\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n  }\n  .list-group-numbered > .list-group-item::before {\n    content: counters(section, \".\") \". \";\n    counter-increment: section;\n  }\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-fg, var(--list-group-color));\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n  }\n  .list-group-item:first-child {\n    border-start-start-radius: inherit;\n    border-start-end-radius: inherit;\n  }\n  .list-group-item:last-child {\n    border-end-start-radius: inherit;\n    border-end-end-radius: inherit;\n  }\n  .list-group-item.disabled, .list-group-item:disabled {\n    color: var(--list-group-disabled-color);\n    pointer-events: none;\n    background-color: var(--list-group-disabled-bg);\n  }\n  .list-group-item.active {\n    z-index: 2;\n    color: var(--list-group-active-color);\n    background-color: var(--list-group-active-bg);\n    border-color: var(--list-group-active-border-color);\n  }\n  .list-group-item + .list-group-item {\n    border-block-start-width: 0;\n  }\n  .list-group-item + .list-group-item.active {\n    margin-top: calc(-1 * var(--list-group-border-width));\n    border-block-start-width: var(--list-group-border-width);\n  }\n  .list-group-item-action {\n    width: 100%;\n    color: var(--theme-fg, var(--list-group-action-color));\n    text-align: inherit;\n    text-decoration: none;\n  }\n  .list-group-item-action:not(.active):hover, .list-group-item-action:not(.active):focus {\n    z-index: 1;\n    color: var(--theme-fg-emphasis, var(--list-group-action-hover-color));\n    text-decoration: none;\n    background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n  }\n  .list-group-item-action:not(.active):active {\n    color: var(--theme-fg-emphasis, var(--list-group-action-active-color));\n    background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n  }\n  .list-group-horizontal {\n    flex-direction: row;\n  }\n  .list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n    border-end-start-radius: var(--list-group-border-radius);\n    border-start-end-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n    border-start-end-radius: var(--list-group-border-radius);\n    border-end-start-radius: 0;\n  }\n  .list-group-horizontal > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item {\n    border-block-start-width: var(--list-group-border-width);\n    border-inline-start-width: 0;\n  }\n  .list-group-horizontal > .list-group-item + .list-group-item.active {\n    margin-inline-start: calc(-1 * var(--list-group-border-width));\n    border-inline-start-width: var(--list-group-border-width);\n  }\n  @container (width >= 576px) {\n    .sm\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .sm\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .sm\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .md\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .md\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .lg\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .lg\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .xl\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .xl\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:list-group-horizontal {\n      flex-direction: row;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item:first-child:not(:last-child) {\n      border-end-start-radius: var(--list-group-border-radius);\n      border-start-end-radius: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item:last-child:not(:first-child) {\n      border-start-end-radius: var(--list-group-border-radius);\n      border-end-start-radius: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item.active {\n      margin-top: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item + .list-group-item {\n      border-block-start-width: var(--list-group-border-width);\n      border-inline-start-width: 0;\n    }\n    .\\32 xl\\:list-group-horizontal > .list-group-item + .list-group-item.active {\n      margin-inline-start: calc(-1 * var(--list-group-border-width));\n      border-inline-start-width: var(--list-group-border-width);\n    }\n  }\n  .list-group-flush {\n    border-radius: 0;\n  }\n  .list-group-flush > .list-group-item {\n    border-width: 0 0 var(--list-group-border-width);\n  }\n  .list-group-flush > .list-group-item:last-child {\n    border-block-end-width: 0;\n  }\n}\n@layer components {\n  .nav {\n    --nav-gap: 0.125rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-align: center;\n    --nav-link-justify: center;\n    --nav-link-padding-x: 0.75rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--fg-2);\n    --nav-link-hover-color: var(--fg-1);\n    --nav-link-hover-bg: var(--bg-1);\n    --nav-link-active-color: var(--fg-body);\n    --nav-link-active-bg: var(--bg-2);\n    --nav-link-disabled-color: var(--fg-4);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-transition-property: color, background-color, border-color;\n    --nav-link-transition-timing: 0.15s ease-in-out;\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing);\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n  .nav-item {\n    display: flex;\n  }\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    border-radius: var(--radius-5);\n    transition: var(--nav-link-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .nav-link {\n      transition: none;\n    }\n  }\n  .nav-link:hover, .nav-link:focus {\n    color: var(--nav-link-hover-color);\n    background-color: var(--nav-link-hover-bg);\n  }\n  .nav-link:focus-visible {\n    --focus-ring-offset: 1px;\n    color: var(--nav-link-hover-color);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .nav-link.active, .nav-link:active {\n    color: var(--nav-link-active-color);\n    background-color: var(--nav-link-active-bg);\n  }\n  .nav-link.disabled, .nav-link:disabled {\n    color: var(--nav-link-disabled-color);\n    pointer-events: none;\n    cursor: default;\n  }\n  .nav-tabs {\n    --nav-tabs-border-width: var(--border-width);\n    --nav-tabs-border-color: var(--border-color);\n    --nav-tabs-border-radius: var(--radius-5);\n    --nav-tabs-link-hover-border-color: var(--border-subtle);\n    --nav-tabs-link-active-color: var(--fg-color);\n    --nav-tabs-link-active-bg: var(--bg-body);\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body);\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link {\n    border: var(--nav-tabs-border-width) solid transparent;\n    border-bottom-color: var(--nav-tabs-border-color);\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .nav-tabs .nav-link:hover {\n    isolation: isolate;\n    border-color: var(--nav-tabs-link-hover-border-color);\n    border-bottom-color: var(--nav-tabs-border-color);\n  }\n  .nav-tabs .nav-link.active,\n  .nav-tabs .nav-item.show .nav-link {\n    color: var(--nav-tabs-link-active-color);\n    background-color: var(--nav-tabs-link-active-bg);\n    border-color: var(--nav-tabs-link-active-border-color);\n    border-bottom-color: var(--nav-tabs-link-active-bg);\n  }\n  .nav-tabs .menu {\n    margin-top: calc(-1 * var(--nav-tabs-border-width));\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .nav-pills {\n    --nav-pills-bg: var(--bg-1);\n    --nav-pills-padding: 0.25rem;\n    --nav-pills-border-radius: var(--radius-9);\n    --nav-pills-link-active-color: var(--primary-contrast);\n    --nav-pills-link-active-bg: var(--primary-bg);\n    --nav-pills-link-border-radius: var(--radius-9);\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    border-radius: var(--nav-pills-border-radius);\n  }\n  .nav-pills .nav-link {\n    border-radius: var(--nav-pills-link-border-radius);\n  }\n  .nav-pills .nav-link.active,\n  .nav-pills .show > .nav-link {\n    color: var(--nav-pills-link-active-color);\n    background-color: var(--nav-pills-link-active-bg);\n    background-image: var(--gradient);\n  }\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n  }\n  .nav-pills-vertical .nav-item,\n  .nav-pills-vertical .nav-link {\n    width: 100%;\n  }\n  .nav-underline {\n    --nav-gap: 1rem;\n    --nav-link-active-bg: transparent;\n    --nav-underline-border-width: 0.125rem;\n    --nav-underline-link-active-color: var(--fg-color);\n  }\n  .nav-underline .nav-link {\n    padding-inline: 0;\n    border: 0;\n    border-block-end: var(--nav-underline-border-width) solid transparent;\n    border-radius: 0;\n  }\n  .nav-underline .nav-link:hover, .nav-underline .nav-link:focus {\n    border-block-end-color: currentcolor;\n  }\n  .nav-underline .nav-link.active,\n  .nav-underline .show > .nav-link {\n    font-weight: 700;\n    color: var(--nav-underline-link-active-color);\n    border-block-end-color: currentcolor;\n  }\n  .nav-fill > .nav-link,\n  .nav-fill .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n  .nav-justified > .nav-link,\n  .nav-justified .nav-item {\n    flex-grow: 1;\n    flex-basis: 0;\n    text-align: center;\n  }\n  .nav-fill .nav-item .nav-link,\n  .nav-justified .nav-item .nav-link {\n    width: 100%;\n  }\n  .tab-content > .tab-pane {\n    display: none;\n  }\n  .tab-content > .active {\n    display: block;\n  }\n}\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0;\n  }\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\n  }\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n  .nav-overflow [data-bs-nav-overflow=true] {\n    display: none;\n  }\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n@layer components {\n  .navbar {\n    --navbar-padding-x: 0;\n    --navbar-padding-y: 0.5rem;\n    --navbar-color: var(--fg-2);\n    --navbar-hover-color: var(--fg-1);\n    --navbar-disabled-color: var(--fg-3);\n    --navbar-active-color: var(--fg-body);\n    --navbar-brand-padding-y: 0.75rem;\n    --navbar-brand-margin-end: 1rem;\n    --navbar-brand-font-size: var(--font-size-md);\n    --navbar-brand-font-weight: var(--font-weight-medium);\n    --navbar-brand-color: var(--fg-body);\n    --navbar-brand-hover-color: var(--fg-body);\n    --navbar-nav-link-padding-x: 0.75rem;\n    --navbar-toggler-width: 2rem;\n    --navbar-toggler-padding-y: 0.25rem;\n    --navbar-toggler-padding-x: 0.75rem;\n    --navbar-toggler-font-size: var(--font-size-lg);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent);\n    --navbar-toggler-border-radius: var(--radius-5);\n    --navbar-toggler-transition: box-shadow 0.15s ease-in-out;\n    --navbar-toggler-icon-size: 1.25rem;\n    --navbar-toggler-icon: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/%3e%3c/svg%3e\");\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    container-type: inline-size;\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n  }\n  .navbar > .\\32 xl\\:container, .navbar > .xl\\:container, .navbar > .lg\\:container, .navbar > .md\\:container, .navbar > .sm\\:container, .navbar > .container,\n  .navbar > .container-fluid {\n    display: flex;\n    flex-wrap: inherit;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n  }\n  .navbar-brand:hover, .navbar-brand:focus {\n    color: var(--navbar-brand-hover-color);\n  }\n  .navbar-nav {\n    --nav-gap: 0.25rem;\n    --nav-link-gap: 0.5rem;\n    --nav-link-padding-x: 0.5rem;\n    --nav-link-padding-y: 0.375rem;\n    --nav-link-color: var(--navbar-color);\n    --nav-link-border-width: var(--border-width);\n    --nav-link-hover-color: var(--navbar-hover-color);\n    --nav-link-hover-bg: transparent;\n    --nav-link-active-color: var(--navbar-active-color);\n    --nav-link-active-bg: transparent;\n    --nav-link-disabled-color: var(--navbar-disabled-color);\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n  .navbar-nav .nav-link.active, .navbar-nav .nav-link.show {\n    color: var(--navbar-active-color);\n    border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n  }\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n  }\n  .navbar-text a,\n  .navbar-text a:hover,\n  .navbar-text a:focus {\n    color: var(--navbar-active-color);\n  }\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    mask-image: var(--navbar-toggler-icon);\n    mask-repeat: no-repeat;\n    mask-position: center;\n    mask-size: contain;\n  }\n  .navbar-expand > .container,\n  .navbar-expand > .container-fluid {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand .navbar-nav {\n    --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n    flex-direction: row;\n  }\n  .navbar-expand .navbar-toggler {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] {\n    position: static !important;\n    inset: auto !important;\n    z-index: auto;\n    display: flex !important;\n    flex-grow: 1;\n    width: auto !important;\n    max-width: none !important;\n    height: auto !important;\n    max-height: none !important;\n    padding: 0;\n    margin: 0;\n    visibility: visible !important;\n    background-color: transparent !important;\n    border: 0 !important;\n    transform: none !important;\n    box-shadow: none;\n    transition: none;\n  }\n  .navbar-expand [class*=drawer] .drawer-header {\n    display: none !important;\n  }\n  .navbar-expand [class*=drawer] .drawer-body {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: row;\n    align-items: center;\n    padding: 0;\n    overflow-y: visible;\n  }\n  .navbar-expand {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  @container (width >= 576px) {\n    .sm\\:navbar-expand > .container,\n    .sm\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .sm\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .sm\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .sm\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:navbar-expand > .container,\n    .md\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .md\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .md\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .md\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:navbar-expand > .container,\n    .lg\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .lg\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .lg\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .lg\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:navbar-expand > .container,\n    .xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:navbar-expand > .container,\n    .\\32 xl\\:navbar-expand > .container-fluid {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:navbar-expand .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n    .\\32 xl\\:navbar-expand .navbar-toggler {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] {\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      box-shadow: none;\n      transition: none;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-header {\n      display: none !important;\n    }\n    .\\32 xl\\:navbar-expand [class*=drawer] .drawer-body {\n      display: flex;\n      flex-grow: 1;\n      flex-direction: row;\n      align-items: center;\n      padding: 0;\n      overflow-y: visible;\n    }\n  }\n  .navbar [class*=drawer]:not([open], .hiding) {\n    transition: none !important;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .navbar [class*=drawer]:not([open], .hiding) {\n      transition: none;\n    }\n  }\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n  }\n  .navbar-translucent::before {\n    position: absolute;\n    inset: 0;\n    z-index: -1;\n    content: \"\";\n    background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n    background-image: none;\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .navbar[data-bs-theme=dark] {\n    --navbar-color: color-mix(in oklch, var(--white) 0.55, transparent);\n    --navbar-hover-color: color-mix(in oklch, var(--white) 0.75, transparent);\n    --navbar-disabled-color: color-mix(in oklch, var(--white) 0.25, transparent);\n    --navbar-active-color: var(--white);\n    --navbar-brand-color: var(--white);\n    --navbar-brand-hover-color: var(--white);\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) 0.1, transparent);\n  }\n}\n.drawer, .\\32 xl\\:drawer, .xl\\:drawer, .lg\\:drawer, .md\\:drawer, .sm\\:drawer {\n  --drawer-inset: var(--spacer);\n  --drawer-zindex: 1045;\n  --drawer-width: 400px;\n  --drawer-height: 30vh;\n  --drawer-padding-x: var(--spacer);\n  --drawer-padding-y: var(--spacer);\n  --drawer-color: var(--fg-body);\n  --drawer-bg: var(--bg-body);\n  --drawer-border-width: var(--border-width);\n  --drawer-border-color: var(--border-color-translucent);\n  --drawer-border-radius: var(--radius-7);\n  --drawer-box-shadow: var(--box-shadow-lg);\n  --drawer-transition-duration: 0.3s;\n  --drawer-transition-timing: cubic-bezier(0.22, 1, 0.36, 1);\n  --drawer-title-line-height: 1.5;\n  --drawer-backdrop-bg: color-mix(in oklch, var(--bg-body) 25%, transparent);\n  --drawer-backdrop-blur: 8px;\n}\n\n@layer components {\n  @media (width < 576px) {\n    .sm\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .sm\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .sm\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .sm\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .sm\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 576px) {\n    .sm\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 576px) and (prefers-reduced-motion: reduce) {\n    .sm\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 576px) {\n    .sm\\:drawer .drawer-header {\n      display: none;\n    }\n    .sm\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .md\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .md\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .md\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .md\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .md\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .md\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 768px) {\n    .md\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 768px) and (prefers-reduced-motion: reduce) {\n    .md\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:drawer .drawer-header {\n      display: none;\n    }\n    .md\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .lg\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .lg\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .lg\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .lg\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1024px) {\n    .lg\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1024px) and (prefers-reduced-motion: reduce) {\n    .lg\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:drawer .drawer-header {\n      display: none;\n    }\n    .lg\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1280px) {\n    .xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1280px) and (prefers-reduced-motion: reduce) {\n    .xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer {\n      position: fixed;\n      inset: auto;\n      z-index: var(--drawer-zindex);\n      display: flex;\n      flex-direction: column;\n      width: auto;\n      max-width: calc(100% - var(--drawer-inset) * 2);\n      height: auto;\n      max-height: calc(100% - var(--drawer-inset) * 2);\n      padding: 0;\n      margin: 0;\n      color: var(--drawer-color);\n      visibility: hidden;\n      background-color: var(--drawer-bg);\n      background-clip: padding-box;\n      border: var(--drawer-border-width) solid var(--drawer-border-color);\n      outline: 0;\n      border-radius: var(--drawer-border-radius);\n      box-shadow: var(--drawer-box-shadow);\n    }\n    .\\32 xl\\:drawer:where(.drawer-start) {\n      inset-block: var(--drawer-inset);\n      inset-inline-start: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-end) {\n      inset-block: var(--drawer-inset);\n      inset-inline-end: var(--drawer-inset);\n      width: var(--drawer-width);\n    }\n    .\\32 xl\\:drawer:where(.drawer-top) {\n      inset: var(--drawer-inset) var(--drawer-inset) auto;\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-bottom) {\n      inset: auto var(--drawer-inset) var(--drawer-inset);\n      height: var(--drawer-height);\n    }\n    .\\32 xl\\:drawer:where(.drawer-fullscreen) {\n      inset: var(--drawer-inset);\n      width: auto;\n      max-width: none;\n      height: auto;\n      max-height: none;\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-start) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(100% + var(--drawer-inset)));\n    }\n    :root:dir(rtl) .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-end) {\n      transform: translateX(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-top) {\n      transform: translateY(calc(-100% - var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-bottom) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n      transform: translateY(calc(100% + var(--drawer-inset)));\n    }\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      visibility: visible;\n      transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n      transform: none;\n    }\n  }\n  @media (width < 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  @media (width < 1536px) {\n    .\\32 xl\\:drawer[open] {\n      visibility: visible;\n      transform: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer {\n      --drawer-height: auto;\n      --drawer-border-width: 0;\n      position: static !important;\n      inset: auto;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none;\n      height: auto !important;\n      max-height: none;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      transition: none !important;\n      border-radius: 0;\n      box-shadow: none;\n    }\n  }\n  @media (width >= 1536px) and (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer {\n      transition: none;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:drawer .drawer-header {\n      display: none;\n    }\n    .\\32 xl\\:drawer .drawer-body {\n      display: flex;\n      flex-grow: 0;\n      flex-direction: row;\n      width: 100%;\n      padding: 0;\n      overflow-y: visible;\n      background-color: transparent !important;\n    }\n  }\n  .drawer {\n    position: fixed;\n    inset: auto;\n    z-index: var(--drawer-zindex);\n    display: flex;\n    flex-direction: column;\n    width: auto;\n    max-width: calc(100% - var(--drawer-inset) * 2);\n    height: auto;\n    max-height: calc(100% - var(--drawer-inset) * 2);\n    padding: 0;\n    margin: 0;\n    color: var(--drawer-color);\n    visibility: hidden;\n    background-color: var(--drawer-bg);\n    background-clip: padding-box;\n    border: var(--drawer-border-width) solid var(--drawer-border-color);\n    outline: 0;\n    border-radius: var(--drawer-border-radius);\n    box-shadow: var(--drawer-box-shadow);\n  }\n  .drawer:where(.drawer-start) {\n    inset-block: var(--drawer-inset);\n    inset-inline-start: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-end) {\n    inset-block: var(--drawer-inset);\n    inset-inline-end: var(--drawer-inset);\n    width: var(--drawer-width);\n  }\n  .drawer:where(.drawer-top) {\n    inset: var(--drawer-inset) var(--drawer-inset) auto;\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-bottom) {\n    inset: auto var(--drawer-inset) var(--drawer-inset);\n    height: var(--drawer-height);\n  }\n  .drawer:where(.drawer-fullscreen) {\n    inset: var(--drawer-inset);\n    width: auto;\n    max-width: none;\n    height: auto;\n    max-height: none;\n  }\n  .drawer:not(.drawer-instant) {\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant) {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-start) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(100% + var(--drawer-inset)));\n  }\n  :root:dir(rtl) .drawer:not(.drawer-instant):where(.drawer-end) {\n    transform: translateX(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-top) {\n    transform: translateY(calc(-100% - var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-bottom) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant):where(.drawer-fullscreen) {\n    transform: translateY(calc(100% + var(--drawer-inset)));\n  }\n  .drawer:not(.drawer-instant)[open] {\n    visibility: visible;\n    transition: transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer:not(.drawer-instant)[open] {\n      transition: none;\n    }\n  }\n  .drawer:not(.drawer-instant)[open] {\n    transform: none;\n  }\n  .drawer[open] {\n    visibility: visible;\n    transform: none;\n  }\n  .sm\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .sm\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .md\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .md\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .lg\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .lg\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .xl\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .\\32 xl\\:drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .\\32 xl\\:drawer::backdrop {\n      transition: none;\n    }\n  }\n  .drawer::backdrop {\n    background-color: var(--drawer-backdrop-bg);\n    backdrop-filter: blur(var(--drawer-backdrop-blur));\n    transition: background-color var(--drawer-transition-duration) var(--drawer-transition-timing), backdrop-filter var(--drawer-transition-duration) var(--drawer-transition-timing), display var(--drawer-transition-duration) allow-discrete, overlay var(--drawer-transition-duration) allow-discrete;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .drawer::backdrop {\n      transition: none;\n    }\n  }\n  @starting-style {\n    .sm\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .md\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .lg\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .\\32 xl\\:drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n    .drawer::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n  }\n  .drawer-static {\n    transform: scale(1.02);\n  }\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .drawer-sheet {\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100vw;\n    margin-inline: auto;\n    margin-bottom: calc(-1 * var(--drawer-border-width));\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  @media (width >= 1024px) {\n    .drawer-sheet {\n      max-width: var(--drawer-sheet-width, 760px);\n    }\n  }\n  .drawer-header {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n  }\n  .drawer-header .btn-close {\n    margin-block: calc(-0.5 * var(--drawer-padding-y));\n    margin-inline-start: auto;\n  }\n  .drawer-title {\n    margin-bottom: 0;\n    line-height: var(--drawer-title-line-height);\n  }\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    flex: 1 1 auto;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    overflow-y: auto;\n  }\n  .drawer-footer {\n    display: flex;\n    flex-shrink: 0;\n    flex-wrap: wrap;\n    gap: 0.5rem;\n    align-items: center;\n    justify-content: flex-end;\n    padding: var(--drawer-padding-y) var(--drawer-padding-x);\n    border-block-start: var(--drawer-border-width) solid var(--drawer-border-color);\n  }\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\n}\n@layer components {\n  .pagination {\n    --pagination-min-height: var(--btn-input-min-height);\n    --pagination-padding-x: var(--btn-input-padding-x);\n    --pagination-padding-y: var(--btn-input-padding-y);\n    --pagination-font-size: var(--btn-input-font-size);\n    --pagination-color: var(--link-color);\n    --pagination-bg: var(--bg-body);\n    --pagination-border-width: var(--border-width);\n    --pagination-border-color: var(--border-color);\n    --pagination-border-radius: var(--btn-input-border-radius);\n    --pagination-hover-color: var(--link-hover-color);\n    --pagination-hover-bg: var(--bg-1);\n    --pagination-hover-border-color: var(--border-color);\n    --pagination-focus-color: var(--link-hover-color);\n    --pagination-focus-bg: var(--bg-2);\n    --pagination-active-color: var(--primary-contrast);\n    --pagination-active-bg: var(--primary-bg);\n    --pagination-active-border-color: var(--primary-bg);\n    --pagination-disabled-color: var(--fg-3);\n    --pagination-disabled-bg: var(--bg-2);\n    --pagination-disabled-border-color: var(--border-color);\n    display: flex;\n    padding-inline-start: 0;\n    list-style-type: \"\";\n  }\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .page-link {\n      transition: none;\n    }\n  }\n  .page-link:hover {\n    z-index: 2;\n    color: var(--pagination-hover-color);\n    background-color: var(--pagination-hover-bg);\n    border-color: var(--pagination-hover-border-color);\n  }\n  .page-link:focus-visible {\n    z-index: 3;\n    color: var(--pagination-focus-color);\n    background-color: var(--pagination-focus-bg);\n    outline: var(--focus-ring);\n    outline-offset: var(--focus-ring-offset);\n  }\n  .page-link.active, .active > .page-link {\n    z-index: 3;\n    color: var(--pagination-active-color);\n    background-color: var(--pagination-active-bg);\n    background-image: var(--gradient);\n    border-color: var(--pagination-active-border-color);\n  }\n  .page-link.disabled, .disabled > .page-link {\n    color: var(--pagination-disabled-color);\n    pointer-events: none;\n    background-color: var(--pagination-disabled-bg);\n    border-color: var(--pagination-disabled-border-color);\n  }\n  .page-item:not(:first-child) .page-link {\n    margin-inline-start: calc(-1 * var(--pagination-border-width));\n  }\n  .page-item:first-child .page-link {\n    border-start-start-radius: var(--pagination-border-radius);\n    border-end-start-radius: var(--pagination-border-radius);\n  }\n  .page-item:last-child .page-link {\n    border-start-end-radius: var(--pagination-border-radius);\n    border-end-end-radius: var(--pagination-border-radius);\n  }\n  .pagination-sm {\n    --pagination-min-height: var(--bs-btn-input-sm-min-height);\n    --pagination-padding-y: var(--btn-input-sm-padding-y);\n    --pagination-padding-x: var(--btn-input-sm-padding-x);\n    --pagination-font-size: var(--btn-input-sm-font-size);\n    --pagination-border-radius: var(--btn-input-sm-border-radius);\n  }\n  .pagination-lg {\n    --pagination-min-height: var(--bs-btn-input-lg-min-height);\n    --pagination-padding-y: var(--btn-input-lg-padding-y);\n    --pagination-padding-x: var(--btn-input-lg-padding-x);\n    --pagination-font-size: var(--btn-input-lg-font-size);\n    --pagination-border-radius: var(--btn-input-lg-border-radius);\n  }\n}\n@layer components {\n  .placeholder {\n    --placeholder-opacity-max: 0.5;\n    --placeholder-opacity-min: 0.2;\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n  }\n  .placeholder.btn::before {\n    display: inline-block;\n    content: \"\";\n  }\n  .placeholder-xs {\n    min-height: 0.6em;\n  }\n  .placeholder-sm {\n    min-height: 0.8em;\n  }\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n  .placeholder-glow .placeholder {\n    animation: placeholder-glow 2s ease-in-out infinite;\n  }\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, #000 55%, rgb(0, 0, 0, calc(1 - var(--placeholder-opacity-min))) 75%, #000 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n@layer components {\n  .popover {\n    --popover-zindex: 1070;\n    --popover-max-width: 280px;\n    --popover-font-size: var(--font-size-sm);\n    --popover-bg: var(--bg-body);\n    --popover-border-width: var(--border-width);\n    --popover-border-color: var(--border-color-translucent);\n    --popover-border-radius: var(--radius-7);\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width));\n    --popover-box-shadow: var(--box-shadow);\n    --popover-header-padding-x: var(--spacer);\n    --popover-header-padding-y: var(--spacer-3);\n    --popover-header-font-size: var(--font-size-sm);\n    --popover-header-color: inherit;\n    --popover-header-bg: var(--bg-1);\n    --popover-body-padding-x: var(--spacer);\n    --popover-body-padding-y: var(--spacer-3);\n    --popover-body-color: var(--fg-body);\n    --popover-arrow-width: 1rem;\n    --popover-arrow-height: 0.5rem;\n    --popover-arrow-border: var(--popover-border-color);\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--popover-font-size);\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    border-radius: var(--popover-border-radius);\n    box-shadow: var(--popover-box-shadow);\n  }\n  .popover .popover-arrow {\n    display: block;\n    width: var(--popover-arrow-width);\n    height: var(--popover-arrow-height);\n  }\n  .popover .popover-arrow::before, .popover .popover-arrow::after {\n    position: absolute;\n    display: block;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n    border-width: 0;\n  }\n  .bs-popover-top > .popover-arrow, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow {\n    bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::before {\n    bottom: 0;\n    border-block-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=top] > .popover-arrow::after {\n    bottom: var(--popover-border-width);\n    border-block-start-color: var(--popover-bg);\n  }\n  .bs-popover-end > .popover-arrow, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow {\n    left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * 0.5) 0;\n  }\n  .bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::before {\n    left: 0;\n    border-inline-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=right] > .popover-arrow::after {\n    left: var(--popover-border-width);\n    border-inline-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow {\n    top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    border-width: 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::before {\n    top: 0;\n    border-block-end-color: var(--popover-arrow-border);\n  }\n  .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow::after {\n    top: var(--popover-border-width);\n    border-block-end-color: var(--popover-bg);\n  }\n  .bs-popover-bottom > .popover-arrow:has(+ .popover-header)::after, .bs-popover-auto[data-bs-placement^=bottom] > .popover-arrow:has(+ .popover-header)::after {\n    border-block-end-color: var(--popover-header-bg);\n  }\n  .bs-popover-bottom .popover-header::before, .bs-popover-auto[data-bs-placement^=bottom] .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: var(--popover-arrow-width);\n    margin-inline-start: calc(-0.5 * var(--popover-arrow-width));\n    content: \"\";\n    border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n  }\n  .bs-popover-start > .popover-arrow, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow {\n    right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n    width: var(--popover-arrow-height);\n    height: var(--popover-arrow-width);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    border-width: calc(var(--popover-arrow-width) * 0.5) 0 calc(var(--popover-arrow-width) * 0.5) var(--popover-arrow-height);\n  }\n  .bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::before {\n    right: 0;\n    border-inline-start-color: var(--popover-arrow-border);\n  }\n  .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-bs-placement^=left] > .popover-arrow::after {\n    right: var(--popover-border-width);\n    border-inline-start-color: var(--popover-bg);\n  }\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    border-start-start-radius: var(--popover-inner-border-radius);\n    border-start-end-radius: var(--popover-inner-border-radius);\n  }\n  .popover-header:empty {\n    display: none;\n  }\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n@layer components {\n  @keyframes progress-bar-stripes {\n    0% {\n      background-position-x: var(--progress-height);\n    }\n  }\n  .progress,\n  .progress-stacked {\n    --progress-height: 1rem;\n    --progress-font-size: var(--font-size-sm);\n    --progress-bg: var(--bg-2);\n    --progress-border-radius: var(--radius-5);\n    --progress-box-shadow: var(--box-shadow-inset);\n    --progress-bar-color: var(--white);\n    --progress-bar-bg: var(--primary-bg);\n    --progress-bar-transition: width 0.6s ease;\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite;\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    border-radius: var(--progress-border-radius);\n    box-shadow: var(--progress-box-shadow);\n  }\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    transition: var(--progress-bar-transition);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar {\n      transition: none;\n    }\n  }\n  .progress-bar-striped {\n    background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n    background-size: var(--progress-height) var(--progress-height);\n  }\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n  .progress-bar-animated {\n    animation: var(--progress-bar-animation);\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .progress-bar-animated {\n      animation: none;\n    }\n  }\n}\n@layer components {\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n  @keyframes spinner-border {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n  .spinner-border {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-border-width: 0.25em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-border;\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n  .spinner-border-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n  }\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  .spinner-grow {\n    --spinner-width: 2rem;\n    --spinner-height: 2rem;\n    --spinner-vertical-align: -0.125em;\n    --spinner-animation-speed: 0.75s;\n    --spinner-animation-name: spinner-grow;\n    background-color: currentcolor;\n    opacity: 0;\n  }\n  .spinner-grow-sm {\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .spinner-border,\n    .spinner-grow {\n      --spinner-animation-speed: 1.5s;\n    }\n  }\n}\n@layer components {\n  .stepper {\n    --stepper-size: 2rem;\n    --stepper-gap: 1rem;\n    --stepper-font-size: var(--font-size-sm);\n    --stepper-text-gap: 0.5rem;\n    --stepper-track-size: 0.125rem;\n    --stepper-bg: var(--bg-2);\n    --stepper-active-color: var(--primary-contrast);\n    --stepper-active-bg: var(--primary-bg);\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\n  }\n  .stepper-item {\n    position: relative;\n    display: grid;\n    grid-template-rows: auto;\n    grid-template-columns: var(--stepper-size) auto;\n    gap: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, center);\n    text-decoration: none;\n  }\n  .stepper-item::before {\n    position: relative;\n    z-index: 1;\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--stepper-size);\n    height: var(--stepper-size);\n    padding: 0.5rem;\n    font-size: var(--stepper-font-size);\n    font-weight: 600;\n    line-height: 1;\n    text-align: center;\n    content: counter(stepper);\n    counter-increment: stepper;\n    background-color: var(--stepper-bg);\n    border-radius: 50%;\n  }\n  .stepper-item::after {\n    position: absolute;\n    inset-block-start: 50%;\n    inset-block-end: 100%;\n    inset-inline-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    width: var(--stepper-track-size);\n    height: calc(100% + var(--stepper-gap));\n    content: \"\";\n    background-color: var(--stepper-bg);\n  }\n  .stepper-item:last-child::after {\n    display: none;\n  }\n  .stepper-item.active::before, .stepper-item.active::after {\n    color: var(--theme-contrast, var(--stepper-active-color));\n    background-color: var(--theme-bg, var(--stepper-active-bg));\n  }\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n  .stepper-horizontal {\n    display: inline-grid;\n    grid-auto-columns: 1fr;\n    grid-auto-flow: column;\n  }\n  .stepper-horizontal .stepper-item {\n    grid-template-rows: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n  }\n  .stepper-horizontal .stepper-item::after {\n    inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n    inset-block-end: auto;\n    inset-inline-start: 50%;\n    inset-inline-end: 100%;\n    width: calc(100% + var(--stepper-gap));\n    height: var(--stepper-track-size);\n  }\n  .stepper-horizontal .stepper-item:last-child::after {\n    right: 100%;\n  }\n  @container (width >= 576px) {\n    .sm\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .sm\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .sm\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .sm\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .md\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .md\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .md\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .lg\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .lg\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .lg\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:stepper-horizontal {\n      display: inline-grid;\n      grid-auto-columns: 1fr;\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item {\n      grid-template-rows: var(--stepper-size) auto;\n      grid-template-columns: auto;\n      align-items: start;\n      justify-items: center;\n      text-align: center;\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item::after {\n      inset-block-start: calc(var(--stepper-size) * 0.5 - var(--stepper-track-size) * 0.5);\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n    .\\32 xl\\:stepper-horizontal .stepper-item:last-child::after {\n      right: 100%;\n    }\n  }\n  .stepper-overflow {\n    container-type: inline-size;\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n  }\n  .stepper-overflow > .stepper {\n    width: max-content;\n    min-width: 100%;\n  }\n}\n@layer components {\n  .toast {\n    --toast-zindex: 1090;\n    --toast-padding-x: 1rem;\n    --toast-padding-y: 0.75rem;\n    --toast-spacing: 1.5rem;\n    --toast-max-width: 350px;\n    --toast-font-size: var(--font-size-sm);\n    --toast-bg: var(--bg-body);\n    --toast-border-width: var(--border-width);\n    --toast-border-color: var(--border-color-translucent);\n    --toast-box-shadow: var(--box-shadow);\n    --toast-header-color: var(--fg-3);\n    --toast-header-bg: var(--bg-1);\n    --toast-header-border-color: var(--border-color-translucent);\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    border-radius: var(--toast-border-radius, var(--radius-7));\n  }\n  .toast.showing {\n    opacity: 0;\n  }\n  .toast:not(.show) {\n    display: none;\n  }\n  .toast-container {\n    --toast-zindex: 1090;\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n  }\n  .toast-container > :not(:last-child) {\n    margin-bottom: var(--toast-spacing);\n  }\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n  }\n  .toast-header .btn-close {\n    margin-inline-start: calc(0.5 * var(--toast-padding-x));\n    margin-inline-end: calc(-0.25 * var(--toast-padding-x));\n    color: inherit;\n  }\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n@layer components {\n  .tooltip {\n    --tooltip-zindex: 1080;\n    --tooltip-max-width: 200px;\n    --tooltip-padding-x: var(--spacer-3);\n    --tooltip-padding-y: calc(var(--spacer) * 0.375);\n    --tooltip-font-size: var(--font-size-sm);\n    --tooltip-color: var(--bg-body);\n    --tooltip-bg: var(--fg-body);\n    --tooltip-border-radius: var(--radius-5);\n    --tooltip-opacity: 0.95;\n    --tooltip-arrow-width: 0.8rem;\n    --tooltip-arrow-height: 0.4rem;\n    z-index: var(--tooltip-zindex);\n    display: block;\n    font-family: var(--body-font-family);\n    font-style: normal;\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    text-align: start;\n    text-decoration: none;\n    text-shadow: none;\n    text-transform: none;\n    letter-spacing: normal;\n    word-break: normal;\n    white-space: normal;\n    word-spacing: normal;\n    line-break: auto;\n    font-size: var(--tooltip-font-size);\n    word-wrap: break-word;\n    opacity: 0;\n  }\n  .tooltip.show {\n    opacity: var(--tooltip-opacity);\n  }\n  .tooltip .tooltip-arrow {\n    display: block;\n    width: var(--tooltip-arrow-width);\n    height: var(--tooltip-arrow-height);\n  }\n  .tooltip .tooltip-arrow::before {\n    position: absolute;\n    content: \"\";\n    border-color: transparent;\n    border-style: solid;\n  }\n  .bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=top] .tooltip-arrow::before {\n    top: -1px;\n    border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-block-start-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=right] .tooltip-arrow::before {\n    right: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * 0.5) 0;\n    border-inline-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n  }\n  .bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=bottom] .tooltip-arrow::before {\n    bottom: -1px;\n    border-width: 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-block-end-color: var(--tooltip-bg);\n  }\n  .bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n  }\n  .bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-bs-placement^=left] .tooltip-arrow::before {\n    left: -1px;\n    border-width: calc(var(--tooltip-arrow-width) * 0.5) 0 calc(var(--tooltip-arrow-width) * 0.5) var(--tooltip-arrow-height);\n    border-inline-start-color: var(--tooltip-bg);\n  }\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    border-radius: var(--tooltip-border-radius);\n  }\n}\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n@layer helpers {\n  .focus-ring:focus-visible {\n    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\n  }\n}\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: 0.375rem;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, 0.5));\n    text-underline-offset: 0.25em;\n    backface-visibility: hidden;\n  }\n  .icon-link > .bi {\n    flex-shrink: 0;\n    width: 1em;\n    height: 1em;\n    fill: currentcolor;\n    transition: 0.2s ease-in-out transform;\n  }\n  @media (prefers-reduced-motion: reduce) {\n    .icon-link > .bi {\n      transition: none;\n    }\n  }\n  .icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi {\n    transform: var(--icon-link-transform, translate3d(0.25em, 0, 0));\n  }\n}\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: 1030;\n  }\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: 1030;\n  }\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n  .sticky-bottom {\n    position: sticky;\n    bottom: 0;\n    z-index: 1020;\n  }\n  @media (width >= 576px) {\n    .sm\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .sm\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .md\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .lg\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:sticky-top {\n      position: sticky;\n      top: 0;\n      z-index: 1020;\n    }\n    .\\32 xl\\:sticky-bottom {\n      position: sticky;\n      bottom: 0;\n      z-index: 1020;\n    }\n  }\n}\n@layer helpers {\n  .stack-container {\n    container-type: inline-size;\n  }\n  [class*=hstack],\n  [class*=vstack] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n  .vstack {\n    --stack-direction: column;\n    --stack-align-items: stretch;\n  }\n  .hstack {\n    --stack-direction: row;\n    --stack-align-items: flex-start;\n  }\n  @container (width >= 576px) {\n    .sm\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 576px) {\n    .sm\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 768px) {\n    .md\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1024px) {\n    .lg\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1280px) {\n    .xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:vstack {\n      --stack-direction: column;\n      --stack-align-items: stretch;\n    }\n  }\n  @container (width >= 1536px) {\n    .\\32 xl\\:hstack {\n      --stack-direction: row;\n      --stack-align-items: flex-start;\n    }\n  }\n}\n@layer helpers {\n  .theme-primary {\n    --theme-base: var(--primary-base);\n    --theme-fg: var(--primary-fg);\n    --theme-fg-emphasis: var(--primary-fg-emphasis);\n    --theme-bg: var(--primary-bg);\n    --theme-bg-subtle: var(--primary-bg-subtle);\n    --theme-bg-muted: var(--primary-bg-muted);\n    --theme-border: var(--primary-border);\n    --theme-focus-ring: var(--primary-focus-ring);\n    --theme-contrast: var(--primary-contrast);\n  }\n  .theme-accent {\n    --theme-base: var(--accent-base);\n    --theme-fg: var(--accent-fg);\n    --theme-fg-emphasis: var(--accent-fg-emphasis);\n    --theme-bg: var(--accent-bg);\n    --theme-bg-subtle: var(--accent-bg-subtle);\n    --theme-bg-muted: var(--accent-bg-muted);\n    --theme-border: var(--accent-border);\n    --theme-focus-ring: var(--accent-focus-ring);\n    --theme-contrast: var(--accent-contrast);\n  }\n  .theme-success {\n    --theme-base: var(--success-base);\n    --theme-fg: var(--success-fg);\n    --theme-fg-emphasis: var(--success-fg-emphasis);\n    --theme-bg: var(--success-bg);\n    --theme-bg-subtle: var(--success-bg-subtle);\n    --theme-bg-muted: var(--success-bg-muted);\n    --theme-border: var(--success-border);\n    --theme-focus-ring: var(--success-focus-ring);\n    --theme-contrast: var(--success-contrast);\n  }\n  .theme-danger {\n    --theme-base: var(--danger-base);\n    --theme-fg: var(--danger-fg);\n    --theme-fg-emphasis: var(--danger-fg-emphasis);\n    --theme-bg: var(--danger-bg);\n    --theme-bg-subtle: var(--danger-bg-subtle);\n    --theme-bg-muted: var(--danger-bg-muted);\n    --theme-border: var(--danger-border);\n    --theme-focus-ring: var(--danger-focus-ring);\n    --theme-contrast: var(--danger-contrast);\n  }\n  .theme-warning {\n    --theme-base: var(--warning-base);\n    --theme-fg: var(--warning-fg);\n    --theme-fg-emphasis: var(--warning-fg-emphasis);\n    --theme-bg: var(--warning-bg);\n    --theme-bg-subtle: var(--warning-bg-subtle);\n    --theme-bg-muted: var(--warning-bg-muted);\n    --theme-border: var(--warning-border);\n    --theme-focus-ring: var(--warning-focus-ring);\n    --theme-contrast: var(--warning-contrast);\n  }\n  .theme-info {\n    --theme-base: var(--info-base);\n    --theme-fg: var(--info-fg);\n    --theme-fg-emphasis: var(--info-fg-emphasis);\n    --theme-bg: var(--info-bg);\n    --theme-bg-subtle: var(--info-bg-subtle);\n    --theme-bg-muted: var(--info-bg-muted);\n    --theme-border: var(--info-border);\n    --theme-focus-ring: var(--info-focus-ring);\n    --theme-contrast: var(--info-contrast);\n  }\n  .theme-inverse {\n    --theme-base: var(--inverse-base);\n    --theme-fg: var(--inverse-fg);\n    --theme-fg-emphasis: var(--inverse-fg-emphasis);\n    --theme-bg: var(--inverse-bg);\n    --theme-bg-subtle: var(--inverse-bg-subtle);\n    --theme-bg-muted: var(--inverse-bg-muted);\n    --theme-border: var(--inverse-border);\n    --theme-focus-ring: var(--inverse-focus-ring);\n    --theme-contrast: var(--inverse-contrast);\n  }\n  .theme-secondary {\n    --theme-base: var(--secondary-base);\n    --theme-fg: var(--secondary-fg);\n    --theme-fg-emphasis: var(--secondary-fg-emphasis);\n    --theme-bg: var(--secondary-bg);\n    --theme-bg-subtle: var(--secondary-bg-subtle);\n    --theme-bg-muted: var(--secondary-bg-muted);\n    --theme-border: var(--secondary-border);\n    --theme-focus-ring: var(--secondary-focus-ring);\n    --theme-contrast: var(--secondary-contrast);\n  }\n}\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus, :focus-within) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    margin: -1px !important;\n    overflow: hidden !important;\n    clip: rect(0, 0, 0, 0) !important;\n    white-space: nowrap !important;\n    border: 0 !important;\n  }\n  .visually-hidden:not(caption),\n  .visually-hidden-focusable:not(:focus, :focus-within):not(caption) {\n    position: absolute !important;\n  }\n  .visually-hidden *,\n  .visually-hidden-focusable:not(:focus, :focus-within) * {\n    overflow: hidden !important;\n  }\n}\n@layer helpers {\n  .stretched-link::after {\n    position: absolute;\n    inset: 0;\n    z-index: 1;\n    content: \"\";\n  }\n}\n@layer helpers {\n  .text-truncate {\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n}\n@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n@layer utilities {\n  .align-baseline {\n    vertical-align: baseline;\n  }\n  .align-top {\n    vertical-align: top;\n  }\n  .align-middle {\n    vertical-align: middle;\n  }\n  .align-bottom {\n    vertical-align: bottom;\n  }\n  .align-text-bottom {\n    vertical-align: text-bottom;\n  }\n  .align-text-top {\n    vertical-align: text-top;\n  }\n  [class*=ratio-] {\n    aspect-ratio: var(--ratio);\n  }\n  .ratio-auto {\n    --ratio: auto;\n  }\n  .ratio-1x1 {\n    --ratio: 1 / 1;\n  }\n  .ratio-4x3 {\n    --ratio: 4 / 3;\n  }\n  .ratio-16x9 {\n    --ratio: 16 / 9;\n  }\n  .ratio-21x9 {\n    --ratio: 21 / 9;\n  }\n  .float-start {\n    float: inline-start;\n  }\n  .float-end {\n    float: inline-end;\n  }\n  .float-none {\n    float: none;\n  }\n  .object-fit-contain {\n    object-fit: contain;\n  }\n  .object-fit-cover {\n    object-fit: cover;\n  }\n  .object-fit-fill {\n    object-fit: fill;\n  }\n  .object-fit-scale {\n    object-fit: scale-down;\n  }\n  .object-fit-none {\n    object-fit: none;\n  }\n  .opacity-0 {\n    opacity: 0;\n  }\n  .opacity-25 {\n    opacity: 0.25;\n  }\n  .opacity-50 {\n    opacity: 0.5;\n  }\n  .opacity-75 {\n    opacity: 0.75;\n  }\n  .opacity-100 {\n    opacity: 1;\n  }\n  .overflow-auto {\n    overflow: auto;\n  }\n  .overflow-hidden {\n    overflow: hidden;\n  }\n  .overflow-visible {\n    overflow: visible;\n  }\n  .overflow-scroll {\n    overflow: scroll;\n  }\n  .overflow-x-auto {\n    overflow-x: auto;\n  }\n  .overflow-x-hidden {\n    overflow-x: hidden;\n  }\n  .overflow-x-visible {\n    overflow-x: visible;\n  }\n  .overflow-x-scroll {\n    overflow-x: scroll;\n  }\n  .overflow-y-auto {\n    overflow-y: auto;\n  }\n  .overflow-y-hidden {\n    overflow-y: hidden;\n  }\n  .overflow-y-visible {\n    overflow-y: visible;\n  }\n  .overflow-y-scroll {\n    overflow-y: scroll;\n  }\n  .contains-inline {\n    container-type: inline-size;\n  }\n  .contains-size {\n    container-type: size;\n  }\n  .d-inline {\n    display: inline;\n  }\n  .d-inline-block {\n    display: inline-block;\n  }\n  .d-block {\n    display: block;\n  }\n  .d-grid {\n    display: grid;\n  }\n  .d-inline-grid {\n    display: inline-grid;\n  }\n  .d-table {\n    display: table;\n  }\n  .d-table-row {\n    display: table-row;\n  }\n  .d-table-cell {\n    display: table-cell;\n  }\n  .d-flex {\n    display: flex;\n  }\n  .d-inline-flex {\n    display: inline-flex;\n  }\n  .d-contents {\n    display: contents;\n  }\n  .d-flow-root {\n    display: flow-root;\n  }\n  .d-none {\n    display: none;\n  }\n  .shadow {\n    box-shadow: var(--box-shadow);\n  }\n  .shadow-xs {\n    box-shadow: var(--box-shadow-xs);\n  }\n  .shadow-sm {\n    box-shadow: var(--box-shadow-sm);\n  }\n  .shadow-lg {\n    box-shadow: var(--box-shadow-lg);\n  }\n  .shadow-none {\n    box-shadow: none;\n  }\n  .position-static {\n    position: static;\n  }\n  .position-relative {\n    position: relative;\n  }\n  .position-absolute {\n    position: absolute;\n  }\n  .position-fixed {\n    position: fixed;\n  }\n  .position-sticky {\n    position: sticky;\n  }\n  .top-0 {\n    top: 0;\n  }\n  .top-50 {\n    top: 50%;\n  }\n  .top-100 {\n    top: 100%;\n  }\n  .bottom-0 {\n    bottom: 0;\n  }\n  .bottom-50 {\n    bottom: 50%;\n  }\n  .bottom-100 {\n    bottom: 100%;\n  }\n  .start-0 {\n    inset-inline-start: 0;\n  }\n  .start-50 {\n    inset-inline-start: 50%;\n  }\n  .start-100 {\n    inset-inline-start: 100%;\n  }\n  .end-0 {\n    inset-inline-end: 0;\n  }\n  .end-50 {\n    inset-inline-end: 50%;\n  }\n  .end-100 {\n    inset-inline-end: 100%;\n  }\n  .translate-middle {\n    transform: translate(-50%, -50%);\n  }\n  .translate-middle-x {\n    transform: translateX(-50%);\n  }\n  .translate-middle-y {\n    transform: translateY(-50%);\n  }\n  .border {\n    border: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-0 {\n    border: 0;\n  }\n  .border-top {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-top-0 {\n    border-block-start: 0;\n  }\n  .border-end {\n    border-inline-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-end-0 {\n    border-inline-end: 0;\n  }\n  .border-bottom {\n    border-block-end: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-bottom-0 {\n    border-block-end: 0;\n  }\n  .border-start {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-start-0 {\n    border-inline-start: 0;\n  }\n  .border-y {\n    border-block: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-y-0 {\n    border-block: 0;\n  }\n  .border-x {\n    border-inline: var(--border-width) var(--border-style) var(--border-color);\n  }\n  .border-x-0 {\n    border-inline: 0;\n  }\n  .border-primary {\n    --border-color: var(--primary-bg);\n    border-color: var(--border-color);\n  }\n  .border-accent {\n    --border-color: var(--accent-bg);\n    border-color: var(--border-color);\n  }\n  .border-success {\n    --border-color: var(--success-bg);\n    border-color: var(--border-color);\n  }\n  .border-danger {\n    --border-color: var(--danger-bg);\n    border-color: var(--border-color);\n  }\n  .border-warning {\n    --border-color: var(--warning-bg);\n    border-color: var(--border-color);\n  }\n  .border-info {\n    --border-color: var(--info-bg);\n    border-color: var(--border-color);\n  }\n  .border-inverse {\n    --border-color: var(--inverse-bg);\n    border-color: var(--border-color);\n  }\n  .border-secondary {\n    --border-color: var(--secondary-bg);\n    border-color: var(--border-color);\n  }\n  .border-bg {\n    --border-color: var(--border-bg);\n    border-color: var(--border-color);\n  }\n  .border-body {\n    --border-color: var(--border-body);\n    border-color: var(--border-color);\n  }\n  .border-muted {\n    --border-color: var(--border-muted);\n    border-color: var(--border-color);\n  }\n  .border-subtle {\n    --border-color: var(--border-subtle);\n    border-color: var(--border-color);\n  }\n  .border-emphasized {\n    --border-color: var(--border-emphasized);\n    border-color: var(--border-color);\n  }\n  .border-white {\n    --border-color: var(--border-white);\n    border-color: var(--border-color);\n  }\n  .border-black {\n    --border-color: var(--border-black);\n    border-color: var(--border-color);\n  }\n  .border-subtle-primary {\n    --border-color: var(--primary-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-accent {\n    --border-color: var(--accent-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-success {\n    --border-color: var(--success-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-danger {\n    --border-color: var(--danger-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-warning {\n    --border-color: var(--warning-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-info {\n    --border-color: var(--info-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-inverse {\n    --border-color: var(--inverse-border);\n    border-color: var(--border-color);\n  }\n  .border-subtle-secondary {\n    --border-color: var(--secondary-border);\n    border-color: var(--border-color);\n  }\n  .border-1 {\n    border-width: 1px;\n  }\n  .border-2 {\n    border-width: 2px;\n  }\n  .border-3 {\n    border-width: 3px;\n  }\n  .border-4 {\n    border-width: 4px;\n  }\n  .border-5 {\n    border-width: 5px;\n  }\n  .border-10 {\n    border-color: color-mix(in oklch, var(--border-color) 10%, transparent);\n  }\n  .border-20 {\n    border-color: color-mix(in oklch, var(--border-color) 20%, transparent);\n  }\n  .border-30 {\n    border-color: color-mix(in oklch, var(--border-color) 30%, transparent);\n  }\n  .border-40 {\n    border-color: color-mix(in oklch, var(--border-color) 40%, transparent);\n  }\n  .border-50 {\n    border-color: color-mix(in oklch, var(--border-color) 50%, transparent);\n  }\n  .border-60 {\n    border-color: color-mix(in oklch, var(--border-color) 60%, transparent);\n  }\n  .border-70 {\n    border-color: color-mix(in oklch, var(--border-color) 70%, transparent);\n  }\n  .border-80 {\n    border-color: color-mix(in oklch, var(--border-color) 80%, transparent);\n  }\n  .border-90 {\n    border-color: color-mix(in oklch, var(--border-color) 90%, transparent);\n  }\n  .border-100 {\n    border-color: var(--border-color);\n  }\n  .w-1 {\n    width: 1rem;\n  }\n  .w-2 {\n    width: 2rem;\n  }\n  .w-3 {\n    width: 3rem;\n  }\n  .w-4 {\n    width: 4rem;\n  }\n  .w-5 {\n    width: 5rem;\n  }\n  .w-6 {\n    width: 6rem;\n  }\n  .w-7 {\n    width: 7rem;\n  }\n  .w-8 {\n    width: 8rem;\n  }\n  .w-9 {\n    width: 9rem;\n  }\n  .w-10 {\n    width: 10rem;\n  }\n  .w-11 {\n    width: 11rem;\n  }\n  .w-12 {\n    width: 12rem;\n  }\n  .w-25 {\n    width: 25%;\n  }\n  .w-50 {\n    width: 50%;\n  }\n  .w-75 {\n    width: 75%;\n  }\n  .w-100 {\n    width: 100%;\n  }\n  .w-auto {\n    width: auto;\n  }\n  .w-min {\n    width: min-content;\n  }\n  .w-max {\n    width: max-content;\n  }\n  .w-fit {\n    width: fit-content;\n  }\n  .max-w-100 {\n    max-width: 100%;\n  }\n  .min-w-0 {\n    min-width: 0;\n  }\n  .min-w-100 {\n    min-width: 100%;\n  }\n  .vw-100 {\n    width: 100vw;\n  }\n  .min-vw-100 {\n    min-width: 100vw;\n  }\n  .h-25 {\n    height: 25%;\n  }\n  .h-50 {\n    height: 50%;\n  }\n  .h-75 {\n    height: 75%;\n  }\n  .h-100 {\n    height: 100%;\n  }\n  .h-auto {\n    height: auto;\n  }\n  .h-min {\n    height: min-content;\n  }\n  .h-max {\n    height: max-content;\n  }\n  .h-fit {\n    height: fit-content;\n  }\n  .max-h-100 {\n    max-height: 100%;\n  }\n  .min-h-0 {\n    min-height: 0;\n  }\n  .min-h-100 {\n    min-height: 100%;\n  }\n  .vh-100 {\n    height: 100vh;\n  }\n  .min-vh-100 {\n    min-height: 100vh;\n  }\n  .flex-fill {\n    flex: 1 1 auto;\n  }\n  .flex-row {\n    flex-direction: row;\n  }\n  .flex-column {\n    flex-direction: column;\n  }\n  .flex-row-reverse {\n    flex-direction: row-reverse;\n  }\n  .flex-column-reverse {\n    flex-direction: column-reverse;\n  }\n  .flex-grow-0 {\n    flex-grow: 0;\n  }\n  .flex-grow-1 {\n    flex-grow: 1;\n  }\n  .flex-shrink-0 {\n    flex-shrink: 0;\n  }\n  .flex-shrink-1 {\n    flex-shrink: 1;\n  }\n  .flex-wrap {\n    flex-wrap: wrap;\n  }\n  .flex-nowrap {\n    flex-wrap: nowrap;\n  }\n  .flex-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n  .justify-content-start {\n    justify-content: flex-start;\n  }\n  .justify-content-end {\n    justify-content: flex-end;\n  }\n  .justify-content-center {\n    justify-content: center;\n  }\n  .justify-content-between {\n    justify-content: space-between;\n  }\n  .justify-content-around {\n    justify-content: space-around;\n  }\n  .justify-content-evenly {\n    justify-content: space-evenly;\n  }\n  .justify-items-start {\n    justify-items: start;\n  }\n  .justify-items-end {\n    justify-items: end;\n  }\n  .justify-items-center {\n    justify-items: center;\n  }\n  .justify-items-stretch {\n    justify-items: stretch;\n  }\n  .justify-self-start {\n    justify-self: start;\n  }\n  .justify-self-end {\n    justify-self: end;\n  }\n  .justify-self-center {\n    justify-self: center;\n  }\n  .align-items-start {\n    align-items: flex-start;\n  }\n  .align-items-end {\n    align-items: flex-end;\n  }\n  .align-items-center {\n    align-items: center;\n  }\n  .align-items-baseline {\n    align-items: baseline;\n  }\n  .align-items-stretch {\n    align-items: stretch;\n  }\n  .align-content-start {\n    align-content: flex-start;\n  }\n  .align-content-end {\n    align-content: flex-end;\n  }\n  .align-content-center {\n    align-content: center;\n  }\n  .align-content-between {\n    align-content: space-between;\n  }\n  .align-content-around {\n    align-content: space-around;\n  }\n  .align-content-stretch {\n    align-content: stretch;\n  }\n  .align-self-auto {\n    align-self: auto;\n  }\n  .align-self-start {\n    align-self: flex-start;\n  }\n  .align-self-end {\n    align-self: flex-end;\n  }\n  .align-self-center {\n    align-self: center;\n  }\n  .align-self-baseline {\n    align-self: baseline;\n  }\n  .align-self-stretch {\n    align-self: stretch;\n  }\n  .place-items-start {\n    place-items: start;\n  }\n  .place-items-end {\n    place-items: end;\n  }\n  .place-items-center {\n    place-items: center;\n  }\n  .place-items-stretch {\n    place-items: stretch;\n  }\n  .grid-cols-1 {\n    grid-template-columns: 1fr;\n  }\n  .grid-cols-2 {\n    grid-template-columns: repeat(2, 1fr);\n  }\n  .grid-cols-3 {\n    grid-template-columns: repeat(3, 1fr);\n  }\n  .grid-cols-4 {\n    grid-template-columns: repeat(4, 1fr);\n  }\n  .grid-cols-6 {\n    grid-template-columns: repeat(6, 1fr);\n  }\n  .grid-cols-fill {\n    grid-column: 1 / -1;\n  }\n  .grid-auto-flow-row {\n    grid-auto-flow: row;\n  }\n  .grid-auto-flow-column {\n    grid-auto-flow: column;\n  }\n  .grid-auto-flow-dense {\n    grid-auto-flow: dense;\n  }\n  .order-first {\n    order: -1;\n  }\n  .order-0 {\n    order: 0;\n  }\n  .order-1 {\n    order: 1;\n  }\n  .order-2 {\n    order: 2;\n  }\n  .order-3 {\n    order: 3;\n  }\n  .order-4 {\n    order: 4;\n  }\n  .order-5 {\n    order: 5;\n  }\n  .order-last {\n    order: 6;\n  }\n  .m-0 {\n    margin: 0;\n  }\n  .m-1 {\n    margin: 0.25rem;\n  }\n  .m-2 {\n    margin: 0.5rem;\n  }\n  .m-3 {\n    margin: 0.75rem;\n  }\n  .m-4 {\n    margin: 1rem;\n  }\n  .m-5 {\n    margin: 1.25rem;\n  }\n  .m-6 {\n    margin: 1.5rem;\n  }\n  .m-7 {\n    margin: 2rem;\n  }\n  .m-8 {\n    margin: 2.5rem;\n  }\n  .m-9 {\n    margin: 3rem;\n  }\n  .m-auto {\n    margin: auto;\n  }\n  .mx-0 {\n    margin-inline: 0;\n  }\n  .mx-1 {\n    margin-inline: 0.25rem;\n  }\n  .mx-2 {\n    margin-inline: 0.5rem;\n  }\n  .mx-3 {\n    margin-inline: 0.75rem;\n  }\n  .mx-4 {\n    margin-inline: 1rem;\n  }\n  .mx-5 {\n    margin-inline: 1.25rem;\n  }\n  .mx-6 {\n    margin-inline: 1.5rem;\n  }\n  .mx-7 {\n    margin-inline: 2rem;\n  }\n  .mx-8 {\n    margin-inline: 2.5rem;\n  }\n  .mx-9 {\n    margin-inline: 3rem;\n  }\n  .mx-auto {\n    margin-inline: auto;\n  }\n  .my-0 {\n    margin-block: 0;\n  }\n  .my-1 {\n    margin-block: 0.25rem;\n  }\n  .my-2 {\n    margin-block: 0.5rem;\n  }\n  .my-3 {\n    margin-block: 0.75rem;\n  }\n  .my-4 {\n    margin-block: 1rem;\n  }\n  .my-5 {\n    margin-block: 1.25rem;\n  }\n  .my-6 {\n    margin-block: 1.5rem;\n  }\n  .my-7 {\n    margin-block: 2rem;\n  }\n  .my-8 {\n    margin-block: 2.5rem;\n  }\n  .my-9 {\n    margin-block: 3rem;\n  }\n  .my-auto {\n    margin-block: auto;\n  }\n  .mt-0 {\n    margin-block-start: 0;\n  }\n  .mt-1 {\n    margin-block-start: 0.25rem;\n  }\n  .mt-2 {\n    margin-block-start: 0.5rem;\n  }\n  .mt-3 {\n    margin-block-start: 0.75rem;\n  }\n  .mt-4 {\n    margin-block-start: 1rem;\n  }\n  .mt-5 {\n    margin-block-start: 1.25rem;\n  }\n  .mt-6 {\n    margin-block-start: 1.5rem;\n  }\n  .mt-7 {\n    margin-block-start: 2rem;\n  }\n  .mt-8 {\n    margin-block-start: 2.5rem;\n  }\n  .mt-9 {\n    margin-block-start: 3rem;\n  }\n  .mt-auto {\n    margin-block-start: auto;\n  }\n  .me-0 {\n    margin-inline-end: 0;\n  }\n  .me-1 {\n    margin-inline-end: 0.25rem;\n  }\n  .me-2 {\n    margin-inline-end: 0.5rem;\n  }\n  .me-3 {\n    margin-inline-end: 0.75rem;\n  }\n  .me-4 {\n    margin-inline-end: 1rem;\n  }\n  .me-5 {\n    margin-inline-end: 1.25rem;\n  }\n  .me-6 {\n    margin-inline-end: 1.5rem;\n  }\n  .me-7 {\n    margin-inline-end: 2rem;\n  }\n  .me-8 {\n    margin-inline-end: 2.5rem;\n  }\n  .me-9 {\n    margin-inline-end: 3rem;\n  }\n  .me--1 {\n    margin-inline-end: -0.25rem;\n  }\n  .me--2 {\n    margin-inline-end: -0.5rem;\n  }\n  .me-auto {\n    margin-inline-end: auto;\n  }\n  .mb-0 {\n    margin-block-end: 0;\n  }\n  .mb-1 {\n    margin-block-end: 0.25rem;\n  }\n  .mb-2 {\n    margin-block-end: 0.5rem;\n  }\n  .mb-3 {\n    margin-block-end: 0.75rem;\n  }\n  .mb-4 {\n    margin-block-end: 1rem;\n  }\n  .mb-5 {\n    margin-block-end: 1.25rem;\n  }\n  .mb-6 {\n    margin-block-end: 1.5rem;\n  }\n  .mb-7 {\n    margin-block-end: 2rem;\n  }\n  .mb-8 {\n    margin-block-end: 2.5rem;\n  }\n  .mb-9 {\n    margin-block-end: 3rem;\n  }\n  .mb-auto {\n    margin-block-end: auto;\n  }\n  .ms-0 {\n    margin-inline-start: 0;\n  }\n  .ms-1 {\n    margin-inline-start: 0.25rem;\n  }\n  .ms-2 {\n    margin-inline-start: 0.5rem;\n  }\n  .ms-3 {\n    margin-inline-start: 0.75rem;\n  }\n  .ms-4 {\n    margin-inline-start: 1rem;\n  }\n  .ms-5 {\n    margin-inline-start: 1.25rem;\n  }\n  .ms-6 {\n    margin-inline-start: 1.5rem;\n  }\n  .ms-7 {\n    margin-inline-start: 2rem;\n  }\n  .ms-8 {\n    margin-inline-start: 2.5rem;\n  }\n  .ms-9 {\n    margin-inline-start: 3rem;\n  }\n  .ms--1 {\n    margin-inline-start: -0.25rem;\n  }\n  .ms--2 {\n    margin-inline-start: -0.5rem;\n  }\n  .ms-auto {\n    margin-inline-start: auto;\n  }\n  .p-0 {\n    padding: 0;\n  }\n  .p-1 {\n    padding: 0.25rem;\n  }\n  .p-2 {\n    padding: 0.5rem;\n  }\n  .p-3 {\n    padding: 0.75rem;\n  }\n  .p-4 {\n    padding: 1rem;\n  }\n  .p-5 {\n    padding: 1.25rem;\n  }\n  .p-6 {\n    padding: 1.5rem;\n  }\n  .p-7 {\n    padding: 2rem;\n  }\n  .p-8 {\n    padding: 2.5rem;\n  }\n  .p-9 {\n    padding: 3rem;\n  }\n  .px-0 {\n    padding-inline: 0;\n  }\n  .px-1 {\n    padding-inline: 0.25rem;\n  }\n  .px-2 {\n    padding-inline: 0.5rem;\n  }\n  .px-3 {\n    padding-inline: 0.75rem;\n  }\n  .px-4 {\n    padding-inline: 1rem;\n  }\n  .px-5 {\n    padding-inline: 1.25rem;\n  }\n  .px-6 {\n    padding-inline: 1.5rem;\n  }\n  .px-7 {\n    padding-inline: 2rem;\n  }\n  .px-8 {\n    padding-inline: 2.5rem;\n  }\n  .px-9 {\n    padding-inline: 3rem;\n  }\n  .py-0 {\n    padding-block: 0;\n  }\n  .py-1 {\n    padding-block: 0.25rem;\n  }\n  .py-2 {\n    padding-block: 0.5rem;\n  }\n  .py-3 {\n    padding-block: 0.75rem;\n  }\n  .py-4 {\n    padding-block: 1rem;\n  }\n  .py-5 {\n    padding-block: 1.25rem;\n  }\n  .py-6 {\n    padding-block: 1.5rem;\n  }\n  .py-7 {\n    padding-block: 2rem;\n  }\n  .py-8 {\n    padding-block: 2.5rem;\n  }\n  .py-9 {\n    padding-block: 3rem;\n  }\n  .pt-0 {\n    padding-block-start: 0;\n  }\n  .pt-1 {\n    padding-block-start: 0.25rem;\n  }\n  .pt-2 {\n    padding-block-start: 0.5rem;\n  }\n  .pt-3 {\n    padding-block-start: 0.75rem;\n  }\n  .pt-4 {\n    padding-block-start: 1rem;\n  }\n  .pt-5 {\n    padding-block-start: 1.25rem;\n  }\n  .pt-6 {\n    padding-block-start: 1.5rem;\n  }\n  .pt-7 {\n    padding-block-start: 2rem;\n  }\n  .pt-8 {\n    padding-block-start: 2.5rem;\n  }\n  .pt-9 {\n    padding-block-start: 3rem;\n  }\n  .pe-0 {\n    padding-inline-end: 0;\n  }\n  .pe-1 {\n    padding-inline-end: 0.25rem;\n  }\n  .pe-2 {\n    padding-inline-end: 0.5rem;\n  }\n  .pe-3 {\n    padding-inline-end: 0.75rem;\n  }\n  .pe-4 {\n    padding-inline-end: 1rem;\n  }\n  .pe-5 {\n    padding-inline-end: 1.25rem;\n  }\n  .pe-6 {\n    padding-inline-end: 1.5rem;\n  }\n  .pe-7 {\n    padding-inline-end: 2rem;\n  }\n  .pe-8 {\n    padding-inline-end: 2.5rem;\n  }\n  .pe-9 {\n    padding-inline-end: 3rem;\n  }\n  .pb-0 {\n    padding-block-end: 0;\n  }\n  .pb-1 {\n    padding-block-end: 0.25rem;\n  }\n  .pb-2 {\n    padding-block-end: 0.5rem;\n  }\n  .pb-3 {\n    padding-block-end: 0.75rem;\n  }\n  .pb-4 {\n    padding-block-end: 1rem;\n  }\n  .pb-5 {\n    padding-block-end: 1.25rem;\n  }\n  .pb-6 {\n    padding-block-end: 1.5rem;\n  }\n  .pb-7 {\n    padding-block-end: 2rem;\n  }\n  .pb-8 {\n    padding-block-end: 2.5rem;\n  }\n  .pb-9 {\n    padding-block-end: 3rem;\n  }\n  .ps-0 {\n    padding-inline-start: 0;\n  }\n  .ps-1 {\n    padding-inline-start: 0.25rem;\n  }\n  .ps-2 {\n    padding-inline-start: 0.5rem;\n  }\n  .ps-3 {\n    padding-inline-start: 0.75rem;\n  }\n  .ps-4 {\n    padding-inline-start: 1rem;\n  }\n  .ps-5 {\n    padding-inline-start: 1.25rem;\n  }\n  .ps-6 {\n    padding-inline-start: 1.5rem;\n  }\n  .ps-7 {\n    padding-inline-start: 2rem;\n  }\n  .ps-8 {\n    padding-inline-start: 2.5rem;\n  }\n  .ps-9 {\n    padding-inline-start: 3rem;\n  }\n  .gap-0 {\n    gap: 0;\n  }\n  .gap-1 {\n    gap: 0.25rem;\n  }\n  .gap-2 {\n    gap: 0.5rem;\n  }\n  .gap-3 {\n    gap: 0.75rem;\n  }\n  .gap-4 {\n    gap: 1rem;\n  }\n  .gap-5 {\n    gap: 1.25rem;\n  }\n  .gap-6 {\n    gap: 1.5rem;\n  }\n  .gap-7 {\n    gap: 2rem;\n  }\n  .gap-8 {\n    gap: 2.5rem;\n  }\n  .gap-9 {\n    gap: 3rem;\n  }\n  .row-gap-0 {\n    row-gap: 0;\n  }\n  .row-gap-1 {\n    row-gap: 0.25rem;\n  }\n  .row-gap-2 {\n    row-gap: 0.5rem;\n  }\n  .row-gap-3 {\n    row-gap: 0.75rem;\n  }\n  .row-gap-4 {\n    row-gap: 1rem;\n  }\n  .row-gap-5 {\n    row-gap: 1.25rem;\n  }\n  .row-gap-6 {\n    row-gap: 1.5rem;\n  }\n  .row-gap-7 {\n    row-gap: 2rem;\n  }\n  .row-gap-8 {\n    row-gap: 2.5rem;\n  }\n  .row-gap-9 {\n    row-gap: 3rem;\n  }\n  .column-gap-0 {\n    column-gap: 0;\n  }\n  .column-gap-1 {\n    column-gap: 0.25rem;\n  }\n  .column-gap-2 {\n    column-gap: 0.5rem;\n  }\n  .column-gap-3 {\n    column-gap: 0.75rem;\n  }\n  .column-gap-4 {\n    column-gap: 1rem;\n  }\n  .column-gap-5 {\n    column-gap: 1.25rem;\n  }\n  .column-gap-6 {\n    column-gap: 1.5rem;\n  }\n  .column-gap-7 {\n    column-gap: 2rem;\n  }\n  .column-gap-8 {\n    column-gap: 2.5rem;\n  }\n  .column-gap-9 {\n    column-gap: 3rem;\n  }\n  :where(.space-x-0 > :not(:last-child)) {\n    margin-inline-end: 0;\n  }\n  :where(.space-x-1 > :not(:last-child)) {\n    margin-inline-end: 0.25rem;\n  }\n  :where(.space-x-2 > :not(:last-child)) {\n    margin-inline-end: 0.5rem;\n  }\n  :where(.space-x-3 > :not(:last-child)) {\n    margin-inline-end: 0.75rem;\n  }\n  :where(.space-x-4 > :not(:last-child)) {\n    margin-inline-end: 1rem;\n  }\n  :where(.space-x-5 > :not(:last-child)) {\n    margin-inline-end: 1.25rem;\n  }\n  :where(.space-x-6 > :not(:last-child)) {\n    margin-inline-end: 1.5rem;\n  }\n  :where(.space-x-7 > :not(:last-child)) {\n    margin-inline-end: 2rem;\n  }\n  :where(.space-x-8 > :not(:last-child)) {\n    margin-inline-end: 2.5rem;\n  }\n  :where(.space-x-9 > :not(:last-child)) {\n    margin-inline-end: 3rem;\n  }\n  :where(.space-y-0 > :not(:last-child)) {\n    margin-block-end: 0;\n  }\n  :where(.space-y-1 > :not(:last-child)) {\n    margin-block-end: 0.25rem;\n  }\n  :where(.space-y-2 > :not(:last-child)) {\n    margin-block-end: 0.5rem;\n  }\n  :where(.space-y-3 > :not(:last-child)) {\n    margin-block-end: 0.75rem;\n  }\n  :where(.space-y-4 > :not(:last-child)) {\n    margin-block-end: 1rem;\n  }\n  :where(.space-y-5 > :not(:last-child)) {\n    margin-block-end: 1.25rem;\n  }\n  :where(.space-y-6 > :not(:last-child)) {\n    margin-block-end: 1.5rem;\n  }\n  :where(.space-y-7 > :not(:last-child)) {\n    margin-block-end: 2rem;\n  }\n  :where(.space-y-8 > :not(:last-child)) {\n    margin-block-end: 2.5rem;\n  }\n  :where(.space-y-9 > :not(:last-child)) {\n    margin-block-end: 3rem;\n  }\n  :where(.divide-x > :not(:first-child)) {\n    border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-x-0 > :not(:first-child)) {\n    border-inline-start: 0;\n  }\n  :where(.divide-y > :not(:first-child)) {\n    border-block-start: var(--border-width) var(--border-style) var(--border-color);\n  }\n  :where(.divide-y-0 > :not(:first-child)) {\n    border-block-start: 0;\n  }\n  .font-monospace {\n    font-family: var(--font-mono);\n  }\n  .font-body {\n    font-family: var(--body-font-family);\n  }\n  .fs-xs {\n    font-size: 0.75rem;\n  }\n  .fs-sm {\n    font-size: 0.875rem;\n  }\n  .fs-md {\n    font-size: 1rem;\n  }\n  .fs-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n  }\n  .fs-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n  }\n  .fs-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n  }\n  .fs-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n  }\n  .fs-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n  }\n  .fs-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n  }\n  .fs-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n  }\n  .text-xs {\n    font-size: 0.75rem;\n    line-height: 1.25;\n  }\n  .text-sm {\n    font-size: 0.875rem;\n    line-height: 1.5;\n  }\n  .text-md {\n    font-size: 1rem;\n    line-height: 1.5;\n  }\n  .text-lg {\n    font-size: clamp(1.25rem, 1rem + 0.625vw, 1.5rem);\n    line-height: 1.5;\n  }\n  .text-xl {\n    font-size: clamp(1.5rem, 1.1rem + 0.75vw, 1.75rem);\n    line-height: 1.4285714286;\n  }\n  .text-2xl {\n    font-size: clamp(1.75rem, 1.3rem + 1vw, 2rem);\n    line-height: 1.3333333333;\n  }\n  .text-3xl {\n    font-size: clamp(2rem, 1.5rem + 1.875vw, 2.5rem);\n    line-height: 1.2;\n  }\n  .text-4xl {\n    font-size: clamp(2.25rem, 1.75rem + 2.5vw, 3rem);\n    line-height: 1.1;\n  }\n  .text-5xl {\n    font-size: clamp(3rem, 2rem + 5vw, 4rem);\n    line-height: 1.1;\n  }\n  .text-6xl {\n    font-size: clamp(3.75rem, 2.5rem + 6.25vw, 5rem);\n    line-height: 1;\n  }\n  .fst-italic {\n    font-style: italic;\n  }\n  .fst-normal {\n    font-style: normal;\n  }\n  .fw-lighter {\n    font-weight: lighter;\n  }\n  .fw-light {\n    font-weight: 300;\n  }\n  .fw-normal {\n    font-weight: 400;\n  }\n  .fw-medium {\n    font-weight: 500;\n  }\n  .fw-semibold {\n    font-weight: 600;\n  }\n  .fw-bold {\n    font-weight: 700;\n  }\n  .fw-bolder {\n    font-weight: bolder;\n  }\n  .lh-1 {\n    line-height: 1;\n  }\n  .lh-sm {\n    line-height: 1.25;\n  }\n  .lh-base {\n    line-height: 1.5;\n  }\n  .lh-lg {\n    line-height: 2;\n  }\n  .text-start {\n    text-align: start;\n  }\n  .text-end {\n    text-align: end;\n  }\n  .text-center {\n    text-align: center;\n  }\n  .text-decoration-none {\n    text-decoration: none;\n  }\n  .text-decoration-underline {\n    text-decoration: underline;\n  }\n  .text-decoration-line-through {\n    text-decoration: line-through;\n  }\n  .text-lowercase {\n    text-transform: lowercase;\n  }\n  .text-uppercase {\n    text-transform: uppercase;\n  }\n  .text-capitalize {\n    text-transform: capitalize;\n  }\n  .text-wrap {\n    text-wrap: wrap;\n  }\n  .text-nowrap {\n    text-wrap: nowrap;\n  }\n  .text-balance {\n    text-wrap: balance;\n  }\n  .text-pretty {\n    text-wrap: pretty;\n  }\n  .text-break {\n    word-wrap: break-word;\n    word-break: break-word;\n  }\n  .fg-primary {\n    --fg: var(--primary-fg);\n    color: var(--fg);\n  }\n  .fg-accent {\n    --fg: var(--accent-fg);\n    color: var(--fg);\n  }\n  .fg-success {\n    --fg: var(--success-fg);\n    color: var(--fg);\n  }\n  .fg-danger {\n    --fg: var(--danger-fg);\n    color: var(--fg);\n  }\n  .fg-warning {\n    --fg: var(--warning-fg);\n    color: var(--fg);\n  }\n  .fg-info {\n    --fg: var(--info-fg);\n    color: var(--fg);\n  }\n  .fg-inverse {\n    --fg: var(--inverse-fg);\n    color: var(--fg);\n  }\n  .fg-secondary {\n    --fg: var(--secondary-fg);\n    color: var(--fg);\n  }\n  .fg-body {\n    --fg: var(--fg-body);\n    color: var(--fg);\n  }\n  .fg-1 {\n    --fg: var(--fg-1);\n    color: var(--fg);\n  }\n  .fg-2 {\n    --fg: var(--fg-2);\n    color: var(--fg);\n  }\n  .fg-3 {\n    --fg: var(--fg-3);\n    color: var(--fg);\n  }\n  .fg-4 {\n    --fg: var(--fg-4);\n    color: var(--fg);\n  }\n  .fg-bg {\n    --fg: var(--fg-bg);\n    color: var(--fg);\n  }\n  .fg-white {\n    --fg: var(--fg-white);\n    color: var(--fg);\n  }\n  .fg-black {\n    --fg: var(--fg-black);\n    color: var(--fg);\n  }\n  .fg-reset {\n    --fg: inherit;\n    color: var(--fg);\n  }\n  .fg-emphasis-primary {\n    --fg: var(--primary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-accent {\n    --fg: var(--accent-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-success {\n    --fg: var(--success-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-danger {\n    --fg: var(--danger-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-warning {\n    --fg: var(--warning-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-info {\n    --fg: var(--info-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-inverse {\n    --fg: var(--inverse-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-emphasis-secondary {\n    --fg: var(--secondary-fg-emphasis);\n    color: var(--fg);\n  }\n  .fg-contrast-primary {\n    --fg: var(--primary-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-accent {\n    --fg: var(--accent-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-success {\n    --fg: var(--success-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-danger {\n    --fg: var(--danger-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-warning {\n    --fg: var(--warning-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-info {\n    --fg: var(--info-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-inverse {\n    --fg: var(--inverse-contrast);\n    color: var(--fg);\n  }\n  .fg-contrast-secondary {\n    --fg: var(--secondary-contrast);\n    color: var(--fg);\n  }\n  .fg-10 {\n    color: color-mix(in oklch, var(--fg) 10%, transparent);\n  }\n  .fg-20 {\n    color: color-mix(in oklch, var(--fg) 20%, transparent);\n  }\n  .fg-30 {\n    color: color-mix(in oklch, var(--fg) 30%, transparent);\n  }\n  .fg-40 {\n    color: color-mix(in oklch, var(--fg) 40%, transparent);\n  }\n  .fg-50 {\n    color: color-mix(in oklch, var(--fg) 50%, transparent);\n  }\n  .fg-60 {\n    color: color-mix(in oklch, var(--fg) 60%, transparent);\n  }\n  .fg-70 {\n    color: color-mix(in oklch, var(--fg) 70%, transparent);\n  }\n  .fg-80 {\n    color: color-mix(in oklch, var(--fg) 80%, transparent);\n  }\n  .fg-90 {\n    color: color-mix(in oklch, var(--fg) 90%, transparent);\n  }\n  .fg-100 {\n    color: var(--fg);\n  }\n  .link-10 {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .hover\\:link-10:hover {\n    color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .link-20 {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .hover\\:link-20:hover {\n    color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .link-30 {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .hover\\:link-30:hover {\n    color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .link-40 {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .hover\\:link-40:hover {\n    color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .link-50 {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .hover\\:link-50:hover {\n    color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .link-60 {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .hover\\:link-60:hover {\n    color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .link-70 {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .hover\\:link-70:hover {\n    color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .link-80 {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .hover\\:link-80:hover {\n    color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .link-90 {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .hover\\:link-90:hover {\n    color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .link-100 {\n    color: var(--link-color);\n  }\n  .hover\\:link-100:hover {\n    color: var(--link-color);\n  }\n  .underline-offset-1 {\n    text-underline-offset: 0.125em;\n  }\n  .hover\\:underline-offset-1:hover {\n    text-underline-offset: 0.125em;\n  }\n  .underline-offset-2 {\n    text-underline-offset: 0.25em;\n  }\n  .hover\\:underline-offset-2:hover {\n    text-underline-offset: 0.25em;\n  }\n  .underline-offset-3 {\n    text-underline-offset: 0.375em;\n  }\n  .hover\\:underline-offset-3:hover {\n    text-underline-offset: 0.375em;\n  }\n  .underline-primary {\n    text-decoration-color: light-dark(var(--blue-600), var(--blue-400));\n  }\n  .underline-accent {\n    text-decoration-color: light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300)));\n  }\n  .underline-success {\n    text-decoration-color: light-dark(var(--green-600), var(--green-400));\n  }\n  .underline-danger {\n    text-decoration-color: light-dark(var(--red-600), var(--red-400));\n  }\n  .underline-warning {\n    text-decoration-color: light-dark(var(--yellow-700), var(--yellow-400));\n  }\n  .underline-info {\n    text-decoration-color: light-dark(var(--cyan-600), var(--cyan-400));\n  }\n  .underline-inverse {\n    text-decoration-color: light-dark(var(--gray-900), var(--gray-200));\n  }\n  .underline-secondary {\n    text-decoration-color: light-dark(var(--gray-600), var(--gray-400));\n  }\n  .underline-10 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .hover\\:underline-10:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 10%, transparent);\n  }\n  .underline-20 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .hover\\:underline-20:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 20%, transparent);\n  }\n  .underline-30 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .hover\\:underline-30:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 30%, transparent);\n  }\n  .underline-40 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .hover\\:underline-40:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 40%, transparent);\n  }\n  .underline-50 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .hover\\:underline-50:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 50%, transparent);\n  }\n  .underline-60 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .hover\\:underline-60:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 60%, transparent);\n  }\n  .underline-70 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .hover\\:underline-70:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 70%, transparent);\n  }\n  .underline-80 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .hover\\:underline-80:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 80%, transparent);\n  }\n  .underline-90 {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .hover\\:underline-90:hover {\n    text-decoration-color: color-mix(in oklch, var(--link-color) 90%, transparent);\n  }\n  .underline-100 {\n    text-decoration-color: var(--link-color);\n  }\n  .hover\\:underline-100:hover {\n    text-decoration-color: var(--link-color);\n  }\n  .underline-thickness-1 {\n    text-decoration-thickness: 1px;\n  }\n  .hover\\:underline-thickness-1:hover {\n    text-decoration-thickness: 1px;\n  }\n  .underline-thickness-2 {\n    text-decoration-thickness: 2px;\n  }\n  .hover\\:underline-thickness-2:hover {\n    text-decoration-thickness: 2px;\n  }\n  .underline-thickness-3 {\n    text-decoration-thickness: 3px;\n  }\n  .hover\\:underline-thickness-3:hover {\n    text-decoration-thickness: 3px;\n  }\n  .underline-thickness-4 {\n    text-decoration-thickness: 4px;\n  }\n  .hover\\:underline-thickness-4:hover {\n    text-decoration-thickness: 4px;\n  }\n  .underline-thickness-5 {\n    text-decoration-thickness: 5px;\n  }\n  .hover\\:underline-thickness-5:hover {\n    text-decoration-thickness: 5px;\n  }\n  .bg-primary {\n    --bg: var(--primary-bg);\n    background-color: var(--bg);\n  }\n  .bg-accent {\n    --bg: var(--accent-bg);\n    background-color: var(--bg);\n  }\n  .bg-success {\n    --bg: var(--success-bg);\n    background-color: var(--bg);\n  }\n  .bg-danger {\n    --bg: var(--danger-bg);\n    background-color: var(--bg);\n  }\n  .bg-warning {\n    --bg: var(--warning-bg);\n    background-color: var(--bg);\n  }\n  .bg-info {\n    --bg: var(--info-bg);\n    background-color: var(--bg);\n  }\n  .bg-inverse {\n    --bg: var(--inverse-bg);\n    background-color: var(--bg);\n  }\n  .bg-secondary {\n    --bg: var(--secondary-bg);\n    background-color: var(--bg);\n  }\n  .bg-body {\n    --bg: var(--bg-body);\n    background-color: var(--bg);\n  }\n  .bg-1 {\n    --bg: var(--bg-1);\n    background-color: var(--bg);\n  }\n  .bg-2 {\n    --bg: var(--bg-2);\n    background-color: var(--bg);\n  }\n  .bg-3 {\n    --bg: var(--bg-3);\n    background-color: var(--bg);\n  }\n  .bg-4 {\n    --bg: var(--bg-4);\n    background-color: var(--bg);\n  }\n  .bg-fg {\n    --bg: var(--bg-fg);\n    background-color: var(--bg);\n  }\n  .bg-white {\n    --bg: var(--bg-white);\n    background-color: var(--bg);\n  }\n  .bg-black {\n    --bg: var(--bg-black);\n    background-color: var(--bg);\n  }\n  .bg-transparent {\n    --bg: var(--bg-transparent);\n    background-color: var(--bg);\n  }\n  .bg-subtle-primary {\n    --bg: var(--primary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-accent {\n    --bg: var(--accent-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-success {\n    --bg: var(--success-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-danger {\n    --bg: var(--danger-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-warning {\n    --bg: var(--warning-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-info {\n    --bg: var(--info-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-inverse {\n    --bg: var(--inverse-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-subtle-secondary {\n    --bg: var(--secondary-bg-subtle);\n    background-color: var(--bg);\n  }\n  .bg-muted-primary {\n    --bg: var(--primary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-accent {\n    --bg: var(--accent-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-success {\n    --bg: var(--success-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-danger {\n    --bg: var(--danger-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-warning {\n    --bg: var(--warning-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-info {\n    --bg: var(--info-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-inverse {\n    --bg: var(--inverse-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-muted-secondary {\n    --bg: var(--secondary-bg-muted);\n    background-color: var(--bg);\n  }\n  .bg-10 {\n    background-color: color-mix(in oklch, var(--bg) 10%, transparent);\n  }\n  .bg-20 {\n    background-color: color-mix(in oklch, var(--bg) 20%, transparent);\n  }\n  .bg-30 {\n    background-color: color-mix(in oklch, var(--bg) 30%, transparent);\n  }\n  .bg-40 {\n    background-color: color-mix(in oklch, var(--bg) 40%, transparent);\n  }\n  .bg-50 {\n    background-color: color-mix(in oklch, var(--bg) 50%, transparent);\n  }\n  .bg-60 {\n    background-color: color-mix(in oklch, var(--bg) 60%, transparent);\n  }\n  .bg-70 {\n    background-color: color-mix(in oklch, var(--bg) 70%, transparent);\n  }\n  .bg-80 {\n    background-color: color-mix(in oklch, var(--bg) 80%, transparent);\n  }\n  .bg-90 {\n    background-color: color-mix(in oklch, var(--bg) 90%, transparent);\n  }\n  .bg-100 {\n    background-color: var(--bg);\n  }\n  .theme-contrast {\n    background-color: var(--theme-bg);\n    color: var(--theme-contrast);\n  }\n  .theme-subtle {\n    background-color: var(--theme-bg-subtle);\n    color: var(--theme-fg);\n  }\n  .theme-muted {\n    background-color: var(--theme-bg-muted);\n    color: var(--theme-fg-emphasis);\n  }\n  .theme-border {\n    border: var(--border-width) solid var(--theme-border);\n  }\n  .bg-gradient {\n    background-image: var(--gradient);\n  }\n  .user-select-all {\n    user-select: all;\n  }\n  .user-select-auto {\n    user-select: auto;\n  }\n  .user-select-text {\n    user-select: text;\n  }\n  .user-select-none {\n    user-select: none;\n  }\n  .pe-none {\n    pointer-events: none;\n  }\n  .pe-auto {\n    pointer-events: auto;\n  }\n  .rounded-0 {\n    --rounded-size: 0;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-1 {\n    --rounded-size: 0.125rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-2 {\n    --rounded-size: 0.1875rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-3 {\n    --rounded-size: 0.25rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-4 {\n    --rounded-size: 0.375rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-5 {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-6 {\n    --rounded-size: 0.625rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-7 {\n    --rounded-size: 0.75rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-8 {\n    --rounded-size: 1rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-9 {\n    --rounded-size: 1.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded {\n    --rounded-size: 0.5rem;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-circle {\n    --rounded-size: 50%;\n    border-radius: var(--rounded-size);\n  }\n  .rounded-pill {\n    --rounded-size: var(--radius-pill);\n    border-radius: var(--rounded-size);\n  }\n  .rounded-size-0 {\n    --rounded-size: 0;\n  }\n  .rounded-size-1 {\n    --rounded-size: 0.125rem;\n  }\n  .rounded-size-2 {\n    --rounded-size: 0.1875rem;\n  }\n  .rounded-size-3 {\n    --rounded-size: 0.25rem;\n  }\n  .rounded-size-4 {\n    --rounded-size: 0.375rem;\n  }\n  .rounded-size-5 {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-6 {\n    --rounded-size: 0.625rem;\n  }\n  .rounded-size-7 {\n    --rounded-size: 0.75rem;\n  }\n  .rounded-size-8 {\n    --rounded-size: 1rem;\n  }\n  .rounded-size-9 {\n    --rounded-size: 1.5rem;\n  }\n  .rounded-size {\n    --rounded-size: 0.5rem;\n  }\n  .rounded-size-circle {\n    --rounded-size: 50%;\n  }\n  .rounded-size-pill {\n    --rounded-size: var(--radius-pill);\n  }\n  .rounded-top-0 {\n    border-start-start-radius: 0;\n    border-start-end-radius: 0;\n  }\n  .rounded-top-1 {\n    border-start-start-radius: 0.125rem;\n    border-start-end-radius: 0.125rem;\n  }\n  .rounded-top-2 {\n    border-start-start-radius: 0.1875rem;\n    border-start-end-radius: 0.1875rem;\n  }\n  .rounded-top-3 {\n    border-start-start-radius: 0.25rem;\n    border-start-end-radius: 0.25rem;\n  }\n  .rounded-top-4 {\n    border-start-start-radius: 0.375rem;\n    border-start-end-radius: 0.375rem;\n  }\n  .rounded-top-5 {\n    border-start-start-radius: 0.5rem;\n    border-start-end-radius: 0.5rem;\n  }\n  .rounded-top-6 {\n    border-start-start-radius: 0.625rem;\n    border-start-end-radius: 0.625rem;\n  }\n  .rounded-top-7 {\n    border-start-start-radius: 0.75rem;\n    border-start-end-radius: 0.75rem;\n  }\n  .rounded-top-8 {\n    border-start-start-radius: 1rem;\n    border-start-end-radius: 1rem;\n  }\n  .rounded-top-9 {\n    border-start-start-radius: 1.5rem;\n    border-start-end-radius: 1.5rem;\n  }\n  .rounded-top {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-top-circle {\n    border-start-start-radius: 50%;\n    border-start-end-radius: 50%;\n  }\n  .rounded-top-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-start-end-radius: var(--radius-pill);\n  }\n  .rounded-end-0 {\n    border-start-end-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-end-1 {\n    border-start-end-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-end-2 {\n    border-start-end-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-end-3 {\n    border-start-end-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-end-4 {\n    border-start-end-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-end-5 {\n    border-start-end-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-end-6 {\n    border-start-end-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-end-7 {\n    border-start-end-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-end-8 {\n    border-start-end-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-end-9 {\n    border-start-end-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-end {\n    border-start-end-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-end-circle {\n    border-start-end-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-end-pill {\n    border-start-end-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-bottom-0 {\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n  }\n  .rounded-bottom-1 {\n    border-end-start-radius: 0.125rem;\n    border-end-end-radius: 0.125rem;\n  }\n  .rounded-bottom-2 {\n    border-end-start-radius: 0.1875rem;\n    border-end-end-radius: 0.1875rem;\n  }\n  .rounded-bottom-3 {\n    border-end-start-radius: 0.25rem;\n    border-end-end-radius: 0.25rem;\n  }\n  .rounded-bottom-4 {\n    border-end-start-radius: 0.375rem;\n    border-end-end-radius: 0.375rem;\n  }\n  .rounded-bottom-5 {\n    border-end-start-radius: 0.5rem;\n    border-end-end-radius: 0.5rem;\n  }\n  .rounded-bottom-6 {\n    border-end-start-radius: 0.625rem;\n    border-end-end-radius: 0.625rem;\n  }\n  .rounded-bottom-7 {\n    border-end-start-radius: 0.75rem;\n    border-end-end-radius: 0.75rem;\n  }\n  .rounded-bottom-8 {\n    border-end-start-radius: 1rem;\n    border-end-end-radius: 1rem;\n  }\n  .rounded-bottom-9 {\n    border-end-start-radius: 1.5rem;\n    border-end-end-radius: 1.5rem;\n  }\n  .rounded-bottom {\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-end-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-bottom-circle {\n    border-end-start-radius: 50%;\n    border-end-end-radius: 50%;\n  }\n  .rounded-bottom-pill {\n    border-end-start-radius: var(--radius-pill);\n    border-end-end-radius: var(--radius-pill);\n  }\n  .rounded-start-0 {\n    border-start-start-radius: 0;\n    border-end-start-radius: 0;\n  }\n  .rounded-start-1 {\n    border-start-start-radius: 0.125rem;\n    border-end-start-radius: 0.125rem;\n  }\n  .rounded-start-2 {\n    border-start-start-radius: 0.1875rem;\n    border-end-start-radius: 0.1875rem;\n  }\n  .rounded-start-3 {\n    border-start-start-radius: 0.25rem;\n    border-end-start-radius: 0.25rem;\n  }\n  .rounded-start-4 {\n    border-start-start-radius: 0.375rem;\n    border-end-start-radius: 0.375rem;\n  }\n  .rounded-start-5 {\n    border-start-start-radius: 0.5rem;\n    border-end-start-radius: 0.5rem;\n  }\n  .rounded-start-6 {\n    border-start-start-radius: 0.625rem;\n    border-end-start-radius: 0.625rem;\n  }\n  .rounded-start-7 {\n    border-start-start-radius: 0.75rem;\n    border-end-start-radius: 0.75rem;\n  }\n  .rounded-start-8 {\n    border-start-start-radius: 1rem;\n    border-end-start-radius: 1rem;\n  }\n  .rounded-start-9 {\n    border-start-start-radius: 1.5rem;\n    border-end-start-radius: 1.5rem;\n  }\n  .rounded-start {\n    border-start-start-radius: var(--rounded-size, var(--radius-5));\n    border-end-start-radius: var(--rounded-size, var(--radius-5));\n  }\n  .rounded-start-circle {\n    border-start-start-radius: 50%;\n    border-end-start-radius: 50%;\n  }\n  .rounded-start-pill {\n    border-start-start-radius: var(--radius-pill);\n    border-end-start-radius: var(--radius-pill);\n  }\n  .visible {\n    visibility: visible;\n  }\n  .invisible {\n    visibility: hidden;\n  }\n  .z-n1 {\n    z-index: -1;\n  }\n  .z-0 {\n    z-index: 0;\n  }\n  .z-1 {\n    z-index: 1;\n  }\n  .z-2 {\n    z-index: 2;\n  }\n  .z-3 {\n    z-index: 3;\n  }\n  @media (width >= 576px) {\n    .sm\\:float-start {\n      float: inline-start;\n    }\n    .sm\\:float-end {\n      float: inline-end;\n    }\n    .sm\\:float-none {\n      float: none;\n    }\n    .sm\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .sm\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .sm\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .sm\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .sm\\:object-fit-none {\n      object-fit: none;\n    }\n    .sm\\:d-inline {\n      display: inline;\n    }\n    .sm\\:d-inline-block {\n      display: inline-block;\n    }\n    .sm\\:d-block {\n      display: block;\n    }\n    .sm\\:d-grid {\n      display: grid;\n    }\n    .sm\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .sm\\:d-table {\n      display: table;\n    }\n    .sm\\:d-table-row {\n      display: table-row;\n    }\n    .sm\\:d-table-cell {\n      display: table-cell;\n    }\n    .sm\\:d-flex {\n      display: flex;\n    }\n    .sm\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .sm\\:d-contents {\n      display: contents;\n    }\n    .sm\\:d-flow-root {\n      display: flow-root;\n    }\n    .sm\\:d-none {\n      display: none;\n    }\n    .sm\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .sm\\:flex-row {\n      flex-direction: row;\n    }\n    .sm\\:flex-column {\n      flex-direction: column;\n    }\n    .sm\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .sm\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .sm\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .sm\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .sm\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .sm\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .sm\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .sm\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .sm\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .sm\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .sm\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .sm\\:justify-content-center {\n      justify-content: center;\n    }\n    .sm\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .sm\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .sm\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .sm\\:justify-items-start {\n      justify-items: start;\n    }\n    .sm\\:justify-items-end {\n      justify-items: end;\n    }\n    .sm\\:justify-items-center {\n      justify-items: center;\n    }\n    .sm\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .sm\\:justify-self-start {\n      justify-self: start;\n    }\n    .sm\\:justify-self-end {\n      justify-self: end;\n    }\n    .sm\\:justify-self-center {\n      justify-self: center;\n    }\n    .sm\\:align-items-start {\n      align-items: flex-start;\n    }\n    .sm\\:align-items-end {\n      align-items: flex-end;\n    }\n    .sm\\:align-items-center {\n      align-items: center;\n    }\n    .sm\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .sm\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .sm\\:align-content-start {\n      align-content: flex-start;\n    }\n    .sm\\:align-content-end {\n      align-content: flex-end;\n    }\n    .sm\\:align-content-center {\n      align-content: center;\n    }\n    .sm\\:align-content-between {\n      align-content: space-between;\n    }\n    .sm\\:align-content-around {\n      align-content: space-around;\n    }\n    .sm\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .sm\\:align-self-auto {\n      align-self: auto;\n    }\n    .sm\\:align-self-start {\n      align-self: flex-start;\n    }\n    .sm\\:align-self-end {\n      align-self: flex-end;\n    }\n    .sm\\:align-self-center {\n      align-self: center;\n    }\n    .sm\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .sm\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .sm\\:place-items-start {\n      place-items: start;\n    }\n    .sm\\:place-items-end {\n      place-items: end;\n    }\n    .sm\\:place-items-center {\n      place-items: center;\n    }\n    .sm\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .sm\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .sm\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .sm\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .sm\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .sm\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .sm\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .sm\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .sm\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .sm\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .sm\\:order-first {\n      order: -1;\n    }\n    .sm\\:order-0 {\n      order: 0;\n    }\n    .sm\\:order-1 {\n      order: 1;\n    }\n    .sm\\:order-2 {\n      order: 2;\n    }\n    .sm\\:order-3 {\n      order: 3;\n    }\n    .sm\\:order-4 {\n      order: 4;\n    }\n    .sm\\:order-5 {\n      order: 5;\n    }\n    .sm\\:order-last {\n      order: 6;\n    }\n    .sm\\:m-0 {\n      margin: 0;\n    }\n    .sm\\:m-1 {\n      margin: 0.25rem;\n    }\n    .sm\\:m-2 {\n      margin: 0.5rem;\n    }\n    .sm\\:m-3 {\n      margin: 0.75rem;\n    }\n    .sm\\:m-4 {\n      margin: 1rem;\n    }\n    .sm\\:m-5 {\n      margin: 1.25rem;\n    }\n    .sm\\:m-6 {\n      margin: 1.5rem;\n    }\n    .sm\\:m-7 {\n      margin: 2rem;\n    }\n    .sm\\:m-8 {\n      margin: 2.5rem;\n    }\n    .sm\\:m-9 {\n      margin: 3rem;\n    }\n    .sm\\:m-auto {\n      margin: auto;\n    }\n    .sm\\:mx-0 {\n      margin-inline: 0;\n    }\n    .sm\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .sm\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .sm\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .sm\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .sm\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .sm\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .sm\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .sm\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .sm\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .sm\\:mx-auto {\n      margin-inline: auto;\n    }\n    .sm\\:my-0 {\n      margin-block: 0;\n    }\n    .sm\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .sm\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .sm\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .sm\\:my-4 {\n      margin-block: 1rem;\n    }\n    .sm\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .sm\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .sm\\:my-7 {\n      margin-block: 2rem;\n    }\n    .sm\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .sm\\:my-9 {\n      margin-block: 3rem;\n    }\n    .sm\\:my-auto {\n      margin-block: auto;\n    }\n    .sm\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .sm\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .sm\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .sm\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .sm\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .sm\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .sm\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .sm\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .sm\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .sm\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .sm\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .sm\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .sm\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .sm\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .sm\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .sm\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .sm\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .sm\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .sm\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .sm\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .sm\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .sm\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .sm\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .sm\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .sm\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .sm\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .sm\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .sm\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .sm\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .sm\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .sm\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .sm\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .sm\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .sm\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .sm\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .sm\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .sm\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .sm\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .sm\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .sm\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .sm\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .sm\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .sm\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .sm\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .sm\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .sm\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .sm\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .sm\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .sm\\:p-0 {\n      padding: 0;\n    }\n    .sm\\:p-1 {\n      padding: 0.25rem;\n    }\n    .sm\\:p-2 {\n      padding: 0.5rem;\n    }\n    .sm\\:p-3 {\n      padding: 0.75rem;\n    }\n    .sm\\:p-4 {\n      padding: 1rem;\n    }\n    .sm\\:p-5 {\n      padding: 1.25rem;\n    }\n    .sm\\:p-6 {\n      padding: 1.5rem;\n    }\n    .sm\\:p-7 {\n      padding: 2rem;\n    }\n    .sm\\:p-8 {\n      padding: 2.5rem;\n    }\n    .sm\\:p-9 {\n      padding: 3rem;\n    }\n    .sm\\:px-0 {\n      padding-inline: 0;\n    }\n    .sm\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .sm\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .sm\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .sm\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .sm\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .sm\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .sm\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .sm\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .sm\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .sm\\:py-0 {\n      padding-block: 0;\n    }\n    .sm\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .sm\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .sm\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .sm\\:py-4 {\n      padding-block: 1rem;\n    }\n    .sm\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .sm\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .sm\\:py-7 {\n      padding-block: 2rem;\n    }\n    .sm\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .sm\\:py-9 {\n      padding-block: 3rem;\n    }\n    .sm\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .sm\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .sm\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .sm\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .sm\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .sm\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .sm\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .sm\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .sm\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .sm\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .sm\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .sm\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .sm\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .sm\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .sm\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .sm\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .sm\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .sm\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .sm\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .sm\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .sm\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .sm\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .sm\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .sm\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .sm\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .sm\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .sm\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .sm\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .sm\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .sm\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .sm\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .sm\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .sm\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .sm\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .sm\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .sm\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .sm\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .sm\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .sm\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .sm\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .sm\\:gap-0 {\n      gap: 0;\n    }\n    .sm\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .sm\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .sm\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .sm\\:gap-4 {\n      gap: 1rem;\n    }\n    .sm\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .sm\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .sm\\:gap-7 {\n      gap: 2rem;\n    }\n    .sm\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .sm\\:gap-9 {\n      gap: 3rem;\n    }\n    .sm\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .sm\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .sm\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .sm\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .sm\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .sm\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .sm\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .sm\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .sm\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .sm\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .sm\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .sm\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .sm\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .sm\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .sm\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .sm\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .sm\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .sm\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .sm\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .sm\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.sm\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.sm\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.sm\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.sm\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.sm\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.sm\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.sm\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.sm\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.sm\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.sm\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.sm\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.sm\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.sm\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.sm\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.sm\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.sm\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.sm\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.sm\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.sm\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.sm\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.sm\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.sm\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.sm\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .sm\\:text-start {\n      text-align: start;\n    }\n    .sm\\:text-end {\n      text-align: end;\n    }\n    .sm\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 768px) {\n    .md\\:float-start {\n      float: inline-start;\n    }\n    .md\\:float-end {\n      float: inline-end;\n    }\n    .md\\:float-none {\n      float: none;\n    }\n    .md\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .md\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .md\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .md\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .md\\:object-fit-none {\n      object-fit: none;\n    }\n    .md\\:d-inline {\n      display: inline;\n    }\n    .md\\:d-inline-block {\n      display: inline-block;\n    }\n    .md\\:d-block {\n      display: block;\n    }\n    .md\\:d-grid {\n      display: grid;\n    }\n    .md\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .md\\:d-table {\n      display: table;\n    }\n    .md\\:d-table-row {\n      display: table-row;\n    }\n    .md\\:d-table-cell {\n      display: table-cell;\n    }\n    .md\\:d-flex {\n      display: flex;\n    }\n    .md\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .md\\:d-contents {\n      display: contents;\n    }\n    .md\\:d-flow-root {\n      display: flow-root;\n    }\n    .md\\:d-none {\n      display: none;\n    }\n    .md\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .md\\:flex-row {\n      flex-direction: row;\n    }\n    .md\\:flex-column {\n      flex-direction: column;\n    }\n    .md\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .md\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .md\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .md\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .md\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .md\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .md\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .md\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .md\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .md\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .md\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .md\\:justify-content-center {\n      justify-content: center;\n    }\n    .md\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .md\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .md\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .md\\:justify-items-start {\n      justify-items: start;\n    }\n    .md\\:justify-items-end {\n      justify-items: end;\n    }\n    .md\\:justify-items-center {\n      justify-items: center;\n    }\n    .md\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .md\\:justify-self-start {\n      justify-self: start;\n    }\n    .md\\:justify-self-end {\n      justify-self: end;\n    }\n    .md\\:justify-self-center {\n      justify-self: center;\n    }\n    .md\\:align-items-start {\n      align-items: flex-start;\n    }\n    .md\\:align-items-end {\n      align-items: flex-end;\n    }\n    .md\\:align-items-center {\n      align-items: center;\n    }\n    .md\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .md\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .md\\:align-content-start {\n      align-content: flex-start;\n    }\n    .md\\:align-content-end {\n      align-content: flex-end;\n    }\n    .md\\:align-content-center {\n      align-content: center;\n    }\n    .md\\:align-content-between {\n      align-content: space-between;\n    }\n    .md\\:align-content-around {\n      align-content: space-around;\n    }\n    .md\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .md\\:align-self-auto {\n      align-self: auto;\n    }\n    .md\\:align-self-start {\n      align-self: flex-start;\n    }\n    .md\\:align-self-end {\n      align-self: flex-end;\n    }\n    .md\\:align-self-center {\n      align-self: center;\n    }\n    .md\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .md\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .md\\:place-items-start {\n      place-items: start;\n    }\n    .md\\:place-items-end {\n      place-items: end;\n    }\n    .md\\:place-items-center {\n      place-items: center;\n    }\n    .md\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .md\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .md\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .md\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .md\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .md\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .md\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .md\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .md\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .md\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .md\\:order-first {\n      order: -1;\n    }\n    .md\\:order-0 {\n      order: 0;\n    }\n    .md\\:order-1 {\n      order: 1;\n    }\n    .md\\:order-2 {\n      order: 2;\n    }\n    .md\\:order-3 {\n      order: 3;\n    }\n    .md\\:order-4 {\n      order: 4;\n    }\n    .md\\:order-5 {\n      order: 5;\n    }\n    .md\\:order-last {\n      order: 6;\n    }\n    .md\\:m-0 {\n      margin: 0;\n    }\n    .md\\:m-1 {\n      margin: 0.25rem;\n    }\n    .md\\:m-2 {\n      margin: 0.5rem;\n    }\n    .md\\:m-3 {\n      margin: 0.75rem;\n    }\n    .md\\:m-4 {\n      margin: 1rem;\n    }\n    .md\\:m-5 {\n      margin: 1.25rem;\n    }\n    .md\\:m-6 {\n      margin: 1.5rem;\n    }\n    .md\\:m-7 {\n      margin: 2rem;\n    }\n    .md\\:m-8 {\n      margin: 2.5rem;\n    }\n    .md\\:m-9 {\n      margin: 3rem;\n    }\n    .md\\:m-auto {\n      margin: auto;\n    }\n    .md\\:mx-0 {\n      margin-inline: 0;\n    }\n    .md\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .md\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .md\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .md\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .md\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .md\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .md\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .md\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .md\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .md\\:mx-auto {\n      margin-inline: auto;\n    }\n    .md\\:my-0 {\n      margin-block: 0;\n    }\n    .md\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .md\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .md\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .md\\:my-4 {\n      margin-block: 1rem;\n    }\n    .md\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .md\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .md\\:my-7 {\n      margin-block: 2rem;\n    }\n    .md\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .md\\:my-9 {\n      margin-block: 3rem;\n    }\n    .md\\:my-auto {\n      margin-block: auto;\n    }\n    .md\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .md\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .md\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .md\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .md\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .md\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .md\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .md\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .md\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .md\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .md\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .md\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .md\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .md\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .md\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .md\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .md\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .md\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .md\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .md\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .md\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .md\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .md\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .md\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .md\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .md\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .md\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .md\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .md\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .md\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .md\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .md\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .md\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .md\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .md\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .md\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .md\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .md\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .md\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .md\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .md\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .md\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .md\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .md\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .md\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .md\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .md\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .md\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .md\\:p-0 {\n      padding: 0;\n    }\n    .md\\:p-1 {\n      padding: 0.25rem;\n    }\n    .md\\:p-2 {\n      padding: 0.5rem;\n    }\n    .md\\:p-3 {\n      padding: 0.75rem;\n    }\n    .md\\:p-4 {\n      padding: 1rem;\n    }\n    .md\\:p-5 {\n      padding: 1.25rem;\n    }\n    .md\\:p-6 {\n      padding: 1.5rem;\n    }\n    .md\\:p-7 {\n      padding: 2rem;\n    }\n    .md\\:p-8 {\n      padding: 2.5rem;\n    }\n    .md\\:p-9 {\n      padding: 3rem;\n    }\n    .md\\:px-0 {\n      padding-inline: 0;\n    }\n    .md\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .md\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .md\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .md\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .md\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .md\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .md\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .md\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .md\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .md\\:py-0 {\n      padding-block: 0;\n    }\n    .md\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .md\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .md\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .md\\:py-4 {\n      padding-block: 1rem;\n    }\n    .md\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .md\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .md\\:py-7 {\n      padding-block: 2rem;\n    }\n    .md\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .md\\:py-9 {\n      padding-block: 3rem;\n    }\n    .md\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .md\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .md\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .md\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .md\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .md\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .md\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .md\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .md\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .md\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .md\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .md\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .md\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .md\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .md\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .md\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .md\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .md\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .md\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .md\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .md\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .md\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .md\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .md\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .md\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .md\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .md\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .md\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .md\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .md\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .md\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .md\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .md\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .md\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .md\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .md\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .md\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .md\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .md\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .md\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .md\\:gap-0 {\n      gap: 0;\n    }\n    .md\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .md\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .md\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .md\\:gap-4 {\n      gap: 1rem;\n    }\n    .md\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .md\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .md\\:gap-7 {\n      gap: 2rem;\n    }\n    .md\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .md\\:gap-9 {\n      gap: 3rem;\n    }\n    .md\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .md\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .md\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .md\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .md\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .md\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .md\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .md\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .md\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .md\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .md\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .md\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .md\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .md\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .md\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .md\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .md\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .md\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .md\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .md\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.md\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.md\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.md\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.md\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.md\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.md\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.md\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.md\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.md\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.md\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.md\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.md\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.md\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.md\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.md\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.md\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.md\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.md\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.md\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.md\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.md\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.md\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.md\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .md\\:text-start {\n      text-align: start;\n    }\n    .md\\:text-end {\n      text-align: end;\n    }\n    .md\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1024px) {\n    .lg\\:float-start {\n      float: inline-start;\n    }\n    .lg\\:float-end {\n      float: inline-end;\n    }\n    .lg\\:float-none {\n      float: none;\n    }\n    .lg\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .lg\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .lg\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .lg\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .lg\\:object-fit-none {\n      object-fit: none;\n    }\n    .lg\\:d-inline {\n      display: inline;\n    }\n    .lg\\:d-inline-block {\n      display: inline-block;\n    }\n    .lg\\:d-block {\n      display: block;\n    }\n    .lg\\:d-grid {\n      display: grid;\n    }\n    .lg\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .lg\\:d-table {\n      display: table;\n    }\n    .lg\\:d-table-row {\n      display: table-row;\n    }\n    .lg\\:d-table-cell {\n      display: table-cell;\n    }\n    .lg\\:d-flex {\n      display: flex;\n    }\n    .lg\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .lg\\:d-contents {\n      display: contents;\n    }\n    .lg\\:d-flow-root {\n      display: flow-root;\n    }\n    .lg\\:d-none {\n      display: none;\n    }\n    .lg\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .lg\\:flex-row {\n      flex-direction: row;\n    }\n    .lg\\:flex-column {\n      flex-direction: column;\n    }\n    .lg\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .lg\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .lg\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .lg\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .lg\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .lg\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .lg\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .lg\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .lg\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .lg\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .lg\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .lg\\:justify-content-center {\n      justify-content: center;\n    }\n    .lg\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .lg\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .lg\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .lg\\:justify-items-start {\n      justify-items: start;\n    }\n    .lg\\:justify-items-end {\n      justify-items: end;\n    }\n    .lg\\:justify-items-center {\n      justify-items: center;\n    }\n    .lg\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .lg\\:justify-self-start {\n      justify-self: start;\n    }\n    .lg\\:justify-self-end {\n      justify-self: end;\n    }\n    .lg\\:justify-self-center {\n      justify-self: center;\n    }\n    .lg\\:align-items-start {\n      align-items: flex-start;\n    }\n    .lg\\:align-items-end {\n      align-items: flex-end;\n    }\n    .lg\\:align-items-center {\n      align-items: center;\n    }\n    .lg\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .lg\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .lg\\:align-content-start {\n      align-content: flex-start;\n    }\n    .lg\\:align-content-end {\n      align-content: flex-end;\n    }\n    .lg\\:align-content-center {\n      align-content: center;\n    }\n    .lg\\:align-content-between {\n      align-content: space-between;\n    }\n    .lg\\:align-content-around {\n      align-content: space-around;\n    }\n    .lg\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .lg\\:align-self-auto {\n      align-self: auto;\n    }\n    .lg\\:align-self-start {\n      align-self: flex-start;\n    }\n    .lg\\:align-self-end {\n      align-self: flex-end;\n    }\n    .lg\\:align-self-center {\n      align-self: center;\n    }\n    .lg\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .lg\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .lg\\:place-items-start {\n      place-items: start;\n    }\n    .lg\\:place-items-end {\n      place-items: end;\n    }\n    .lg\\:place-items-center {\n      place-items: center;\n    }\n    .lg\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .lg\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .lg\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .lg\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .lg\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .lg\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .lg\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .lg\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .lg\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .lg\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .lg\\:order-first {\n      order: -1;\n    }\n    .lg\\:order-0 {\n      order: 0;\n    }\n    .lg\\:order-1 {\n      order: 1;\n    }\n    .lg\\:order-2 {\n      order: 2;\n    }\n    .lg\\:order-3 {\n      order: 3;\n    }\n    .lg\\:order-4 {\n      order: 4;\n    }\n    .lg\\:order-5 {\n      order: 5;\n    }\n    .lg\\:order-last {\n      order: 6;\n    }\n    .lg\\:m-0 {\n      margin: 0;\n    }\n    .lg\\:m-1 {\n      margin: 0.25rem;\n    }\n    .lg\\:m-2 {\n      margin: 0.5rem;\n    }\n    .lg\\:m-3 {\n      margin: 0.75rem;\n    }\n    .lg\\:m-4 {\n      margin: 1rem;\n    }\n    .lg\\:m-5 {\n      margin: 1.25rem;\n    }\n    .lg\\:m-6 {\n      margin: 1.5rem;\n    }\n    .lg\\:m-7 {\n      margin: 2rem;\n    }\n    .lg\\:m-8 {\n      margin: 2.5rem;\n    }\n    .lg\\:m-9 {\n      margin: 3rem;\n    }\n    .lg\\:m-auto {\n      margin: auto;\n    }\n    .lg\\:mx-0 {\n      margin-inline: 0;\n    }\n    .lg\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .lg\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .lg\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .lg\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .lg\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .lg\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .lg\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .lg\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .lg\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .lg\\:mx-auto {\n      margin-inline: auto;\n    }\n    .lg\\:my-0 {\n      margin-block: 0;\n    }\n    .lg\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .lg\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .lg\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .lg\\:my-4 {\n      margin-block: 1rem;\n    }\n    .lg\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .lg\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .lg\\:my-7 {\n      margin-block: 2rem;\n    }\n    .lg\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .lg\\:my-9 {\n      margin-block: 3rem;\n    }\n    .lg\\:my-auto {\n      margin-block: auto;\n    }\n    .lg\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .lg\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .lg\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .lg\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .lg\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .lg\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .lg\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .lg\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .lg\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .lg\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .lg\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .lg\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .lg\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .lg\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .lg\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .lg\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .lg\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .lg\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .lg\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .lg\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .lg\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .lg\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .lg\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .lg\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .lg\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .lg\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .lg\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .lg\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .lg\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .lg\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .lg\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .lg\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .lg\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .lg\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .lg\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .lg\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .lg\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .lg\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .lg\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .lg\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .lg\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .lg\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .lg\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .lg\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .lg\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .lg\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .lg\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .lg\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .lg\\:p-0 {\n      padding: 0;\n    }\n    .lg\\:p-1 {\n      padding: 0.25rem;\n    }\n    .lg\\:p-2 {\n      padding: 0.5rem;\n    }\n    .lg\\:p-3 {\n      padding: 0.75rem;\n    }\n    .lg\\:p-4 {\n      padding: 1rem;\n    }\n    .lg\\:p-5 {\n      padding: 1.25rem;\n    }\n    .lg\\:p-6 {\n      padding: 1.5rem;\n    }\n    .lg\\:p-7 {\n      padding: 2rem;\n    }\n    .lg\\:p-8 {\n      padding: 2.5rem;\n    }\n    .lg\\:p-9 {\n      padding: 3rem;\n    }\n    .lg\\:px-0 {\n      padding-inline: 0;\n    }\n    .lg\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .lg\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .lg\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .lg\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .lg\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .lg\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .lg\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .lg\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .lg\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .lg\\:py-0 {\n      padding-block: 0;\n    }\n    .lg\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .lg\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .lg\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .lg\\:py-4 {\n      padding-block: 1rem;\n    }\n    .lg\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .lg\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .lg\\:py-7 {\n      padding-block: 2rem;\n    }\n    .lg\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .lg\\:py-9 {\n      padding-block: 3rem;\n    }\n    .lg\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .lg\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .lg\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .lg\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .lg\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .lg\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .lg\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .lg\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .lg\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .lg\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .lg\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .lg\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .lg\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .lg\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .lg\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .lg\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .lg\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .lg\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .lg\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .lg\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .lg\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .lg\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .lg\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .lg\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .lg\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .lg\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .lg\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .lg\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .lg\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .lg\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .lg\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .lg\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .lg\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .lg\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .lg\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .lg\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .lg\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .lg\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .lg\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .lg\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .lg\\:gap-0 {\n      gap: 0;\n    }\n    .lg\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .lg\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .lg\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .lg\\:gap-4 {\n      gap: 1rem;\n    }\n    .lg\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .lg\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .lg\\:gap-7 {\n      gap: 2rem;\n    }\n    .lg\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .lg\\:gap-9 {\n      gap: 3rem;\n    }\n    .lg\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .lg\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .lg\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .lg\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .lg\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .lg\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .lg\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .lg\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .lg\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .lg\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .lg\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .lg\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .lg\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .lg\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .lg\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .lg\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .lg\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .lg\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .lg\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .lg\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.lg\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.lg\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.lg\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.lg\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.lg\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.lg\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.lg\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.lg\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.lg\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.lg\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.lg\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.lg\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.lg\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.lg\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.lg\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.lg\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.lg\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.lg\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.lg\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.lg\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.lg\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.lg\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.lg\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .lg\\:text-start {\n      text-align: start;\n    }\n    .lg\\:text-end {\n      text-align: end;\n    }\n    .lg\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1280px) {\n    .xl\\:float-start {\n      float: inline-start;\n    }\n    .xl\\:float-end {\n      float: inline-end;\n    }\n    .xl\\:float-none {\n      float: none;\n    }\n    .xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .xl\\:d-inline {\n      display: inline;\n    }\n    .xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .xl\\:d-block {\n      display: block;\n    }\n    .xl\\:d-grid {\n      display: grid;\n    }\n    .xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .xl\\:d-table {\n      display: table;\n    }\n    .xl\\:d-table-row {\n      display: table-row;\n    }\n    .xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .xl\\:d-flex {\n      display: flex;\n    }\n    .xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .xl\\:d-contents {\n      display: contents;\n    }\n    .xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .xl\\:d-none {\n      display: none;\n    }\n    .xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .xl\\:flex-row {\n      flex-direction: row;\n    }\n    .xl\\:flex-column {\n      flex-direction: column;\n    }\n    .xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .xl\\:align-items-center {\n      align-items: center;\n    }\n    .xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .xl\\:align-content-center {\n      align-content: center;\n    }\n    .xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .xl\\:align-self-center {\n      align-self: center;\n    }\n    .xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .xl\\:place-items-start {\n      place-items: start;\n    }\n    .xl\\:place-items-end {\n      place-items: end;\n    }\n    .xl\\:place-items-center {\n      place-items: center;\n    }\n    .xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .xl\\:order-first {\n      order: -1;\n    }\n    .xl\\:order-0 {\n      order: 0;\n    }\n    .xl\\:order-1 {\n      order: 1;\n    }\n    .xl\\:order-2 {\n      order: 2;\n    }\n    .xl\\:order-3 {\n      order: 3;\n    }\n    .xl\\:order-4 {\n      order: 4;\n    }\n    .xl\\:order-5 {\n      order: 5;\n    }\n    .xl\\:order-last {\n      order: 6;\n    }\n    .xl\\:m-0 {\n      margin: 0;\n    }\n    .xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .xl\\:m-4 {\n      margin: 1rem;\n    }\n    .xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .xl\\:m-7 {\n      margin: 2rem;\n    }\n    .xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .xl\\:m-9 {\n      margin: 3rem;\n    }\n    .xl\\:m-auto {\n      margin: auto;\n    }\n    .xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .xl\\:my-0 {\n      margin-block: 0;\n    }\n    .xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .xl\\:my-auto {\n      margin-block: auto;\n    }\n    .xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .xl\\:p-0 {\n      padding: 0;\n    }\n    .xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .xl\\:p-4 {\n      padding: 1rem;\n    }\n    .xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .xl\\:p-7 {\n      padding: 2rem;\n    }\n    .xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .xl\\:p-9 {\n      padding: 3rem;\n    }\n    .xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .xl\\:py-0 {\n      padding-block: 0;\n    }\n    .xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .xl\\:gap-0 {\n      gap: 0;\n    }\n    .xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .xl\\:text-start {\n      text-align: start;\n    }\n    .xl\\:text-end {\n      text-align: end;\n    }\n    .xl\\:text-center {\n      text-align: center;\n    }\n  }\n  @media (width >= 1536px) {\n    .\\32 xl\\:float-start {\n      float: inline-start;\n    }\n    .\\32 xl\\:float-end {\n      float: inline-end;\n    }\n    .\\32 xl\\:float-none {\n      float: none;\n    }\n    .\\32 xl\\:object-fit-contain {\n      object-fit: contain;\n    }\n    .\\32 xl\\:object-fit-cover {\n      object-fit: cover;\n    }\n    .\\32 xl\\:object-fit-fill {\n      object-fit: fill;\n    }\n    .\\32 xl\\:object-fit-scale {\n      object-fit: scale-down;\n    }\n    .\\32 xl\\:object-fit-none {\n      object-fit: none;\n    }\n    .\\32 xl\\:d-inline {\n      display: inline;\n    }\n    .\\32 xl\\:d-inline-block {\n      display: inline-block;\n    }\n    .\\32 xl\\:d-block {\n      display: block;\n    }\n    .\\32 xl\\:d-grid {\n      display: grid;\n    }\n    .\\32 xl\\:d-inline-grid {\n      display: inline-grid;\n    }\n    .\\32 xl\\:d-table {\n      display: table;\n    }\n    .\\32 xl\\:d-table-row {\n      display: table-row;\n    }\n    .\\32 xl\\:d-table-cell {\n      display: table-cell;\n    }\n    .\\32 xl\\:d-flex {\n      display: flex;\n    }\n    .\\32 xl\\:d-inline-flex {\n      display: inline-flex;\n    }\n    .\\32 xl\\:d-contents {\n      display: contents;\n    }\n    .\\32 xl\\:d-flow-root {\n      display: flow-root;\n    }\n    .\\32 xl\\:d-none {\n      display: none;\n    }\n    .\\32 xl\\:flex-fill {\n      flex: 1 1 auto;\n    }\n    .\\32 xl\\:flex-row {\n      flex-direction: row;\n    }\n    .\\32 xl\\:flex-column {\n      flex-direction: column;\n    }\n    .\\32 xl\\:flex-row-reverse {\n      flex-direction: row-reverse;\n    }\n    .\\32 xl\\:flex-column-reverse {\n      flex-direction: column-reverse;\n    }\n    .\\32 xl\\:flex-grow-0 {\n      flex-grow: 0;\n    }\n    .\\32 xl\\:flex-grow-1 {\n      flex-grow: 1;\n    }\n    .\\32 xl\\:flex-shrink-0 {\n      flex-shrink: 0;\n    }\n    .\\32 xl\\:flex-shrink-1 {\n      flex-shrink: 1;\n    }\n    .\\32 xl\\:flex-wrap {\n      flex-wrap: wrap;\n    }\n    .\\32 xl\\:flex-nowrap {\n      flex-wrap: nowrap;\n    }\n    .\\32 xl\\:flex-wrap-reverse {\n      flex-wrap: wrap-reverse;\n    }\n    .\\32 xl\\:justify-content-start {\n      justify-content: flex-start;\n    }\n    .\\32 xl\\:justify-content-end {\n      justify-content: flex-end;\n    }\n    .\\32 xl\\:justify-content-center {\n      justify-content: center;\n    }\n    .\\32 xl\\:justify-content-between {\n      justify-content: space-between;\n    }\n    .\\32 xl\\:justify-content-around {\n      justify-content: space-around;\n    }\n    .\\32 xl\\:justify-content-evenly {\n      justify-content: space-evenly;\n    }\n    .\\32 xl\\:justify-items-start {\n      justify-items: start;\n    }\n    .\\32 xl\\:justify-items-end {\n      justify-items: end;\n    }\n    .\\32 xl\\:justify-items-center {\n      justify-items: center;\n    }\n    .\\32 xl\\:justify-items-stretch {\n      justify-items: stretch;\n    }\n    .\\32 xl\\:justify-self-start {\n      justify-self: start;\n    }\n    .\\32 xl\\:justify-self-end {\n      justify-self: end;\n    }\n    .\\32 xl\\:justify-self-center {\n      justify-self: center;\n    }\n    .\\32 xl\\:align-items-start {\n      align-items: flex-start;\n    }\n    .\\32 xl\\:align-items-end {\n      align-items: flex-end;\n    }\n    .\\32 xl\\:align-items-center {\n      align-items: center;\n    }\n    .\\32 xl\\:align-items-baseline {\n      align-items: baseline;\n    }\n    .\\32 xl\\:align-items-stretch {\n      align-items: stretch;\n    }\n    .\\32 xl\\:align-content-start {\n      align-content: flex-start;\n    }\n    .\\32 xl\\:align-content-end {\n      align-content: flex-end;\n    }\n    .\\32 xl\\:align-content-center {\n      align-content: center;\n    }\n    .\\32 xl\\:align-content-between {\n      align-content: space-between;\n    }\n    .\\32 xl\\:align-content-around {\n      align-content: space-around;\n    }\n    .\\32 xl\\:align-content-stretch {\n      align-content: stretch;\n    }\n    .\\32 xl\\:align-self-auto {\n      align-self: auto;\n    }\n    .\\32 xl\\:align-self-start {\n      align-self: flex-start;\n    }\n    .\\32 xl\\:align-self-end {\n      align-self: flex-end;\n    }\n    .\\32 xl\\:align-self-center {\n      align-self: center;\n    }\n    .\\32 xl\\:align-self-baseline {\n      align-self: baseline;\n    }\n    .\\32 xl\\:align-self-stretch {\n      align-self: stretch;\n    }\n    .\\32 xl\\:place-items-start {\n      place-items: start;\n    }\n    .\\32 xl\\:place-items-end {\n      place-items: end;\n    }\n    .\\32 xl\\:place-items-center {\n      place-items: center;\n    }\n    .\\32 xl\\:place-items-stretch {\n      place-items: stretch;\n    }\n    .\\32 xl\\:grid-cols-1 {\n      grid-template-columns: 1fr;\n    }\n    .\\32 xl\\:grid-cols-2 {\n      grid-template-columns: repeat(2, 1fr);\n    }\n    .\\32 xl\\:grid-cols-3 {\n      grid-template-columns: repeat(3, 1fr);\n    }\n    .\\32 xl\\:grid-cols-4 {\n      grid-template-columns: repeat(4, 1fr);\n    }\n    .\\32 xl\\:grid-cols-6 {\n      grid-template-columns: repeat(6, 1fr);\n    }\n    .\\32 xl\\:grid-cols-fill {\n      grid-column: 1 / -1;\n    }\n    .\\32 xl\\:grid-auto-flow-row {\n      grid-auto-flow: row;\n    }\n    .\\32 xl\\:grid-auto-flow-column {\n      grid-auto-flow: column;\n    }\n    .\\32 xl\\:grid-auto-flow-dense {\n      grid-auto-flow: dense;\n    }\n    .\\32 xl\\:order-first {\n      order: -1;\n    }\n    .\\32 xl\\:order-0 {\n      order: 0;\n    }\n    .\\32 xl\\:order-1 {\n      order: 1;\n    }\n    .\\32 xl\\:order-2 {\n      order: 2;\n    }\n    .\\32 xl\\:order-3 {\n      order: 3;\n    }\n    .\\32 xl\\:order-4 {\n      order: 4;\n    }\n    .\\32 xl\\:order-5 {\n      order: 5;\n    }\n    .\\32 xl\\:order-last {\n      order: 6;\n    }\n    .\\32 xl\\:m-0 {\n      margin: 0;\n    }\n    .\\32 xl\\:m-1 {\n      margin: 0.25rem;\n    }\n    .\\32 xl\\:m-2 {\n      margin: 0.5rem;\n    }\n    .\\32 xl\\:m-3 {\n      margin: 0.75rem;\n    }\n    .\\32 xl\\:m-4 {\n      margin: 1rem;\n    }\n    .\\32 xl\\:m-5 {\n      margin: 1.25rem;\n    }\n    .\\32 xl\\:m-6 {\n      margin: 1.5rem;\n    }\n    .\\32 xl\\:m-7 {\n      margin: 2rem;\n    }\n    .\\32 xl\\:m-8 {\n      margin: 2.5rem;\n    }\n    .\\32 xl\\:m-9 {\n      margin: 3rem;\n    }\n    .\\32 xl\\:m-auto {\n      margin: auto;\n    }\n    .\\32 xl\\:mx-0 {\n      margin-inline: 0;\n    }\n    .\\32 xl\\:mx-1 {\n      margin-inline: 0.25rem;\n    }\n    .\\32 xl\\:mx-2 {\n      margin-inline: 0.5rem;\n    }\n    .\\32 xl\\:mx-3 {\n      margin-inline: 0.75rem;\n    }\n    .\\32 xl\\:mx-4 {\n      margin-inline: 1rem;\n    }\n    .\\32 xl\\:mx-5 {\n      margin-inline: 1.25rem;\n    }\n    .\\32 xl\\:mx-6 {\n      margin-inline: 1.5rem;\n    }\n    .\\32 xl\\:mx-7 {\n      margin-inline: 2rem;\n    }\n    .\\32 xl\\:mx-8 {\n      margin-inline: 2.5rem;\n    }\n    .\\32 xl\\:mx-9 {\n      margin-inline: 3rem;\n    }\n    .\\32 xl\\:mx-auto {\n      margin-inline: auto;\n    }\n    .\\32 xl\\:my-0 {\n      margin-block: 0;\n    }\n    .\\32 xl\\:my-1 {\n      margin-block: 0.25rem;\n    }\n    .\\32 xl\\:my-2 {\n      margin-block: 0.5rem;\n    }\n    .\\32 xl\\:my-3 {\n      margin-block: 0.75rem;\n    }\n    .\\32 xl\\:my-4 {\n      margin-block: 1rem;\n    }\n    .\\32 xl\\:my-5 {\n      margin-block: 1.25rem;\n    }\n    .\\32 xl\\:my-6 {\n      margin-block: 1.5rem;\n    }\n    .\\32 xl\\:my-7 {\n      margin-block: 2rem;\n    }\n    .\\32 xl\\:my-8 {\n      margin-block: 2.5rem;\n    }\n    .\\32 xl\\:my-9 {\n      margin-block: 3rem;\n    }\n    .\\32 xl\\:my-auto {\n      margin-block: auto;\n    }\n    .\\32 xl\\:mt-0 {\n      margin-block-start: 0;\n    }\n    .\\32 xl\\:mt-1 {\n      margin-block-start: 0.25rem;\n    }\n    .\\32 xl\\:mt-2 {\n      margin-block-start: 0.5rem;\n    }\n    .\\32 xl\\:mt-3 {\n      margin-block-start: 0.75rem;\n    }\n    .\\32 xl\\:mt-4 {\n      margin-block-start: 1rem;\n    }\n    .\\32 xl\\:mt-5 {\n      margin-block-start: 1.25rem;\n    }\n    .\\32 xl\\:mt-6 {\n      margin-block-start: 1.5rem;\n    }\n    .\\32 xl\\:mt-7 {\n      margin-block-start: 2rem;\n    }\n    .\\32 xl\\:mt-8 {\n      margin-block-start: 2.5rem;\n    }\n    .\\32 xl\\:mt-9 {\n      margin-block-start: 3rem;\n    }\n    .\\32 xl\\:mt-auto {\n      margin-block-start: auto;\n    }\n    .\\32 xl\\:me-0 {\n      margin-inline-end: 0;\n    }\n    .\\32 xl\\:me-1 {\n      margin-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:me-2 {\n      margin-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:me-3 {\n      margin-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:me-4 {\n      margin-inline-end: 1rem;\n    }\n    .\\32 xl\\:me-5 {\n      margin-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:me-6 {\n      margin-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:me-7 {\n      margin-inline-end: 2rem;\n    }\n    .\\32 xl\\:me-8 {\n      margin-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:me-9 {\n      margin-inline-end: 3rem;\n    }\n    .\\32 xl\\:me--1 {\n      margin-inline-end: -0.25rem;\n    }\n    .\\32 xl\\:me--2 {\n      margin-inline-end: -0.5rem;\n    }\n    .\\32 xl\\:me-auto {\n      margin-inline-end: auto;\n    }\n    .\\32 xl\\:mb-0 {\n      margin-block-end: 0;\n    }\n    .\\32 xl\\:mb-1 {\n      margin-block-end: 0.25rem;\n    }\n    .\\32 xl\\:mb-2 {\n      margin-block-end: 0.5rem;\n    }\n    .\\32 xl\\:mb-3 {\n      margin-block-end: 0.75rem;\n    }\n    .\\32 xl\\:mb-4 {\n      margin-block-end: 1rem;\n    }\n    .\\32 xl\\:mb-5 {\n      margin-block-end: 1.25rem;\n    }\n    .\\32 xl\\:mb-6 {\n      margin-block-end: 1.5rem;\n    }\n    .\\32 xl\\:mb-7 {\n      margin-block-end: 2rem;\n    }\n    .\\32 xl\\:mb-8 {\n      margin-block-end: 2.5rem;\n    }\n    .\\32 xl\\:mb-9 {\n      margin-block-end: 3rem;\n    }\n    .\\32 xl\\:mb-auto {\n      margin-block-end: auto;\n    }\n    .\\32 xl\\:ms-0 {\n      margin-inline-start: 0;\n    }\n    .\\32 xl\\:ms-1 {\n      margin-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ms-2 {\n      margin-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ms-3 {\n      margin-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ms-4 {\n      margin-inline-start: 1rem;\n    }\n    .\\32 xl\\:ms-5 {\n      margin-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ms-6 {\n      margin-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ms-7 {\n      margin-inline-start: 2rem;\n    }\n    .\\32 xl\\:ms-8 {\n      margin-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ms-9 {\n      margin-inline-start: 3rem;\n    }\n    .\\32 xl\\:ms--1 {\n      margin-inline-start: -0.25rem;\n    }\n    .\\32 xl\\:ms--2 {\n      margin-inline-start: -0.5rem;\n    }\n    .\\32 xl\\:ms-auto {\n      margin-inline-start: auto;\n    }\n    .\\32 xl\\:p-0 {\n      padding: 0;\n    }\n    .\\32 xl\\:p-1 {\n      padding: 0.25rem;\n    }\n    .\\32 xl\\:p-2 {\n      padding: 0.5rem;\n    }\n    .\\32 xl\\:p-3 {\n      padding: 0.75rem;\n    }\n    .\\32 xl\\:p-4 {\n      padding: 1rem;\n    }\n    .\\32 xl\\:p-5 {\n      padding: 1.25rem;\n    }\n    .\\32 xl\\:p-6 {\n      padding: 1.5rem;\n    }\n    .\\32 xl\\:p-7 {\n      padding: 2rem;\n    }\n    .\\32 xl\\:p-8 {\n      padding: 2.5rem;\n    }\n    .\\32 xl\\:p-9 {\n      padding: 3rem;\n    }\n    .\\32 xl\\:px-0 {\n      padding-inline: 0;\n    }\n    .\\32 xl\\:px-1 {\n      padding-inline: 0.25rem;\n    }\n    .\\32 xl\\:px-2 {\n      padding-inline: 0.5rem;\n    }\n    .\\32 xl\\:px-3 {\n      padding-inline: 0.75rem;\n    }\n    .\\32 xl\\:px-4 {\n      padding-inline: 1rem;\n    }\n    .\\32 xl\\:px-5 {\n      padding-inline: 1.25rem;\n    }\n    .\\32 xl\\:px-6 {\n      padding-inline: 1.5rem;\n    }\n    .\\32 xl\\:px-7 {\n      padding-inline: 2rem;\n    }\n    .\\32 xl\\:px-8 {\n      padding-inline: 2.5rem;\n    }\n    .\\32 xl\\:px-9 {\n      padding-inline: 3rem;\n    }\n    .\\32 xl\\:py-0 {\n      padding-block: 0;\n    }\n    .\\32 xl\\:py-1 {\n      padding-block: 0.25rem;\n    }\n    .\\32 xl\\:py-2 {\n      padding-block: 0.5rem;\n    }\n    .\\32 xl\\:py-3 {\n      padding-block: 0.75rem;\n    }\n    .\\32 xl\\:py-4 {\n      padding-block: 1rem;\n    }\n    .\\32 xl\\:py-5 {\n      padding-block: 1.25rem;\n    }\n    .\\32 xl\\:py-6 {\n      padding-block: 1.5rem;\n    }\n    .\\32 xl\\:py-7 {\n      padding-block: 2rem;\n    }\n    .\\32 xl\\:py-8 {\n      padding-block: 2.5rem;\n    }\n    .\\32 xl\\:py-9 {\n      padding-block: 3rem;\n    }\n    .\\32 xl\\:pt-0 {\n      padding-block-start: 0;\n    }\n    .\\32 xl\\:pt-1 {\n      padding-block-start: 0.25rem;\n    }\n    .\\32 xl\\:pt-2 {\n      padding-block-start: 0.5rem;\n    }\n    .\\32 xl\\:pt-3 {\n      padding-block-start: 0.75rem;\n    }\n    .\\32 xl\\:pt-4 {\n      padding-block-start: 1rem;\n    }\n    .\\32 xl\\:pt-5 {\n      padding-block-start: 1.25rem;\n    }\n    .\\32 xl\\:pt-6 {\n      padding-block-start: 1.5rem;\n    }\n    .\\32 xl\\:pt-7 {\n      padding-block-start: 2rem;\n    }\n    .\\32 xl\\:pt-8 {\n      padding-block-start: 2.5rem;\n    }\n    .\\32 xl\\:pt-9 {\n      padding-block-start: 3rem;\n    }\n    .\\32 xl\\:pe-0 {\n      padding-inline-end: 0;\n    }\n    .\\32 xl\\:pe-1 {\n      padding-inline-end: 0.25rem;\n    }\n    .\\32 xl\\:pe-2 {\n      padding-inline-end: 0.5rem;\n    }\n    .\\32 xl\\:pe-3 {\n      padding-inline-end: 0.75rem;\n    }\n    .\\32 xl\\:pe-4 {\n      padding-inline-end: 1rem;\n    }\n    .\\32 xl\\:pe-5 {\n      padding-inline-end: 1.25rem;\n    }\n    .\\32 xl\\:pe-6 {\n      padding-inline-end: 1.5rem;\n    }\n    .\\32 xl\\:pe-7 {\n      padding-inline-end: 2rem;\n    }\n    .\\32 xl\\:pe-8 {\n      padding-inline-end: 2.5rem;\n    }\n    .\\32 xl\\:pe-9 {\n      padding-inline-end: 3rem;\n    }\n    .\\32 xl\\:pb-0 {\n      padding-block-end: 0;\n    }\n    .\\32 xl\\:pb-1 {\n      padding-block-end: 0.25rem;\n    }\n    .\\32 xl\\:pb-2 {\n      padding-block-end: 0.5rem;\n    }\n    .\\32 xl\\:pb-3 {\n      padding-block-end: 0.75rem;\n    }\n    .\\32 xl\\:pb-4 {\n      padding-block-end: 1rem;\n    }\n    .\\32 xl\\:pb-5 {\n      padding-block-end: 1.25rem;\n    }\n    .\\32 xl\\:pb-6 {\n      padding-block-end: 1.5rem;\n    }\n    .\\32 xl\\:pb-7 {\n      padding-block-end: 2rem;\n    }\n    .\\32 xl\\:pb-8 {\n      padding-block-end: 2.5rem;\n    }\n    .\\32 xl\\:pb-9 {\n      padding-block-end: 3rem;\n    }\n    .\\32 xl\\:ps-0 {\n      padding-inline-start: 0;\n    }\n    .\\32 xl\\:ps-1 {\n      padding-inline-start: 0.25rem;\n    }\n    .\\32 xl\\:ps-2 {\n      padding-inline-start: 0.5rem;\n    }\n    .\\32 xl\\:ps-3 {\n      padding-inline-start: 0.75rem;\n    }\n    .\\32 xl\\:ps-4 {\n      padding-inline-start: 1rem;\n    }\n    .\\32 xl\\:ps-5 {\n      padding-inline-start: 1.25rem;\n    }\n    .\\32 xl\\:ps-6 {\n      padding-inline-start: 1.5rem;\n    }\n    .\\32 xl\\:ps-7 {\n      padding-inline-start: 2rem;\n    }\n    .\\32 xl\\:ps-8 {\n      padding-inline-start: 2.5rem;\n    }\n    .\\32 xl\\:ps-9 {\n      padding-inline-start: 3rem;\n    }\n    .\\32 xl\\:gap-0 {\n      gap: 0;\n    }\n    .\\32 xl\\:gap-1 {\n      gap: 0.25rem;\n    }\n    .\\32 xl\\:gap-2 {\n      gap: 0.5rem;\n    }\n    .\\32 xl\\:gap-3 {\n      gap: 0.75rem;\n    }\n    .\\32 xl\\:gap-4 {\n      gap: 1rem;\n    }\n    .\\32 xl\\:gap-5 {\n      gap: 1.25rem;\n    }\n    .\\32 xl\\:gap-6 {\n      gap: 1.5rem;\n    }\n    .\\32 xl\\:gap-7 {\n      gap: 2rem;\n    }\n    .\\32 xl\\:gap-8 {\n      gap: 2.5rem;\n    }\n    .\\32 xl\\:gap-9 {\n      gap: 3rem;\n    }\n    .\\32 xl\\:row-gap-0 {\n      row-gap: 0;\n    }\n    .\\32 xl\\:row-gap-1 {\n      row-gap: 0.25rem;\n    }\n    .\\32 xl\\:row-gap-2 {\n      row-gap: 0.5rem;\n    }\n    .\\32 xl\\:row-gap-3 {\n      row-gap: 0.75rem;\n    }\n    .\\32 xl\\:row-gap-4 {\n      row-gap: 1rem;\n    }\n    .\\32 xl\\:row-gap-5 {\n      row-gap: 1.25rem;\n    }\n    .\\32 xl\\:row-gap-6 {\n      row-gap: 1.5rem;\n    }\n    .\\32 xl\\:row-gap-7 {\n      row-gap: 2rem;\n    }\n    .\\32 xl\\:row-gap-8 {\n      row-gap: 2.5rem;\n    }\n    .\\32 xl\\:row-gap-9 {\n      row-gap: 3rem;\n    }\n    .\\32 xl\\:column-gap-0 {\n      column-gap: 0;\n    }\n    .\\32 xl\\:column-gap-1 {\n      column-gap: 0.25rem;\n    }\n    .\\32 xl\\:column-gap-2 {\n      column-gap: 0.5rem;\n    }\n    .\\32 xl\\:column-gap-3 {\n      column-gap: 0.75rem;\n    }\n    .\\32 xl\\:column-gap-4 {\n      column-gap: 1rem;\n    }\n    .\\32 xl\\:column-gap-5 {\n      column-gap: 1.25rem;\n    }\n    .\\32 xl\\:column-gap-6 {\n      column-gap: 1.5rem;\n    }\n    .\\32 xl\\:column-gap-7 {\n      column-gap: 2rem;\n    }\n    .\\32 xl\\:column-gap-8 {\n      column-gap: 2.5rem;\n    }\n    .\\32 xl\\:column-gap-9 {\n      column-gap: 3rem;\n    }\n    :where(.\\32 xl\\:space-x-0 > :not(:last-child)) {\n      margin-inline-end: 0;\n    }\n    :where(.\\32 xl\\:space-x-1 > :not(:last-child)) {\n      margin-inline-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-x-2 > :not(:last-child)) {\n      margin-inline-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-x-3 > :not(:last-child)) {\n      margin-inline-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-x-4 > :not(:last-child)) {\n      margin-inline-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-x-5 > :not(:last-child)) {\n      margin-inline-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-x-6 > :not(:last-child)) {\n      margin-inline-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-x-7 > :not(:last-child)) {\n      margin-inline-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-x-8 > :not(:last-child)) {\n      margin-inline-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-x-9 > :not(:last-child)) {\n      margin-inline-end: 3rem;\n    }\n    :where(.\\32 xl\\:space-y-0 > :not(:last-child)) {\n      margin-block-end: 0;\n    }\n    :where(.\\32 xl\\:space-y-1 > :not(:last-child)) {\n      margin-block-end: 0.25rem;\n    }\n    :where(.\\32 xl\\:space-y-2 > :not(:last-child)) {\n      margin-block-end: 0.5rem;\n    }\n    :where(.\\32 xl\\:space-y-3 > :not(:last-child)) {\n      margin-block-end: 0.75rem;\n    }\n    :where(.\\32 xl\\:space-y-4 > :not(:last-child)) {\n      margin-block-end: 1rem;\n    }\n    :where(.\\32 xl\\:space-y-5 > :not(:last-child)) {\n      margin-block-end: 1.25rem;\n    }\n    :where(.\\32 xl\\:space-y-6 > :not(:last-child)) {\n      margin-block-end: 1.5rem;\n    }\n    :where(.\\32 xl\\:space-y-7 > :not(:last-child)) {\n      margin-block-end: 2rem;\n    }\n    :where(.\\32 xl\\:space-y-8 > :not(:last-child)) {\n      margin-block-end: 2.5rem;\n    }\n    :where(.\\32 xl\\:space-y-9 > :not(:last-child)) {\n      margin-block-end: 3rem;\n    }\n    :where(.\\32 xl\\:divide-x > :not(:first-child)) {\n      border-inline-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-x-0 > :not(:first-child)) {\n      border-inline-start: 0;\n    }\n    :where(.\\32 xl\\:divide-y > :not(:first-child)) {\n      border-block-start: var(--border-width) var(--border-style) var(--border-color);\n    }\n    :where(.\\32 xl\\:divide-y-0 > :not(:first-child)) {\n      border-block-start: 0;\n    }\n    .\\32 xl\\:text-start {\n      text-align: start;\n    }\n    .\\32 xl\\:text-end {\n      text-align: end;\n    }\n    .\\32 xl\\:text-center {\n      text-align: center;\n    }\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */\n","$file: \"\" !default;\n\n/*!\n  * Bootstrap #{$file} v6.0.0-dev (https://getbootstrap.com/)\n  * Copyright 2011-2026 The Bootstrap Authors\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n","// stylelint-disable hue-degree-notation, @stylistic/number-leading-zero\n\n@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// Easily convert colors to oklch() with https://oklch.com/\n\n$white: #fff !default;\n$black: #000 !default;\n\n// scss-docs-start colors-list\n$blue: oklch(60% 0.24 240) !default;\n$indigo: oklch(56% 0.26 288) !default;\n$violet: oklch(56% 0.24 300) !default;\n$purple: oklch(56% 0.24 320) !default;\n$pink: oklch(60% 0.22 4) !default;\n$red: oklch(60% 0.22 20) !default;\n$orange: oklch(70% 0.22 52) !default;\n$amber: oklch(79% 0.2 78) !default;\n$yellow: oklch(88% 0.24 88) !default;\n$lime: oklch(65% 0.24 135) !default;\n$green: oklch(64% 0.22 160) !default;\n$teal: oklch(68% 0.22 190) !default;\n$cyan: oklch(69% 0.22 220) !default;\n$brown: oklch(60% 0.12 54) !default;\n$gray: oklch(60% 0.02 245) !default;\n$pewter: oklch(65% 0.01 290) !default;\n// scss-docs-end colors-list\n\n// scss-docs-start colors-map\n$colors: () !default;\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$colors: defaults(\n  (\n    \"blue\": $blue,\n    \"indigo\": $indigo,\n    \"violet\": $violet,\n    \"purple\": $purple,\n    \"pink\": $pink,\n    \"red\": $red,\n    \"orange\": $orange,\n    \"amber\": $amber,\n    \"yellow\": $yellow,\n    \"lime\": $lime,\n    \"green\": $green,\n    \"teal\": $teal,\n    \"cyan\": $cyan,\n    \"brown\": $brown,\n    \"gray\": $gray,\n    \"pewter\": $pewter,\n  ),\n  $colors\n);\n// scss-docs-end colors-map\n\n// scss-docs-start color-mix-options\n$color-mix-space: lab !default;\n$tint-color: var(--white) !default;\n$shade-color: var(--black) !default;\n\n$color-tints: (\n  \"025\": 94%,\n  \"050\": 90%,\n  \"100\": 80%,\n  \"200\": 60%,\n  \"300\": 40%,\n  \"400\": 20%,\n) !default;\n\n$color-shades: (\n  \"600\": 16%,\n  \"700\": 32%,\n  \"800\": 48%,\n  \"900\": 64%,\n  \"950\": 76%,\n  \"975\": 88%,\n) !default;\n// scss-docs-end color-mix-options\n\n// scss-docs-start color-tokens\n$color-tokens: () !default;\n\n$-color-defaults: () !default;\n@each $color, $value in $colors {\n  @each $stop, $percent in $color-tints {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$tint-color} #{$percent}, #{$value}));\n  }\n  $-color-defaults: map.set($-color-defaults, --#{$color}-500, #{$value});\n  @each $stop, $percent in $color-shades {\n    $-color-defaults: map.set($-color-defaults, --#{$color}-#{$stop}, color-mix(in #{$color-mix-space}, #{$shade-color} #{$percent}, #{$value}));\n  }\n}\n\n// stylelint-disable-next-line scss/dollar-variable-default\n$color-tokens: defaults($-color-defaults, $color-tokens);\n// scss-docs-end color-tokens\n\n:root {\n  @include tokens($color-tokens);\n}\n","// Mixin to output tokens as CSS custom properties\n\n// scss-docs-start mixin-tokens\n@mixin tokens($map) {\n  @each $prop, $value in $map {\n    #{$prop}: #{$value};\n  }\n}\n// scss-docs-end mixin-tokens\n","@use \"sass:map\";\n@use \"colors\" as *;\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"theme\" as *;\n@use \"mixins/tokens\" as *;\n// mdo-do: do we need theme?\n@layer colors, theme, config, root, reboot, layout, content, forms, components, custom, helpers, utilities;\n\n$root-tokens: () !default;\n\n// scss-docs-start root-tokens\n// stylelint-disable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: defaults(\n  (\n    --black: #{$black},\n    --white: #{$white},\n\n    --gradient: #{$gradient},\n\n    // scss-docs-start root-font-weight-variables\n    --font-weight-lighter: lighter,\n    --font-weight-light: 300,\n    --font-weight-normal: 400,\n    --font-weight-medium: 500,\n    --font-weight-semibold: 600,\n    --font-weight-bold: 700,\n    --font-weight-bolder: bolder,\n    // scss-docs-end root-font-weight-variables\n\n    // scss-docs-start root-body-variables\n    --body-font-family: system-ui,\n    --body-font-size: var(--font-size-base),\n    --body-font-weight: #{$font-weight-base},\n    --body-line-height: #{$line-height-base},\n\n    --heading-color: #{$headings-color},\n\n    --hr-border-color: var(--border-color),\n\n    --link-color: light-dark(var(--primary-base), var(--primary-fg)),\n    --link-decoration: #{$link-decoration},\n    --link-hover-color: color-mix(in oklch, var(--link-color) 90%, #000),\n\n    --font-mono: \"ui-monospace, 'SF Mono', SFMono-Regular, Menlo, Monaco, 'Cascadia Mono', Consolas, 'Liberation Mono', monospace;\",\n    --code-font-size: 95%,\n    --code-color: var(--fg-2),\n\n    // scss-docs-start root-border-var\n    --border-width: #{$border-width},\n    --border-style: #{$border-style},\n    --border-color: light-dark(var(--gray-200), var(--gray-700)),\n    --border-color-translucent: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    // scss-docs-end root-border-var\n\n    // scss-docs-start root-box-shadow-variables\n    --box-shadow-xs: 0 .0625rem .1875rem rgb(0 0 0 / 7.5%),\n    --box-shadow-sm: 0 .125rem .25rem rgb(0 0 0 / 7.5%),\n    --box-shadow: 0 .5rem 1rem rgb(0 0 0 / 15%),\n    --box-shadow-lg: 0 1rem 3rem rgb(0 0 0 / 17.5%),\n    --box-shadow-inset: inset 0 1px 2px rgb(0 0 0 / 7.5%),\n    // scss-docs-end root-box-shadow-variables\n\n    --spacer: 1rem,\n\n    // scss-docs-start root-focus-variables\n    --focus-ring-width: 3px,\n    --focus-ring-offset: 1px,\n    --focus-ring-color: var(--primary-focus-ring),\n    --focus-ring: var(--focus-ring-width) solid var(--focus-ring-color),\n    // scss-docs-end root-focus-variables\n\n    // scss-docs-start root-form-variables\n    --control-checked-bg: var(--primary-base),\n    --control-checked-border-color: var(--control-checked-bg),\n    --control-active-bg: var(--primary-base),\n    --control-active-border-color: var(--control-active-bg),\n    --control-disabled-bg: var(--bg-3),\n    --control-disabled-opacity: .65,\n\n    --btn-input-fg: var(--fg-body),\n    --btn-input-bg: var(--bg-body),\n\n    --btn-input-min-height: 2.375rem,\n    --btn-input-padding-y: .375rem,\n    --btn-input-padding-x: .75rem,\n    --btn-input-font-size: var(--font-size-base),\n    --btn-input-line-height: var(--line-height-base),\n    --btn-input-border-radius: var(--radius-5),\n\n    --btn-input-xs-min-height: 1.5rem,\n    --btn-input-xs-padding-y: .125rem,\n    --btn-input-xs-padding-x: .5rem,\n    --btn-input-xs-font-size: var(--font-size-xs),\n    --btn-input-xs-line-height: 1.125,\n    --btn-input-xs-border-radius: var(--radius-5),\n\n    --btn-input-sm-min-height: 2rem,\n    --btn-input-sm-padding-y: .25rem,\n    --btn-input-sm-padding-x: .625rem,\n    --btn-input-sm-font-size: var(--font-size-sm),\n    --btn-input-sm-line-height: var(--line-height-sm),\n    --btn-input-sm-border-radius: var(--radius-5),\n\n    --btn-input-lg-min-height: 2.75rem,\n    --btn-input-lg-padding-y: .5rem,\n    --btn-input-lg-padding-x: 1rem,\n    --btn-input-lg-font-size: var(--font-size-md),\n    --btn-input-lg-line-height: var(--line-height-md),\n    --btn-input-lg-border-radius: var(--radius-7),\n    // scss-docs-end root-form-variables\n  ),\n  $root-tokens\n);\n// stylelint-enable @stylistic/value-list-max-empty-lines, @stylistic/function-max-empty-lines\n// scss-docs-end root-tokens\n\n// scss-docs-start root-font-size-loop\n// Generate font-size and line-height tokens\n@each $name, $props in $font-sizes {\n  $root-tokens: map.set($root-tokens, --font-size-#{$name}, map.get($props, \"font-size\"));\n  $root-tokens: map.set($root-tokens, --line-height-#{$name}, map.get($props, \"line-height\"));\n}\n// scss-docs-end root-font-size-loop\n\n// scss-docs-start root-theme-tokens\n// Generate semantic theme colors\n@each $color-name, $color-map in $theme-colors {\n  @each $key, $value in $color-map {\n    $root-tokens: map.set($root-tokens, --#{$color-name}-#{$key}, $value);\n  }\n}\n\n// Generate background tokens\n@each $key, $value in $theme-bgs {\n  $root-tokens: map.set($root-tokens, --bg-#{$key}, $value);\n}\n\n// Generate foreground tokens\n@each $key, $value in $theme-fgs {\n  $root-tokens: map.set($root-tokens, --fg-#{$key}, $value);\n}\n\n// Generate border tokens\n@each $key, $value in $theme-borders {\n  $root-tokens: map.set($root-tokens, --border-#{$key}, $value);\n}\n// scss-docs-end root-theme-tokens\n\n// Generate breakpoint tokens\n@each $name, $value in $breakpoints {\n  $root-tokens: map.set($root-tokens, --breakpoint-#{$name}, $value);\n}\n\n// Generate spacer tokens\n// scss-docs-start root-spacer-loop\n@each $key, $value in $spacers {\n  $root-tokens: map.set($root-tokens, --spacer-#{$key}, $value);\n}\n// scss-docs-end root-spacer-loop\n\n// Generate radius tokens\n// scss-docs-start root-radius-loop\n@each $key, $value in $radii {\n  $root-tokens: map.set($root-tokens, --radius-#{$key}, $value);\n}\n// stylelint-disable-next-line scss/dollar-variable-default\n$root-tokens: map.set($root-tokens, --radius-pill, 50rem);\n// scss-docs-end root-radius-loop\n\n:root {\n  @include tokens($root-tokens);\n\n  color-scheme: light dark;\n  // Always reserve the viewport scrollbar gutter so layout doesn't shift\n  // when overflow: hidden is applied (e.g. when a dialog opens on Windows).\n  scrollbar-gutter: stable;\n}\n\n[data-bs-theme=\"dark\"] {\n  color-scheme: dark;\n}\n\n[data-bs-theme=\"light\"] {\n  color-scheme: light;\n}\n","@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n$reboot-kbd-tokens: () !default;\n$reboot-mark-tokens: () !default;\n\n// scss-docs-start reboot-kbd-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-kbd-tokens: defaults(\n  (\n    --kbd-padding-y: .125rem,\n    --kbd-padding-x: .25rem,\n    --kbd-font-size: var(--font-size-xs),\n    --kbd-color: var(--bg-body),\n    --kbd-bg: var(--fg-2),\n    --kbd-border-radius: var(--radius-5),\n  ),\n  $reboot-kbd-tokens\n);\n// scss-docs-end reboot-kbd-tokens\n\n// scss-docs-start reboot-mark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$reboot-mark-tokens: defaults(\n  (\n    --mark-padding: .1875em,\n    --mark-color: var(--fg-body),\n    --mark-bg: light-dark(var(--yellow-100), var(--yellow-900)),\n  ),\n  $reboot-mark-tokens\n);\n// scss-docs-end reboot-mark-tokens\n\n@layer reboot {\n  // Reboot\n  //\n  // Normalization of HTML elements, manually forked from Normalize.css to remove\n  // styles targeting irrelevant browsers while applying new styles.\n  //\n  // Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n  // Document\n  //\n  // Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n  *,\n  *::before,\n  *::after {\n    box-sizing: border-box;\n  }\n\n  // Root\n  //\n  // Ability to the value of the root font sizes, affecting the value of `rem`.\n  // null by default, thus nothing is generated.\n\n  :root {\n    // Assume browser default font-size of 16px, or a user's preference\n    accent-color: var(--primary-base);\n\n    @if $enable-smooth-scroll {\n      @media (prefers-reduced-motion: no-preference) {\n        scroll-behavior: smooth;\n      }\n    }\n  }\n\n  // Reset iframe color-scheme\n  //\n  // If the color scheme of an iframe differs from parent document, iframe gets\n  // an opaque canvas background appropriate (resulting in a white background\n  // on the iframe when in a page with a dark color scheme).\n  iframe {\n    color-scheme: light dark;\n    border: 0;\n  }\n\n  // Body\n  //\n  // 1. Remove the margin in all browsers.\n  // 2. As a best practice, apply a default `background-color`.\n  // 3. Prevent adjustments of font size after orientation changes in iOS.\n  // 4. Change the default tap highlight to be completely transparent in iOS.\n\n  // scss-docs-start reboot-body-rules\n  body {\n    margin: 0; // 1\n    font-family: var(--body-font-family);\n    font-size: var(--body-font-size);\n    font-weight: var(--body-font-weight);\n    line-height: var(--body-line-height);\n    color: var(--fg-body);\n    text-align: var(--body-text-align);\n    background-color: var(--bg-body); // 2\n    -webkit-text-size-adjust: 100%; // 3\n    -webkit-tap-highlight-color: transparent; // 4\n  }\n  // scss-docs-end reboot-body-rules\n\n  hr {\n    margin: var(--hr-margin-y, var(--spacer)) 0;\n    border: 0;\n    border-block-start: var(--border-width) solid var(--hr-border-color);\n  }\n\n  // Typography\n  //\n  // 1. Remove top margins from headings\n  //    By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n  //    margin for easier control within type scales as it avoids margin collapsing.\n\n  %heading {\n    margin-top: 0; // 1\n    margin-bottom: $headings-margin-bottom;\n    font-family: $headings-font-family;\n    font-style: $headings-font-style;\n    font-weight: $headings-font-weight;\n    line-height: $headings-line-height;\n    color: var(--heading-color);\n  }\n\n  h1,\n  .h1 {\n    @extend %heading;\n    font-size: var(--font-size-3xl);\n  }\n\n  h2,\n  .h2 {\n    @extend %heading;\n    font-size: var(--font-size-2xl);\n  }\n\n  h3,\n  .h3 {\n    @extend %heading;\n    font-size: var(--font-size-xl);\n  }\n\n  h4,\n  .h4 {\n    @extend %heading;\n    font-size: var(--font-size-lg);\n  }\n\n  h5,\n  .h5 {\n    @extend %heading;\n    font-size: var(--font-size-md);\n  }\n\n  h6,\n  .h6 {\n    @extend %heading;\n    font-size: var(--font-size-sm);\n  }\n\n  // Reset margins on paragraphs\n  //\n  // Similarly, the top margin on `<p>`s get reset. However, we also reset the\n  // bottom margin to use `rem` units instead of `em`.\n\n  p {\n    margin-top: 0;\n    margin-bottom: $paragraph-margin-bottom;\n  }\n\n  // Abbreviations\n  //\n  // 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n  // 2. Add explicit cursor to indicate changed behavior.\n  // 3. Prevent the text-decoration to be skipped.\n\n  abbr[title] {\n    text-decoration: underline dotted; // 1\n    cursor: help; // 2\n    text-decoration-skip-ink: none; // 3\n  }\n\n  // Address\n\n  address {\n    margin-bottom: 1rem;\n    font-style: normal;\n    line-height: inherit;\n  }\n\n  // Lists\n\n  ol,\n  ul {\n    padding-inline-start: 2rem;\n  }\n\n  ol,\n  ul,\n  dl {\n    margin-top: 0;\n    margin-bottom: 1rem;\n  }\n\n  ol ol,\n  ul ul,\n  ol ul,\n  ul ol {\n    margin-bottom: 0;\n  }\n\n  dt {\n    font-weight: $dt-font-weight;\n  }\n\n  // 1. Undo browser default\n\n  dd {\n    margin-inline-start: 0; // 1\n    margin-bottom: .5rem;\n  }\n\n  // Blockquote\n\n  blockquote {\n    margin: 0 0 1rem;\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  // Strong\n  //\n  // Add the correct font weight in Chrome, Edge, and Safari\n\n  b,\n  strong {\n    font-weight: $font-weight-bolder;\n  }\n\n  // Small\n  //\n  // Add the correct font size in all browsers\n\n  small,\n  .small {\n    font-size: var(--small-font-size, 87.5%);\n  }\n\n  // Mark\n\n  mark,\n  .mark {\n    @include tokens($reboot-mark-tokens);\n    padding: var(--mark-padding);\n    color: var(--mark-color);\n    background-color: var(--mark-bg);\n  }\n\n  // Sub and Sup\n  //\n  // Prevent `sub` and `sup` elements from affecting the line height in\n  // all browsers.\n\n  sub,\n  sup {\n    position: relative;\n    font-size: var(--sub-sup-font-size, .75em);\n    line-height: 0;\n    vertical-align: baseline;\n  }\n\n  sub { bottom: -.25em; }\n  sup { top: -.5em; }\n\n  // Links\n\n  a {\n    color: var(--theme-fg, var(--link-color));\n    text-decoration: var(--link-decoration);\n    text-underline-offset: $link-underline-offset;\n\n    &:hover {\n      // --link-color: var(--link-hover-color);\n      // --link-decoration: var(--link-hover-decoration, var(--link-decoration));\n      color: var(--theme-fg-emphasis, var(--link-hover-color));\n      text-decoration: var(--link-hover-decoration, var(--link-decoration));\n    }\n  }\n\n  // And undo these styles for placeholder links/named anchors (without href).\n  // It would be more straightforward to just use a[href] in previous block, but that\n  // causes specificity issues in many other styles that are too complex to fix.\n  // See https://github.com/twbs/bootstrap/issues/19402\n\n  a:not([href], [class]) {\n    &,\n    &:hover {\n      color: inherit;\n      text-decoration: none;\n    }\n  }\n\n  // Code\n\n  pre,\n  code,\n  kbd,\n  samp {\n    font-family: var(--font-mono);\n    font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n  }\n\n  // 1. Remove browser default top margin\n  // 2. Reset browser default of `1em` to use `rem`s\n  // 3. Don't allow content to break outside\n\n  pre {\n    display: block;\n    margin-top: 0; // 1\n    margin-bottom: 1rem; // 2\n    overflow: auto; // 3\n    font-size: var(--code-font-size);\n    color: var(--code-color, inherit);\n\n    // Account for some code outputs that place code tags in pre tags\n    code {\n      font-size: inherit;\n      color: inherit;\n      word-break: normal;\n    }\n  }\n\n  code {\n    font-size: var(--code-font-size);\n    color: var(--code-color);\n    word-wrap: break-word;\n\n    // Streamline the style when inside anchors to avoid broken underline and more\n    a > & {\n      color: inherit;\n    }\n  }\n\n  kbd {\n    @include tokens($reboot-kbd-tokens);\n    padding: var(--kbd-padding-y) var(--kbd-padding-x);\n    font-size: var(--kbd-font-size);\n    color: var(--kbd-color);\n    background-color: var(--kbd-bg);\n    @include border-radius(var(--kbd-border-radius));\n\n    kbd {\n      padding: 0;\n      font-size: 1em;\n      font-weight: inherit; // mdo-do: check if this is needed\n    }\n  }\n\n  // Figures\n  //\n  // Apply a consistent margin strategy (matches our type styles).\n\n  figure {\n    margin: 0 0 1rem;\n  }\n\n  // Images and content\n\n  img,\n  svg {\n    vertical-align: middle;\n  }\n\n  // Tables\n  //\n  // Prevent double borders\n\n  table {\n    caption-side: bottom;\n    border-collapse: collapse;\n  }\n\n  caption {\n    // padding-top: $table-cell-padding-y;\n    // padding-bottom: $table-cell-padding-y;\n    // color: $table-caption-color;\n    padding-block: .5rem;\n    color: var(--fg-3);\n    text-align: start;\n  }\n\n  // 1. Removes font-weight bold by inheriting\n  // 2. Matches default `<td>` alignment by inheriting `text-align`.\n  // 3. Fix alignment for Safari\n\n  th {\n    // font-weight: $table-th-font-weight; // 1 // mdo-do: it's null by default. maybe we remove?\n    text-align: inherit; // 2\n    text-align: -webkit-match-parent; // 3\n  }\n\n  thead,\n  tbody,\n  tfoot,\n  tr,\n  td,\n  th {\n    border-color: inherit;\n    border-style: solid;\n    border-width: 0;\n  }\n\n  // Forms\n  //\n  // 1. Allow labels to use `margin` for spacing.\n\n  label {\n    display: inline-block; // 1\n  }\n\n  // Remove the default `border-radius` that macOS Chrome adds.\n  // See https://github.com/twbs/bootstrap/issues/24093\n\n  button {\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 0;\n  }\n\n  // Explicitly remove focus outline in Chromium when it shouldn't be\n  // visible (e.g. as result of mouse click or touch tap). It already\n  // should be doing this automatically, but seems to currently be\n  // confused and applies its very visible two-tone outline anyway.\n\n  button:focus:not(:focus-visible) {\n    outline: 0;\n  }\n\n  // 1. Remove the margin in Firefox and Safari\n\n  input,\n  button,\n  select,\n  optgroup,\n  textarea {\n    margin: 0; // 1\n    font-family: inherit;\n    font-size: inherit;\n    line-height: inherit;\n  }\n\n  // Set the cursor for non-`<button>` buttons\n  //\n  // Details at https://github.com/twbs/bootstrap/pull/30562\n  [role=\"button\"] {\n    cursor: pointer;\n  }\n\n  select {\n    // Remove the inheritance of word-wrap in Safari.\n    // See https://github.com/twbs/bootstrap/issues/24990\n    word-wrap: normal;\n\n    // Undo the opacity change from Chrome\n    &:disabled {\n      opacity: 1;\n    }\n  }\n\n  // Remove the dropdown arrow only from text type inputs built with datalists in Chrome.\n  // See https://stackoverflow.com/a/54997118\n\n  [list]:not([type=\"date\"], [type=\"datetime-local\"], [type=\"month\"], [type=\"week\"], [type=\"time\"])::-webkit-calendar-picker-indicator {\n    display: none !important;\n  }\n\n  // 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n  //    controls in Android 4.\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n  // 3. Opinionated: add \"hand\" cursor to non-disabled button elements.\n\n  button,\n  [type=\"button\"], // 1\n  [type=\"reset\"],\n  [type=\"submit\"] {\n    -webkit-appearance: button; // 2\n\n    @if $enable-button-pointers {\n      &:not(:disabled) {\n        cursor: pointer; // 3\n      }\n    }\n  }\n\n  // 1. Textareas should really only resize vertically so they don't break their (horizontal) containers.\n\n  textarea {\n    resize: vertical; // 1\n  }\n\n  // 1. Browsers set a default `min-width: min-content;` on fieldsets,\n  //    unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  //    So we reset that to ensure fieldsets behave more like a standard block element.\n  //    See https://github.com/twbs/bootstrap/issues/12359\n  //    and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  // 2. Reset the default outline behavior of fieldsets so they don't affect page layout.\n\n  fieldset {\n    min-width: 0; // 1\n    padding: 0; // 2\n    margin: 0; // 2\n    border: 0; // 2\n  }\n\n  // 1. By using `float: inline-start`, the legend will behave like a block element.\n  //    This way the border of a fieldset wraps around the legend if present.\n  // 2. Fix wrapping bug.\n  //    See https://github.com/twbs/bootstrap/issues/29712\n\n  legend {\n    float: inline-start; // 1\n    width: 100%;\n    padding: 0;\n    margin-bottom: $legend-margin-bottom;\n    font-size: $legend-font-size;\n    font-weight: $legend-font-weight;\n    line-height: inherit;\n\n    + * {\n      clear: inline-start; // 2\n    }\n  }\n\n  // Fix height of inputs with a type of datetime-local, date, month, week, or time\n  // See https://github.com/twbs/bootstrap/issues/18842\n\n  ::-webkit-datetime-edit-fields-wrapper,\n  ::-webkit-datetime-edit-text,\n  ::-webkit-datetime-edit-millisecond-field,\n  ::-webkit-datetime-edit-second-field,\n  ::-webkit-datetime-edit-minute-field,\n  ::-webkit-datetime-edit-hour-field,\n  ::-webkit-datetime-edit-meridiem-field, // WebKit\n  ::-webkit-datetime-edit-ampm-field, // Chromium\n  ::-webkit-datetime-edit-day-field,\n  ::-webkit-datetime-edit-week-field,\n  ::-webkit-datetime-edit-month-field,\n  ::-webkit-datetime-edit-year-field {\n    padding: 0;\n  }\n\n  ::-webkit-inner-spin-button,\n  ::-webkit-outer-spin-button {\n    height: auto;\n  }\n\n  // 1. This overrides the extra rounded corners on search inputs in iOS so that our\n  //    `.form-control` class can properly style them. Note that this cannot simply\n  //    be added to `.form-control` as it's not specific enough. For details, see\n  //    https://github.com/twbs/bootstrap/issues/11586.\n  // 2. Correct the outline style in Safari.\n\n  [type=\"search\"] {\n    -webkit-appearance: textfield; // 1\n    outline-offset: -2px; // 2\n\n    // 3. Better affordance and consistent appearance for search cancel button\n    &::-webkit-search-cancel-button {\n      cursor: pointer;\n      filter: grayscale(1);\n    }\n  }\n\n  // A few input types should stay LTR regardless of document direction\n  // See https://rtlstyling.com/posts/rtl-styling#form-inputs\n\n  [type=\"tel\"],\n  [type=\"url\"],\n  [type=\"email\"],\n  [type=\"number\"] {\n    direction: ltr;\n  }\n\n  // Remove the inner padding in Chrome and Safari on macOS.\n\n  ::-webkit-search-decoration {\n    -webkit-appearance: none;\n  }\n\n  // Remove padding around color pickers in webkit browsers\n\n  ::-webkit-color-swatch-wrapper {\n    padding: 0;\n  }\n\n  // 1. Inherit font family and line height for file input buttons\n  // 2. Correct the inability to style clickable types in iOS and Safari.\n\n  ::file-selector-button {\n    font: inherit; // 1\n    -webkit-appearance: button; // 2\n  }\n\n  // Correct element displays\n\n  output {\n    display: inline-block;\n  }\n\n  // Summary\n  //\n  // 1. Add the correct display in all browsers\n\n  summary {\n    display: list-item; // 1\n    cursor: pointer;\n  }\n\n  // Progress\n  //\n  // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\n  progress {\n    vertical-align: baseline;\n  }\n\n  // Hidden attribute\n  //\n  // Always hide an element with the `hidden` HTML attribute.\n\n  [hidden] {\n    display: none !important;\n  }\n}\n","@use \"sass:map\";\n@use \"sass:meta\";\n\n// Configuration\n//\n// Variables and settings not related to theme, components, and more go here. It does include layout.\n\n// Merge overrides on top of defaults, stripping null entries.\n// Null values let users remove map keys via @use ... with().\n// Accepts a list as $defaults (converted to a map with `true` values).\n@function defaults($defaults, $overrides) {\n  @if meta.type-of($defaults) == \"list\" {\n    $map: ();\n    @each $key in $defaults {\n      $map: map.merge($map, ($key: true));\n    }\n    $defaults: $map;\n  }\n  $merged: map.merge($defaults, $overrides);\n  @each $key, $value in $merged {\n    @if $value == null {\n      $merged: map.remove($merged, $key);\n    }\n  }\n  @return $merged;\n}\n\n$enable-caret:                true !default;\n$enable-rounded:              true !default;\n$enable-shadows:              true !default;\n$enable-gradients:            true !default;\n$enable-transitions:          true !default;\n$enable-reduced-motion:       true !default;\n$enable-smooth-scroll:        false !default;\n$enable-grid-classes:         true !default;\n$enable-container-classes:    true !default;\n$enable-cssgrid:              true !default;\n$enable-button-pointers:      true !default;\n// $enable-negative-margins:     false !default;\n$enable-deprecation-messages: true !default;\n\n$color-mode-type:          \"media-query\" !default;\n$color-contrast-dark:      #000 !default;\n$color-contrast-light:     #fff !default;\n$min-contrast-ratio:         4.5 !default;\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n  0: 0,\n  1: $spacer * .25,\n  2: $spacer * .5,\n  3: $spacer * .75,\n  4: $spacer,\n  5: $spacer * 1.25,\n  6: $spacer * 1.5,\n  7: $spacer * 2,\n  8: $spacer * 2.5,\n  9: $spacer * 3,\n) !default;\n\n$negative-spacers: (\n  \"-1\": $spacer * -.25,\n  \"-2\": $spacer * -.5,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n$sizes: (\n  1: $spacer,\n  2: $spacer * 2,\n  3: $spacer * 3,\n  4: $spacer * 4,\n  5: $spacer * 5,\n  6: $spacer * 6,\n  7: $spacer * 7,\n  8: $spacer * 8,\n  9: $spacer * 9,\n  10: $spacer * 10,\n  11: $spacer * 11,\n  12: $spacer * 12,\n) !default;\n\n$radius: .5rem !default;\n$radii: (\n  0: 0,\n  1: $radius * .25,\n  2: $radius * .375,\n  3: $radius * .5,\n  4: $radius * .75,\n  5: $radius,\n  6: $radius * 1.25,\n  7: $radius * 1.5,\n  8: $radius * 2,\n  9: $radius * 3,\n) !default;\n\n// Breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start breakpoints\n$breakpoints: (\n  xs: 0,\n  sm: 576px,\n  md: 768px,\n  lg: 1024px,\n  xl: 1280px,\n  2xl: 1536px\n) !default;\n// scss-docs-end breakpoints\n\n// @include _assert-ascending($breakpoints, \"$breakpoints\");\n// @include _assert-starts-at-zero($breakpoints, \"$breakpoints\");\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-x: 1.5rem !default;\n$grid-gutter-y: 0 !default;\n$grid-row-columns: 6 !default;\n\n$gutters: $spacers !default;\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n  sm: 540px,\n  md: 720px,\n  lg: 960px,\n  xl: 1200px,\n  2xl: 1440px\n) !default;\n// scss-docs-end container-max-widths\n\n$container-padding-x: $grid-gutter-x !default;\n\n$utilities: () !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n  (\"<\", \"%3c\"),\n  (\">\", \"%3e\"),\n  (\"#\", \"%23\"),\n  (\"(\", \"%28\"),\n  (\")\", \"%29\"),\n) !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, color-mix(var(--white) 15%, transparent), color-mix(var(--white) 0%, transparent)) !default;\n// scss-docs-end variable-gradient\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n  0: 0,\n  50: 50%,\n  100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Links\n//\n// Style anchor elements.\n\n$link-decoration:                         underline !default;\n$link-underline-offset:                   .2em !default;\n\n$stretched-link-pseudo-element:           after !default;\n$stretched-link-z-index:                  1 !default;\n\n// Icon links\n// scss-docs-start icon-link-variables\n$icon-link-gap:               .375rem !default;\n$icon-link-underline-offset:  .25em !default;\n$icon-link-icon-size:         1em !default;\n$icon-link-icon-transition:   .2s ease-in-out transform !default;\n$icon-link-icon-transform:    translate3d(.25em, 0, 0) !default;\n// scss-docs-end icon-link-variables\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom:   1rem !default;\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width:                1px !default;\n$border-widths: (\n  1: 1px,\n  2: 2px,\n  3: 3px,\n  4: 4px,\n  5: 5px\n) !default;\n$border-style:                solid !default;\n$border-color:                color-mix(in oklch, var(--gray-100), var(--gray-200)) !default;\n// scss-docs-end border-variables\n\n$transition-base:             all .2s ease-in-out !default;\n$transition-fade:             opacity .15s linear !default;\n\n// scss-docs-start collapse-transition\n$transition-collapse:         height .35s ease !default;\n$transition-collapse-width:   width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n  \"auto\": auto,\n  \"1x1\": #{\"1 / 1\"},\n  \"4x3\": #{\"4 / 3\"},\n  \"16x9\": #{\"16 / 9\"},\n  \"21x9\": #{\"21 / 9\"}\n) !default;\n// scss-docs-end aspect-ratios\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n$font-weight-lighter:         lighter !default;\n$font-weight-light:           300 !default;\n$font-weight-normal:          400 !default;\n$font-weight-medium:          500 !default;\n$font-weight-semibold:        600 !default;\n$font-weight-bold:            700 !default;\n$font-weight-bolder:          bolder !default;\n\n$font-weight-base:            $font-weight-normal !default;\n\n$line-height-base:            1.5 !default;\n$line-height-sm:              1.25 !default;\n$line-height-lg:              2 !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$font-sizes: defaults(\n  (\n    \"xs\": (\n      \"font-size\": .75rem,\n      \"line-height\": 1.25\n    ),\n    \"sm\": (\n      \"font-size\": .875rem,\n      \"line-height\": 1.5\n    ),\n    \"md\": (\n      \"font-size\": 1rem,\n      \"line-height\": 1.5\n    ),\n    \"lg\": (\n      \"font-size\": clamp(1.25rem, 1rem + .625vw, 1.5rem),\n      \"line-height\": 1.5\n    ),\n    \"xl\": (\n      \"font-size\": clamp(1.5rem, 1.1rem + .75vw, 1.75rem),\n      \"line-height\": calc(2.5 / 1.75)\n    ),\n    \"2xl\": (\n      \"font-size\": clamp(1.75rem, 1.3rem + 1vw, 2rem),\n      \"line-height\": calc(3 / 2.25)\n    ),\n    \"3xl\": (\n      \"font-size\": clamp(2rem, 1.5rem + 1.875vw, 2.5rem),\n      \"line-height\": 1.2\n    ),\n    \"4xl\": (\n      \"font-size\": clamp(2.25rem, 1.75rem + 2.5vw, 3rem),\n      \"line-height\": 1.1\n    ),\n    \"5xl\": (\n      \"font-size\": clamp(3rem, 2rem + 5vw, 4rem),\n      \"line-height\": 1.1\n    ),\n    \"6xl\": (\n      \"font-size\": clamp(3.75rem, 2.5rem + 6.25vw, 5rem),\n      \"line-height\": 1\n    ),\n  ),\n  $font-sizes\n);\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom:      var(--spacer-2) !default;\n$headings-font-family:        null !default;\n$headings-font-style:         null !default;\n$headings-font-weight:        500 !default;\n$headings-line-height:        1.2 !default;\n$headings-color:              inherit !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start type-variables\n\n$legend-margin-bottom:        .5rem !default;\n$legend-font-size:            1.5rem !default;\n$legend-font-weight:          null !default;\n\n$dt-font-weight:              $font-weight-bold !default;\n\n// scss-docs-end type-variables\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-menu:                       1000 !default;\n$zindex-sticky:                     1020 !default;\n$zindex-fixed:                      1030 !default;\n// $zindex-drawer-backdrop:         1040 !default;\n$zindex-drawer:                  1045 !default;\n$zindex-dialog:                     1055 !default;\n$zindex-popover:                    1070 !default;\n$zindex-tooltip:                    1080 !default;\n$zindex-toast:                      1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n  n1: -1,\n  0: 0,\n  1: 1,\n  2: 2,\n  3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n","@use \"sass:list\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n// Single side border-radius\n\n// Helper function to replace negative values with 0\n@function valid-radius($radius) {\n  $return: ();\n  @each $value in $radius {\n    @if meta.type-of($value) == number {\n      $return: list.append($return, math.max($value, 0));\n    } @else {\n      $return: list.append($return, $value);\n    }\n  }\n  @return $return;\n}\n\n// scss-docs-start border-radius-mixins\n@mixin border-radius($radius: var(--radius-5), $fallback-border-radius: false) {\n  @if $enable-rounded {\n    border-radius: valid-radius($radius);\n  }\n  @else if $fallback-border-radius != false {\n    border-radius: $fallback-border-radius;\n  }\n}\n\n@mixin border-top-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-start-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-top-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-start-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-end-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-end-radius: valid-radius($radius);\n  }\n}\n\n@mixin border-bottom-start-radius($radius: var(--radius-5)) {\n  @if $enable-rounded {\n    border-end-start-radius: valid-radius($radius);\n  }\n}\n// scss-docs-end border-radius-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/lists\" as *;\n@use \"../mixins/tokens\" as *;\n\n$blockquote-tokens: () !default;\n\n// scss-docs-start blockquote-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$blockquote-tokens: defaults(\n  (\n    --blockquote-gap: calc(var(--spacer) / 2),\n    --blockquote-padding-x: var(--spacer),\n    --blockquote-margin-y: 1rem,\n    --blockquote-font-size: var(--font-size-md),\n    --blockquote-border-width: .25rem,\n    --blockquote-border-color: var(--border-color),\n    --blockquote-footer-font-size: var(--font-size-sm),\n    --blockquote-footer-color: var(--fg-3),\n  ),\n  $blockquote-tokens\n);\n// scss-docs-end blockquote-tokens\n\n@layer content {\n  //\n  // Lists\n  //\n\n  .list-unstyled {\n    @include list-unstyled();\n  }\n\n  // Inline turns list items into inline-block\n  .list-inline {\n    @include list-unstyled();\n  }\n  .list-inline-item {\n    display: inline-block;\n\n    &:not(:last-child) {\n      margin-inline-end: var(--list-inline-padding, var(--spacer) / 2);\n    }\n  }\n\n  //\n  // Misc\n  //\n\n  // Builds on `abbr`\n  .initialism {\n    font-size: var(--initialism-font-size, var(--font-size-xs));\n    text-transform: uppercase;\n  }\n\n  // Blockquotes\n  .blockquote {\n    @include tokens($blockquote-tokens);\n    display: flex;\n    flex-direction: column;\n    gap: var(--blockquote-gap);\n    padding-inline-start: var(--blockquote-padding-x);\n    margin-bottom: var(--blockquote-margin-y);\n    font-size: var(--blockquote-font-size);\n    border-inline-start: var(--blockquote-border-width) solid var(--blockquote-border-color);\n\n    > * {\n      margin-bottom: 0;\n    }\n  }\n\n  // stylelint-disable-next-line selector-no-qualifying-type\n  figure.blockquote {\n    blockquote {\n      margin-bottom: 0;\n    }\n  }\n\n  .blockquote-footer {\n    font-size: var(--blockquote-footer-font-size);\n    color: var(--blockquote-footer-color);\n\n    &::before {\n      content: \"\\2014\\00A0\"; // em dash, nbsp\n    }\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-inline-start: 0;\n  list-style-type: \"\";\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../layout/breakpoints\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$table-tokens: () !default;\n\n// scss-docs-start table-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$table-tokens: defaults(\n  (\n    --table-cell-padding-y: .5rem,\n    --table-cell-padding-x: .5rem,\n    --table-cell-vertical-align: top,\n    --table-color: var(--fg-body),\n    --table-bg: var(--bg-body),\n    --table-accent-bg: transparent,\n    --table-border-width: var(--border-width),\n    --table-border-color: var(--border-color),\n    --table-group-separator-color: currentcolor,\n    --table-striped-color: var(--table-color),\n    --table-striped-bg-factor: 5%,\n    --table-striped-bg: color-mix(in srgb, var(--table-color) var(--table-striped-bg-factor), transparent),\n    --table-active-color: var(--table-color),\n    --table-active-bg-factor: 10%,\n    --table-active-bg: color-mix(in srgb, var(--table-color) var(--table-active-bg-factor), transparent),\n    --table-hover-color: var(--table-color),\n    --table-hover-bg-factor: 7.5%,\n    --table-hover-bg: color-mix(in srgb, var(--table-color) var(--table-hover-bg-factor), transparent),\n  ),\n  $table-tokens\n);\n// scss-docs-end table-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n//\n// Basic Bootstrap table\n//\n\n@layer content {\n  .table {\n    @include tokens($table-tokens);\n\n    // Reset needed for nesting tables\n    --table-color-type: initial;\n    --table-bg-type: initial;\n    --table-color-state: initial;\n    --table-bg-state: initial;\n    // End of reset\n\n    width: 100%;\n    margin-bottom: var(--spacer);\n    vertical-align: var(--table-cell-vertical-align);\n    border-color: var(--theme-border, var(--table-border-color));\n\n    // Target th & td\n    // We need the child combinator to prevent styles leaking to nested tables which doesn't have a `.table` class.\n    // We use the universal selectors here to simplify the selector (else we would need 6 different selectors).\n    // Another advantage is that this generates less code and makes the selector less specific making it easier to override.\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      padding: var(--table-cell-padding-y) var(--table-cell-padding-x);\n      // Following the precept of cascades: https://codepen.io/miriamsuzanne/full/vYNgodb\n      color: var(--table-color-state, var(--table-color-type, var(--theme-fg, var(--table-color))));\n      background-color: var(--theme-bg-subtle, var(--table-bg));\n      border-block-end-width: var(--table-border-width);\n      box-shadow: inset 0 0 0 9999px var(--table-bg-state, var(--table-bg-type, var(--theme-bg-subtle, var(--table-accent-bg))));\n    }\n\n    > tbody {\n      vertical-align: inherit;\n    }\n\n    > thead {\n      vertical-align: bottom;\n    }\n  }\n\n  .table-group-divider {\n    border-block-start: calc(var(--table-border-width) * 2) solid var(--table-group-separator-color);\n  }\n\n  //\n  // Change placement of captions with a class\n  //\n\n  .caption-top {\n    caption-side: top;\n  }\n\n  //\n  // Condensed table w/ half padding\n  //\n\n  .table-sm {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      --table-cell-padding-y: .25rem;\n      --table-cell-padding-x: .25rem;\n    }\n  }\n\n  // Border versions\n  //\n  // Add or remove borders all around the table and between all the columns.\n  //\n  // When borders are added on all sides of the cells, the corners can render odd when\n  // these borders do not have the same color or if they are semi-transparent.\n  // Therefore we add top and border bottoms to the `tr`s and left and right borders\n  // to the `td`s or `th`s\n\n  .table-bordered {\n    > :not(caption) > * {\n      border-width: var(--table-border-width) 0;\n\n      // stylelint-disable-next-line selector-max-universal\n      > * {\n        border-width: 0 var(--table-border-width);\n      }\n    }\n  }\n\n  .table-borderless {\n    // stylelint-disable-next-line selector-max-universal\n    > :not(caption) > * > * {\n      border-block-end-width: 0;\n    }\n\n    > :not(:first-child) {\n      border-block-start-width: 0;\n    }\n  }\n\n  // Zebra-striping\n  //\n  // Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n  // For rows\n  .table-striped {\n    > tbody > tr:nth-of-type(#{$table-striped-order}) > * {\n      --table-color-type: var(--theme-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // For columns\n  .table-striped-columns {\n    > :not(caption) > tr > :nth-child(#{$table-striped-columns-order}) {\n      --table-color-type: var(--theme-fg, var(--table-striped-color));\n      --table-bg-type: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-striped-bg-factor), transparent);\n    }\n  }\n\n  // Active table\n  //\n  // The `.table-active` class can be added to highlight rows or cells\n\n  .table-active {\n    --table-color-state: var(--theme-fg, var(--table-active-color));\n    --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-active-bg-factor), transparent);\n  }\n\n  // Hover effect\n  //\n  // Placed here since it has to come after the potential zebra striping\n\n  .table-hover {\n    > tbody > tr:hover > * {\n      --table-color-state: var(--theme-fg, var(--table-hover-color));\n      --table-bg-state: color-mix(in srgb, var(--theme-fg, var(--table-color)) var(--table-hover-bg-factor), transparent);\n    }\n  }\n\n  // Responsive tables\n  //\n  // Generate `.table-responsive` classes that act as container query contexts\n  // and enable horizontal scrolling when table content overflows.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    .#{$prefix}table-responsive {\n      container-type: inline-size;\n\n      @include media-breakpoint-down($breakpoint) {\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n      }\n    }\n  }\n\n  // Stacked tables\n  //\n  // Generate `.table-stacked` classes that convert table rows into stacked\n  // blocks using container queries. Requires a `.table-responsive` ancestor\n  // and `data-cell` attributes on `<td>` elements for column labels.\n\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include container-breakpoint-down($breakpoint) {\n      .#{$prefix}table-stacked {\n        > thead {\n          position: absolute;\n          width: 1px;\n          height: 1px;\n          padding: 0;\n          margin: -1px;\n          overflow: hidden;\n          clip: rect(0, 0, 0, 0);\n          white-space: nowrap;\n          border: 0;\n        }\n\n        > tbody > tr {\n          display: block;\n          padding-block: var(--table-cell-padding-y);\n\n          + tr {\n            border-block-start: var(--table-border-width) solid var(--table-border-color);\n          }\n\n          > td {\n            display: block;\n            padding: calc(var(--table-cell-padding-y) * .25) calc(var(--table-cell-padding-x) * 2);\n            border: 0;\n\n            &:first-child {\n              font-weight: var(--font-weight-bold);\n            }\n\n            // + td::before {\n            //   margin-block-start: .25rem;\n            // }\n\n            &[data-cell]:not(:first-child)::before {\n              display: block;\n              font-weight: var(--font-weight-semibold);\n              content: attr(data-cell);\n            }\n          }\n\n          > td:not(:first-child) + td::before {\n            margin-block-start: .25rem;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:string\";\n@use \"../config\" as *;\n\n// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px)\n//\n// The map defined in the `$breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl 2xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $breakpoints, $breakpoint-names: map.keys($breakpoints)) {\n  $n: list.index($breakpoint-names, $name);\n  @if not $n {\n    @error \"breakpoint `#{$name}` not found in `#{$breakpoint-names}`\";\n  }\n  // Use @if/@else because list.nth would error if evaluated when $n equals list length\n  @if $n < list.length($breakpoint-names) {\n    @return list.nth($breakpoint-names, $n + 1);\n  } @else {\n    @return null;\n  }\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $breakpoints) {\n  $min: map.get($breakpoints, $name);\n  @return if(sass($min != 0): $min; else: null);\n}\n\n// Maximum breakpoint width for range media queries.\n// Returns the breakpoint value to use as an upper bound in range queries.\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    576px\n//    >> breakpoint-max(xxl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    null\n@function breakpoint-max($name, $breakpoints: $breakpoints) {\n  @if $name == null {\n    @return null;\n  }\n  $max: map.get($breakpoints, $name);\n  @return if(sass($max and $max > 0): $max; else: null);\n}\n\n// Escape a name for use at the start of a CSS identifier.\n// Leading digits are hex-escaped (e.g., 2xl becomes \\32 xl).\n@function css-escape-ident($name) {\n  $name-str: \"#{$name}\";\n  $digits: \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\";\n  $first: string.slice($name-str, 1, 1);\n\n  @if list.index($digits, $first) {\n    @return \"\\\\3#{$first} #{string.slice($name-str, 2)}\";\n  }\n\n  @return $name-str;\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name\n// with an escaped colon as a Tailwind-style prefix for responsive class names.\n// Leading digits are CSS-escaped (e.g., 2xl becomes \\32 xl) for valid identifiers.\n//\n//    >> breakpoint-prefix(xs, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-prefix(sm, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"sm\\:\"\n//    >> breakpoint-prefix(2xl, (xs: 0, sm: 576px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px))\n//    \"\\32 xl\\:\"\n@function breakpoint-prefix($name, $breakpoints: $breakpoints) {\n  @if breakpoint-min($name, $breakpoints) == null {\n    @return \"\";\n  }\n\n  @return \"#{css-escape-ident($name)}\\\\:\";\n}\n\n// Iterate all breakpoints and provide the current name and prefix.\n//\n//    @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-up($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n    @content($breakpoint, $prefix);\n  }\n}\n\n// Iterate all breakpoints and provide the current name, next name, and next prefix.\n//\n//    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n//      // ...\n//    }\n@mixin loop-breakpoints-down($breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $next: breakpoint-next($breakpoint, $breakpoints);\n    $prefix: breakpoint-prefix($next, $breakpoints);\n    @content($breakpoint, $next, $prefix);\n  }\n}\n\n// Backwards-compatible alias for next/down breakpoint loops.\n@mixin loop-breakpoints($breakpoints: $breakpoints) {\n  @include loop-breakpoints-down($breakpoints) using ($breakpoint, $next, $prefix) {\n    @content($breakpoint, $next, $prefix);\n  }\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (width >= $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (width < $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (width >= $min) and (width < $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($next, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n\n// Container queries\n//\n// Container queries allow elements to respond to the size of a containing element\n// rather than the viewport. These mixins mirror the media-breakpoint-* mixins above.\n//\n// scss-docs-start container-query-mixins\n\n// Set an element as a query container.\n//\n//    @include set-container();                    // container-type: inline-size\n//    @include set-container(size);                // container-type: size\n//    @include set-container(inline-size, sidebar); // container: sidebar / inline-size\n//\n@mixin set-container($type: inline-size, $name: null) {\n  @if $name {\n    container: #{$name} / #{$type};\n  } @else {\n    container-type: #{$type};\n  }\n}\n\n// Container query of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider within the container.\n//\n//    @include container-breakpoint-up(md) { ... }\n//    @include container-breakpoint-up(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-up($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower within the container.\n//\n//    @include container-breakpoint-down(lg) { ... }\n//    @include container-breakpoint-down(lg, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-down($name, $container-name: null, $breakpoints: $breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @if $container-name {\n      @container #{$container-name} (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Container query that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints within the container.\n//\n//    @include container-breakpoint-between(md, xl) { ... }\n//    @include container-breakpoint-between(md, xl, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-between($lower, $upper, $container-name: null, $breakpoints: $breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($lower, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($upper, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Container query between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint within the container.\n//\n//    @include container-breakpoint-only(md) { ... }\n//    @include container-breakpoint-only(md, sidebar) { ... }  // Query named container\n//\n@mixin container-breakpoint-only($name, $container-name: null, $breakpoints: $breakpoints) {\n  $min:  breakpoint-min($name, $breakpoints);\n  $next: breakpoint-next($name, $breakpoints);\n  $max:  breakpoint-max($next, $breakpoints);\n\n  @if $min != null and $max != null {\n    @if $container-name {\n      @container #{$container-name} (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    } @else {\n      @container (width >= #{$min}) and (width < #{$max}) {\n        @content;\n      }\n    }\n  } @else if $max == null {\n    @include container-breakpoint-up($name, $container-name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include container-breakpoint-down($next, $container-name, $breakpoints) {\n      @content;\n    }\n  }\n}\n// scss-docs-end container-query-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/image\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/tokens\" as *;\n\n$thumbnail-tokens: () !default;\n\n// scss-docs-start thumbnail-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$thumbnail-tokens: defaults(\n  (\n    --thumbnail-padding: .25rem,\n    --thumbnail-bg: var(--bg-body),\n    --thumbnail-border-width: var(--border-width),\n    --thumbnail-border-color: var(--border-color),\n    --thumbnail-border-radius: var(--radius-5),\n    --thumbnail-box-shadow: var(--box-shadow-sm),\n  ),\n  $thumbnail-tokens\n);\n// scss-docs-end thumbnail-tokens\n\n$figure-tokens: () !default;\n\n// scss-docs-start figure-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$figure-tokens: defaults(\n  (\n    --figure-gap: calc(var(--spacer) * .5),\n    --figure-caption-font-size: var(--font-size-sm),\n    --figure-caption-color: var(--fg-3),\n  ),\n  $figure-tokens\n);\n// scss-docs-end figure-tokens\n\n@layer content {\n  // Responsive images (ensure images don't scale beyond their parents)\n  //\n  // This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n  // We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n  // and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n  // which weren't expecting the images within themselves to be involuntarily resized.\n  // See also https://github.com/twbs/bootstrap/issues/18178\n  .img-fluid {\n    @include img-fluid();\n  }\n\n  .img-thumbnail {\n    @include tokens($thumbnail-tokens);\n    padding: var(--thumbnail-padding);\n    background-color: var(--thumbnail-bg);\n    border: var(--thumbnail-border-width) solid var(--thumbnail-border-color);\n    @include border-radius(var(--thumbnail-border-radius));\n    @include box-shadow(var(--thumbnail-box-shadow));\n\n    // Keep them at most 100% wide\n    @include img-fluid();\n  }\n\n  .figure {\n    @include tokens($figure-tokens);\n    // Ensures the caption's text aligns with the image.\n    display: flex;\n    flex-direction: column;\n    gap: var(--figure-gap);\n  }\n\n  .figure-caption {\n    font-size: var(--figure-caption-font-size);\n    color: var(--figure-caption-color);\n  }\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n@mixin box-shadow($shadow...) {\n  @if $enable-shadows {\n    $result: ();\n    $has-single-value: false;\n    $single-value: null;\n\n    @each $value in $shadow {\n      @if $value != null {\n        @if $value == none or $value == initial or $value == inherit or $value == unset {\n          $has-single-value: true;\n          $single-value: $value;\n        } @else {\n          $result: list.append($result, $value, \"comma\");\n        }\n      }\n    }\n\n    @if $has-single-value {\n      box-shadow: $single-value;\n    } @else if (list.length($result) > 0) {\n      box-shadow: $result;\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$prose-tokens: () !default;\n\n// scss-docs-start prose-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$prose-tokens: defaults(\n  (\n    --content-font-size: 1rem,\n    --content-line-height: 1.5,\n    --content-gap: calc(var(--content-font-size) * var(--content-line-height)),\n    --heading-color: light-dark(var(--gray-900), var(--white)),\n  ),\n  $prose-tokens\n);\n// scss-docs-end prose-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer content {\n  .prose {\n    @include tokens($prose-tokens);\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--content-gap);\n    max-width: 1000px;\n    margin-inline: auto;\n    font-size: var(--content-font-size);\n    line-height: var(--content-line-height);\n\n    @media (width >= 1024px) {\n      --content-font-size: var(--font-size-md);\n      --content-line-height: 1.625;\n      // --content-gap: calc(var(--content-font-size) * var(--content-line-height));\n    }\n\n    :where(p, ul, ol, dl, pre, table, blockquote):not(:where(.not-prose, .not-prose *)) {\n      margin-block: 0;\n    }\n\n    :where(ul, ol):not([class], :where(.not-prose, .not-prose *)) li:not(:last-child) {\n      margin-bottom: calc(var(--content-gap) / 4);\n    }\n\n    :where(li ul, li ol):not(:where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) / 4);\n    }\n\n    :where(hr):not(:where(.not-prose, .not-prose *)) {\n      margin: calc(var(--content-gap) * 1.5) 0;\n      border: 0;\n      border-block-start: var(--border-width) solid var(--hr-border-color);\n    }\n\n    :where(h1, h2, h3, h4, h5, h6):not([class], :where(.not-prose, .not-prose *)) {\n      margin-top: 0;\n      margin-bottom: calc(var(--content-gap) / -2);\n      font-weight: 500;\n      line-height: 1.25;\n\n      code {\n        font-weight: 600;\n        color: inherit;\n      }\n    }\n\n    :where(h1, h2):not(:first-child, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .75);\n    }\n\n    :where(h3, h4, h5, h6):not(:first-child, :where(.not-prose, .not-prose *)) {\n      margin-top: calc(var(--content-gap) * .5);\n    }\n\n    :where(h1):not(:where(.not-prose, .not-prose *)) {\n      font-size: 2.25em;\n      line-height: 1.1;\n    }\n    :where(h2):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.75em;\n    }\n    :where(h3):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.5em;\n    }\n    :where(h4):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.25em;\n    }\n    :where(h5):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1.125em;\n    }\n    :where(h6):not(:where(.not-prose, .not-prose *)) {\n      font-size: 1em;\n    }\n\n    :where(a:not([class])):not(:where(.not-prose, .not-prose *)) {\n      color: var(--link-color);\n      text-decoration: underline;\n      text-decoration-color: color-mix(in srgb, var(--link-color) 25%, transparent);\n      text-underline-offset: 4px;\n      @include transition(.1s text-decoration-color ease-in-out);\n\n      &:hover {\n        text-decoration-color: var(--link-hover-color);\n      }\n    }\n\n    :where(img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n\n    :where(blockquote):not(:where(.not-prose, .not-prose *)) {\n      padding-inline-start: calc(var(--content-gap) / 2);\n      margin: 0;\n      border-inline-start: 4px solid var(--border-color);\n    }\n\n    :where(table):not(:where(.not-prose, .not-prose *)) {\n      width: 100%;\n      border-spacing: 0;\n      border-collapse: collapse;\n    }\n\n    :where(table:not([class])):not(:where(.not-prose, .not-prose *)) {\n      td,\n      th {\n        padding: 6px 12px;\n        text-align: inherit;\n        border: 1px solid var(--border-color);\n      }\n    }\n\n    :where(dt):not(:where(.not-prose, .not-prose *)) {\n      font-weight: 500;\n    }\n\n    :where(video, img):not(:where(.not-prose, .not-prose *)) {\n      max-width: 100%;\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../config\" as *;\n\n// stylelint-disable property-disallowed-list\n@mixin transition($transition...) {\n  @if list.length($transition) == 0 {\n    $transition: $transition-base;\n  }\n\n  @if list.length($transition) > 1 {\n    @each $value in $transition {\n      @if $value == null or $value == none {\n        @warn \"The keyword 'none' or 'null' must be used as a single argument.\";\n      }\n    }\n  }\n\n  @if $enable-transitions {\n    @if list.nth($transition, 1) != null {\n      transition: $transition;\n    }\n\n    @if $enable-reduced-motion and list.nth($transition, 1) != null and list.nth($transition, 1) != none {\n      @media (prefers-reduced-motion: reduce) {\n        transition: none;\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"breakpoints\" as *;\n\n// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n  --gutter-x: #{$gutter};\n  --gutter-y: 0;\n  width: 100%;\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-inline: auto;\n}\n\n@layer layout {\n  @if $enable-container-classes {\n    // Single container class with breakpoint max-widths\n    .container,\n    // 100% wide container at all breakpoints\n    .container-fluid {\n      @include make-container();\n    }\n\n    // Responsive containers that are 100% wide until a breakpoint\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      .#{breakpoint-prefix($breakpoint, $breakpoints)}container {\n        @extend .container-fluid;\n      }\n\n      @include media-breakpoint-up($breakpoint, $breakpoints) {\n        // Extend each breakpoint which is smaller or equal to the current breakpoint\n        $extend-breakpoint: true;\n\n        %responsive-container-#{$breakpoint} {\n          max-width: $container-max-width;\n        }\n\n        @each $name, $width in $breakpoints {\n          @if ($extend-breakpoint) {\n            .#{breakpoint-prefix($name, $breakpoints)}container {\n              @extend %responsive-container-#{$breakpoint};\n            }\n\n            // Once the current breakpoint is reached, stop extending\n            @if ($breakpoint == $name) {\n              $extend-breakpoint: false;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/grid\" as *;\n\n// mdo-do\n// - check gap utilities as replacement for gutter classes from v5\n\n@layer layout {\n  @if $enable-grid-classes {\n    .row {\n      @include make-row();\n\n      > * {\n        @include make-col-ready();\n      }\n    }\n\n    @include make-grid-columns();\n  }\n\n  @if $enable-cssgrid {\n    .grid {\n      --columns: #{$grid-columns};\n      --rows: 1;\n      --gap: #{$grid-gutter-x};\n\n      display: grid;\n      grid-template-rows: repeat(var(--rows), 1fr);\n      grid-template-columns: repeat(var(--columns), 1fr);\n      gap: var(--gap);\n\n    }\n\n    @include make-cssgrid();\n  }\n\n  // mdo-do: add to utilities?\n  .grid-cols-subgrid {\n    grid-template-columns: subgrid;\n  }\n\n  .grid-fill {\n    --gap: #{$grid-gutter-x};\n\n    display: grid;\n    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));\n    grid-auto-flow: row;\n    gap: var(--gap);\n  }\n\n  // .g-col-auto {\n  //   grid-column: auto;\n  // }\n\n  // mdo-do: add to utilities?\n  // .grid-cols-3 {\n  //   --columns: 3;\n  // }\n  // .grid-cols-4 {\n  //   --columns: 4;\n  // }\n  // .grid-cols-6 {\n  //   --columns: 6;\n  // }\n\n  // .grid-full {\n  //   grid-column: 1 / -1;\n  // }\n}\n","@use \"sass:map\";\n@use \"sass:math\";\n@use \"sass:meta\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter-x: $grid-gutter-x, $gutter-y: $grid-gutter-y) {\n  --gutter-x: #{$gutter-x};\n  --gutter-y: #{$gutter-y};\n  display: flex;\n  flex-wrap: wrap;\n  // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n  margin-inline: calc(-.5 * var(--gutter-x));\n  margin-top: calc(-1 * var(--gutter-y));\n}\n\n@mixin make-col-ready() {\n  // Add box sizing if only the grid is loaded\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  box-sizing: if(sass(meta.variable-exists(include-column-box-sizing) and $include-column-box-sizing): border-box; else: null);\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we set the width\n  // later on to override this initial width.\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n  padding-inline: calc(var(--gutter-x) * .5);\n  margin-top: var(--gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n  @if $size {\n    flex: 0 0 auto;\n    width: math.percentage(math.div($size, $columns));\n\n  } @else {\n    flex: 1 1 0;\n    max-width: 100%;\n  }\n}\n\n@mixin make-col-auto() {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: math.div($size, $columns);\n  // stylelint-disable-next-line scss/at-function-named-arguments\n  margin-inline-start: if(sass($num == 0): 0; else: math.percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n  > * {\n    flex: 0 0 auto;\n    width: math.percentage(math.div(1, $count));\n  }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-x, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      .#{$prefix}col {\n        flex: 1 0 0;\n      }\n\n      .#{$prefix}row-cols-auto > * {\n        @include make-col-auto();\n      }\n\n      @if $grid-row-columns > 0 {\n        @for $i from 1 through $grid-row-columns {\n          .#{$prefix}row-cols-#{$i} {\n            @include row-cols($i);\n          }\n        }\n      }\n\n      .#{$prefix}col-auto {\n        @include make-col-auto();\n      }\n\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}col-#{$i} {\n            @include make-col($i, $columns);\n          }\n        }\n\n        // `$columns - 1` because offsetting by the width of an entire row isn't possible\n        @for $i from 0 through ($columns - 1) {\n          @if not ($prefix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n            .#{$prefix}offset-#{$i} {\n              @include make-col-offset($i, $columns);\n            }\n          }\n        }\n      }\n\n      // Gutters\n      //\n      // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n      @each $key, $value in $gutters {\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gx-#{$key} {\n          --gutter-x: #{$value};\n        }\n\n        .#{$prefix}g-#{$key},\n        .#{$prefix}gy-#{$key} {\n          --gutter-y: #{$value};\n        }\n      }\n    }\n  }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $breakpoints) {\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      @if $columns > 0 {\n        @for $i from 1 through $columns {\n          .#{$prefix}g-col-#{$i} {\n            grid-column: auto / span $i;\n          }\n        }\n\n        // Start with `1` because `0` is an invalid value.\n        // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n        @for $i from 1 through ($columns - 1) {\n          .#{$prefix}g-start-#{$i} {\n            grid-column-start: $i;\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n\n$form-label-tokens: () !default;\n\n// scss-docs-start form-label-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-label-tokens: defaults(\n  (\n    --label-margin-bottom: calc(var(--spacer) / 2),\n    --label-font-size: null,\n    --label-font-style: null,\n    --label-font-weight: null,\n    --label-color: null,\n  ),\n  $form-label-tokens\n);\n// scss-docs-end form-label-tokens\n\n@layer forms {\n  .form-label,\n  .col-form-label {\n    font-size: var(--label-font-size, inherit);\n    font-style: var(--label-font-style, inherit);\n    font-weight: var(--label-font-weight, 500);\n    color: var(--label-color, var(--fg-body));\n  }\n\n  .form-label {\n    margin-bottom: var(--label-margin-bottom, calc(var(--spacer) / 2));\n  }\n\n  // For use with horizontal and inline forms, when you need the label (or legend)\n  // text to align with the form controls.\n  .col-form-label {\n    --label-padding-y: calc(var(--btn-input-padding-y) + var(--border-width));\n    padding-block: var(--label-padding-y);\n    margin-bottom: 0; // Override the `<legend>` default\n  }\n\n  .col-form-label-lg {\n    --label-padding-y: calc(var(--btn-input-lg-padding-y) + var(--border-width));\n    font-size: var(--btn-input-lg-font-size);\n  }\n\n  .col-form-label-sm {\n    --label-padding-y: calc(var(--btn-input-sm-padding-y) + var(--border-width));\n    font-size: var(--btn-input-sm-font-size);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-text-tokens: () !default;\n\n// scss-docs-start form-text-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-text-tokens: defaults(\n  (\n    --form-text-margin-top: .25rem,\n    --form-text-font-size: var(--font-size-sm),\n    --form-text-font-style: null,\n    --form-text-font-weight: null,\n    --form-text-color: var(--fg-2),\n  ),\n  $form-text-tokens\n);\n// scss-docs-end form-text-tokens\n\n@layer forms {\n  .form-text {\n    @include tokens($form-text-tokens);\n\n    // margin-top: var(--form-text-margin-top);\n    font-size: var(--form-text-font-size);\n    font-style: var(--form-text-font-style);\n    font-weight: var(--form-text-font-weight);\n    color: var(--form-text-color);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-control-tokens: () !default;\n\n// scss-docs-start form-control-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-tokens: defaults(\n  (\n    --control-min-height: var(--btn-input-min-height),\n    --control-padding-y: var(--btn-input-padding-y),\n    --control-padding-x: var(--btn-input-padding-x),\n    --control-font-size: var(--btn-input-font-size),\n    --control-line-height: var(--btn-input-line-height),\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--radius-5),\n    --control-box-shadow: var(--box-shadow-inset),\n    --control-action-bg: var(--bg-1),\n    --control-action-hover-bg: var(--bg-2),\n    --control-transition-property: \"border-color, box-shadow\",\n    --control-transition-timing: .15s ease-in-out,\n    --control-transition: var(--control-transition-property) var(--control-transition-timing),\n    --control-placeholder-color: var(--fg-3),\n    --control-disabled-color: var(--control-fg),\n    --control-disabled-bg: var(--bg-2),\n    --control-disabled-border-color: var(--control-border-color),\n    --control-select-bg: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#00000080' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n    --control-select-bg-position: right .75rem center,\n    --control-select-bg-size: 16px 12px,\n    --control-select-bg-dark: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path fill='none' stroke='#ffffff80' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/></svg>\"))},\n  ),\n  $form-control-tokens\n);\n// scss-docs-end form-control-tokens\n\n// scss-docs-start form-control-sizes\n$form-control-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-control-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $form-control-sizes\n);\n// scss-docs-end form-control-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .form-control {\n    @include tokens($form-control-tokens);\n\n    display: flex;\n    width: 100%;\n    min-height: var(--control-min-height);\n    padding: var(--control-padding-y) var(--control-padding-x);\n    font-size: var(--control-font-size);\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    appearance: none;\n    background-color: var(--control-bg);\n    background-clip: padding-box;\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n    @include box-shadow(var(--control-box-shadow));\n    @include transition(var(--control-transition));\n\n    // Customize the `:focus` state to imitate native WebKit styles.\n    &:focus-visible {\n      --focus-ring-offset: -1px;\n      @include focus-ring(true);\n    }\n\n    // Placeholder\n    &::placeholder {\n      color: var(--control-placeholder-color);\n      // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n      opacity: 1;\n    }\n\n    // Disabled inputs\n    //\n    // HTML5 says that controls under a fieldset > legend:first-child won't be\n    // disabled if the fieldset is disabled. Due to implementation difficulty, we\n    // don't honor that edge case; we style them as disabled anyway.\n    &:disabled {\n      color: var(--control-disabled-color);\n      background-color: var(--control-disabled-bg);\n      border-color: var(--control-disabled-border-color);\n      // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n      opacity: 1;\n    }\n\n    // Date and time inputs\n    // &::-webkit-date-and-time-value {\n    //   // On Android Chrome, form-control's \"width: 100%\" makes the input width too small\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   //\n    //   // On iOS Safari, form-control's \"appearance: none\" + \"width: 100%\" makes the input width too small\n    //   // Tested under iOS 16.2 / Safari 16.2\n    //   min-width: 85px; // Seems to be a good minimum safe width\n\n    //   // Add some height to date inputs on iOS\n    //   // https://github.com/twbs/bootstrap/issues/23307\n    //   // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved\n    //   // Multiply line-height by 1em if it has no unit\n    //   height: 1.5em;\n\n    //   // Android Chrome type=\"date\" is taller than the other inputs\n    //   // because of \"margin: 1px 24px 1px 4px\" inside the shadow DOM\n    //   // Tested under Android 11 / Chrome 89, Android 12 / Chrome 100, Android 13 / Chrome 109\n    //   margin: 0;\n    //   background-color: var(--red-500);\n    // }\n\n    // Prevent excessive date input height in Webkit\n    // https://github.com/twbs/bootstrap/issues/34433\n\n    // mdo-do: need to check this stuff out across browsers\n    &::-webkit-datetime-edit {\n      display: block;\n      height: 1.5rem;\n      padding: 0;\n      margin-bottom: -.125rem;\n    }\n    &::-webkit-datetime-edit-fields-wrapper {\n      height: 1.5rem;\n    }\n\n    // File inputs\n    &[type=\"file\"] {\n      overflow: hidden; // prevent pseudo element button overlap\n\n      &:not(:disabled, [readonly]) {\n        cursor: pointer;\n      }\n    }\n    &::file-selector-button {\n      min-height: var(--control-min-height);\n      padding: var(--control-padding-y) var(--control-padding-x);\n      margin: calc(var(--control-padding-y) * -1) calc(var(--control-padding-x) * -1);\n      margin-inline-end: var(--control-padding-x);\n      color: var(--control-fg);\n      // @include gradient-bg(var(--control-action-bg));\n      pointer-events: none;\n      background-color: var(--control-action-bg);\n      border-color: inherit;\n      border-style: solid;\n      border-width: 0;\n      border-inline-end-width: var(--control-border-width);\n      border-radius: 0; // stylelint-disable-line property-disallowed-list\n      @include transition(var(--control-transition));\n    }\n\n    &:hover:not(:disabled, [readonly])::file-selector-button {\n      background-color: var(--control-action-hover-bg);\n    }\n  }\n\n  // Readonly controls as plain text\n  //\n  // Apply class to a readonly input to make it appear like regular plain\n  // text (without any border, background color, focus indicator)\n\n  .form-control-plaintext {\n    // Plaintext is a standalone class (not combined with `.form-control`), so it\n    // needs its own copy of the control tokens. Without them the `var(--control-*)`\n    // references below are invalid and fall back to their initial values (e.g.\n    // `border-width: medium`), which adds phantom inline borders and misaligns the\n    // text from a floating label.\n    @include tokens($form-control-tokens);\n\n    display: block;\n    width: 100%;\n    padding: var(--control-padding-y) 0;\n    margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n    line-height: var(--control-line-height);\n    color: var(--control-fg);\n    background-color: transparent;\n    border: solid transparent;\n    border-width: var(--control-border-width) 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &.form-control-sm,\n    &.form-control-lg {\n      padding-inline: 0;\n    }\n  }\n\n  // stylelint-disable selector-no-qualifying-type\n  select.form-control,\n  .form-control-caret {\n    padding-inline-end: calc(var(--control-padding-x) * 3);\n    background-image: var(--control-select-bg);\n    background-repeat: no-repeat;\n    background-position: var(--control-select-bg-position);\n    background-size: var(--control-select-bg-size);\n\n    &[multiple],\n    &[size]:not([size=\"1\"]) {\n      padding-inline-end: var(--control-padding-x);\n      background-image: none;\n    }\n  }\n\n  [data-bs-theme=\"dark\"] {\n    select.form-control,\n    .form-control-caret {\n      background-image: var(--control-select-bg-dark);\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  // Form control sizing\n  //\n  // Build on `.form-control` with modifier classes to decrease or increase the\n  // height and font-size of form controls.\n  //\n  // Repeated in `_input_group.scss` to avoid Sass extend issues.\n  @each $size, $_ in $form-control-sizes {\n    .form-control-#{$size} {\n      --control-min-height: var(--btn-input-#{$size}-min-height);\n      --control-padding-y: var(--btn-input-#{$size}-padding-y);\n      --control-padding-x: var(--btn-input-#{$size}-padding-x);\n      --control-font-size: var(--btn-input-#{$size}-font-size);\n      --control-line-height: var(--btn-input-#{$size}-line-height);\n      --control-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n\n  .form-control-color {\n    width: var(--control-min-height);\n    padding: var(--control-padding-y);\n\n    &:not(:disabled, [readonly]) {\n      cursor: pointer;\n    }\n\n    &::-moz-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\n    }\n\n    &::-webkit-color-swatch {\n      border: 0 !important; // stylelint-disable-line declaration-no-important\n      @include border-radius(var(--radius-5));\n    }\n  }\n\n  // Ghost input - removes all visual styling\n  // Used inside custom wrappers that handle their own styling\n  .form-ghost {\n    display: block;\n    width: 100%;\n    padding: 0;\n    font: inherit;\n    color: inherit;\n    appearance: none;\n    background: transparent;\n    border: 0;\n\n    &:focus {\n      outline: 0;\n    }\n\n    &::placeholder {\n      color: var(--fg-3);\n      opacity: 1;\n    }\n\n    &:disabled {\n      color: var(--fg-4);\n      cursor: not-allowed;\n    }\n  }\n}\n","@mixin focus-ring($offset: false, $color: null) {\n  @if $color != null {\n    outline: var(--focus-ring-width) solid #{$color};\n  } @else {\n    outline: var(--focus-ring);\n  }\n  @if $offset {\n    outline-offset: var(--focus-ring-offset);\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$check-tokens: () !default;\n\n// scss-docs-start check-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$check-tokens: defaults(\n  (\n    --check-size: 1.25rem,\n    --check-margin-block: .125rem,\n    --check-bg: var(--bg-body),\n    --check-border-color: var(--border-color),\n    --check-border-radius: var(--radius-5),\n    --check-icon-checked: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m5.5 10 3 3 6-6'/></svg>\"))},\n    --check-icon-indeterminate: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M6 10h8'/></svg>\"))},\n    --check-checked-bg: var(--control-checked-bg),\n    --check-checked-border-color: var(--control-checked-border-color),\n    --check-indeterminate-bg: var(--control-checked-bg),\n    --check-indeterminate-border-color: var(--control-checked-border-color),\n    --check-active-bg: var(--control-active-bg),\n    --check-active-border-color: var(--control-active-border-color),\n    --check-disabled-bg: var(--control-disabled-bg),\n    --check-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $check-tokens\n);\n// scss-docs-end check-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  // The class lives on the `<input>` itself; `appearance: none` controls render\n  // pseudo-elements, so the mark is drawn directly on the input — no wrapper.\n  .check {\n    @include tokens($check-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--check-size);\n    height: var(--check-size);\n    margin-block: var(--check-margin-block);\n    appearance: none;\n    // later: maybe set a tertiary bg color?\n    background-color: var(--theme-bg, var(--check-bg));\n    border: 1px solid var(--theme-bg, var(--check-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 33%;\n\n    &:checked,\n    &:indeterminate {\n      background-color: var(--theme-bg, var(--check-checked-bg));\n      border-color: var(--theme-bg, var(--check-checked-border-color));\n\n      // Check/indeterminate mark, overlaid on the input and rendered via a CSS\n      // mask so it inherits the contrast color without an inline SVG.\n      &::before {\n        position: absolute;\n        inset: 0;\n        pointer-events: none;\n        content: \"\";\n        background-color: var(--theme-contrast, var(--primary-contrast));\n        @include mask-icon();\n      }\n    }\n\n    &:checked::before { mask-image: var(--check-icon-checked); }\n    &:indeterminate::before { mask-image: var(--check-icon-indeterminate); }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: -1px;\n    }\n\n    &:disabled {\n      --check-bg: var(--check-disabled-bg);\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--check-disabled-opacity);\n    }\n  }\n\n  .check-sm {\n    --check-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .check-lg {\n    --check-size: 1.5rem;\n    --check-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","// Mask icon\n//\n// Renders an SVG icon via a CSS mask so the shape is painted with the\n// element's `background-color` and therefore inherits theme/dark-mode color.\n// Set `background-color` on the element itself; pass `null` for `$icon` when\n// the mask image is applied conditionally (e.g. per state or direction).\n\n// scss-docs-start mask-icon-mixin\n@mixin mask-icon($icon: null, $size: contain, $position: center) {\n  @if $icon != null {\n    mask-image: $icon;\n  }\n  mask-repeat: no-repeat;\n  @if $position != null {\n    mask-position: $position;\n  }\n  @if $size != null {\n    mask-size: $size;\n  }\n}\n// scss-docs-end mask-icon-mixin\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$radio-tokens: () !default;\n\n// scss-docs-start radio-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$radio-tokens: defaults(\n  (\n    --radio-size: 1.25rem,\n    --radio-margin-block: .125rem,\n    --radio-bg: var(--bg-body),\n    --radio-border-color: var(--border-color),\n    --radio-checked-bg: var(--control-checked-bg),\n    --radio-checked-border-color: var(--control-checked-border-color),\n    --radio-disabled-bg: var(--control-disabled-bg),\n    --radio-disabled-opacity: var(--control-disabled-opacity),\n  ),\n  $radio-tokens\n);\n// scss-docs-end radio-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .radio {\n    @include tokens($radio-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--radio-size);\n    height: var(--radio-size);\n    margin-block: var(--radio-margin-block);\n    appearance: none;\n    background-color: var(--theme-bg, var(--radio-bg));\n    border: 1px solid var(--theme-bg, var(--radio-border-color));\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n\n    &:checked {\n      color: var(--theme-contrast, var(--primary-contrast));\n      background-color: var(--theme-bg, var(--radio-checked-bg));\n      border-color: var(--theme-bg, var(--radio-checked-border-color));\n\n      &::before {\n        position: absolute;\n        inset: calc(var(--radio-size) * .25);\n        content: \"\";\n        background-color: currentcolor;\n        // stylelint-disable-next-line property-disallowed-list\n        border-radius: 50%;\n      }\n    }\n\n    &:disabled {\n      --radio-bg: var(--radio-disabled-bg);\n\n      ~ label {\n        color: var(--secondary-fg);\n        cursor: default;\n      }\n    }\n    &:disabled:checked {\n      opacity: var(--radio-disabled-opacity);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n    }\n  }\n\n  .radio-sm {\n    --radio-size: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .radio-lg {\n    --radio-size: 1.5rem;\n    --radio-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$switch-tokens: () !default;\n\n// scss-docs-start switch-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$switch-tokens: defaults(\n  (\n    --switch-height: 1.25rem,\n    --switch-width: calc(var(--switch-height) * 1.75),\n    --switch-padding: .0625rem,\n    --switch-margin-block: .125rem,\n    --switch-bg: var(--bg-3),\n    --switch-border-width: var(--border-width),\n    --switch-border-color: var(--border-color),\n    --switch-indicator-bg: var(--white),\n    --switch-indicator-width: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-indicator-height: calc(var(--switch-height) - calc(var(--switch-padding) * 2) - var(--switch-border-width) * 2),\n    --switch-checked-bg: var(--control-checked-bg),\n    --switch-checked-border-color: var(--switch-checked-bg),\n    --switch-checked-indicator-bg: var(--white),\n    --switch-disabled-bg: var(--control-disabled-bg),\n    --switch-disabled-indicator-bg: var(--fg-3),\n  ),\n  $switch-tokens\n);\n// scss-docs-end switch-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer forms {\n  .switch {\n    @include tokens($switch-tokens);\n\n    position: relative;\n    flex-shrink: 0;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    padding: var(--switch-padding);\n    margin-block: var(--switch-margin-block);\n    background-color: var(--switch-bg);\n    border: var(--switch-border-width) solid var(--switch-border-color);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 10rem;\n    box-shadow: inset 0 1px 2px rgb(0 0 0 / .05);\n    // stylelint-disable-next-line property-disallowed-list\n    transition: background-color .15s ease-in-out;\n\n    &::before {\n      position: absolute;\n      inset-block: var(--switch-padding);\n      inset-inline-start: var(--switch-padding);\n      width: var(--switch-indicator-width);\n      height: var(--switch-indicator-height);\n      content: \"\";\n      background-color: var(--theme-contrast, var(--switch-indicator-bg));\n      // stylelint-disable-next-line property-disallowed-list\n      border-radius: 10rem;\n      box-shadow: 0 1px 2px rgb(0 0 0 / .1);\n      // stylelint-disable-next-line property-disallowed-list\n      transition: inset-inline-start .15s ease-in-out;\n    }\n\n    input {\n      position: absolute;\n      inset: 0;\n      appearance: none;\n      background-color: transparent;\n      outline: 0;\n    }\n\n    &:focus-within {\n      @include focus-ring(true);\n    }\n\n    &:has(input:disabled:not(:checked)) {\n      --switch-bg: var(--switch-disabled-bg);\n      --switch-indicator-bg: var(--switch-disabled-indicator-bg);\n\n      &::before { opacity: .4; }\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n\n    &:has(input:checked) {\n      background-color: var(--theme-bg, var(--switch-checked-bg));\n      border-color: var(--theme-bg, var(--switch-checked-border-color));\n\n      &::before {\n        inset-inline-start: calc(100% - var(--switch-indicator-width) - var(--switch-padding));\n      }\n    }\n\n    &:has(input:checked:disabled) {\n      opacity: .65;\n\n      ~ label {\n        color: var(--fg-3);\n        cursor: default;\n      }\n    }\n  }\n  .switch-sm {\n    --switch-height: 1rem;\n\n    + label {\n      font-size: var(--font-size-sm);\n    }\n  }\n  .switch-lg {\n    --switch-height: 1.5rem;\n    --switch-margin-block: .375rem;\n\n    + label {\n      font-size: var(--font-size-lg);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/transition\" as *;\n@use \"../mixins/gradients\" as *;\n@use \"../mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$range-tokens: () !default;\n\n// scss-docs-start range-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$range-tokens: defaults(\n  (\n    --range-track-width: 100%,\n    --range-track-height: .5rem,\n    --range-track-cursor: pointer,\n    --range-track-bg: var(--bg-3),\n    --range-track-border-radius: 1rem,\n    --range-track-fill-bg: var(--primary-base),\n    --range-track-disabled-bg: color-mix(in oklch, var(--bg-4), var(--fg-3)),\n    --range-thumb-width: 1rem,\n    --range-thumb-height: var(--range-thumb-width),\n    --range-thumb-bg: var(--primary-base),\n    --range-thumb-border: var(--range-thumb-bg) solid var(--border-color),\n    --range-thumb-border-radius: 1rem,\n    --range-thumb-box-shadow: \"0 1px 2px rgb(0 0 0 / 7.5%), 0 2px 4px rgb(0 0 0 / 7.5%)\",\n    --range-thumb-active-bg: color-mix(in oklch, var(--primary-base) 70%, var(--bg-body)),\n    --range-thumb-disabled-bg: var(--fg-3),\n    --range-thumb-transition-property: \"background-color, border-color, box-shadow\",\n    --range-thumb-transition-timing: .15s ease-in-out,\n    --range-thumb-transition: var(--range-thumb-transition-property) var(--range-thumb-transition-timing),\n    --range-tick-width: var(--border-width),\n    --range-tick-height: .5rem,\n    --range-tick-bg: var(--border-color),\n  ),\n  $range-tokens\n);\n// scss-docs-end range-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start range-mixins\n@mixin range-thumb() {\n  width: var(--range-thumb-width);\n  height: var(--range-thumb-height);\n  appearance: none;\n  @include gradient-bg(var(--range-thumb-bg));\n  border: var(--range-thumb-border);\n  @include border-radius(var(--range-thumb-border-radius));\n  @include box-shadow(var(--range-thumb-box-shadow));\n  @include transition(var(--range-thumb-transition));\n\n  &:active {\n    @include gradient-bg(var(--range-thumb-active-bg));\n  }\n}\n\n@mixin range-track() {\n  width: var(--range-track-width);\n  height: var(--range-track-height);\n  color: transparent;\n  cursor: var(--range-track-cursor);\n  // Fill (progress) up to the thumb. The Range plugin keeps `--range-fill` (0–1) in sync.\n  background-color: var(--range-track-bg);\n  background-image:\n    linear-gradient(\n      to right,\n      var(--range-track-fill-bg) calc(var(--range-fill, 0) * 100%),\n      transparent calc(var(--range-fill, 0) * 100%)\n    );\n  border-color: transparent;\n  @include border-radius(var(--range-track-border-radius));\n  @include box-shadow(var(--range-track-box-shadow));\n}\n// scss-docs-end range-mixins\n\n@layer forms {\n  .form-range {\n    @include tokens($range-tokens);\n\n    position: relative;\n    display: block;\n    width: 100%;\n  }\n\n  .form-range-input {\n    display: block;\n    width: 100%;\n    height: calc(var(--range-thumb-height) + (var(--focus-ring-width) * 2));\n    padding: 0;\n    appearance: none;\n    background-color: transparent;\n\n    &:hover {\n      &::-webkit-slider-thumb {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(false, color-mix(in oklch, var(--primary-focus-ring), transparent));\n      }\n    }\n\n    &:focus-visible {\n      outline: 0;\n\n      &::-webkit-slider-thumb {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n      &::-moz-range-thumb     {\n        @include focus-ring(true);\n        --focus-ring-offset: 0;\n      }\n    }\n\n    &::-moz-focus-outer {\n      border: 0;\n    }\n\n    &::-webkit-slider-thumb {\n      @include range-thumb();\n      margin-top: calc((var(--range-track-height) - var(--range-thumb-height)) * .5);\n    }\n\n    &::-moz-range-thumb {\n      @include range-thumb();\n    }\n\n    &::-webkit-slider-runnable-track {\n      @include range-track();\n    }\n\n    &::-moz-range-track {\n      @include range-track();\n    }\n\n    &:disabled {\n      pointer-events: none;\n\n      &::-webkit-slider-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-moz-range-thumb {\n        background-color: var(--range-thumb-disabled-bg);\n      }\n\n      &::-webkit-slider-runnable-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n\n      &::-moz-range-track {\n        --range-track-fill-bg: var(--range-track-disabled-bg);\n      }\n    }\n  }\n\n  // Value bubble: reuses the tooltip styles (`.tooltip` markup) so we don't duplicate the\n  // pill and arrow. We only add the static positioning the Tooltip plugin would normally do.\n  .form-range-bubble {\n    position: absolute;\n    bottom: 100%;\n    left: calc((var(--range-thumb-width) * .5) + var(--range-fill, 0) * (100% - var(--range-thumb-width)));\n    margin-bottom: var(--tooltip-arrow-height);\n    pointer-events: none;\n    transform: translateX(-50%);\n\n    .tooltip-arrow {\n      position: absolute;\n      bottom: calc(-1 * var(--tooltip-arrow-height));\n      left: 50%;\n      transform: translateX(-50%);\n    }\n  }\n\n  // Tick marks generated from the linked <datalist>. Plugin builds `grid-template-columns`\n  // from the gaps between values so each tick lands on a grid line (handles uneven values).\n  // Track is inset by 1/4th of the thumb width to keep alignment.\n  .form-range-ticks {\n    display: grid;\n    padding-inline: calc(var(--range-thumb-width) * .25);\n  }\n\n  .form-range-tick {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-self: start;\n    // Zero-width items so labels never widen their `fr` column; the tick line and label\n    // overflow centered on the grid line via `align-items`.\n    width: 0;\n\n    &::before {\n      width: var(--range-tick-width);\n      height: var(--range-tick-height);\n      content: \"\";\n      background-color: var(--range-tick-bg);\n    }\n\n    &:first-child {\n      align-items: flex-start;\n    }\n\n    &:last-child {\n      align-items: flex-end;\n    }\n  }\n\n  .form-range-tick-label {\n    margin-top: .125rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-2);\n    white-space: nowrap;\n  }\n}\n","@use \"../colors\" as *;\n@use \"../config\" as *;\n\n// Gradients\n\n// scss-docs-start gradient-bg-mixin\n@mixin gradient-bg($color: null) {\n  background-color: $color;\n\n  @if $enable-gradients {\n    background-image: var(--gradient);\n  }\n}\n// scss-docs-end gradient-bg-mixin\n\n// scss-docs-start gradient-mixins\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: var(--gray-700), $end-color: var(--gray-800), $start-percent: null, $end-percent: null) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n}\n\n@mixin gradient-directional($start-color: var(--gray-700), $end-color: var(--gray-800), $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n}\n\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n}\n\n@mixin gradient-radial($inner-color: var(--gray-700), $outer-color: var(--gray-800)) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n}\n\n@mixin gradient-striped($color: rgb(255 255 255 / .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n// scss-docs-end gradient-mixins\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$form-floating-tokens: () !default;\n\n// scss-docs-start form-floating-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-floating-tokens: defaults(\n  (\n    --form-floating-height: calc(3.75rem + (var(--border-width) * 2)),\n    --form-floating-line-height: 1.25,\n    --form-floating-padding-x: calc(var(--btn-input-padding-x) * 1.25),\n    --form-floating-padding-y: 1rem,\n    --form-floating-input-padding-t: 1.625rem,\n    --form-floating-input-padding-b: .625rem,\n    --form-floating-label-height: 1.5em,\n    // Backgrounds for the textarea label's masking pseudo-element. Mirrors\n    // `.form-control` here because the label is a sibling of the control, so it\n    // can't inherit the control's own `--control-bg`/`--control-disabled-bg`.\n    --form-floating-label-bg: var(--btn-input-bg),\n    --form-floating-label-disabled-bg: var(--bg-2),\n    --form-floating-label-opacity: .65,\n    --form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem),\n    --form-floating-label-disabled-color: var(--fg-3),\n    --form-floating-transition-property: \"opacity, transform\",\n    --form-floating-transition-timing: .1s ease-in-out,\n    --form-floating-transition: var(--form-floating-transition-property) var(--form-floating-transition-timing),\n  ),\n  $form-floating-tokens\n);\n// scss-docs-end form-floating-tokens\n\n@layer forms {\n  .form-floating {\n    @include tokens($form-floating-tokens);\n\n    position: relative;\n\n    > label {\n      position: absolute;\n      inset-block-start: 0;\n      inset-inline-start: 0;\n      z-index: 2;\n      display: flex;\n      align-items: center;\n      max-width: 100%;\n      height: 100%; // allow textareas\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      overflow: hidden;\n      color: color-mix(in oklch, var(--fg-body) var(--form-floating-label-opacity), transparent);\n      text-align: start;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n      pointer-events: none;\n      border: var(--border-width) solid transparent; // Required for aligning label's text with the input as it affects inner box model\n      transform-origin: 0 0;\n      @include transition(var(--form-floating-transition));\n    }\n\n    // Anchor the label to the top for textareas so it floats correctly at any height\n    > label:has(~ textarea) {\n      align-items: flex-start;\n    }\n\n    > .form-control,\n    > .form-control-plaintext {\n      height: var(--form-floating-height);\n      min-height: var(--form-floating-height);\n      padding: var(--form-floating-padding-y) var(--form-floating-padding-x);\n      line-height: var(--form-floating-line-height);\n\n      &::placeholder {\n        color: transparent;\n      }\n\n      &:focus,\n      &:not(:placeholder-shown) {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n      // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n      &:-webkit-autofill {\n        padding-top: var(--form-floating-input-padding-t);\n        padding-bottom: var(--form-floating-input-padding-b);\n      }\n    }\n\n    // The label precedes the control in the DOM so screen readers announce it\n    // before the field's value, so we look forward with `:has()` to react to the\n    // control's state (focus, value, disabled, etc.).\n    > label:has(~ .form-control:focus),\n    > label:has(~ .form-control:not(:placeholder-shown)),\n    > label:has(~ .form-control-plaintext) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped\n    > label:has(~ .form-control:-webkit-autofill) {\n      transform: var(--form-floating-label-transform);\n    }\n\n    > label:has(~ textarea:focus),\n    > label:has(~ textarea:not(:placeholder-shown)) {\n      &::after {\n        position: absolute;\n        inset: var(--form-floating-padding-y) calc(var(--form-floating-padding-x) * .5);\n        z-index: -1;\n        height: var(--form-floating-label-height);\n        content: \"\";\n        background-color: var(--form-floating-label-bg);\n        @include border-radius(var(--btn-input-border-radius));\n      }\n    }\n    > label:has(~ textarea:disabled)::after {\n      background-color: var(--form-floating-label-disabled-bg);\n    }\n\n    > label:has(~ .form-control-plaintext) {\n      border-width: var(--control-border-width) 0; // Required to properly position label text - as explained above\n    }\n\n    > label:has(~ :disabled),\n    > label:has(~ .form-control:disabled) { // Required for `.form-control`s because of specificity\n      color: var(--form-floating-label-disabled-color);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n\n$input-group-addon-tokens: () !default;\n\n// scss-docs-start input-group-addon-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-addon-tokens: defaults(\n  (\n    --input-group-addon-padding-y: var(--btn-input-padding-y),\n    --input-group-addon-padding-x: var(--btn-input-padding-x),\n    --input-group-addon-font-size: var(--btn-input-font-size),\n    --input-group-addon-line-height: var(--btn-input-line-height),\n    --input-group-addon-color: var(--fg-body),\n    --input-group-addon-bg: var(--bg-2),\n    --input-group-addon-border-color: var(--border-color),\n  ),\n  $input-group-addon-tokens\n);\n// scss-docs-end input-group-addon-tokens\n\n// scss-docs-start input-group-sizes\n$input-group-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$input-group-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $input-group-sizes\n);\n// scss-docs-end input-group-sizes\n\n@layer components {\n  .input-group {\n    @include tokens($input-group-addon-tokens);\n\n    position: relative;\n    display: flex;\n    align-items: stretch;\n    width: 100%;\n\n    > .form-control,\n    > .form-floating {\n      position: relative; // For focus state's z-index\n      flex: 1 1 auto;\n      width: 1%;\n      min-width: 0; // https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size\n    }\n\n    // Bring the \"active\" form control to the top of surrounding elements\n    > .form-control:focus,\n    > .form-floating:focus-within {\n      z-index: 5;\n    }\n\n    // Ensure buttons are always above inputs for more visually pleasing borders.\n    // This isn't needed for `.input-group-text` since it shares the same border-color\n    // as our inputs.\n    > .input-group-btn {\n      position: relative;\n      z-index: 2;\n\n      &:focus {\n        z-index: 5;\n      }\n    }\n  }\n\n  // Textual addons\n  //\n  // Serves as a catch-all element for any text or radio/checkbox input you wish\n  // to prepend or append to an input.\n\n  .input-group-text {\n    display: flex;\n    align-items: center;\n    padding: var(--input-group-addon-padding-y) var(--input-group-addon-padding-x);\n    font-size: var(--input-group-addon-font-size); // Match inputs\n    // font-weight: $input-group-addon-font-weight;\n    line-height: var(--input-group-addon-line-height);\n    color: var(--input-group-addon-color);\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--input-group-addon-bg);\n    border: var(--border-width) solid var(--input-group-addon-border-color);\n    @include border-radius(var(--btn-input-border-radius));\n  }\n\n  // Sizing\n  //\n  // Remix the default form control sizing classes into new ones for easier\n  // manipulation.\n\n  @each $size, $_ in $input-group-sizes {\n    .input-group-#{$size} {\n      > .form-control,\n      > .input-group-text,\n      > .btn {\n        min-height: var(--btn-input-#{$size}-min-height);\n        padding: var(--btn-input-#{$size}-padding-y) var(--btn-input-#{$size}-padding-x);\n        font-size: var(--btn-input-#{$size}-font-size);\n        @include border-radius(var(--btn-input-#{$size}-border-radius));\n      }\n    }\n  }\n\n  // Rounded corners\n  //\n  // These rulesets must come after the sizing ones to properly override sm and lg\n  // border-radius values when extending. They're more specific than we'd like\n  // with the `.input-group >` part, but without it, we cannot override the sizing.\n\n  // stylelint-disable-next-line no-duplicate-selectors\n  .input-group {\n    > :not(:last-child, .menu-toggle-split, .menu, .input-group-ignore, .form-floating, :has(+ :is(.menu, .input-group-ignore):last-child)),\n    > .menu-toggle-split:nth-last-child(n + 3),\n    > .form-floating:not(:last-child) > .form-control,\n    > .form-floating:not(:last-child) > .form-select {\n      @include border-end-radius(0);\n    }\n\n    > :not(:first-child, .menu, .input-group-ignore) {\n      margin-inline-start: calc(-1 * var(--border-width));\n      @include border-start-radius(0);\n    }\n\n    > :first-child:is(.input-group-ignore) + :not(.menu, .input-group-ignore) {\n      @include border-start-radius(var(--btn-input-border-radius));\n    }\n\n    > .form-floating:not(:first-child) > .form-control,\n    > .form-floating:not(:first-child) > .form-select {\n      @include border-start-radius(0);\n    }\n  }\n}\n","@use \"sass:list\";\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$strength-tokens: () !default;\n\n// scss-docs-start strength-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$strength-tokens: defaults(\n  (\n    --strength-height: .375rem,\n    --strength-gap: .25rem,\n    --strength-margin-top: .25rem,\n    --strength-border-radius: var(--radius-pill),\n    --strength-bg: var(--bg-2),\n    --strength-color: var(--bg-2),\n    --strength-weak-color: var(--danger-bg),\n    --strength-fair-color: var(--warning-bg),\n    --strength-good-color: var(--info-bg),\n    --strength-strong-color: var(--success-bg),\n  ),\n  $strength-tokens\n);\n// scss-docs-end strength-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start strength-levels\n$strength-levels: weak, fair, good, strong !default;\n// scss-docs-end strength-levels\n\n$strength-transition: background-color .2s ease-in-out, width .3s ease-in-out !default;\n\n@layer forms {\n  // Strength meter container\n  .strength {\n    @include tokens($strength-tokens);\n\n    display: flex;\n    gap: var(--strength-gap);\n    width: 100%;\n    margin-top: var(--strength-margin-top);\n  }\n\n  // Individual strength segments\n  .strength-segment {\n    flex: 1;\n    height: var(--strength-height);\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n    @include transition($strength-transition);\n\n    // Filled state\n    &.active {\n      background-color: var(--strength-color);\n    }\n  }\n\n  @each $level in $strength-levels {\n    .strength[data-bs-strength=\"#{$level}\"] {\n      --strength-color: var(--strength-#{$level}-color);\n    }\n  }\n  // Optional text feedback\n  .strength-text {\n    display: block;\n    margin-top: var(--strength-margin-top);\n    font-size: var(--font-size-xs);\n    color: var(--strength-color, var(--fg-3));\n    @include transition(color .2s ease-in-out);\n\n    // Hide when empty\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Alternative: Single bar variant (like a progress bar)\n  .strength-bar {\n    @include tokens($strength-tokens);\n\n    --strength-color: transparent;\n    --strength-width: 0%;\n\n    width: 100%;\n    height: var(--strength-height);\n    margin-top: var(--strength-margin-top);\n    overflow: hidden;\n    background-color: var(--strength-bg);\n    @include border-radius(var(--strength-border-radius));\n\n    &::after {\n      display: block;\n      width: var(--strength-width);\n      height: 100%;\n      content: \"\";\n      background-color: var(--strength-color);\n      @include border-radius(var(--strength-border-radius));\n      @include transition($strength-transition);\n    }\n\n    @each $level in $strength-levels {\n      &[data-bs-strength=\"#{$level}\"] {\n        --strength-color: var(--strength-#{$level}-color);\n        --strength-width: #{list.index($strength-levels, $level) * 25%};\n      }\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n$otp-tokens: () !default;\n\n// scss-docs-start otp-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-tokens: defaults(\n  (\n    --otp-size: var(--btn-input-lg-min-height),\n    --otp-font-size: var(--btn-input-font-size),\n    --otp-gap: .5rem,\n    --otp-slot-fg: var(--btn-input-fg),\n    --otp-slot-bg: var(--btn-input-bg),\n    --otp-slot-border-width: var(--border-width),\n    --otp-slot-border-color: var(--border-color),\n    --otp-slot-border-radius: var(--radius-5),\n  ),\n  $otp-tokens\n);\n// scss-docs-end otp-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start otp-sizes\n$otp-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$otp-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $otp-sizes\n);\n// scss-docs-end otp-sizes\n\n@layer components {\n  .otp {\n    @include tokens($otp-tokens);\n\n    position: relative;\n    display: flex;\n  }\n\n  // A single real input backs the whole control. Once the JS renders the\n  // visual slots (`.otp-rendered`), the input becomes a transparent overlay\n  // that captures all interaction while the slots display the value.\n  .otp-rendered .otp-input {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    padding: 0;\n    color: transparent;\n    // The input sits on top and receives taps itself, so a touch focuses it\n    // natively (raising the on-screen keyboard via a genuine user gesture).\n    // The JS maps the tap's position to a slot and sets the caret.\n    pointer-events: auto;\n    cursor: default;\n    caret-color: transparent;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    box-shadow: none;\n\n    // Never reveal the underlying characters, even on selection\n    &::selection {\n      color: transparent;\n      background-color: transparent;\n    }\n  }\n\n  .otp-slots {\n    display: inline-flex;\n    gap: var(--otp-gap);\n    pointer-events: none; // purely visual; the overlaid input handles interaction\n  }\n\n  .otp-slot {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--otp-size);\n    min-height: var(--otp-size);\n    font-size: var(--otp-font-size);\n    font-weight: 500;\n    line-height: 1;\n    color: var(--otp-slot-fg);\n    user-select: none; // decorative cells; the real input handles selection\n    background-color: var(--otp-slot-bg);\n    border: var(--otp-slot-border-width) solid var(--otp-slot-border-color);\n    @include border-radius(var(--otp-slot-border-radius));\n    @include box-shadow(var(--box-shadow-inset));\n    @include transition(border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n  }\n\n  // The slot at the caret gets the focus ring; empty active slots show a\n  // blinking caret so the entry point is obvious.\n  .otp-slot-active {\n    --focus-ring-offset: -1px;\n    z-index: 1;\n    @include focus-ring(true);\n\n    &:not(.otp-slot-filled)::after {\n      width: 1px;\n      height: 50%;\n      content: \"\";\n      background-color: var(--otp-slot-fg);\n      animation: otp-caret-blink 1s step-end infinite;\n    }\n  }\n\n  // Disabled state mirrors disabled form controls\n  .otp-input:disabled ~ .otp-slots .otp-slot {\n    background-color: var(--bg-2);\n  }\n\n  // Connected slots share borders for a single cohesive field\n  .otp-connected .otp-slots {\n    gap: 0;\n  }\n  .otp-connected .otp-slot {\n    border-radius: 0; // stylelint-disable-line property-disallowed-list\n\n    &:not(:first-child) {\n      margin-inline-start: calc(var(--otp-slot-border-width) * -1);\n    }\n    &:first-child {\n      @include border-start-radius(var(--otp-slot-border-radius));\n    }\n    &:last-child {\n      @include border-end-radius(var(--otp-slot-border-radius));\n    }\n  }\n\n  .otp-separator {\n    display: flex;\n    align-items: center;\n    padding-inline: var(--otp-gap);\n    font-size: var(--otp-font-size);\n    color: var(--fg-4);\n    user-select: none;\n  }\n\n  // OTP input sizing — keep in sync with `$form-control-sizes`.\n  @each $size, $_ in $otp-sizes {\n    .otp-#{$size} {\n      --otp-size: var(--btn-input-#{$size}-min-height);\n      --otp-font-size: var(--btn-input-#{$size}-font-size);\n    }\n  }\n}\n\n@keyframes otp-caret-blink {\n  0%,\n  100% {\n    opacity: 1;\n  }\n  50% {\n    opacity: 0;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$form-adorn-tokens: () !default;\n\n// scss-docs-start form-adorn-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$form-adorn-tokens: defaults(\n  (\n    --form-adorn-gap: .375rem,\n    --form-adorn-icon-size: 1rem,\n    --form-adorn-icon-color: var(--fg-2),\n  ),\n  $form-adorn-tokens\n);\n// scss-docs-end form-adorn-tokens\n\n@layer forms {\n  .form-adorn {\n    @include tokens($form-adorn-tokens);\n\n    gap: var(--form-adorn-gap);\n    align-items: center;\n\n    // Prevent default `.form-control` focus\n    &:focus-visible {\n      outline: 0;\n    }\n\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1;\n      min-width: 0; // Prevent text overflow\n    }\n\n    &.form-adorn-end > .form-ghost {\n      order: -1;\n    }\n  }\n\n  .form-adorn-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n\n    > svg {\n      width: var(--form-adorn-icon-size);\n      height: var(--form-adorn-icon-size);\n    }\n  }\n\n  .form-adorn-text {\n    flex-shrink: 0;\n    color: var(--form-adorn-icon-color);\n    pointer-events: none;\n    user-select: none;\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n\n$chip-input-tokens: () !default;\n\n// scss-docs-start chip-input-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-input-tokens: defaults(\n  (\n    --chip-input-padding-y: .75rem,\n    --chip-input-padding-x: .75rem,\n    --chip-input-gap: .375rem,\n    --chip-input-ghost-min-width: 5rem,\n    --control-fg: var(--btn-input-fg),\n    --control-bg: var(--btn-input-bg),\n    --control-border-width: var(--border-width),\n    --control-border-color: var(--border-color),\n    --control-border-radius: var(--radius-5),\n  ),\n  $chip-input-tokens\n);\n// scss-docs-end chip-input-tokens\n\n@layer forms {\n  .chip-input {\n    @include tokens($chip-input-tokens);\n\n    // Flexbox wrapping layout\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--chip-input-gap);\n    align-items: center;\n    padding: var(--chip-input-padding-y) var(--chip-input-padding-x);\n\n    color: var(--control-fg);\n    background-color: var(--control-bg);\n    border: var(--control-border-width) solid var(--control-border-color);\n    @include border-radius(var(--control-border-radius), 0);\n\n    // Focus state when ghost input is focused\n    &:focus-within {\n      --focus-ring-offset: -1px;\n      border-color: var(--focus-ring-color);\n      @include focus-ring(true);\n    }\n\n    // Ghost input fills remaining space\n    > .form-ghost {\n      flex: 1 1 0;\n      min-width: var(--chip-input-ghost-min-width);\n      min-height: 1.75rem;\n    }\n\n    // Disabled state\n    &.disabled,\n    &:has(.form-ghost:disabled) {\n      cursor: not-allowed;\n      background-color: var(--bg-2);\n      opacity: 1;\n\n      &:focus-within {\n        border-color: var(--control-border-color);\n        outline: 0;\n      }\n\n      > .chip {\n        pointer-events: none;\n        opacity: var(--control-disabled-opacity);\n      }\n    }\n  }\n}\n","@use \"../mixins/transition\" as *;\n\n@layer components {\n  .combobox-toggle {\n    display: inline-flex;\n    gap: .5rem;\n    align-items: center;\n    justify-content: space-between;\n    width: 100%;\n    padding-inline-end: var(--control-padding-x);\n    text-align: start;\n    cursor: pointer;\n\n    &.show {\n      background-color: var(--bg-1);\n    }\n\n    &:disabled,\n    &.disabled {\n      cursor: not-allowed;\n      opacity: .65;\n    }\n  }\n\n  .combobox-value {\n    display: flex;\n    flex: 1;\n    gap: .5rem;\n    align-items: center;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n\n  .combobox-placeholder {\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .combobox-caret {\n    flex-shrink: 0;\n    @include transition(transform .2s ease-in-out);\n\n    .show > & {\n      transform: rotate(180deg);\n    }\n  }\n\n  .combobox-toggle + .menu {\n    --menu-max-height: 300px;\n    --menu-overflow-y: auto;\n  }\n\n  .combobox-search {\n    position: sticky;\n    top: 0;\n    z-index: 1;\n    padding: var(--menu-padding-x, .25rem);\n    background-color: var(--menu-bg, var(--bg-body));\n  }\n\n  .combobox-search-input {\n    width: 100%;\n  }\n\n  .combobox-no-results {\n    padding: 1rem;\n    font-size: var(--font-size-sm);\n    color: var(--fg-3);\n    text-align: center;\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n// scss-docs-start form-field\n@layer forms {\n  .form-field {\n    position: relative;\n    display: grid;\n    gap: .5rem;\n    // width: 100%;\n\n    > label,\n    > .form-label {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n\n    &:has(> .check, > .radio, > .switch) {\n      grid-template-columns: auto 1fr;\n      column-gap: .5rem;\n      align-items: start;\n\n      > .check,\n      > .radio,\n      > .switch {\n        grid-column: 1;\n      }\n\n      > :not(.check, .radio, .switch) {\n        grid-column: 2;\n      }\n\n      > .form-label {\n        grid-column: 1 / -1;\n      }\n    }\n  }\n\n  .form-field-content {\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n  }\n\n  .form-field-card {\n    position: relative;\n    padding: calc(var(--spacer) * .75);\n    cursor: pointer;\n    border: var(--border-width) solid transparent;\n    @include border-radius(var(--radius-7));\n\n    &:hover {\n      background-color: var(--bg-1);\n    }\n\n    &:has(:checked) {\n      background-color: var(--bg-1);\n      border-color: var(--border-color);\n    }\n\n    label::before {\n      position: absolute;\n      inset: 0;\n      content: \"\";\n    }\n  }\n\n  .form-group {\n    display: grid;\n    gap: .5rem;\n\n    > label,\n    > .form-label,\n    > legend {\n      justify-self: start;\n      margin-bottom: 0;\n    }\n  }\n}\n// scss-docs-end form-field\n","@use \"../config\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/form-validation\" as *;\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid.\n// Server-side: `.is-invalid` / `.is-valid` classes work globally.\n// Client-side: `:user-invalid` pseudo-class is scoped behind `[data-bs-validate]`.\n// `:user-valid` is scoped behind `[data-bs-validate~=\"valid\"]` so success styling is opt-in.\n// Custom states (e.g., \"warning\") use only `.is-*` classes.\n\n// scss-docs-start form-validation-states\n$validation-states: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$validation-states: defaults(\n  (\n    \"valid\": \"success\",\n    \"invalid\": \"danger\",\n  ),\n  $validation-states\n);\n// scss-docs-end form-validation-states\n\n// scss-docs-start form-validation-state-mixin\n@mixin form-validation-state($state, $theme) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    font-size: var(--font-size-sm);\n    color: var(--#{$theme}-fg);\n  }\n\n  // More specific to override base tooltip styles\n  .tooltip.#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%;\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    margin-top: .1rem;\n    color: var(--#{$theme}-contrast);\n    text-align: center;\n    background-color: var(--#{$theme}-bg);\n    opacity: 1;\n    @include border-radius(var(--tooltip-border-radius));\n  }\n\n  // Generic sibling feedback display — works for .form-control, .form-range,\n  // and any element where feedback is a direct sibling.\n  @include form-validation-state-selector($state) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip {\n      display: block;\n    }\n  }\n\n  // Form control\n  .form-control {\n    @include form-validation-state-selector($state) {\n      --control-border-color: var(--#{$theme}-border);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        --control-border-color: var(--#{$theme}-border);\n      }\n    }\n  }\n\n  // Checkbox — control-level styling (border, checked bg, focus ring).\n  .check {\n    @include form-validation-state-selector($state) {\n      --check-border-color: var(--#{$theme}-border);\n      --check-checked-bg: var(--#{$theme}-bg);\n      --check-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Checkbox — label color and feedback display via .form-field:has().\n  .form-field:has(.check.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.check:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.check:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Radio — control-level styling.\n  .radio {\n    @include form-validation-state-selector($state) {\n      --radio-border-color: var(--#{$theme}-border);\n      --radio-checked-bg: var(--#{$theme}-bg);\n      --radio-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-visible {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Radio — label color and feedback display via .form-field:has().\n  .form-field:has(.radio.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.radio:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.radio:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Switch — control-level styling. The input is an invisible overlay;\n  // all visuals are on the .switch wrapper.\n  .switch:has(input.is-#{$state}) {\n    --switch-border-color: var(--#{$theme}-border);\n    --switch-checked-bg: var(--#{$theme}-bg);\n    --switch-checked-border-color: var(--#{$theme}-bg);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n    }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .switch:has(input:user-invalid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .switch:has(input:user-valid) {\n      --switch-border-color: var(--#{$theme}-border);\n      --switch-checked-bg: var(--#{$theme}-bg);\n      --switch-checked-border-color: var(--#{$theme}-bg);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n\n  // Switch — label color and feedback display via .form-field:has().\n  .form-field:has(.switch input.is-#{$state}) {\n    label { color: var(--#{$theme}-fg); }\n\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.switch input:user-invalid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.switch input:user-valid) {\n      label { color: var(--#{$theme}-fg); }\n\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  // Chip input — wrapper has the visible border; the .form-ghost inside\n  // receives the native pseudo-class.\n  .chip-input:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .chip-input:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .chip-input:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Form adorn — :user-invalid fires on the inner .form-ghost, so we\n  // propagate it to the visible wrapper with :has().\n  .form-adorn:has(.form-ghost.is-#{$state}) {\n    border-color: var(--#{$theme}-border);\n\n    &:focus-within {\n      @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      border-color: var(--#{$theme}-border);\n    }\n\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-adorn:has(.form-ghost:user-invalid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .invalid-feedback,\n      ~ .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-adorn:has(.form-ghost:user-valid) {\n      border-color: var(--#{$theme}-border);\n\n      &:focus-within {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        border-color: var(--#{$theme}-border);\n      }\n\n      ~ .valid-feedback,\n      ~ .valid-tooltip { display: block; }\n    }\n  }\n\n  // Range — the validation class lives on .form-range-input, while feedback sits outside\n  // the .form-range wrapper, so we use :has() to toggle it.\n  .form-range-input {\n    @include form-validation-state-selector($state) {\n      &::-webkit-slider-thumb { background: var(--#{$theme}-bg); }\n      &::-moz-range-thumb { background: var(--#{$theme}-bg); }\n\n      &:focus-visible {\n        &::-webkit-slider-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n        &::-moz-range-thumb {\n          @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n        }\n      }\n    }\n  }\n\n  .form-range:has(.form-range-input.is-#{$state}) {\n    ~ .#{$state}-feedback,\n    ~ .#{$state}-tooltip { display: block; }\n  }\n\n  // Input group — feedback lives outside the input-group in the parent\n  // .form-field, so we use :has() to toggle display.\n  .form-field:has(.input-group .form-control.is-#{$state}) {\n    .#{$state}-feedback,\n    .#{$state}-tooltip { display: block; }\n  }\n\n  @if $state == \"invalid\" {\n    [data-bs-validate] .form-field:has(.input-group .form-control:user-invalid) {\n      .invalid-feedback,\n      .invalid-tooltip { display: block; }\n    }\n  } @else if $state == \"valid\" {\n    [data-bs-validate~=\"valid\"] .form-field:has(.input-group .form-control:user-valid) {\n      .valid-feedback,\n      .valid-tooltip { display: block; }\n    }\n  }\n\n  .input-group {\n    > .form-control:not(:focus),\n    > .form-floating:not(:focus-within) {\n      @include form-validation-state-selector($state) {\n        @if $state == \"valid\" {\n          z-index: 3;\n        } @else if $state == \"invalid\" {\n          z-index: 4;\n        }\n      }\n    }\n  }\n\n  // OTP — validation applies to the wrapper; the visual slots inherit the state.\n  .otp {\n    @include form-validation-state-selector($state) {\n      .otp-slot {\n        --otp-slot-border-color: var(--#{$theme}-border);\n      }\n\n      .otp-slot-active {\n        @include focus-ring(true, $color: var(--#{$theme}-focus-ring));\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-mixin\n\n@layer components {\n  // scss-docs-start form-validation-states-loop\n  @each $state, $theme in $validation-states {\n    @include form-validation-state($state, $theme);\n  }\n  // scss-docs-end form-validation-states-loop\n}\n","// scss-docs-start form-validation-state-selector\n@mixin form-validation-state-selector($state) {\n  @if & {\n    &.is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      @at-root [data-bs-validate] #{&}:user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      @at-root [data-bs-validate~=\"valid\"] #{&}:user-valid {\n        @content;\n      }\n    }\n  } @else {\n    .is-#{$state} {\n      @content;\n    }\n\n    @if $state == \"invalid\" {\n      [data-bs-validate] :user-invalid {\n        @content;\n      }\n    } @else if $state == \"valid\" {\n      [data-bs-validate~=\"valid\"] :user-valid {\n        @content;\n      }\n    }\n  }\n}\n// scss-docs-end form-validation-state-selector\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"sass:string\";\n@use \"../config\" as *;\n@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/box-shadow\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/tokens\" as *;\n@use \"../mixins/transition\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n$button-tokens: () !default;\n\n// scss-docs-start btn-tokens\n$button-tokens: defaults(\n  (\n    --btn-min-height: var(--btn-input-min-height),\n    --btn-padding-x: var(--btn-input-padding-x),\n    --btn-padding-y: var(--btn-input-padding-y),\n    --btn-font-size: var(--btn-input-font-size),\n    --btn-font-weight: var(--btn-input-font-weight),\n    --btn-line-height: var(--btn-input-line-height),\n    --btn-color: var(--fg-body),\n    --btn-white-space: nowrap,\n    --btn-border-width: var(--border-width),\n    --btn-border-color: transparent,\n    --btn-border-radius: var(--radius-5),\n    --btn-hover-border-color: transparent,\n    --btn-disabled-opacity: .65,\n    --btn-transition-timing: .15s ease-in-out,\n    --btn-transition-property: \"color, background-color, border-color, box-shadow\",\n    --btn-transition: var(--btn-transition-property) var(--btn-transition-timing),\n  ),\n  $button-tokens\n);\n// scss-docs-end btn-tokens\n\n$button-link-tokens: () !default;\n\n// scss-docs-start button-link-tokens\n$button-link-tokens: defaults(\n  (\n    --btn-font-weight: var(--font-weight-normal),\n    --btn-color: var(--link-color),\n    --btn-bg: transparent,\n    --btn-border-color: transparent,\n    --btn-hover-color: var(--link-hover-color),\n    --btn-hover-bg: transparent,\n    --btn-hover-border-color: transparent,\n    --btn-active-color: var(--link-hover-color),\n    --btn-active-bg: transparent,\n    --btn-active-border-color: transparent,\n    --btn-disabled-color: var(--fg-3),\n    --btn-disabled-border-color: transparent,\n  ),\n  $button-link-tokens\n);\n// scss-docs-end button-link-tokens\n\n$button-styled-tokens: () !default;\n\n// scss-docs-start button-styled-tokens\n$button-styled-tokens: defaults(\n  (\n    --btn-gradient-start: rgb(255 255 255 / 12.5%),\n    --btn-gradient-end: rgb(0 0 0 / 7.5%) ,\n    --btn-border-mix-color: #000,\n    --btn-border-mix-amount: 10%,\n    --btn-border-hover-mix-amount: 12.5%,\n    --btn-border-active-mix-amount: 20%,\n    --btn-shadow: \"0 1px 2px rgb(0 0 0 / 15%), inset 0 1px 0 rgb(255 255 255 / 10%)\",\n    --btn-active-shadow: inset 0 2px 4px rgb(0 0 0 / .15) ,\n  ),\n  $button-styled-tokens\n);\n// scss-docs-end button-styled-tokens\n\n// scss-docs-start button-sizes\n$button-sizes: () !default;\n$button-sizes: defaults(\n  (\"xs\", \"sm\", \"lg\"),\n  $button-sizes\n);\n// scss-docs-end button-sizes\n\n$button-variants: () !default;\n\n// scss-docs-start btn-variants\n$button-variants: defaults(\n  (\n    \"solid\": (\n      \"base\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"border-color\": \"bg\",\n        \"color\": \"contrast\"\n      )\n    ),\n    \"outline\": (\n      \"base\": (\n        \"bg\": \"transparent\",\n        \"color\": \"fg\",\n        \"border-color\": \"border\"\n      ),\n      \"hover\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      ),\n      \"active\": (\n        \"bg\": \"bg\",\n        \"color\": \"contrast\",\n        \"border-color\": \"bg\"\n      )\n    ),\n    \"subtle\": (\n      \"base\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"bg\": (\"bg-muted\", \"bg-subtle\"),\n        \"color\": \"fg-emphasis\"\n      ),\n      \"active\": (\n        \"bg\": \"bg-subtle\",\n        \"color\": \"fg-emphasis\"\n      )\n    ),\n    \"text\": (\n      \"base\": (\n        \"color\": \"fg\",\n        \"bg\": \"transparent\",\n        \"border-color\": \"transparent\"\n      ),\n      \"hover\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      ),\n      \"active\": (\n        \"color\": \"fg\",\n        \"bg\": \"bg-subtle\"\n      )\n    )\n  ),\n  $button-variants\n);\n// scss-docs-end btn-variants\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n//\n// Base styles\n//\n\n// scss-docs-start btn-variant-selectors\n$btn-variant-selectors: (string.unquote(\".btn\"), string.unquote(\".btn-link\"), string.unquote(\".btn-icon\")) !default;\n@each $variant, $config in $button-variants {\n  $btn-variant-selectors: list.append($btn-variant-selectors, string.unquote(\".btn-#{$variant}\"), comma);\n}\n// scss-docs-end btn-variant-selectors\n\n@layer components {\n  #{$btn-variant-selectors} {\n    @include tokens($button-tokens);\n\n    display: inline-flex;\n    gap: var(--btn-gap, .25rem);\n    align-items: center;\n    justify-content: center;\n    min-height: var(--btn-min-height);\n    padding: var(--btn-padding-y) var(--btn-padding-x);\n    // font-family: var(--btn-font-family);\n    font-size: var(--btn-font-size);\n    font-weight: var(--btn-font-weight);\n    line-height: var(--btn-line-height);\n    color: var(--btn-color);\n    text-decoration: none;\n    white-space: var(--btn-white-space);\n    vertical-align: middle;\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    cursor: if(sass($enable-button-pointers): pointer; else: null);\n    user-select: none;\n    background-color: var(--btn-bg, var(--bg-2));\n    border: var(--btn-border-width) solid var(--btn-border-color);\n    @include border-radius(var(--btn-border-radius));\n    @include transition(var(--btn-transition));\n\n    &:hover {\n      color: var(--btn-hover-color);\n      background-color: var(--btn-hover-bg, var(--bg-3));\n      border-color: var(--btn-hover-border-color);\n    }\n\n    &:focus-visible {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &.active,\n    &.show {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      border-color: var(--btn-active-border-color);\n\n      &:focus-visible {\n        @include focus-ring(true);\n      }\n    }\n\n    &:disabled,\n    &.disabled,\n    fieldset:disabled & {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n    }\n  }\n\n  // Main button style generator mixin\n  // Generate button variant classes (e.g., .btn-solid, .btn-outline, etc.)\n  // scss-docs-start btn-variant-mixin\n  @each $variant, $config in $button-variants {\n    .btn-#{$variant} {\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-#{$property}: transparent;\n        } @else {\n          --btn-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      @each $property, $value in map.get($button-variants, $variant, \"active\") {\n        @if $value == \"transparent\" {\n          --btn-active-#{$property}: transparent;\n        } @else if $value == \"bg-subtle\" {\n          --btn-active-#{$property}: var(--theme-#{$value});\n        } @else {\n          --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n        }\n      }\n      @each $property, $value in map.get($button-variants, $variant, \"base\") {\n        @if $value == \"transparent\" {\n          --btn-disabled-#{$property}: transparent;\n        } @else {\n          --btn-disabled-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      &:hover {\n        @each $property, $value in map.get($button-variants, $variant, \"hover\") {\n          @if $value == \"transparent\" {\n            --btn-hover-#{$property}: transparent;\n          } @else if meta.type-of($value) == \"list\" {\n            $first-value: list.nth($value, 1);\n            $second-value: list.nth($value, 2);\n            --btn-hover-#{$property}: color-mix(in oklch, var(--theme-#{$first-value}) 50%, var(--theme-#{$second-value}));\n          } @else if $value == \"bg-subtle\" {\n            --btn-hover-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-hover-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .95) calc(c * 1.1) h);\n          }\n        }\n      }\n\n      &:focus-visible {\n        outline-color: var(--theme-focus-ring);\n      }\n\n      &:active,\n      &.active,\n      &.btn-check:has(input:checked) {\n        @each $property, $value in map.get($button-variants, $variant, \"active\") {\n          @if $value == \"transparent\" {\n            --btn-active-#{$property}: transparent;\n          } @else if $value == \"bg-subtle\" {\n            --btn-active-#{$property}: var(--theme-#{$value});\n          } @else {\n            --btn-active-#{$property}: oklch(from var(--theme-#{$value}) calc(l * .9) calc(c * 1.15) h);\n          }\n        }\n      }\n\n      // Disabled state for toggle buttons\n      &:disabled,\n      &.disabled,\n      &.btn-check:has(input:disabled) {\n        @each $property, $value in map.get($button-variants, $variant, \"base\") {\n          @if $value == \"transparent\" {\n            --btn-disabled-#{$property}: transparent;\n          } @else {\n            --btn-disabled-#{$property}: var(--theme-#{$value});\n          }\n        }\n      }\n    }\n  }\n  // scss-docs-end btn-variant-mixin\n\n  //\n  // Link buttons\n  //\n\n  // Make a button look and behave like a link\n  .btn-link {\n    @include tokens($button-link-tokens);\n\n    color: var(--theme-fg, var(--btn-color));\n    text-decoration: var(--link-decoration);\n\n    @if $enable-gradients {\n      background-image: none;\n    }\n\n    &:focus-visible {\n      color: var(--theme-fg, var(--btn-color));\n    }\n\n    &:hover {\n      color: var(--theme-fg-emphasis, var(--btn-hover-color));\n    }\n\n    // No need for an active state here\n  }\n\n  //\n  // Button Sizes\n  //\n\n  // Generate button size classes from the $button-sizes map\n  // Skip \"md\" as it's the default size for .btn\n\n  // scss-docs-start btn-sizes-loop\n  @each $size, $_ in $button-sizes {\n    .btn-#{$size},\n    .btn-group-#{$size} > [class*=\"btn-\"] {\n      --btn-min-height: var(--btn-input-#{$size}-min-height);\n      --btn-padding-y: var(--btn-input-#{$size}-padding-y);\n      --btn-padding-x: var(--btn-input-#{$size}-padding-x);\n      --btn-font-size: var(--btn-input-#{$size}-font-size);\n      --btn-line-height: var(--btn-input-#{$size}-line-height);\n      --btn-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end btn-sizes-loop\n\n  .btn-icon {\n    align-items: center;\n    justify-content: center;\n    aspect-ratio: 1;\n    padding: 0;\n  }\n\n  //\n  // Toggle buttons (.btn-check)\n  //\n  // Checkbox and radio inputs that look like buttons. Add .btn-check to a\n  // label with button classes, with the input nested inside.\n  //\n  // Example: <label class=\"btn-check btn-solid theme-primary\"><input type=\"checkbox\">Toggle</label>\n\n  .btn-check {\n    > input {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n\n    &:has(input:checked) {\n      color: var(--btn-active-color);\n      background-color: var(--btn-active-bg, var(--bg-3));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-active-border-color);\n      @include box-shadow(var(--btn-active-shadow));\n    }\n\n    &:has(input:focus-visible) {\n      @include focus-ring(true);\n      --focus-ring-offset: 1px;\n    }\n\n    &:has(input:disabled) {\n      color: var(--btn-disabled-color);\n      pointer-events: none;\n      background-color: var(--btn-disabled-bg, var(--bg-1));\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n      border-color: var(--btn-disabled-border-color);\n      opacity: var(--btn-disabled-opacity);\n      @include box-shadow(none);\n    }\n  }\n\n  //\n  // Styled buttons\n  //\n  // Add visual depth with gradients and shadows. Customize via CSS variables.\n\n  .btn-styled {\n    @include tokens($button-styled-tokens);\n\n    background-image:\n      linear-gradient(\n        to bottom,\n        var(--btn-gradient-start),\n        var(--btn-gradient-end)\n      );\n    border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-mix-amount));\n    box-shadow: var(--btn-shadow);\n\n    &:hover {\n      background-image:\n        linear-gradient(\n          to bottom,\n          var(--btn-gradient-start),\n          var(--btn-gradient-end)\n        );\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-hover-mix-amount));\n    }\n\n    &:active,\n    &.active {\n      background-image: none;\n      border-color: color-mix(in lab, var(--theme-bg), var(--btn-border-mix-color) var(--btn-border-active-mix-amount));\n      box-shadow: var(--btn-active-shadow);\n    }\n\n    &:disabled,\n    &.disabled {\n      background-image: none;\n      box-shadow: none;\n    }\n  }\n}\n","@use \"../mixins/border-radius\" as *;\n\n@layer components {\n  // Make the div behave like a button\n  .btn-group,\n  .btn-group-vertical {\n    position: relative;\n    display: inline-flex;\n    vertical-align: middle; // match .btn alignment given font-size hack above\n\n    > [class*=\"btn-\"] {\n      position: relative;\n      flex: 1 1 auto;\n\n      &:hover {\n        z-index: 1;\n      }\n    }\n\n    > .btn-check:has(input:checked),\n    > [class*=\"btn-\"]:active,\n    > [class*=\"btn-\"].active {\n      z-index: 2;\n    }\n\n    > .btn-check:has(input:focus),\n    > [class*=\"btn-\"]:focus {\n      z-index: 3;\n    }\n  }\n\n  .btn-group-divider {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        position: absolute;\n        // top: 25%;\n        // bottom: 25%;\n        // left: calc(var(--btn-border-width) * -1);\n        z-index: 3;\n        // width: var(--btn-border-width);\n        content: \"\";\n        background-color: var(--btn-color);\n        opacity: .25;\n      }\n    }\n  }\n\n  .btn-group:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: 25%;\n        bottom: 25%;\n        left: calc(var(--btn-border-width) * -1);\n        width: var(--btn-border-width);\n      }\n    }\n  }\n\n  .btn-group-vertical:where(.btn-group-divider) {\n    > [class*=\"btn-\"] + [class*=\"btn-\"] {\n      &::before {\n        top: calc(var(--btn-border-width) * -1);\n        right: var(--btn-padding-x);\n        left: var(--btn-padding-x);\n        height: var(--btn-border-width);\n      }\n    }\n  }\n\n  // Optional: Group multiple button groups together for a toolbar\n  .btn-toolbar {\n    display: flex;\n    flex-wrap: wrap;\n    gap: .5rem;\n    justify-content: flex-start;\n\n    .input-group {\n      width: auto;\n    }\n  }\n\n  .btn-group {\n    @include border-radius(var(--btn-border-radius));\n\n    // Prevent double borders when buttons are next to each other\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-inline-start: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child, :has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-end-radius(0);\n    }\n\n    // The left radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-start-radius(0);\n    }\n  }\n\n  //\n  // Vertical button groups\n  //\n\n  .btn-group-vertical {\n    flex-direction: column;\n    align-items: flex-start;\n    justify-content: center;\n\n    > [class*=\"btn-\"],\n    > .btn-group {\n      width: 100%;\n    }\n\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) {\n      margin-top: calc(-1 * var(--btn-border-width));\n    }\n\n    // Reset rounded corners\n    > [class*=\"btn-\"]:not(:last-child, :has(+ .menu)),\n    > .btn-group:not(:last-child) > [class*=\"btn-\"] {\n      @include border-bottom-radius(0);\n    }\n\n    // The top radius should be 0 if the button is not the first child\n    > [class*=\"btn-\"]:not(:first-child),\n    > .btn-group:not(:first-child) > [class*=\"btn-\"] {\n      @include border-top-radius(0);\n    }\n  }\n}\n","@use \"../functions\" as *;\n@use \"../mixins/border-radius\" as *;\n@use \"../mixins/focus-ring\" as *;\n@use \"../mixins/mask-icon\" as *;\n@use \"../mixins/tokens\" as *;\n\n$btn-close-tokens: () !default;\n\n// scss-docs-start btn-close-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$btn-close-tokens: defaults(\n  (\n    --btn-close-size: 1.5rem,\n    --btn-close-color: inherit,\n    --btn-close-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M12 0a4 4 0 0 1 4 4v8a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4zm-.646 4.646a.5.5 0 0 0-.707 0L8 7.293 5.354 4.646a.5.5 0 1 0-.708.708L7.293 8l-2.647 2.647a.5.5 0 1 0 .708.707L8 8.707l2.647 2.646a.5.5 0 1 0 .707-.707L8.707 8l2.646-2.646a.5.5 0 0 0 0-.708z'/></svg>\"))},\n    --btn-close-opacity: .5,\n    --btn-close-hover-opacity: .75,\n    --btn-close-focus-opacity: .85,\n    --btn-close-disabled-opacity: .25,\n  ),\n  $btn-close-tokens\n);\n// scss-docs-end btn-close-tokens\n\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n@layer components {\n  .btn-close {\n    @include tokens($btn-close-tokens);\n\n    box-sizing: content-box;\n    min-width: var(--btn-close-size);\n    min-height: var(--btn-close-size);\n    padding: 0;\n    color: var(--btn-close-color);\n    background-color: currentcolor;\n    border: 0; // for button elements\n    @include border-radius(var(--radius-5));\n    opacity: var(--btn-close-opacity);\n    @include mask-icon(var(--btn-close-icon));\n\n    // Override <a>'s hover style\n    &:hover {\n      color: var(--btn-close-color);\n      text-decoration: none;\n      opacity: var(--btn-close-hover-opacity);\n    }\n\n    &:focus-visible {\n      opacity: var(--btn-close-focus-opacity);\n      @include focus-ring();\n    }\n\n    &:disabled,\n    &.disabled {\n      pointer-events: none;\n      user-select: none;\n      opacity: var(--btn-close-disabled-opacity);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$accordion-tokens: () !default;\n\n// scss-docs-start accordion-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$accordion-tokens: defaults(\n  (\n    --accordion-padding-x: 1.25rem,\n    --accordion-padding-y: 1rem,\n    --accordion-color: var(--fg-body),\n    --accordion-bg: var(--bg-body),\n    --accordion-transition-property: \"color, background-color, border-radius\",\n    --accordion-transition-timing: \".15s ease-in-out\",\n    --accordion-transition: var(--accordion-transition-property) var(--accordion-timing),\n    --accordion-border-color: var(--border-color),\n    --accordion-border-width: var(--border-width),\n    --accordion-border-radius: var(--accordion-radius, var(--radius-7)),\n    --accordion-btn-color: var(--fg-2),\n    --accordion-btn-bg: var(--bg-body),\n    --accordion-btn-icon-width: 1rem,\n    --accordion-btn-icon-transform: rotate(-180deg),\n    --accordion-btn-icon-transition: transform .2s ease-in-out,\n    --accordion-active-color: var(--fg),\n    --accordion-active-bg: var(--bg-2),\n  ),\n  $accordion-tokens\n);\n// scss-docs-end accordion-tokens\n\n@layer components {\n  .accordion {\n    @include tokens($accordion-tokens);\n  }\n\n  .accordion-header {\n    display: flex;\n    align-items: center;\n    width: 100%;\n    padding: var(--accordion-btn-padding-y, var(--accordion-padding-y)) var(--accordion-btn-padding-x, var(--accordion-padding-x));\n    font-size: var(--accordion-font-size, var(--font-size-base));\n    color: var(--accordion-btn-color);\n    text-align: start;\n    list-style: none; // Remove default marker\n    cursor: pointer;\n    background-color: var(--accordion-btn-bg);\n    @include transition(var(--accordion-transition));\n\n    &::-webkit-details-marker {\n      display: none;\n    }\n\n    .accordion-icon {\n      flex-shrink: 0;\n      width: var(--accordion-btn-icon-width);\n      height: var(--accordion-btn-icon-width);\n      margin-inline-start: auto;\n      color: currentcolor;\n      @include transition(var(--accordion-btn-icon-transition));\n    }\n\n    &:hover {\n      z-index: 2;\n    }\n\n    &:focus-visible {\n      position: relative;\n      z-index: 3;\n      @include focus-ring(true);\n      outline-offset: -1px;\n    }\n  }\n\n  .accordion-item {\n    color: var(--accordion-color);\n    background-color: var(--accordion-bg);\n    border: var(--accordion-border-width) solid var(--accordion-border-color);\n\n    @media (prefers-reduced-motion: no-preference) {\n      interpolate-size: allow-keywords;\n    }\n\n    &::details-content {\n      block-size: 0;\n      overflow-y: clip;\n      @include transition(content-visibility .2s allow-discrete, block-size .2s);\n    }\n\n    &:first-of-type {\n      @include border-top-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-top-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n    }\n\n    &:not(:first-of-type) {\n      border-block-start: 0;\n    }\n\n    // Only set a border-radius on the last item if the accordion is collapsed\n    &:last-of-type {\n      @include border-bottom-radius(var(--accordion-border-radius));\n\n      > .accordion-header {\n        @include border-bottom-radius(calc(var(--accordion-border-radius) - var(--accordion-border-width)));\n      }\n\n      > .accordion-body {\n        @include border-bottom-radius(var(--accordion-border-radius));\n      }\n    }\n\n    // Open state - details[open] applies these styles\n    &[open] {\n\n      border-color: var(--theme-border, var(--accordion-border-color));\n      &::details-content {\n        block-size: auto;\n      }\n\n      > .accordion-header {\n        color: var(--theme-fg, var(--accordion-active-color));\n        background-color: var(--theme-bg-subtle, var(--accordion-active-bg));\n        box-shadow: inset 0 calc(-1 * var(--accordion-border-width)) 0 var(--theme-border, var(--accordion-border-color));\n\n        .accordion-icon {\n          transform: var(--accordion-btn-icon-transform);\n        }\n      }\n\n      // Remove bottom radius from header when open (even on last item)\n      &:last-of-type > .accordion-header {\n        @include border-bottom-radius(0);\n      }\n    }\n  }\n\n  .accordion-body {\n    padding: var(--accordion-body-padding-y, var(--accordion-padding-y)) var(--accordion-body-padding-x, var(--accordion-padding-x));\n  }\n\n\n  // Flush accordion items\n  //\n  // Remove borders and border-radius to keep accordion items edge-to-edge.\n\n  .accordion-flush {\n    > .accordion-item {\n      border-inline: 0;\n      @include border-radius(0);\n\n      &:first-child {\n        border-block-start: 0;\n      }\n\n      &:last-child {\n        border-block-end: 0;\n      }\n\n      > .accordion-header,\n      > .accordion-body {\n        @include border-radius(0);\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$alert-tokens: () !default;\n\n// scss-docs-start alert-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$alert-tokens: defaults(\n  (\n    --alert-gap: var(--spacer-3),\n    --alert-bg: var(--theme-bg-subtle, var(--bg-1)),\n    --alert-padding-x: var(--spacer),\n    --alert-padding-y: var(--spacer),\n    --alert-color: var(--theme-fg, inherit),\n    --alert-border-color: var(--theme-border, var(--border-color)),\n    --alert-border: var(--border-width) solid var(--alert-border-color),\n    --alert-border-radius: var(--radius-5),\n    --alert-link-color: inherit,\n    --hr-border-color: var(--theme-border, var(--border-color)),\n  ),\n  $alert-tokens\n);\n// scss-docs-end alert-tokens\n\n@layer components {\n  .alert {\n    @include tokens($alert-tokens);\n\n    display: flex;\n    gap: var(--alert-gap);\n    align-items: start;\n    padding: var(--alert-padding-y) var(--alert-padding-x);\n    color: var(--alert-color);\n    background-color: var(--alert-bg);\n    border: var(--alert-border);\n    @include border-radius(var(--alert-border-radius));\n  }\n\n  .alert > p {\n    margin-bottom: 0;\n  }\n\n  .alert-heading {\n    // Specified to prevent conflicts of changing $headings-color\n    color: inherit;\n  }\n\n  // Provide class for links that match alerts\n  .alert-link {\n    font-weight: var(--font-weight-semibold);\n    color: var(--alert-link-color);\n  }\n}\n","@use \"sass:map\";\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$avatar-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start avatar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-tokens: defaults(\n  (\n    --avatar-size: 2.5rem,\n    --avatar-border-radius: 50%,\n    --avatar-border-width: 2px,\n    --avatar-border-color: var(--bg-body),\n    --avatar-bg: var(--bg-2),\n    --avatar-color: var(--fg-body),\n    // --avatar-font-weight: var(--font-weight-medium), // Defaults to fallback\n    --avatar-status-size: .75rem,\n    --avatar-status-border-width: 2px,\n    --avatar-status-border-color: var(--bg-body),\n    --avatar-stack-spacing: -.3,\n    --avatar-stack-transition: \"transform .2s ease-in-out\",\n  ),\n  $avatar-tokens\n);\n// scss-docs-end avatar-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start avatar-sizes\n$avatar-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$avatar-sizes: defaults(\n  (\n    \"xs\": (\n      size: 1.5rem,\n      status-size: .625rem,\n    ),\n    \"sm\": (\n      size: 2rem,\n    ),\n    \"lg\": (\n      size: 3rem,\n      status-size: 1rem,\n      border-width: 3px,\n    ),\n    \"xl\": (\n      size: 4rem,\n      status-size: 1.25rem,\n      border-width: 4px,\n    ),\n  ),\n  $avatar-sizes\n);\n// scss-docs-end avatar-sizes\n\n@layer components {\n  .avatar {\n    @include tokens($avatar-tokens);\n\n    position: relative;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    width: var(--avatar-size);\n    height: var(--avatar-size);\n    font-size: calc(var(--avatar-size) * .4);\n    font-weight: var(--avatar-font-weight, var(--font-weight-medium));\n    line-height: 1;\n    color: var(--theme-contrast, var(--avatar-color));\n    text-transform: uppercase;\n    vertical-align: middle;\n    background-color: var(--theme-bg, var(--avatar-bg));\n    @include border-radius(var(--avatar-border-radius));\n\n    > .avatar-img {\n      width: 100%;\n      height: 100%;\n      object-fit: cover;\n    }\n  }\n\n  .avatar-subtle {\n    color: var(--theme-fg, var(--avatar-color));\n    background-color: var(--theme-bg-subtle, var(--avatar-bg));\n  }\n\n  .avatar-img {\n    @include border-radius(var(--avatar-border-radius, 50%));\n  }\n\n  .avatar-status {\n    position: absolute;\n    right: calc(var(--avatar-status-border-width) * -1);\n    bottom: calc(var(--avatar-status-border-width) * -1);\n    width: var(--avatar-status-size);\n    height: var(--avatar-status-size);\n    background-color: var(--gray-400);\n    border: var(--avatar-status-border-width) solid var(--avatar-status-border-color);\n    @include border-radius(50%);\n\n    &.status-online {\n      background-color: var(--green-500);\n    }\n\n    &.status-offline {\n      background-color: var(--gray-400);\n      @include border-radius(20%);\n    }\n\n    &.status-busy {\n      background-color: var(--red-500);\n      @include border-radius(20%);\n    }\n\n    &.status-away {\n      background-color: var(--yellow-500);\n    }\n  }\n\n  .avatar-stack {\n    display: inline-flex;\n    flex-direction: row-reverse;\n\n    .avatar {\n      // Stack spacing is calculated as a percentage of avatar size\n      margin-left: calc(var(--avatar-size) * var(--avatar-stack-spacing));\n      border: var(--avatar-border-width) solid var(--avatar-border-color);\n      mask-image: none;\n      @include transition(var(--avatar-stack-transition));\n\n      &:last-child {\n        margin-left: 0;\n      }\n\n      &:hover {\n        z-index: 1;\n        transform: translateY(-2px);\n      }\n    }\n  }\n\n  @each $size, $tokens in $avatar-sizes {\n    .avatar-#{$size},\n    .avatar-stack-#{$size} > .avatar {\n      --avatar-size: #{map.get($tokens, size)};\n\n      @if map.has-key($tokens, status-size) {\n        --avatar-status-size: #{map.get($tokens, status-size)};\n      }\n\n      @if map.has-key($tokens, border-width) {\n        --avatar-border-width: #{map.get($tokens, border-width)};\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$badge-tokens: () !default;\n\n// scss-docs-start badge-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$badge-tokens: defaults(\n  (\n    --badge-padding-x: .625em,\n    --badge-padding-y: .25em,\n    --badge-font-size: clamp(12px, .75em, .75em),\n    --badge-font-weight: var(--font-weight-semibold),\n    --badge-color: inherit,\n    --badge-bg: var(--bg-2),\n    --badge-border-width: var(--border-width),\n    --badge-border-color: transparent,\n    --badge-border-radius: var(--radius-7),\n  ),\n  $badge-tokens\n);\n// scss-docs-end badge-tokens\n\n// scss-docs-start badge-variants\n$badge-variants: (\n  \"subtle\": (\n    \"color\": \"fg\",\n    \"bg\": \"bg-subtle\",\n    \"border-color\": \"transparent\"\n  ),\n  \"outline\": (\n    \"color\": \"fg\",\n    \"bg\": \"transparent\",\n    \"border-color\": \"border\"\n  )\n) !default;\n// scss-docs-end badge-variants\n\n@layer components {\n  .badge {\n    @include tokens($badge-tokens);\n\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 1.375rem;\n    padding: var(--badge-padding-y) var(--badge-padding-x);\n    font-size: var(--badge-font-size);\n    font-weight: var(--badge-font-weight);\n    line-height: 1;\n    color: var(--theme-contrast, var(--badge-color));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: baseline;\n    background-color: var(--theme-bg, var(--badge-bg));\n    border: var(--badge-border-width) solid var(--badge-border-color);\n    @include border-radius(var(--badge-border-radius));\n    // @include gradient-bg();\n\n    // Empty badges collapse automatically\n    &:empty {\n      display: none;\n    }\n  }\n\n  // Quick fix for badges in buttons\n  .btn .badge {\n    position: relative;\n    top: -1px;\n  }\n\n  // scss-docs-start badge-variant-loop\n  @each $variant, $properties in $badge-variants {\n    .badge-#{$variant} {\n      @each $property, $value in $properties {\n        @if $value == \"transparent\" {\n          --badge-#{$property}: transparent;\n        } @else {\n          --badge-#{$property}: var(--theme-#{$value});\n        }\n      }\n\n      color: var(--badge-color);\n      background-color: var(--badge-bg);\n      border-color: var(--badge-border-color);\n    }\n  }\n  // scss-docs-end badge-variant-loop\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n$breadcrumb-tokens: () !default;\n\n// scss-docs-start breadcrumb-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$breadcrumb-tokens: defaults(\n  (\n    --breadcrumb-margin-bottom: 1rem,\n    --breadcrumb-font-size: inherit,\n    --breadcrumb-bg: transparent,\n    --breadcrumb-border-radius: var(--radius-5),\n    --breadcrumb-divider-color: var(--fg-4),\n    --breadcrumb-divider-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 16'><path fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M2 2l4 6-4 6'/></svg>\"))},\n    --breadcrumb-divider-width: .375rem,\n    --breadcrumb-divider-height: .75rem,\n    --breadcrumb-link-padding-x: .75rem,\n    --breadcrumb-link-padding-y: .25rem,\n    --breadcrumb-link-color: var(--fg-3),\n    --breadcrumb-link-hover-color: var(--fg-2),\n    --breadcrumb-link-hover-bg: var(--bg-1),\n    --breadcrumb-link-active-color: var(--fg-1),\n    --breadcrumb-link-border-radius: var(--radius-7),\n  ),\n  $breadcrumb-tokens\n);\n// scss-docs-end breadcrumb-tokens\n\n@layer components {\n  .breadcrumb {\n    @include tokens($breadcrumb-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    padding: var(--breadcrumb-padding-y, 0) var(--breadcrumb-padding-x, 0);\n    font-size: var(--breadcrumb-font-size);\n    list-style-type: \"\";\n    background-color: var(--breadcrumb-bg);\n    @include border-radius(var(--breadcrumb-border-radius));\n  }\n\n  .breadcrumb-item {\n    display: flex;\n  }\n\n  .breadcrumb-divider {\n    margin-inline: calc(var(--breadcrumb-link-padding-x) / 4);\n    color: var(--breadcrumb-divider-color);\n\n    // Render a default chevron, painted with `currentcolor` via a mask, when the\n    // divider has no explicit content. Any content (an inline SVG, a text\n    // character, etc.) added to the element overrides this default.\n    &:empty::before {\n      display: block;\n      width: var(--breadcrumb-divider-width);\n      height: var(--breadcrumb-divider-height);\n      content: \"\";\n      background-color: currentcolor;\n      @include mask-icon(var(--breadcrumb-divider-icon));\n    }\n  }\n\n  .breadcrumb-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 2.25rem;\n    padding: var(--breadcrumb-link-padding-y) var(--breadcrumb-link-padding-x);\n    color: var(--breadcrumb-link-color);\n    text-decoration: none;\n    @include border-radius(var(--breadcrumb-link-border-radius));\n    @include transition(.1s text-decoration-color ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--breadcrumb-link-hover-color);\n      background-color: var(--breadcrumb-link-hover-bg);\n    }\n\n    &.active {\n      color: var(--breadcrumb-link-active-color);\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/tokens\" as *;\n\n$chip-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start chip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$chip-tokens: defaults(\n  (\n    --chip-height: 1.75rem,\n    --chip-padding-x: .625rem,\n    --chip-gap: .3125rem,\n    --chip-border-radius: var(--radius-pill),\n    --chip-img-size: 1.25rem,\n    --chip-icon-size: 1rem,\n    --chip-dismiss-size: 1rem,\n    --chip-dismiss-opacity: .65,\n    --chip-dismiss-hover-opacity: 1,\n    --chip-color: var(--theme-fg, var(--fg-body)),\n    --chip-bg: var(--theme-bg-subtle, var(--bg-2)),\n    --chip-border-color: transparent,\n    --chip-selected-color: var(--theme-contrast, var(--primary-contrast)),\n    --chip-selected-bg: var(--theme-bg, var(--primary-bg)),\n    --chip-selected-border-color: var(--theme-bg, var(--primary-bg)),\n  ),\n  $chip-tokens\n);\n// scss-docs-end chip-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .chip {\n    @include tokens($chip-tokens);\n\n    display: inline-flex;\n    gap: var(--chip-gap);\n    align-items: center;\n    height: var(--chip-height);\n    padding-inline: var(--chip-padding-x);\n    font-size: var(--chip-font-size, var(--font-size-sm));\n    font-weight: var(--chip-font-weight, var(--font-weight-base));\n    line-height: var(--chip-line-height, 1.25rem);\n    color: var(--chip-color);\n    text-decoration: none;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    background-color: var(--chip-bg);\n    border: var(--border-width) solid var(--chip-border-color);\n    @include border-radius(var(--chip-border-radius));\n\n    &:hover {\n      --chip-bg: var(--theme-bg-muted, var(--bg-3));\n    }\n\n    &:focus-visible {\n      outline: 0;\n      // @include focus-ring();\n    }\n\n    &.active {\n      --chip-color: var(--chip-selected-color);\n      --chip-bg: var(--chip-selected-bg);\n      --chip-border-color: var(--chip-selected-border-color);\n\n      &:hover {\n        --chip-bg: var(--chip-selected-bg);\n        opacity: .9;\n      }\n    }\n\n    &.disabled,\n    &:disabled {\n      pointer-events: none;\n      opacity: .65;\n    }\n  }\n\n  .chip-img {\n    width: var(--chip-img-size);\n    height: var(--chip-img-size);\n    @include border-radius(50%);\n\n    &:first-child {\n      margin-inline-start: -.375rem;\n    }\n  }\n\n  // Chip icon (left side)\n  .chip-icon {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    margin-inline-start: calc(var(--chip-gap) * -.25);\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n    }\n\n    > img {\n      width: var(--chip-icon-size);\n      height: var(--chip-icon-size);\n      object-fit: cover;\n      @include border-radius(50%);\n    }\n  }\n\n  // Dismiss button (right side)\n  .chip-dismiss {\n    display: flex;\n    flex-shrink: 0;\n    align-items: center;\n    justify-content: center;\n    width: var(--chip-min-height);\n    height: var(--chip-min-height);\n    padding: 0;\n    // margin-inline-start: calc(var(--chip-padding-x) * -.5);\n    margin-inline-end: calc(var(--chip-padding-x) * -.25);\n    color: inherit;\n    cursor: pointer;\n    background: transparent;\n    border: 0;\n    opacity: var(--chip-dismiss-opacity);\n    // @include transition(opacity .15s ease-in-out);\n\n    &:hover {\n      opacity: var(--chip-dismiss-hover-opacity);\n    }\n\n    &:focus-visible {\n      outline: 0;\n      opacity: 1;\n      @include focus-ring();\n    }\n\n    > svg {\n      display: block; // Prevents baseline alignment issues\n      width: var(--chip-dismiss-size);\n      height: var(--chip-dismiss-size);\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"layout/breakpoints\" as *;\n\n$card-tokens: () !default;\n\n// scss-docs-start card-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$card-tokens: defaults(\n  (\n    --card-spacer-y: var(--spacer-5),\n    --card-spacer-x: var(--spacer-5),\n    --card-subtitle-color: inherit,\n    --card-border-width: var(--border-width),\n    --card-border-color: var(--border-color-translucent),\n    --card-border-radius: var(--radius-7),\n    --card-box-shadow: none,\n    --card-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --card-cap-padding-y: var(--spacer-3),\n    --card-cap-padding-x: var(--spacer),\n    --card-cap-bg: var(--bg-1),\n    --card-cap-color: inherit,\n    --card-height: auto,\n    --card-color: inherit,\n    --card-bg: var(--bg-body),\n    --card-img-overlay-padding: var(--card-spacer-y),\n    --card-group-margin: #{$grid-gutter-x * .5},\n    --card-body-gap: calc(var(--card-spacer-y) * .5),\n  ),\n  $card-tokens\n);\n// scss-docs-end card-tokens\n\n@layer components {\n  .card {\n    @include tokens($card-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106\n    height: var(--card-height);\n    color: var(--fg-body);\n    word-wrap: break-word;\n    background-color: var(--card-bg);\n    // border: var(--card-border-width) solid var(--card-border-color);\n    @include border-radius(var(--card-border-radius));\n    @include box-shadow(var(--card-box-shadow));\n\n    > hr {\n      margin-inline: 0;\n    }\n  }\n\n  .card-body {\n    display: flex;\n    // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n    // as much space as possible, ensuring footers are aligned to the bottom.\n    flex: 1 1 auto;\n    flex-direction: column;\n    gap: var(--card-body-gap);\n    align-items: flex-start;\n    padding: var(--card-spacer-y) var(--card-spacer-x);\n    color: var(--card-color);\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    > * {\n      margin-block: 0;\n    }\n  }\n\n  .card-body,\n  .card-list {\n    border: solid var(--theme-bg, var(--card-border-color));\n    border-width: 0 var(--card-border-width);\n\n    &:first-child {\n      @include border-top-radius(var(--card-border-radius));\n      border-top-width: var(--card-border-width);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(var(--card-border-radius));\n      border-bottom-width: var(--card-border-width);\n    }\n\n    &:not(:first-child, :last-child) {\n      border-block-end-width: var(--card-border-width);\n    }\n\n    // The footer draws a full border (including its top edge), so a body/list\n    // segment that precedes it must not also draw a bottom border or the seam\n    // doubles up.\n    &:has(+ .card-footer) {\n      border-block-end-width: 0;\n    }\n  }\n\n  .card-title,\n  .card-subtitle,\n  .card-text {\n    align-self: stretch;\n  }\n\n  .card-subtitle {\n    margin-top: calc(var(--card-body-gap) * -.5);\n  }\n\n  .card-header {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    margin-bottom: 0; // Removes the default margin-bottom of <hN>\n    color: var(--theme-contrast, var(--card-cap-color));\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:first-child {\n      @include border-radius(var(--card-inner-border-radius) var(--card-inner-border-radius) 0 0);\n    }\n  }\n\n  .card-footer {\n    padding: var(--card-cap-padding-y) var(--card-cap-padding-x);\n    color: var(--card-cap-color);\n    background-color: var(--theme-bg, var(--card-cap-bg));\n    border: var(--card-border-width) solid var(--theme-bg, var(--card-border-color));\n\n    &:last-child {\n      @include border-radius(0 0 var(--card-inner-border-radius) var(--card-inner-border-radius));\n    }\n  }\n\n  .card-translucent {\n    background-color: color-mix(in oklch, var(--card-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n\n    .card-header,\n    .card-footer {\n      background-color: color-mix(in oklch, var(--card-cap-bg) 60%, transparent);\n    }\n  }\n\n  .card-subtle {\n    border-color: var(--theme-border, var(--card-border-color));\n\n    .card-header {\n      color: var(--theme-fg-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-footer {\n      color: var(--theme-fg-emphasis, currentcolor);\n      background-color: var(--theme-bg-subtle, var(--card-cap-bg));\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n\n    .card-body,\n    .card-list {\n      border-color: var(--theme-border, var(--card-border-color));\n    }\n  }\n\n  //\n  // Header navs\n  //\n\n  // Combined selector because of specificity match with `.nav` base class\n  .nav.card-header-tabs {\n    margin-inline: calc(-.5 * var(--card-cap-padding-x));\n    margin-bottom: calc(-1 * var(--card-cap-padding-y) - var(--nav-tabs-border-width));\n    border-block-end: 0;\n\n    .nav-link.active {\n      background-color: var(--card-bg);\n      border-block-end-color: var(--card-bg);\n    }\n  }\n\n  // Card image\n  .card-img-overlay {\n    position: absolute;\n    inset: 0;\n    padding: var(--card-img-overlay-padding);\n    @include border-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-top,\n  .card-img-bottom {\n    width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n    outline: var(--card-border-width) solid var(--card-border-color);\n    outline-offset: calc(var(--card-border-width) * -1);\n  }\n\n  .card-img,\n  .card-img-top {\n    @include border-top-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img,\n  .card-img-bottom {\n    @include border-bottom-radius(var(--card-inner-border-radius));\n  }\n\n  .card-row {\n    flex-direction: row;\n\n    .card-body,\n    .card-list {\n      border-width: var(--card-border-width) 0;\n      @include border-radius(0);\n\n      &:first-child {\n        @include border-start-radius(var(--card-inner-border-radius));\n        border-inline-start-width: var(--card-border-width);\n      }\n\n      &:last-child {\n        @include border-end-radius(var(--card-inner-border-radius));\n        border-inline-end-width: var(--card-border-width);\n      }\n\n      &:not(:first-child, :last-child) {\n        border-inline-end-width: var(--card-border-width);\n      }\n    }\n  }\n\n  .card-img-start {\n    @include border-start-radius(var(--card-inner-border-radius));\n  }\n\n  .card-img-end {\n    @include border-end-radius(var(--card-inner-border-radius));\n  }\n\n  //\n  // Card groups\n  //\n\n  // Card groups lay out their cards in a row using a container query, so wrap the\n  // group in a query container (e.g., the `.contains-inline` utility) for the row\n  // layout to take effect. Without a query container the cards remain stacked.\n  .card-group {\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      margin-bottom: var(--card-group-margin);\n    }\n\n    @include container-breakpoint-up(sm) {\n      display: flex;\n      flex-flow: row wrap;\n      // The child selector allows nested `.card` within `.card-group`\n      // to display properly.\n      > .card {\n        flex: 1 0 0;\n        margin-bottom: 0;\n\n        // Borders now live on the inner segments (header, body, list, footer)\n        // and the card images use outlines, so adjacent cards would otherwise\n        // render a doubled-up border at each seam. Pull subsequent cards back by\n        // one border width so their leading edges overlap the previous card's\n        // trailing edge, collapsing the seam into a single line. Gap can't be\n        // negative, so this relies on a negative margin.\n        + .card {\n          margin-inline-start: calc(-1 * var(--card-border-width));\n        }\n\n        // Handle rounded corners\n        @if $enable-rounded {\n          &:not(:last-child) {\n            @include border-end-radius(0);\n\n            > .card-img-top,\n            > .card-header,\n            > .card-body {\n              border-start-end-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-end-radius: 0;\n            }\n          }\n\n          &:not(:first-child) {\n            @include border-start-radius(0);\n\n            > .card-img-top,\n            > .card-header,\n            > .card-body {\n              border-start-start-radius: 0;\n            }\n            > .card-img-bottom,\n            > .card-footer,\n            > .card-body {\n              border-end-start-radius: 0;\n            }\n          }\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$carousel-tokens: () !default;\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start carousel-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$carousel-tokens: defaults(\n  (\n    --carousel-gap: .75rem,\n    --carousel-indicator-bg: var(--fg-3),\n    --carousel-indicator-width: .75rem,\n    --carousel-indicator-height: .75rem,\n    --carousel-indicator-spacer: .25rem,\n    --carousel-indicator-transition: \"opacity .6s ease, width .3s ease\",\n    --carousel-indicator-progress-bg: var(--carousel-indicator-bg),\n    --carousel-control-icon-width: 1rem,\n    --carousel-control-prev-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>\"),\n    --carousel-control-next-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>\"),\n    --carousel-control-pause-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M5.5 3.5A1.5 1.5 0 0 1 7 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5m5 0A1.5 1.5 0 0 1 12 5v6a1.5 1.5 0 0 1-3 0V5a1.5 1.5 0 0 1 1.5-1.5'/></svg>\"),\n    --carousel-control-play-icon: url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='m11.596 8.697-6.363 3.692c-.54.313-1.233-.066-1.233-.697V4.308c0-.63.692-1.01 1.233-.696l6.363 3.692a.802.802 0 0 1 0 1.393z'/></svg>\"),\n    // Scroll-snap engine. `gap` must carry a length unit: it feeds the\n    // `.carousel-item` flex-basis `calc()`, and subtracting a unitless `0` from a\n    // percentage is invalid CSS (it would drop the whole declaration and collapse\n    // every slide to its content width). `peek` only feeds `padding-inline`/\n    // `scroll-padding-inline`, so a bare `0` would be valid there, but we keep it\n    // unit-bearing for consistency.\n    --carousel-items: 1,\n    --carousel-items-gap: 0px,\n    --carousel-items-peek: 0px,\n    --carousel-fade-duration: .6s,\n  ),\n  $carousel-tokens\n);\n// scss-docs-end carousel-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .carousel {\n    @include tokens($carousel-tokens);\n\n    position: relative;\n    display: flex;\n    flex-direction: column;\n    gap: var(--carousel-gap);\n  }\n\n  // The scroll viewport\n  .carousel-inner {\n    display: flex;\n    gap: var(--carousel-items-gap);\n    width: 100%;\n    padding-inline: var(--carousel-items-peek);\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory;\n    scroll-padding-inline: var(--carousel-items-peek);\n    scrollbar-width: none; // Hide the scrollbar without losing scrollability\n\n    &::-webkit-scrollbar {\n      display: none;\n    }\n  }\n\n  // Smooth programmatic/keyboard scrolling, disabled under reduced-motion\n  @media (prefers-reduced-motion: no-preference) {\n    .carousel-inner {\n      scroll-behavior: smooth;\n    }\n  }\n\n  .carousel-item {\n    // `100%` here is `.carousel-inner`'s content box, which `padding-inline`\n    // has already inset by the peek on each side, so the peek must NOT be\n    // subtracted again — doing so makes every slide `2 * peek` too narrow and\n    // the peek lopsided. Only the inter-slide gaps need removing.\n    flex: 0 0 calc((100% - (var(--carousel-items) - 1) * var(--carousel-items-gap)) / var(--carousel-items));\n    min-width: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n\n  //\n  // Layout variants\n  //\n\n  // Center the active slide in the viewport (pairs well with `--carousel-items-peek`)\n  .carousel-center {\n    .carousel-item {\n      scroll-snap-align: center;\n    }\n  }\n\n  // Let each slide size itself; snap points still land on every item\n  .carousel-auto {\n    .carousel-item {\n      flex-basis: auto;\n    }\n  }\n\n  //\n  // Alternate transitions\n  //\n\n  // Fade can't ride scroll-snap (it stacks slides instead of scrolling), so it\n  // becomes a JavaScript-driven mode: every slide is stacked and the active one\n  // is faded in via a CSS opacity transition.\n  .carousel-fade {\n    .carousel-inner {\n      display: grid;\n      overflow: hidden;\n      scroll-snap-type: none;\n    }\n\n    .carousel-item {\n      grid-area: 1 / 1;\n      width: 100%;\n      visibility: hidden;\n      opacity: 0;\n      @include transition(opacity var(--carousel-fade-duration) ease, visibility 0s linear var(--carousel-fade-duration));\n    }\n\n    .carousel-item.active {\n      visibility: visible;\n      opacity: 1;\n      @include transition(opacity var(--carousel-fade-duration) ease);\n    }\n  }\n\n  // Icons for within, rendered via CSS mask so they inherit the current text\n  // color (white on the overlay controls, the button color inside `.btn-*`).\n  .carousel-icon-prev,\n  .carousel-icon-next,\n  .carousel-icon-pause,\n  .carousel-icon-play {\n    display: inline-block;\n    width: var(--carousel-control-icon-width);\n    height: var(--carousel-control-icon-width);\n    background-color: currentcolor;\n    @include mask-icon($size: 100% 100%, $position: 50%);\n  }\n\n  .carousel-icon-prev {\n    mask-image: var(--carousel-control-prev-icon);\n  }\n\n  .carousel-icon-next {\n    mask-image: var(--carousel-control-next-icon);\n  }\n\n  [dir=\"rtl\"] .carousel-icon-prev,\n  [dir=\"rtl\"] .carousel-icon-next {\n    transform: scaleX(-1);\n  }\n\n  .carousel-icon-pause {\n    mask-image: var(--carousel-control-pause-icon);\n  }\n\n  .carousel-icon-play {\n    mask-image: var(--carousel-control-play-icon);\n  }\n\n  // Optional play/pause control\n  //\n  // A discoverable toggle so users can stop an autoplaying carousel, as required\n  // by WCAG 2.2.2 (Pause, Stop, Hide). `.carousel-control-play-pause` is only a\n  // behavior hook—JS toggles `.paused` on it and its appearance comes from the\n  // wrapping button (e.g. `.btn-icon`). The button holds both glyphs and we show\n  // whichever `.carousel-icon-*` matches the current state.\n  .carousel-control-play-pause .carousel-icon-play {\n    display: none;\n  }\n\n  .carousel-control-play-pause.paused {\n    .carousel-icon-pause {\n      display: none;\n    }\n\n    .carousel-icon-play {\n      display: inline-block;\n    }\n  }\n\n  .carousel-indicators {\n    display: flex;\n    gap: var(--carousel-indicator-spacer);\n    justify-content: center;\n\n    [data-bs-target] {\n      flex: 0 1 auto;\n      width: var(--carousel-indicator-width);\n      height: var(--carousel-indicator-height);\n      padding: 0;\n      cursor: pointer;\n      background-color: transparent;\n      border: 1px solid var(--carousel-indicator-bg);\n      @include border-radius(var(--carousel-indicator-width));\n      @include transition(var(--carousel-indicator-transition));\n    }\n\n    .active {\n      width: calc(var(--carousel-indicator-width) * 2.5);\n      background-color: var(--carousel-indicator-bg);\n      border-color: var(--carousel-indicator-bg);\n    }\n  }\n\n  // Autoplay progress: fill the active indicator like a progress bar over the\n  // current slide's interval. The JS adds `.carousel-playing` and sets\n  // `--carousel-interval` (shipped as `--bs-carousel-interval`) while autoplay is\n  // running. The fill restarts on its own each slide because `.active` moves to a\n  // fresh indicator, so its `::after` animation begins from scratch.\n  @if $enable-transitions {\n    @keyframes carousel-indicator-progress {\n      from { inline-size: 0; }\n      to { inline-size: 100%; }\n    }\n\n    .carousel-playing .carousel-indicators .active {\n      @media (prefers-reduced-motion: no-preference) {\n        position: relative;\n        overflow: hidden;\n        // Empty the pill so it reads as a track that the fill grows across.\n        background-color: transparent;\n\n        &::after {\n          position: absolute;\n          inset-block: 0;\n          inset-inline-start: 0;\n          inline-size: 0;\n          content: \"\";\n          background-color: var(--carousel-indicator-progress-bg);\n          animation: carousel-indicator-progress var(--carousel-interval, 5000ms) linear forwards;\n        }\n      }\n    }\n  }\n\n  // Overlay layout\n  //\n  // Overlays the prev/next controls, play/pause button, and indicators on top of\n  // the slides (the classic carousel look) instead of stacking them in the flow.\n\n  .carousel-overlay {\n    --carousel-indicator-bg: light-dark(var(--white), var(--black));\n\n    .carousel-overlay-controls {\n      position: absolute;\n      inset-block-end: 1rem;\n      inset-inline: 1rem;\n      z-index: 1;\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n  }\n}\n","// stylelint-disable selector-max-attribute, property-disallowed-list, selector-no-qualifying-type -- VCP uses extensive data attributes and requires direct border-radius properties for range selection\n\n@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n\n$datepicker-tokens: () !default;\n\n// scss-docs-start datepicker-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$datepicker-tokens: defaults(\n  (\n    --datepicker-padding: 1rem,\n    --datepicker-bg: var(--bg-body),\n    --datepicker-color: var(--fg-body),\n    --datepicker-border-color: var(--border-color-translucent),\n    --datepicker-border-width: var(--border-width),\n    --datepicker-border-radius: var(--radius-7),\n    --datepicker-box-shadow: var(--box-shadow),\n    --datepicker-font-size: var(--font-size-sm),\n    --datepicker-min-width: 280px,\n    --datepicker-zindex: #{$zindex-menu},\n    --datepicker-header-font-weight: 600,\n    --datepicker-weekday-color: var(--fg-3),\n    --datepicker-day-hover-bg: var(--bg-1),\n    --datepicker-day-selected-bg: var(--primary-bg),\n    --datepicker-day-selected-color: var(--primary-contrast),\n    --datepicker-day-today-bg: var(--bg-2),\n    --datepicker-day-today-color: var(--fg-1),\n    --datepicker-day-disabled-color: var(--fg-4),\n  ),\n  $datepicker-tokens\n);\n// scss-docs-end datepicker-tokens\n\n@layer components {\n  [data-vc=\"calendar\"] {\n    @include tokens($datepicker-tokens);\n\n    position: absolute;\n    z-index: var(--datepicker-zindex);\n    box-sizing: border-box;\n    display: flex;\n    flex-direction: column;\n    min-width: var(--datepicker-min-width);\n    padding: var(--datepicker-padding);\n    font-family: var(--font-sans-serif);\n    font-size: var(--datepicker-font-size);\n    color: var(--datepicker-color);\n    color-scheme: light dark;\n    background-color: var(--datepicker-bg);\n    border: var(--datepicker-border-width) solid var(--datepicker-border-color);\n    box-shadow: var(--datepicker-box-shadow);\n    opacity: 1;\n    @include border-radius(var(--datepicker-border-radius));\n\n    // Respond to Bootstrap's color mode system\n    &[data-bs-theme=\"light\"] {\n      color-scheme: light;\n    }\n\n    &[data-bs-theme=\"dark\"] {\n      color-scheme: dark;\n    }\n\n    // Catch-all for focus styles\n    button:focus-visible {\n      position: relative;\n      z-index: 1;\n      @include focus-ring();\n    }\n  }\n\n  [data-vc-calendar-hidden] {\n    pointer-events: none;\n    opacity: 0;\n  }\n\n  // Inline calendars\n  //\n  // Remove popover styling for more neutral styling\n  [data-vc=\"calendar\"]:not([data-vc-input]) {\n    position: relative;\n    width: fit-content;\n    padding: 0;\n    border: 0;\n    box-shadow: none;\n  }\n\n  [data-vc-position=\"bottom\"] {\n    margin-block-start: .25rem;\n  }\n\n  [data-vc-position=\"top\"] {\n    margin-block-end: -.25rem;\n  }\n\n  [data-vc-arrow] {\n    position: relative;\n    display: block;\n    width: 2rem;\n    height: 2rem;\n    color: var(--datepicker-color);\n    pointer-events: auto;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &::before {\n      position: absolute;\n      inset: .25rem;\n      content: \"\";\n      background-color: var(--datepicker-color);\n      @include mask-icon(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M12 16c-.3 0-.5-.1-.7-.3l-6-6c-.4-.4-.4-1 0-1.4s1-.4 1.4 0l5.3 5.3 5.3-5.3c.4-.4 1-.4 1.4 0s.4 1 0 1.4l-6 6c-.2.2-.4.3-.7.3'/></svg>\"), $size: null);\n    }\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc-arrow=\"prev\"]::before {\n    transform: rotate(90deg);\n  }\n\n  [data-vc-arrow=\"next\"]::before {\n    transform: rotate(-90deg);\n  }\n\n  // Grid layout\n  [data-vc=\"controls\"] {\n    position: absolute;\n    top: 0;\n    right: 0;\n    left: 0;\n    z-index: 20;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding-top: 1rem;\n    padding-right: 1rem;\n    padding-left: 1rem;\n    pointer-events: none;\n  }\n\n  [data-vc=\"grid\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-wrap: wrap;\n    gap: 1.75rem;\n  }\n\n  [data-vc=\"column\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n    min-width: 240px;\n  }\n\n  //\n  // Header\n  //\n\n  [data-vc=\"header\"] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    margin-bottom: .75rem;\n  }\n\n  // Month and year\n  [data-vc-header=\"content\"] {\n    display: inline-flex;\n    flex-grow: 1;\n    align-items: center;\n    justify-content: center;\n    white-space: pre-wrap;\n  }\n\n  [data-vc=\"month\"],\n  [data-vc=\"year\"] {\n    padding: .25rem .5rem;\n    margin-inline: -.125rem;\n    font-size: 1rem;\n    font-weight: var(--datepicker-header-font-weight);\n    color: var(--datepicker-color);\n    // cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  [data-vc=\"content\"] {\n    display: flex;\n    flex-grow: 1;\n    flex-direction: column;\n  }\n\n  // Month/Year grids\n  [data-vc=\"months\"],\n  [data-vc=\"years\"] {\n    display: grid;\n    flex-grow: 1;\n    grid-template-columns: repeat(var(--vc-columns, 4), minmax(0, 1fr));\n    row-gap: 1rem;\n    column-gap: .25rem;\n    align-items: center;\n  }\n\n  [data-vc=\"years\"] {\n    --vc-columns: 5;\n  }\n\n  [data-vc-months-month],\n  [data-vc-years-year] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    height: 2.5rem;\n    padding: .25rem;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    text-align: center;\n    word-break: break-all;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    @include border-radius(var(--radius-5));\n\n    &:disabled {\n      color: var(--datepicker-day-disabled-color);\n      pointer-events: none;\n    }\n\n    &:hover:not(:disabled) {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n\n    &[data-vc-months-month-selected],\n    &[data-vc-years-year-selected] {\n      color: var(--datepicker-day-selected-color);\n      background-color: var(--datepicker-day-selected-bg);\n\n      &:hover {\n        color: var(--datepicker-day-selected-color);\n        background-color: var(--datepicker-day-selected-bg);\n      }\n    }\n  }\n\n  // Week days header\n  [data-vc=\"week\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    justify-items: center;\n    margin-bottom: .5rem;\n  }\n\n  [data-vc-week-day] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    padding: 0;\n    margin: 0;\n    font-size: .75rem;\n    font-weight: 600;\n    line-height: 1rem;\n    color: var(--datepicker-weekday-color);\n    background-color: transparent;\n    border: 0;\n  }\n\n  button[data-vc-week-day] {\n    cursor: pointer;\n  }\n\n  // Dates grid\n  [data-vc=\"dates\"] {\n    pointer-events: none;\n  }\n\n  [data-vc-dates=\"row\"] {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    align-items: center;\n    justify-items: center;\n    width: 100%;\n  }\n\n  [data-vc-date] {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    padding-top: .125rem;\n    padding-bottom: .125rem;\n    pointer-events: auto;\n\n    &:not(:has([data-vc-date-btn])),\n    &[data-vc-date-disabled],\n    &[data-vc-date-disabled] [data-vc-date-btn] {\n      pointer-events: none;\n    }\n  }\n\n  // Date button\n  [data-vc-date-btn] {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: 100%;\n    min-width: 1.875rem;\n    height: 100%;\n    min-height: 1.875rem;\n    padding: 0;\n    font-size: .75rem;\n    font-weight: 400;\n    line-height: 1rem;\n    color: var(--datepicker-color);\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    border-radius: var(--radius-5);\n\n    &:hover {\n      background-color: var(--datepicker-day-hover-bg);\n    }\n  }\n\n  // Today\n  [data-vc-date-today] [data-vc-date-btn] {\n    font-weight: 600;\n    color: var(--datepicker-day-today-color);\n    background-color: var(--datepicker-day-today-bg);\n  }\n\n  // Outside month\n  [data-vc-date-month=\"next\"] [data-vc-date-btn],\n  [data-vc-date-month=\"prev\"] [data-vc-date-btn] {\n    opacity: .5;\n  }\n\n  // Disabled\n  [data-vc-date-disabled] [data-vc-date-btn] {\n    color: var(--datepicker-day-disabled-color);\n  }\n\n  // Range selection styles\n  [data-vc-date-hover] [data-vc-date-btn] {\n    background-color: var(--datepicker-day-hover-bg);\n    border-radius: 0;\n  }\n\n  [data-vc-date-hover=\"first\"] [data-vc-date-btn] {\n    border-start-start-radius: var(--radius-5);\n    border-end-start-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"last\"] [data-vc-date-btn] {\n    border-start-end-radius: var(--radius-5);\n    border-end-end-radius: var(--radius-5);\n  }\n\n  [data-vc-date-hover=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"middle\"] [data-vc-date-btn] {\n    border-radius: 0;\n    opacity: .8;\n  }\n\n  // Selected\n  [data-vc-date-selected] [data-vc-date-btn] {\n    color: var(--datepicker-day-selected-color);\n    background-color: var(--datepicker-day-selected-bg);\n\n  }\n\n  [data-vc-date-selected=\"first\"] [data-vc-date-btn] {\n    border-top-left-radius: var(--radius-5);\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: var(--radius-5);\n  }\n\n  [data-vc-date-selected=\"last\"] [data-vc-date-btn] {\n    border-top-left-radius: 0;\n    border-top-right-radius: var(--radius-5);\n    border-bottom-right-radius: var(--radius-5);\n    border-bottom-left-radius: 0;\n  }\n\n  [data-vc-date-selected=\"first-and-last\"] [data-vc-date-btn] {\n    border-radius: var(--radius-5);\n  }\n}\n","@use \"sass:map\";\n@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// Native <dialog> component\n// Uses the browser's native dialog element with showModal()/show()/close() APIs\n// Leverages native [open] attribute and ::backdrop pseudo-element\n\n// stylelint-disable custom-property-no-missing-var-function\n$dialog-tokens: () !default;\n\n// scss-docs-start dialog-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-tokens: defaults(\n  (\n    --dialog-padding: 1rem,\n    --dialog-width: 500px,\n    --dialog-margin: 1.75rem,\n    --dialog-color: var(--fg-body),\n    --dialog-bg: var(--bg-body),\n    --dialog-border-color: var(--border-color-translucent),\n    --dialog-border-width: var(--border-width),\n    --dialog-border-radius: var(--radius-7),\n    --dialog-box-shadow: var(--box-shadow-lg),\n    --dialog-transition-duration: .3s,\n    --dialog-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --dialog-backdrop-bg: light-dark(rgb(0 0 0 / 50%), rgb(0 0 0 / 65%)),\n    --dialog-backdrop-blur: 8px,\n    --dialog-header-padding: 1rem,\n    --dialog-header-border-color: var(--border-color-translucent),\n    --dialog-header-border-width: var(--border-width),\n    --dialog-footer-padding: 1rem,\n    --dialog-footer-border-color: var(--border-color-translucent),\n    --dialog-footer-border-width: var(--border-width),\n    --dialog-footer-gap: .5rem,\n  ),\n  $dialog-tokens\n);\n// scss-docs-end dialog-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n// scss-docs-start dialog-sizes\n$dialog-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$dialog-sizes: defaults(\n  (\n    sm: 280px,\n    lg: 800px,\n    xl: 1140px,\n  ),\n  $dialog-sizes\n);\n// scss-docs-end dialog-sizes\n\n@layer components {\n  // Prevent page scroll when a dialog is open. Applied to the root element so\n  // `overflow: hidden` sits on the same element as `scrollbar-gutter: stable`\n  // (see _root.scss): the gutter stays reserved while the scrollbar is hidden,\n  // so the page doesn't shift when a dialog opens.\n  :root.dialog-open {\n    overflow: hidden;\n  }\n\n  .dialog {\n    @include tokens($dialog-tokens);\n\n    // Override UA display:none so visibility controls the hidden state,\n    // enabling reliable cross-browser exit animations after close().\n    display: flex;\n    flex-direction: column;\n    width: var(--dialog-width);\n    max-width: calc(100% - var(--dialog-margin) * 2);\n    max-height: calc(100% - var(--dialog-margin) * 2);\n    padding: 0;\n    margin: auto;\n    overflow: visible;\n    color: var(--dialog-color);\n    visibility: hidden;\n    background-color: var(--dialog-bg);\n    background-clip: padding-box;\n    border: var(--dialog-border-width) solid var(--dialog-border-color);\n    @include border-radius(var(--dialog-border-radius));\n    @include box-shadow(var(--dialog-box-shadow));\n\n    // Animated variant (default) — transitions, opacity fade, slide transforms.\n    // Adding .dialog-instant skips all animations (instant show/hide).\n    &:not(.dialog-instant) {\n      // Exit state: faded out\n      opacity: 0;\n\n      // Exit transition: opacity and transform animate out, then visibility\n      // flips hidden after the animation completes (via the delay).\n      @include transition(\n        opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n        transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n        visibility 0s var(--dialog-transition-duration)\n      );\n\n      // Slide-down variant: enters from above sliding down, exits by reversing\n      // back up. Base value is the entry-from / exit-to position so the\n      // animation works on every open (not just the first, which is the only\n      // time @starting-style applies for a persistent <dialog> element).\n      &.dialog-slide-down {\n        transform: translateY(-3rem);\n      }\n\n      // Slide-up variant: enters from below sliding up, exits by reversing\n      // back down. See note above re: base value choice.\n      &.dialog-slide-up {\n        transform: translateY(3rem);\n      }\n\n      // Open state: visible and faded in.\n      // Entry transition: visibility flips visible immediately (0s, no delay),\n      // then opacity and transform animate in.\n      // The :not(.hiding) qualifier lets the exit transition fall back to the\n      // base \"exit\" state above while [open] is still present (the JS keeps\n      // the dialog in the top layer during the exit so the ::backdrop and\n      // the browser's modal centering remain intact).\n      &[open]:not(.hiding) {\n        overflow: visible;\n        visibility: visible;\n        opacity: 1;\n        @include transition(\n          opacity var(--dialog-transition-duration) var(--dialog-transition-timing),\n          transform var(--dialog-transition-duration) var(--dialog-transition-timing),\n          visibility 0s\n        );\n        transform: none;\n      }\n\n      // Static backdrop \"bounce\" animation (modal dialogs only). Qualified\n      // with [open] (to outrank the open-state `transform: none` selector\n      // which now also includes `:not(.hiding)`) and `:not(.hiding)` (so\n      // a backdrop click while the dialog is mid-exit doesn't fight the\n      // slide-out transform).\n      &[open].dialog-static:not(.hiding) {\n        transform: scale(1.02);\n      }\n\n      // Native backdrop styling with transitions\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n        @include backdrop-transitions(var(--dialog-transition-duration), var(--dialog-transition-timing));\n      }\n\n      // Exit: fade the native backdrop out alongside the dialog. The dialog\n      // is kept in the top layer (and thus the ::backdrop is still rendered)\n      // for the duration of the exit transition.\n      &.hiding::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n\n    // Instant variant — no transitions, just snap visibility\n    &.dialog-instant {\n      &::backdrop {\n        background-color: var(--dialog-backdrop-bg);\n        backdrop-filter: blur(var(--dialog-backdrop-blur));\n      }\n    }\n\n    // Open state base (always applies, regardless of animation mode).\n    // Excluded while .hiding is present so the animated exit (above) can\n    // fall through to the base \"exit\" state — for instant dialogs, .hiding\n    // is removed synchronously after close() so this still applies normally.\n    &[open]:not(.hiding) {\n      overflow: visible;\n      visibility: visible;\n      opacity: 1;\n      transform: none;\n    }\n\n    // Non-modal dialog positioning\n    // show() doesn't use the top layer, so we need explicit positioning and z-index\n    &.dialog-nonmodal {\n      position: fixed;\n      inset-block-start: 50%;\n      inset-inline-start: 50%;\n      z-index: $zindex-dialog;\n      margin-inline: 0;\n      transform: translate(-50%, -50%);\n    }\n\n    // Scrollable dialog body (header/footer stay fixed)\n    &.dialog-scrollable[open] {\n      max-height: calc(100% - var(--dialog-margin) * 2);\n\n      .dialog-body {\n        overflow-y: auto;\n      }\n    }\n  }\n\n  // Entry animation for ::backdrop via @starting-style. The backdrop only\n  // exists while the dialog is in the top layer, so its starting state can't\n  // be expressed on the base selector.\n  // Default dialog (fade only) and the slide variants do NOT need\n  // @starting-style — the base opacity: 0 (and base transform for slides)\n  // serves as the entry-from state with the visibility trick.\n  @starting-style {\n    .dialog:not(.dialog-instant)::backdrop {\n      background-color: transparent;\n      backdrop-filter: blur(0);\n    }\n\n    // Swap entry: when this dialog is opened as the target of a swap, the\n    // outgoing dialog's ::backdrop is being removed synchronously in the same\n    // JS tick. To avoid any flicker (either a dip from a fade-in over nothing,\n    // or double-darkening from two stacked backdrops), start this backdrop\n    // already-opaque so it takes over from the outgoing one seamlessly.\n    .dialog.dialog-swap-in:not(.dialog-instant)::backdrop {\n      background-color: var(--dialog-backdrop-bg);\n      backdrop-filter: blur(var(--dialog-backdrop-blur));\n    }\n  }\n\n  // Dialog sizes\n  @each $size, $value in $dialog-sizes {\n    .dialog-#{$size} { --dialog-width: #{$value}; }\n  }\n\n  // Fullscreen dialog\n  .dialog-fullscreen {\n    --dialog-width: 100vw;\n    --dialog-margin: 0;\n    --dialog-border-radius: 0;\n\n    width: 100%;\n    max-width: none;\n    height: 100%;\n    max-height: none;\n  }\n\n  // Responsive fullscreen dialogs\n  @each $breakpoint in map.keys($breakpoints) {\n    $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n    @if $prefix != \"\" {\n      @include media-breakpoint-down($breakpoint) {\n        .#{css-escape-ident($breakpoint)}-down\\:dialog-fullscreen {\n          --dialog-width: 100vw;\n          --dialog-margin: 0;\n          --dialog-border-radius: 0;\n\n          width: 100%;\n          max-width: none;\n          height: 100%;\n          max-height: none;\n        }\n      }\n    }\n  }\n\n  // Dialog header\n  .dialog-header {\n    @include dialog-header(var(--dialog-header-padding));\n    border-block-end: var(--dialog-header-border-width) solid var(--dialog-header-border-color);\n\n    .btn-close {\n      margin-inline-start: auto;\n    }\n  }\n\n  // Dialog title\n  .dialog-title {\n    @include dialog-title();\n    font-size: var(--font-size-md);\n  }\n\n  // Dialog body\n  .dialog-body {\n    position: relative;\n    @include dialog-body(var(--dialog-padding));\n  }\n\n  // Dialog footer\n  .dialog-footer {\n    @include dialog-footer(var(--dialog-footer-padding), var(--dialog-footer-gap), var(--dialog-footer-border-width), var(--dialog-footer-border-color));\n  }\n}\n","// Shared mixins for Dialog and Drawer sub-components.\n// Both components use identical header/footer/body/title patterns\n// with different token namespaces.\n\n@use \"transition\" as *;\n\n// Header: flex row with close button alignment\n@mixin dialog-header($padding) {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  padding: $padding;\n}\n\n// Footer: flex row with end-aligned actions\n@mixin dialog-footer($padding, $gap, $border-width, $border-color) {\n  display: flex;\n  flex-shrink: 0;\n  flex-wrap: wrap;\n  gap: $gap;\n  align-items: center;\n  justify-content: flex-end;\n  padding: $padding;\n  border-block-start: $border-width solid $border-color;\n}\n\n// Body: flexible scrollable content area\n@mixin dialog-body($padding) {\n  flex: 1 1 auto;\n  padding: $padding;\n}\n\n// Title: reset margin, set line-height\n@mixin dialog-title($line-height: 1.5) {\n  margin-bottom: 0;\n  line-height: $line-height;\n}\n\n// Backdrop transitions for ::backdrop pseudo-element.\n// Both Dialog and Drawer use identical allow-discrete transitions\n// on display and overlay to keep ::backdrop in the top layer.\n@mixin backdrop-transitions($duration, $timing) {\n  @include transition(\n    background-color $duration $timing,\n    backdrop-filter $duration $timing,\n    display $duration allow-discrete,\n    overlay $duration allow-discrete\n  );\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// stylelint-disable scss/dollar-variable-default, custom-property-no-missing-var-function\n$menu-tokens: () !default;\n\n// scss-docs-start menu-tokens\n$menu-tokens: defaults(\n  (\n    --menu-zindex: #{$zindex-menu},\n    --menu-gap: .125rem,\n    --menu-min-width: 10rem,\n    --menu-padding-x: .25rem,\n    --menu-padding-y: .25rem,\n    --menu-spacer: .125rem,\n    --menu-font-size: var(--font-size-sm),\n    --menu-color: var(--fg-body),\n    --menu-bg: var(--bg-body),\n    // --menu-border-color: var(--border-color-translucent),\n    // --menu-border-radius: var(--radius-7),\n    // --menu-border-width: var(--border-width),\n    --menu-box-shadow: var(--box-shadow),\n    // --menu-max-height: none,\n    --menu-divider-bg: var(--border-color-translucent),\n    --menu-divider-margin-y: .125rem,\n    --menu-divider-margin-x: .25rem,\n    --menu-item-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-color: var(--menu-color, var(--fg-body)),\n    --menu-item-hover-bg: var(--bg-1),\n    --menu-item-active-color: var(--primary-contrast),\n    --menu-item-active-bg: var(--primary-bg),\n    --menu-item-disabled-color: var(--fg-3),\n    --menu-item-gap: .5rem,\n    --menu-item-padding-x: .75rem,\n    --menu-item-padding-y: .25rem,\n    --menu-item-border-radius: var(--radius-5),\n    --menu-icon-size: 1rem,\n    --menu-description-font-size: var(--font-size-xs),\n    --menu-check-color: currentcolor,\n    --menu-header-color: var(--fg-3),\n    --menu-header-padding-x: .75rem,\n    --menu-header-padding-y: .25rem,\n    --menu-transition-duration: .15s,\n    --menu-transition-timing: cubic-bezier(.22, 1, .36, 1),\n  ),\n  $menu-tokens\n);\n// scss-docs-end menu-tokens\n\n// stylelint-enable custom-property-no-missing-var-function, scss/dollar-variable-default\n\n@layer components {\n  .menu {\n    @include tokens($menu-tokens);\n\n    position: absolute;\n    z-index: var(--menu-zindex);\n    display: none;\n    flex-direction: column;\n    gap: var(--menu-gap);\n    min-width: var(--menu-min-width);\n    max-height: var(--menu-max-height, none);\n    padding: var(--menu-padding-y) var(--menu-padding-x);\n    margin: 0;\n    overflow-y: var(--menu-overflow-y, initial);\n    overscroll-behavior: contain;\n    font-size: var(--menu-font-size);\n    color: var(--menu-color);\n    text-align: start;\n    list-style-type: \"\";\n    background-color: var(--menu-bg);\n    background-clip: padding-box;\n    border: var(--menu-border-width, var(--border-width)) solid var(--menu-border-color, var(--border-color-translucent));\n    @include border-radius(var(--menu-border-radius, var(--radius-7)));\n    @include box-shadow(var(--menu-box-shadow));\n    opacity: 0;\n    transform: scale(.95);\n    transform-origin: top start;\n\n    &[data-bs-placement^=\"top\"] {\n      transform-origin: bottom start;\n    }\n\n    &[data-bs-placement=\"bottom-end\"] {\n      transform-origin: top end;\n    }\n\n    &[data-bs-placement=\"top-end\"] {\n      transform-origin: bottom end;\n    }\n\n    &[data-bs-placement^=\"left\"] {\n      transform-origin: top end;\n    }\n\n    @include transition(\n      opacity var(--menu-transition-duration) var(--menu-transition-timing),\n      transform var(--menu-transition-duration) var(--menu-transition-timing),\n      display var(--menu-transition-duration) allow-discrete\n    );\n\n    &.show {\n      display: flex;\n      opacity: 1;\n      transform: none;\n    }\n  }\n\n  @starting-style {\n    .menu.show {\n      opacity: 0;\n      transform: scale(.95);\n    }\n  }\n\n  .menu-scrollable {\n    --menu-max-height: 80dvh;\n    --menu-overflow-y: auto;\n  }\n\n  .menu-translucent {\n    --menu-item-hover-bg-light: color-mix(in oklch, var(--bg-1) 90%, transparent);\n    --menu-item-hover-bg-dark: color-mix(in oklch, var(--bg-1) 80%, transparent);\n\n    --menu-item-active-bg-light: color-mix(in oklch, var(--primary-bg) 80%, transparent);\n    --menu-item-active-bg-dark: color-mix(in oklch, var(--primary-bg) 70%, transparent);\n\n    --menu-item-active-bg: light-dark(var(--menu-item-active-bg-light), var(--menu-item-active-bg-dark));\n    --menu-item-hover-bg: light-dark(var(--menu-item-hover-bg-light), var(--menu-item-hover-bg-dark));\n\n    background-color: color-mix(in oklch, var(--menu-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .menu-divider {\n    height: 0;\n    margin: var(--menu-divider-margin-y) var(--menu-divider-margin-x);\n    overflow: hidden;\n    border-block-start: 1px solid var(--menu-divider-bg);\n    opacity: 1;\n  }\n\n  .menu-item {\n    display: flex;\n    gap: var(--menu-item-gap);\n    align-items: center;\n    width: 100%;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    font-weight: var(--menu-item-font-weight, var(--font-weight-normal));\n    color: var(--theme-fg, var(--menu-item-color));\n    text-align: inherit;\n    text-decoration: none;\n    white-space: nowrap;\n    cursor: pointer;\n    background-color: transparent;\n    border: 0;\n    outline: 0;\n    @include border-radius(var(--menu-item-border-radius, 0));\n\n    &:hover,\n    &:focus {\n      color: var(--theme-fg-emphasis, var(--menu-item-hover-color));\n      background-color: var(--theme-bg-subtle, var(--menu-item-hover-bg));\n      // @include gradient-bg(var(--theme-bg-subtle, var(--menu-item-hover-bg)));\n    }\n\n    &.active,\n    &:active {\n      color: var(--theme-contrast, var(--menu-item-active-color));\n      background-color: var(--theme-bg, var(--menu-item-active-bg));\n      // @include gradient-bg(var(--theme-bg, var(--menu-item-active-bg)));\n\n      .menu-item-icon {\n        color: inherit !important; // stylelint-disable-line declaration-no-important\n      }\n    }\n\n    &.selected {\n      font-weight: $font-weight-semibold;\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--menu-item-disabled-color);\n      pointer-events: none;\n      background-color: transparent;\n      // stylelint-disable-next-line scss/at-function-named-arguments\n      background-image: if(sass($enable-gradients): none; else: null);\n    }\n  }\n\n  .menu-item-icon {\n    flex-shrink: 0;\n    align-self: flex-start;\n    width: var(--menu-icon-size);\n    height: auto;\n    margin-top: .125rem;\n  }\n\n  .menu-item-content {\n    display: flex;\n    flex: 1;\n    flex-direction: column;\n    min-width: fit-content;\n  }\n\n  .menu-item-description {\n    font-size: var(--menu-description-font-size);\n    font-weight: var(--font-weight-normal);\n    color: color-mix(in oklch, currentcolor 65%, transparent);\n  }\n\n  .menu-item-check {\n    flex-shrink: 0;\n    align-self: flex-start;\n    margin-block-start: .125rem;\n    margin-inline-start: auto;\n    color: var(--menu-check-color);\n    visibility: hidden;\n\n    .selected > & {\n      visibility: visible;\n    }\n  }\n\n  .menu-header {\n    display: block;\n    padding: var(--menu-header-padding-y) var(--menu-header-padding-x);\n    margin-bottom: 0;\n    font-size: var(--font-size-sm);\n    color: var(--menu-header-color);\n    white-space: nowrap;\n  }\n\n  .menu-text {\n    display: block;\n    padding: var(--menu-item-padding-y) var(--menu-item-padding-x);\n    color: var(--fg-2);\n  }\n\n  // scss-docs-start submenu\n  .submenu {\n    position: relative;\n\n    > .menu-item {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .menu-item::after {\n      display: inline-block;\n      flex-shrink: 0;\n      width: .375em;\n      height: .375em;\n      margin-inline-start: auto;\n      content: \"\";\n      border-color: currentcolor;\n      border-style: solid;\n      border-width: 0 .125em .125em 0;\n      transform: rotate(-45deg);\n\n      [dir=\"rtl\"] & {\n        transform: rotate(135deg);\n      }\n    }\n\n    > .menu {\n      top: 0;\n      margin-top: calc(-1 * var(--menu-padding-y));\n    }\n\n    &:hover > .menu-item,\n    &:focus-within > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n\n    &.show > .menu-item {\n      color: var(--menu-item-hover-color);\n      background-color: var(--menu-item-hover-bg);\n    }\n  }\n  // scss-docs-end submenu\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n$list-group-tokens: () !default;\n\n// scss-docs-start list-group-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$list-group-tokens: defaults(\n  (\n    --list-group-color: var(--fg-body),\n    --list-group-bg: var(--bg-body),\n    --list-group-border-color: var(--border-color),\n    --list-group-border-width: var(--border-width),\n    --list-group-border-radius: var(--radius-5),\n    --list-group-item-padding-x: var(--spacer),\n    --list-group-item-padding-y: var(--spacer-2),\n    --list-group-action-color: var(--fg-2),\n    --list-group-action-hover-color: var(--fg-1),\n    --list-group-action-hover-bg: var(--bg-1),\n    --list-group-action-active-color: var(--fg-body),\n    --list-group-action-active-bg: var(--bg-2),\n    --list-group-disabled-color: var(--fg-3),\n    --list-group-disabled-bg: var(--bg-body),\n    --list-group-active-color: var(--primary-contrast),\n    --list-group-active-bg: var(--primary-bg),\n    --list-group-active-border-color: var(--primary-bg),\n  ),\n  $list-group-tokens\n);\n// scss-docs-end list-group-tokens\n\n@layer components {\n  .list-group {\n    @include tokens($list-group-tokens);\n\n    display: flex;\n    flex-direction: column;\n\n    // No need to set list-style-type: \"\"; since .list-group-item is block level\n    padding-inline-start: 0; // reset padding because ul and ol\n    margin-bottom: 0;\n    @include border-radius(var(--list-group-border-radius));\n  }\n\n  .list-group-numbered {\n    list-style-type: none;\n    counter-reset: section;\n\n    > .list-group-item::before {\n      // Increments only this instance of the section counter\n      content: counters(section, \".\") \". \";\n      counter-increment: section;\n    }\n  }\n\n  // Individual list items\n  //\n  // Use on `li`s or `div`s within the `.list-group` parent.\n\n  .list-group-item {\n    position: relative;\n    display: block;\n    padding: var(--list-group-item-padding-y) var(--list-group-item-padding-x);\n    color: var(--theme-fg, var(--list-group-color));\n    // stylelint-disable-next-line scss/at-function-named-arguments\n    text-decoration: if(sass($link-decoration == none): null);\n    background-color: var(--theme-bg-subtle, var(--list-group-bg));\n    border: var(--list-group-border-width) solid var(--theme-border, var(--list-group-border-color));\n\n    &:first-child {\n      @include border-top-radius(inherit);\n    }\n\n    &:last-child {\n      @include border-bottom-radius(inherit);\n    }\n\n    &.disabled,\n    &:disabled {\n      color: var(--list-group-disabled-color);\n      pointer-events: none;\n      background-color: var(--list-group-disabled-bg);\n    }\n\n    // Include both here for `<a>`s and `<button>`s\n    &.active {\n      z-index: 2; // Place active items above their siblings for proper border styling\n      color: var(--list-group-active-color);\n      background-color: var(--list-group-active-bg);\n      border-color: var(--list-group-active-border-color);\n    }\n\n    // stylelint-disable-next-line scss/selector-no-redundant-nesting-selector\n    & + .list-group-item {\n      border-block-start-width: 0;\n\n      &.active {\n        margin-top: calc(-1 * var(--list-group-border-width));\n        border-block-start-width: var(--list-group-border-width);\n      }\n    }\n  }\n\n  // Interactive list items\n  //\n  // Use anchor or button elements instead of `li`s or `div`s to create interactive\n  // list items. Includes an extra `.active` modifier class for selected items.\n\n  .list-group-item-action {\n    width: 100%; // For `<button>`s (anchors become 100% by default though)\n    color: var(--theme-fg, var(--list-group-action-color));\n    text-align: inherit; // For `<button>`s (anchors inherit)\n    text-decoration: none;\n\n    &:not(.active) {\n      // Hover state\n      &:hover,\n      &:focus {\n        z-index: 1; // Place hover/focus items above their siblings for proper border styling\n        color: var(--theme-fg-emphasis, var(--list-group-action-hover-color));\n        text-decoration: none;\n        background-color: var(--theme-bg-muted, var(--list-group-action-hover-bg));\n      }\n\n      &:active {\n        color: var(--theme-fg-emphasis, var(--list-group-action-active-color));\n        background-color: var(--theme-bg-muted, var(--list-group-action-active-bg));\n      }\n    }\n  }\n\n  // Horizontal\n  //\n  // Change the layout of list group items from vertical (default) to horizontal.\n  // The responsive variants use container queries, so wrap the list group in a\n  // query container (e.g., the `.contains-inline` utility) for them to take effect.\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}list-group-horizontal {\n      @include container-breakpoint-up($breakpoint) {\n        flex-direction: row;\n\n        > .list-group-item {\n          &:first-child:not(:last-child) {\n            @include border-bottom-start-radius(var(--list-group-border-radius));\n            @include border-top-end-radius(0);\n          }\n\n          &:last-child:not(:first-child) {\n            @include border-top-end-radius(var(--list-group-border-radius));\n            @include border-bottom-start-radius(0);\n          }\n\n          &.active {\n            margin-top: 0;\n          }\n\n          + .list-group-item {\n            border-block-start-width: var(--list-group-border-width);\n            border-inline-start-width: 0;\n\n            &.active {\n              margin-inline-start: calc(-1 * var(--list-group-border-width));\n              border-inline-start-width: var(--list-group-border-width);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  // Flush list items\n  //\n  // Remove borders and border-radius to keep list group items edge-to-edge. Most\n  // useful within other components (e.g., cards).\n\n  .list-group-flush {\n    @include border-radius(0);\n\n    > .list-group-item {\n      border-width: 0 0 var(--list-group-border-width);\n\n      &:last-child {\n        border-block-end-width: 0;\n      }\n    }\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n$nav-tokens: () !default;\n\n// scss-docs-start nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tokens: defaults(\n  (\n    --nav-gap: .125rem,\n    --nav-link-gap: .5rem,\n    --nav-link-align: center,\n    --nav-link-justify: center,\n    --nav-link-padding-x: .75rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--fg-2),\n    --nav-link-hover-color: var(--fg-1),\n    --nav-link-hover-bg: var(--bg-1),\n    --nav-link-active-color: var(--fg-body),\n    --nav-link-active-bg: var(--bg-2),\n    --nav-link-disabled-color: var(--fg-4),\n    --nav-link-border-width: var(--border-width),\n    --nav-link-transition-property: \"color, background-color, border-color\",\n    --nav-link-transition-timing: .15s ease-in-out,\n    --nav-link-transition: var(--nav-link-transition-property) var(--nav-link-transition-timing),\n  ),\n  $nav-tokens\n);\n// scss-docs-end nav-tokens\n\n$nav-tabs-tokens: () !default;\n\n// scss-docs-start nav-tabs-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-tabs-tokens: defaults(\n  (\n    --nav-tabs-border-width: var(--border-width),\n    --nav-tabs-border-color: var(--border-color),\n    --nav-tabs-border-radius: var(--radius-5),\n    --nav-tabs-link-hover-border-color: var(--border-subtle),\n    --nav-tabs-link-active-color: var(--fg-color),\n    --nav-tabs-link-active-bg: var(--bg-body),\n    --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--bg-body),\n  ),\n  $nav-tabs-tokens\n);\n// scss-docs-end nav-tabs-tokens\n\n$nav-pills-tokens: () !default;\n\n// scss-docs-start nav-pills-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-pills-tokens: defaults(\n  (\n    --nav-pills-bg: var(--bg-1),\n    --nav-pills-padding: .25rem,\n    --nav-pills-border-radius: var(--radius-9),\n    --nav-pills-link-active-color: var(--primary-contrast),\n    --nav-pills-link-active-bg: var(--primary-bg),\n    --nav-pills-link-border-radius: var(--radius-9),\n  ),\n  $nav-pills-tokens\n);\n// scss-docs-end nav-pills-tokens\n\n$nav-underline-tokens: () !default;\n\n// scss-docs-start nav-underline-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$nav-underline-tokens: defaults(\n  (\n    --nav-gap: 1rem,\n    --nav-link-active-bg: transparent,\n    --nav-underline-border-width: .125rem,\n    --nav-underline-link-active-color: var(--fg-color),\n  ),\n  $nav-underline-tokens\n);\n// scss-docs-end nav-underline-tokens\n\n// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s, `<ul>`s or `<ol>`s.\n\n@layer components {\n  .nav {\n    @include tokens($nav-tokens);\n\n    display: flex;\n    flex-wrap: wrap;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n  }\n\n  .nav-item {\n    display: flex;\n  }\n\n  .nav-link {\n    display: flex;\n    gap: var(--nav-link-gap);\n    align-items: var(--nav-link-align);\n    justify-content: var(--nav-link-justify);\n    padding: var(--nav-link-padding-y) var(--nav-link-padding-x);\n    font-weight: var(--nav-link-font-weight);\n    color: var(--nav-link-color);\n    text-decoration: none;\n    white-space: nowrap;\n    background: none;\n    border: var(--nav-link-border-width) solid transparent;\n    @include border-radius(var(--radius-5));\n    @include transition(var(--nav-link-transition));\n\n    &:hover,\n    &:focus {\n      color: var(--nav-link-hover-color);\n      background-color: var(--nav-link-hover-bg);\n    }\n\n    &:focus-visible {\n      --focus-ring-offset: 1px;\n      color: var(--nav-link-hover-color);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    &:active {\n      color: var(--nav-link-active-color);\n      background-color: var(--nav-link-active-bg);\n    }\n\n    // Disabled state lightens text\n    &.disabled,\n    &:disabled {\n      color: var(--nav-link-disabled-color);\n      pointer-events: none;\n      cursor: default;\n    }\n  }\n\n  //\n  // Tabs\n  //\n\n  .nav-tabs {\n    // scss-docs-start nav-tabs-css-vars\n    @include tokens($nav-tabs-tokens);\n    // scss-docs-end nav-tabs-css-vars\n\n    box-shadow: inset 0 calc(-1 * var(--nav-tabs-border-width)) 0 var(--nav-tabs-border-color);\n\n    .nav-link {\n      border: var(--nav-tabs-border-width) solid transparent;\n      border-bottom-color: var(--nav-tabs-border-color);\n      @include border-bottom-radius(0);\n\n      &:hover {\n        // Prevents active .nav-link tab overlapping focus outline of previous/next .nav-link\n        isolation: isolate;\n        border-color: var(--nav-tabs-link-hover-border-color);\n        border-bottom-color: var(--nav-tabs-border-color);\n      }\n    }\n\n    .nav-link.active,\n    .nav-item.show .nav-link {\n      color: var(--nav-tabs-link-active-color);\n      background-color: var(--nav-tabs-link-active-bg);\n      border-color: var(--nav-tabs-link-active-border-color);\n      border-bottom-color: var(--nav-tabs-link-active-bg);\n    }\n\n    .menu {\n      margin-top: calc(-1 * var(--nav-tabs-border-width));\n      @include border-top-radius(0);\n    }\n  }\n\n  //\n  // Pills\n  //\n\n  .nav-pills {\n    @include tokens($nav-pills-tokens);\n\n    display: inline-flex;\n    padding: var(--nav-pills-padding);\n    background-color: var(--nav-pills-bg);\n    @include border-radius(var(--nav-pills-border-radius));\n\n    .nav-link {\n      @include border-radius(var(--nav-pills-link-border-radius));\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      color: var(--nav-pills-link-active-color);\n      @include gradient-bg(var(--nav-pills-link-active-bg));\n    }\n  }\n\n  .nav-pills-vertical {\n    flex-direction: column;\n    align-items: stretch;\n\n    .nav-item,\n    .nav-link {\n      width: 100%;\n    }\n  }\n\n  //\n  // Underline\n  //\n\n  .nav-underline {\n    // scss-docs-start nav-underline-css-vars\n    @include tokens($nav-underline-tokens);\n    // scss-docs-end nav-underline-css-vars\n\n    .nav-link {\n      padding-inline: 0;\n      border: 0;\n      border-block-end: var(--nav-underline-border-width) solid transparent;\n      @include border-radius(0);\n\n      &:hover,\n      &:focus {\n        border-block-end-color: currentcolor;\n      }\n    }\n\n    .nav-link.active,\n    .show > .nav-link {\n      font-weight: $font-weight-bold;\n      color: var(--nav-underline-link-active-color);\n      border-block-end-color: currentcolor;\n    }\n  }\n\n  //\n  // Justified variants\n  //\n\n  .nav-fill {\n    > .nav-link,\n    .nav-item {\n      flex: 1 1 auto;\n      text-align: center;\n    }\n  }\n\n  .nav-justified {\n    > .nav-link,\n    .nav-item {\n      flex-grow: 1;\n      flex-basis: 0;\n      text-align: center;\n    }\n  }\n\n  .nav-fill,\n  .nav-justified {\n    .nav-item .nav-link {\n      width: 100%; // Make sure button will grow\n    }\n  }\n\n  // Tabbable tabs\n  //\n  // Hide tabbable panes to start, show them when `.active`\n\n  .tab-content {\n    > .tab-pane {\n      display: none;\n    }\n    > .active {\n      display: block;\n    }\n  }\n}\n","// Nav Overflow (Priority+ Pattern)\n//\n// A responsive navigation pattern that automatically moves items\n// to an overflow menu when space is limited.\n\n@layer components {\n  .nav-overflow {\n    flex-wrap: nowrap;\n    min-width: 0; // Allow flex child to shrink below content width\n  }\n\n  // Pills use inline-flex by default; override so the nav fills its container\n  // and the ResizeObserver can detect width changes.\n  .nav-pills.nav-overflow {\n    display: flex;\n  }\n\n  // Inside a navbar the nav is a flex child that sizes to content by default;\n  // grow it so it fills remaining space and shrinks with the container.\n  .navbar-nav.nav-overflow {\n    flex: 1 1 0;\n  }\n\n  // Container item for overflow\n  .nav-overflow-item {\n    flex-shrink: 0;\n    margin-inline-start: auto;\n  }\n\n  // Hide items that have been moved to overflow\n  .nav-overflow [data-bs-nav-overflow=\"true\"] {\n    display: none;\n  }\n\n  // Preserve items that should never overflow\n  .nav-overflow-keep {\n    flex-shrink: 0;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/mask-icon\" as *;\n@use \"mixins/tokens\" as *;\n@use \"mixins/transition\" as *;\n\n// mdo-do: fix nav-link-height and navbar-brand-height, which we previously calculated with font-size, line-height, and block padding\n\n// stylelint-disable custom-property-no-missing-var-function\n// scss-docs-start navbar-breakpoints\n$navbar-breakpoints: $breakpoints !default;\n// scss-docs-end navbar-breakpoints\n\n$navbar-tokens: () !default;\n$navbar-dark-tokens: () !default;\n$navbar-nav-tokens: () !default;\n\n// scss-docs-start navbar-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-tokens: defaults(\n  (\n    --navbar-padding-x: 0,\n    --navbar-padding-y: .5rem,\n    --navbar-color: var(--fg-2),\n    --navbar-hover-color: var(--fg-1),\n    --navbar-disabled-color: var(--fg-3),\n    --navbar-active-color: var(--fg-body),\n    --navbar-brand-padding-y: .75rem,\n    --navbar-brand-margin-end: 1rem,\n    --navbar-brand-font-size: var(--font-size-md),\n    --navbar-brand-font-weight: var(--font-weight-medium),\n    --navbar-brand-color: var(--fg-body),\n    --navbar-brand-hover-color: var(--fg-body),\n    --navbar-nav-link-padding-x: .75rem,\n    --navbar-toggler-width: 2rem,\n    --navbar-toggler-padding-y: .25rem,\n    --navbar-toggler-padding-x: .75rem,\n    --navbar-toggler-font-size: var(--font-size-lg),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--fg-body) 15%, transparent),\n    --navbar-toggler-border-radius: var(--radius-5),\n    --navbar-toggler-transition: box-shadow .15s ease-in-out,\n    --navbar-toggler-icon-size: 1.25rem,\n    --navbar-toggler-icon: #{escape-svg(url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path stroke='black' stroke-linecap='round' stroke-width='1' d='M1 3.5h14M1 8h14M1 12.5h14'/></svg>\"))},\n  ),\n  $navbar-tokens\n);\n// scss-docs-end navbar-tokens\n\n// scss-docs-start navbar-dark-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-dark-tokens: defaults(\n  (\n    --navbar-color: color-mix(in oklch, var(--white) .55, transparent),\n    --navbar-hover-color: color-mix(in oklch, var(--white) .75, transparent),\n    --navbar-disabled-color: color-mix(in oklch, var(--white) .25, transparent),\n    --navbar-active-color: var(--white),\n    --navbar-brand-color: var(--white),\n    --navbar-brand-hover-color: var(--white),\n    --navbar-toggler-border-color: color-mix(in oklch, var(--white) .1, transparent),\n  ),\n  $navbar-dark-tokens\n);\n// scss-docs-end navbar-dark-tokens\n\n// scss-docs-start navbar-nav-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$navbar-nav-tokens: defaults(\n  (\n    --nav-gap: .25rem,\n    --nav-link-gap: .5rem,\n    --nav-link-padding-x: .5rem,\n    --nav-link-padding-y: .375rem,\n    --nav-link-color: var(--navbar-color),\n    --nav-link-border-width: var(--border-width),\n    //--nav-link-border-color: var(--border-color),\n    --nav-link-hover-color: var(--navbar-hover-color),\n    --nav-link-hover-bg: transparent,\n    --nav-link-active-color: var(--navbar-active-color),\n    --nav-link-active-bg: transparent,\n    --nav-link-disabled-color: var(--navbar-disabled-color),\n  ),\n  $navbar-nav-tokens\n);\n// scss-docs-end navbar-nav-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  // Base navbar\n  .navbar {\n    @include tokens($navbar-tokens);\n\n    position: relative;\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n    padding: var(--navbar-padding-y) var(--navbar-padding-x);\n    @include set-container();\n    color: var(--navbar-color, var(--fg-body));\n    background-color: var(--navbar-bg, var(--bg-body));\n    // @include gradient-bg(var(--navbar-bg, var(--bg-body)));\n\n    // Container properties for nested containers\n    %container-flex-properties {\n      display: flex;\n      flex-wrap: inherit;\n      align-items: center;\n      justify-content: space-between;\n    }\n\n    > .container,\n    > .container-fluid {\n      @extend %container-flex-properties;\n    }\n\n    @each $breakpoint, $container-max-width in $container-max-widths {\n      > .#{breakpoint-prefix($breakpoint, $container-max-widths)}container {\n        @extend %container-flex-properties;\n      }\n    }\n  }\n\n  // Navbar brand\n  //\n  // Used for brand, project, or site names.\n  .navbar-brand {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    margin-inline-end: var(--navbar-brand-margin-end);\n    font-size: var(--navbar-brand-font-size);\n    font-weight: var(--navbar-brand-font-weight);\n    color: var(--navbar-brand-color);\n    text-decoration: none;\n    white-space: nowrap;\n\n    &:hover,\n    &:focus {\n      color: var(--navbar-brand-hover-color);\n    }\n  }\n\n  // Navigation within navbars. Sets all nav-link CSS variables needed for\n  // proper styling.\n  //\n  // Relies on `.nav` base class.\n  .navbar-nav {\n    @include tokens($navbar-nav-tokens);\n\n    display: flex;\n    flex-direction: column;\n    gap: var(--nav-gap);\n    padding-inline-start: 0;\n    margin-bottom: 0;\n    list-style-type: \"\";\n\n    .nav-link {\n      &.active,\n      &.show {\n        color: var(--navbar-active-color);\n        border: var(--nav-link-border-width) solid var(--nav-link-border-color, transparent);\n      }\n    }\n  }\n\n  // Navbar text\n  //\n  // For adding text or inline elements to the navbar\n  .navbar-text {\n    padding-top: var(--navbar-brand-padding-y);\n    padding-bottom: var(--navbar-brand-padding-y);\n    color: var(--navbar-color);\n\n    a,\n    a:hover,\n    a:focus {\n      color: var(--navbar-active-color);\n    }\n  }\n\n  // Button for toggling the navbar when in its collapsed state\n  .navbar-toggler {\n    --btn-bg: transparent;\n    --btn-hover-bg: var(--bg-2);\n  }\n\n  // Hamburger icon, rendered via CSS mask so it inherits the navbar color\n  .navbar-toggler-icon {\n    display: inline-block;\n    width: var(--navbar-toggler-icon-size);\n    height: var(--navbar-toggler-icon-size);\n    background-color: currentcolor;\n    @include mask-icon(var(--navbar-toggler-icon));\n  }\n\n  // scss-docs-start navbar-expand-loop\n  // Generate series of responsive `.navbar-expand` classes for configuring\n  // where your navbar collapses and expands. Uses container queries so the\n  // navbar responds to its own width, not the viewport width.\n\n  // Mixin for expanded state styles (applied to descendants)\n  @mixin navbar-expanded {\n    // Style the inner container since we can't style .navbar itself with container queries\n    > .container,\n    > .container-fluid,\n    %navbar-expand-container {\n      flex-wrap: nowrap;\n      justify-content: flex-start;\n    }\n\n    .navbar-nav {\n      --nav-link-padding-x: var(--navbar-nav-link-padding-x);\n      flex-direction: row;\n    }\n\n    .navbar-toggler {\n      display: none !important; // stylelint-disable-line declaration-no-important\n    }\n\n    [class*=\"drawer\"] {\n      // stylelint-disable declaration-no-important\n      // Reset native <dialog> UA styles and below-breakpoint drawer styles.\n      // Must use !important to override both UA <dialog> defaults and the\n      // responsive drawer styles from media-breakpoint-down().\n      position: static !important;\n      inset: auto !important;\n      z-index: auto;\n      display: flex !important;\n      flex-grow: 1;\n      width: auto !important;\n      max-width: none !important;\n      height: auto !important;\n      max-height: none !important;\n      padding: 0;\n      margin: 0;\n      visibility: visible !important;\n      background-color: transparent !important;\n      border: 0 !important;\n      transform: none !important;\n      @include box-shadow(none);\n      @include transition(none);\n      // stylelint-enable declaration-no-important\n\n      .drawer-header {\n        display: none !important; // stylelint-disable-line declaration-no-important\n      }\n\n      .drawer-body {\n        display: flex;\n        flex-grow: 1;\n        flex-direction: row;\n        align-items: center;\n        padding: 0;\n        overflow-y: visible;\n      }\n    }\n  }\n\n  // Always expanded (no responsive behavior)\n  .navbar-expand {\n    @include navbar-expanded();\n\n    // Also set on navbar itself for non-responsive case\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n\n  // Responsive navbar expand classes using container queries\n  @include loop-breakpoints-down($navbar-breakpoints) using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}navbar-expand {\n        @include container-breakpoint-up($next) {\n          @include navbar-expanded();\n        }\n      }\n    }\n  }\n  // scss-docs-end navbar-expand-loop\n\n  // Prevent drawer flash on breakpoint crossing.\n  // When the navbar crosses from expanded (inline) to collapsed (drawer),\n  // the drawer transitions from visibility:visible to visibility:hidden.\n  // Without this override, the slide transition plays — briefly showing the\n  // panel sliding away. Disabling transitions when not [open] ensures only\n  // intentional show/hide actions animate.\n  // stylelint-disable-next-line no-duplicate-selectors\n  .navbar {\n    [class*=\"drawer\"]:not([open], .hiding) {\n      @include transition(none !important);\n    }\n  }\n\n  .navbar-translucent {\n    position: relative;\n    background-color: transparent;\n\n    &::before {\n      position: absolute;\n      inset: 0;\n      z-index: -1;\n      content: \"\";\n      background-color: color-mix(in oklch, var(--navbar-bg, var(--bg-body)) 80%, transparent);\n      background-image: none;\n      backdrop-filter: blur(5px) saturate(180%);\n    }\n  }\n\n  .navbar[data-bs-theme=\"dark\"] {\n    @include tokens($navbar-dark-tokens);\n  }\n}\n","@use \"functions\" as *;\n@use \"config\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/dialog-shared\" as *;\n@use \"mixins/transition\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$drawer-tokens: () !default;\n\n// scss-docs-start drawer-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-tokens: defaults(\n  (\n    --drawer-inset: var(--spacer),\n    --drawer-zindex: #{$zindex-drawer},\n    --drawer-width: 400px,\n    --drawer-height: 30vh,\n    --drawer-padding-x: var(--spacer),\n    --drawer-padding-y: var(--spacer),\n    --drawer-color: var(--fg-body),\n    --drawer-bg: var(--bg-body),\n    --drawer-border-width: var(--border-width),\n    --drawer-border-color: var(--border-color-translucent),\n    --drawer-border-radius: var(--radius-7),\n    --drawer-box-shadow: var(--box-shadow-lg),\n    --drawer-transition-duration: .3s,\n    --drawer-transition-timing: cubic-bezier(.22, 1, .36, 1),\n    --drawer-title-line-height: 1.5,\n    --drawer-backdrop-bg: color-mix(in oklch, var(--bg-body) 25%, transparent),\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-tokens\n);\n// scss-docs-end drawer-tokens\n// stylelint-enable custom-property-no-missing-var-function\n\n$drawer-backdrop-tokens: () !default;\n\n// scss-docs-start drawer-backdrop-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$drawer-backdrop-tokens: defaults(\n  (\n    --drawer-backdrop-bg: var(--bg-body),\n    --drawer-backdrop-opacity: 25%,\n    --drawer-backdrop-blur: 8px,\n  ),\n  $drawer-backdrop-tokens\n);\n// scss-docs-end drawer-backdrop-tokens\n\n%drawer-css-vars {\n  @include tokens($drawer-tokens);\n}\n\n@layer components {\n  // Apply CSS vars to all drawer responsive variants\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @extend %drawer-css-vars;\n    }\n  }\n\n  // Responsive drawer styles\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer {\n      @include media-breakpoint-down($next) {\n        // Reset native <dialog> UA defaults (fit-content sizing, inset, margins)\n        // and override display:none so visibility controls the hidden state.\n        position: fixed;\n        inset: auto;\n        z-index: var(--drawer-zindex);\n        display: flex;\n        flex-direction: column;\n        width: auto;\n        max-width: calc(100% - var(--drawer-inset) * 2);\n        height: auto;\n        max-height: calc(100% - var(--drawer-inset) * 2);\n        padding: 0;\n        margin: 0;\n        color: var(--drawer-color);\n        visibility: hidden;\n        background-color: var(--drawer-bg);\n        background-clip: padding-box;\n        border: var(--drawer-border-width) solid var(--drawer-border-color);\n        outline: 0;\n\n        @include border-radius(var(--drawer-border-radius));\n        @include box-shadow(var(--drawer-box-shadow));\n\n        // Placement positioning and sizing — always applied regardless of animation mode.\n        &:where(.drawer-start) {\n          inset-block: var(--drawer-inset);\n          inset-inline-start: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-end) {\n          inset-block: var(--drawer-inset);\n          inset-inline-end: var(--drawer-inset);\n          width: var(--drawer-width);\n        }\n\n        &:where(.drawer-top) {\n          inset: var(--drawer-inset) var(--drawer-inset) auto;\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-bottom) {\n          inset: auto var(--drawer-inset) var(--drawer-inset);\n          height: var(--drawer-height);\n        }\n\n        &:where(.drawer-fullscreen) {\n          inset: var(--drawer-inset);\n          width: auto;\n          max-width: none;\n          height: auto;\n          max-height: none;\n        }\n\n        // Animated variant (default) — transitions + off-screen transforms.\n        // Adding .drawer-instant skips all animations.\n        &:not(.drawer-instant) {\n          @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s var(--drawer-transition-duration));\n\n          // Off-screen transforms per placement\n          &:where(.drawer-start) {\n            transform: translateX(calc(-100% - var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(100% + var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-end) {\n            transform: translateX(calc(100% + var(--drawer-inset)));\n\n            :root:dir(rtl) & {\n              transform: translateX(calc(-100% - var(--drawer-inset)));\n            }\n          }\n\n          &:where(.drawer-top) {\n            transform: translateY(calc(-100% - var(--drawer-inset)));\n          }\n\n          &:where(.drawer-bottom) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          &:where(.drawer-fullscreen) {\n            transform: translateY(calc(100% + var(--drawer-inset)));\n          }\n\n          // Open state: slide in with transition\n          &[open] {\n            visibility: visible;\n            @include transition(transform var(--drawer-transition-duration) var(--drawer-transition-timing), visibility 0s);\n            transform: none;\n          }\n        }\n\n        // Open state base (always applies, regardless of animation mode)\n        &[open] {\n          visibility: visible;\n          transform: none;\n        }\n      }\n\n      // Above breakpoint - show content inline (for responsive drawer)\n      // Above breakpoint - show content inline (for responsive drawer).\n      // Must fully reset all drawer styles so the element behaves as an\n      // inline flex container within its parent (e.g., a navbar).\n      @if not ($prefix == \"\") {\n        @include media-breakpoint-up($next) {\n          // stylelint-disable declaration-no-important\n          --drawer-height: auto;\n          --drawer-border-width: 0;\n          // Reset native <dialog> UA styles\n          position: static !important;\n          inset: auto;\n          z-index: auto;\n          display: flex !important;\n          flex-grow: 1;\n          width: auto !important;\n          max-width: none;\n          height: auto !important;\n          max-height: none;\n          padding: 0;\n          margin: 0;\n          visibility: visible !important;\n          background-color: transparent !important;\n          border: 0 !important;\n          transform: none !important;\n          @include transition(none !important);\n          // stylelint-enable declaration-no-important\n\n          .drawer-header {\n            display: none;\n          }\n\n          .drawer-body {\n            display: flex;\n            flex-grow: 0;\n            flex-direction: row;\n            width: 100%;\n            padding: 0;\n            overflow-y: visible;\n            // stylelint-disable-next-line declaration-no-important\n            background-color: transparent !important;\n          }\n          @include border-radius(0);\n          @include box-shadow(none);\n        }\n      }\n    }\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    .#{$prefix}drawer::backdrop {\n      background-color: var(--drawer-backdrop-bg);\n      backdrop-filter: blur(var(--drawer-backdrop-blur));\n      @include backdrop-transitions(var(--drawer-transition-duration), var(--drawer-transition-timing));\n    }\n  }\n\n  // Backdrop entry animation — ::backdrop can safely use @starting-style\n  // since it only exists when the dialog is in the top layer (no responsive issue).\n  @starting-style {\n    @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n      .#{$prefix}drawer::backdrop {\n        background-color: transparent;\n        backdrop-filter: blur(0);\n      }\n    }\n  }\n\n  // Static backdrop transition (\"bounce\")\n  .drawer-static {\n    transform: scale(1.02);\n  }\n\n  .drawer-translucent {\n    background-color: color-mix(in oklch, var(--drawer-bg) 80%, transparent);\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  // Sheet variant: flush-to-edge panel with no inset, border-radius, or shadow.\n  // Overrides tokens so placement transforms (which use calc() with --drawer-inset)\n  // automatically position the drawer at the viewport edge.\n  .drawer-sheet {\n    right: 0;\n    bottom: 0;\n    left: 0;\n    width: 100vw;\n    margin-inline: auto;\n    margin-bottom: calc(-1 * var(--drawer-border-width));\n    border-end-start-radius: 0;\n    border-end-end-radius: 0;\n\n    @include media-breakpoint-up(lg) {\n      max-width: var(--drawer-sheet-width, 760px);\n    }\n  }\n\n  // Header with close button\n  .drawer-header {\n    @include dialog-header(var(--drawer-padding-y) var(--drawer-padding-x));\n\n    .btn-close {\n      margin-block: calc(-.5 * var(--drawer-padding-y));\n      margin-inline-start: auto;\n    }\n  }\n\n  // Title\n  .drawer-title {\n    @include dialog-title(var(--drawer-title-line-height));\n  }\n\n  // Scrollable body\n  .drawer-body {\n    display: flex;\n    flex-direction: column;\n    gap: var(--drawer-padding-y);\n    @include dialog-body(var(--drawer-padding-y) var(--drawer-padding-x));\n    overflow-y: auto;\n  }\n\n  // Optional footer\n  .drawer-footer {\n    @include dialog-footer(var(--drawer-padding-y) var(--drawer-padding-x), .5rem, var(--drawer-border-width), var(--drawer-border-color));\n  }\n\n  .drawer-fit-content {\n    inset-block-end: auto;\n  }\n}\n","@use \"functions\" as *;\n@use \"mixins/lists\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/focus-ring\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/tokens\" as *;\n\n// mdo-do: Update pagination to support variant themes\n\n// stylelint-disable custom-property-no-missing-var-function\n$pagination-tokens: () !default;\n\n// scss-docs-start pagination-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-tokens: defaults(\n  (\n    --pagination-min-height: var(--btn-input-min-height),\n    --pagination-padding-x: var(--btn-input-padding-x),\n    --pagination-padding-y: var(--btn-input-padding-y),\n    --pagination-font-size: var(--btn-input-font-size),\n    --pagination-color: var(--link-color),\n    --pagination-bg: var(--bg-body),\n    --pagination-border-width: var(--border-width),\n    --pagination-border-color: var(--border-color),\n    --pagination-border-radius: var(--btn-input-border-radius),\n    --pagination-hover-color: var(--link-hover-color),\n    --pagination-hover-bg: var(--bg-1),\n    --pagination-hover-border-color: var(--border-color),\n    --pagination-focus-color: var(--link-hover-color),\n    --pagination-focus-bg: var(--bg-2),\n    --pagination-active-color: var(--primary-contrast),\n    --pagination-active-bg: var(--primary-bg),\n    --pagination-active-border-color: var(--primary-bg),\n    --pagination-disabled-color: var(--fg-3),\n    --pagination-disabled-bg: var(--bg-2),\n    --pagination-disabled-border-color: var(--border-color),\n  ),\n  $pagination-tokens\n);\n// scss-docs-end pagination-tokens\n\n// scss-docs-start pagination-sizes\n$pagination-sizes: () !default;\n// stylelint-disable-next-line scss/dollar-variable-default\n$pagination-sizes: defaults(\n  (\"sm\", \"lg\"),\n  $pagination-sizes\n);\n// scss-docs-end pagination-sizes\n// stylelint-enable custom-property-no-missing-var-function\n\n@layer components {\n  .pagination {\n    @include tokens($pagination-tokens);\n\n    display: flex;\n    @include list-unstyled();\n  }\n\n  .page-link {\n    position: relative;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: var(--pagination-min-height);\n    padding: var(--pagination-padding-y) var(--pagination-padding-x);\n    font-size: var(--pagination-font-size);\n    color: var(--pagination-color);\n    text-decoration: none;\n    background-color: var(--pagination-bg);\n    border: var(--pagination-border-width) solid var(--pagination-border-color);\n    @include transition(color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out);\n\n    &:hover {\n      z-index: 2;\n      color: var(--pagination-hover-color);\n      background-color: var(--pagination-hover-bg);\n      border-color: var(--pagination-hover-border-color);\n    }\n\n    &:focus-visible {\n      z-index: 3;\n      color: var(--pagination-focus-color);\n      background-color: var(--pagination-focus-bg);\n      @include focus-ring(true);\n    }\n\n    &.active,\n    .active > & {\n      z-index: 3;\n      color: var(--pagination-active-color);\n      @include gradient-bg(var(--pagination-active-bg));\n      border-color: var(--pagination-active-border-color);\n    }\n\n    &.disabled,\n    .disabled > & {\n      color: var(--pagination-disabled-color);\n      pointer-events: none;\n      background-color: var(--pagination-disabled-bg);\n      border-color: var(--pagination-disabled-border-color);\n    }\n  }\n\n  .page-item {\n    &:not(:first-child) .page-link {\n      margin-inline-start: calc(-1 * var(--pagination-border-width));\n    }\n\n    &:first-child {\n      .page-link {\n        @include border-start-radius(var(--pagination-border-radius));\n      }\n    }\n\n    &:last-child {\n      .page-link {\n        @include border-end-radius(var(--pagination-border-radius));\n      }\n    }\n  }\n\n  //\n  // Sizing\n  //\n\n  // scss-docs-start pagination-sizes-loop\n  @each $size, $_ in $pagination-sizes {\n    .pagination-#{$size} {\n      --pagination-min-height: var(--bs-btn-input-#{$size}-min-height);\n      --pagination-padding-y: var(--btn-input-#{$size}-padding-y);\n      --pagination-padding-x: var(--btn-input-#{$size}-padding-x);\n      --pagination-font-size: var(--btn-input-#{$size}-font-size);\n      --pagination-border-radius: var(--btn-input-#{$size}-border-radius);\n    }\n  }\n  // scss-docs-end pagination-sizes-loop\n}\n","@use \"colors\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n$placeholder-tokens: () !default;\n\n// scss-docs-start placeholder-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$placeholder-tokens: defaults(\n  (\n    --placeholder-opacity-max: .5,\n    --placeholder-opacity-min: .2,\n  ),\n  $placeholder-tokens\n);\n// scss-docs-end placeholder-tokens\n\n@layer components {\n  .placeholder {\n    @include tokens($placeholder-tokens);\n\n    display: inline-block;\n    min-height: 1em;\n    vertical-align: middle;\n    cursor: wait;\n    background-color: currentcolor;\n    opacity: var(--placeholder-opacity-max);\n\n    &.btn::before {\n      display: inline-block;\n      content: \"\";\n    }\n  }\n\n  // Sizing\n  .placeholder-xs {\n    min-height: .6em;\n  }\n\n  .placeholder-sm {\n    min-height: .8em;\n  }\n\n  .placeholder-lg {\n    min-height: 1.2em;\n  }\n\n  // Animation\n  .placeholder-glow {\n    .placeholder {\n      animation: placeholder-glow 2s ease-in-out infinite;\n    }\n  }\n\n  @keyframes placeholder-glow {\n    50% {\n      opacity: var(--placeholder-opacity-min);\n    }\n  }\n\n  .placeholder-wave {\n    mask-image: linear-gradient(130deg, $black 55%, rgb(0 0 0 / calc(1 - var(--placeholder-opacity-min))) 75%, $black 95%);\n    mask-size: 200% 100%;\n    animation: placeholder-wave 2s linear infinite;\n  }\n\n  @keyframes placeholder-wave {\n    100% {\n      mask-position: -200% 0%;\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$popover-tokens: () !default;\n\n// scss-docs-start popover-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$popover-tokens: defaults(\n  (\n    --popover-zindex: #{$zindex-popover},\n    --popover-max-width: 280px,\n    --popover-font-size: var(--font-size-sm),\n    --popover-bg: var(--bg-body),\n    --popover-border-width: var(--border-width),\n    --popover-border-color: var(--border-color-translucent),\n    --popover-border-radius: var(--radius-7),\n    --popover-inner-border-radius: calc(var(--radius-7) - var(--border-width)),\n    --popover-box-shadow: var(--box-shadow),\n    --popover-header-padding-x: var(--spacer),\n    --popover-header-padding-y: var(--spacer-3),\n    --popover-header-font-size: var(--font-size-sm),\n    --popover-header-color: #{$headings-color},\n    --popover-header-bg: var(--bg-1),\n    --popover-body-padding-x: var(--spacer),\n    --popover-body-padding-y: var(--spacer-3),\n    --popover-body-color: var(--fg-body),\n    --popover-arrow-width: 1rem,\n    --popover-arrow-height: .5rem,\n    --popover-arrow-border: var(--popover-border-color),\n  ),\n  $popover-tokens\n);\n// scss-docs-end popover-tokens\n\n@layer components {\n  .popover {\n    // scss-docs-start popover-css-vars\n    @include tokens($popover-tokens);\n    // scss-docs-end popover-css-vars\n\n    z-index: var(--popover-zindex);\n    display: block;\n    max-width: var(--popover-max-width);\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--popover-font-size);\n    // Allow breaking very long words so they don't overflow the popover's bounds\n    word-wrap: break-word;\n    background-color: var(--popover-bg);\n    background-clip: padding-box;\n    border: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-radius(var(--popover-border-radius));\n    @include box-shadow(var(--popover-box-shadow));\n\n    .popover-arrow {\n      display: block;\n      width: var(--popover-arrow-width);\n      height: var(--popover-arrow-height);\n\n      &::before,\n      &::after {\n        position: absolute;\n        display: block;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n        border-width: 0;\n      }\n    }\n  }\n\n  .bs-popover-top {\n    > .popover-arrow {\n      bottom: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        bottom: 0;\n        border-block-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        bottom: var(--popover-border-width);\n        border-block-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-end {\n    > .popover-arrow {\n      left: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height) calc(var(--popover-arrow-width) * .5) 0;\n      }\n\n      &::before {\n        left: 0;\n        border-inline-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        left: var(--popover-border-width);\n        border-inline-end-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-bottom {\n    > .popover-arrow {\n      top: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n\n      &::before,\n      &::after {\n        border-width: 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        top: 0;\n        border-block-end-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        top: var(--popover-border-width);\n        border-block-end-color: var(--popover-bg);\n      }\n\n      // When the popover has a header, the bottom arrow points into the header,\n      // so its fill should match the header background, not the body background.\n      &:has(+ .popover-header)::after {\n        border-block-end-color: var(--popover-header-bg);\n      }\n    }\n\n    // This will remove the popover-header's border just below the arrow\n    .popover-header::before {\n      position: absolute;\n      top: 0;\n      left: 50%;\n      display: block;\n      width: var(--popover-arrow-width);\n      margin-inline-start: calc(-.5 * var(--popover-arrow-width));\n      content: \"\";\n      border-block-end: var(--popover-border-width) solid var(--popover-header-bg);\n    }\n  }\n\n  .bs-popover-start {\n    > .popover-arrow {\n      right: calc(-1 * (var(--popover-arrow-height)) - var(--popover-border-width));\n      width: var(--popover-arrow-height);\n      height: var(--popover-arrow-width);\n\n      &::before,\n      &::after {\n        border-width: calc(var(--popover-arrow-width) * .5) 0 calc(var(--popover-arrow-width) * .5) var(--popover-arrow-height);\n      }\n\n      &::before {\n        right: 0;\n        border-inline-start-color: var(--popover-arrow-border);\n      }\n\n      &::after {\n        right: var(--popover-border-width);\n        border-inline-start-color: var(--popover-bg);\n      }\n    }\n  }\n\n  .bs-popover-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-popover-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-popover-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-popover-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-popover-start;\n    }\n  }\n\n  // Offset the popover to account for the popover arrow\n  .popover-header {\n    padding: var(--popover-header-padding-y) var(--popover-header-padding-x);\n    margin-bottom: 0; // Reset the default from Reboot\n    font-size: var(--popover-header-font-size);\n    color: var(--popover-header-color);\n    background-color: var(--popover-header-bg);\n    border-block-end: var(--popover-border-width) solid var(--popover-border-color);\n    @include border-top-radius(var(--popover-inner-border-radius));\n\n    &:empty {\n      display: none;\n    }\n  }\n\n  .popover-body {\n    padding: var(--popover-body-padding-y) var(--popover-body-padding-x);\n    color: var(--popover-body-color);\n  }\n}\n","@mixin reset-text {\n  font-family: var(--body-font-family);\n  // We deliberately do NOT reset font-size or overflow-wrap / word-wrap.\n  font-style: normal;\n  font-weight: var(--body-font-weight);\n  line-height: var(--body-line-height);\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  white-space: normal;\n  word-spacing: normal;\n  line-break: auto;\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/transition\" as *;\n@use \"mixins/gradients\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/box-shadow\" as *;\n@use \"mixins/tokens\" as *;\n\n$progress-tokens: () !default;\n\n// scss-docs-start progress-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$progress-tokens: defaults(\n  (\n    --progress-height: 1rem,\n    --progress-font-size: var(--font-size-sm),\n    --progress-bg: var(--bg-2),\n    --progress-border-radius: var(--radius-5),\n    --progress-box-shadow: var(--box-shadow-inset),\n    --progress-bar-color: var(--white),\n    --progress-bar-bg: var(--primary-bg),\n    --progress-bar-transition: width .6s ease,\n    --progress-bar-animation: progress-bar-stripes 1s linear infinite,\n  ),\n  $progress-tokens\n);\n// scss-docs-end progress-tokens\n\n// Disable animation if transitions are disabled\n\n@layer components {\n  // scss-docs-start progress-keyframes\n  @if $enable-transitions {\n    @keyframes progress-bar-stripes {\n      0% { background-position-x: var(--progress-height); }\n    }\n  }\n  // scss-docs-end progress-keyframes\n\n  .progress,\n  .progress-stacked {\n    @include tokens($progress-tokens);\n\n    display: flex;\n    height: var(--progress-height);\n    overflow: hidden;\n    font-size: var(--progress-font-size);\n    background-color: var(--progress-bg);\n    @include border-radius(var(--progress-border-radius));\n    @include box-shadow(var(--progress-box-shadow));\n  }\n\n  .progress-bar {\n    display: flex;\n    flex-direction: column;\n    justify-content: center;\n    overflow: hidden;\n    color: var(--theme-contrast, var(--progress-bar-color));\n    text-align: center;\n    white-space: nowrap;\n    background-color: var(--theme-bg, var(--progress-bar-bg));\n    @include transition(var(--progress-bar-transition));\n  }\n\n  .progress-bar-striped {\n    @include gradient-striped();\n    background-size: var(--progress-height) var(--progress-height);\n  }\n\n  .progress-stacked > .progress {\n    overflow: visible;\n  }\n\n  .progress-stacked > .progress > .progress-bar {\n    width: 100%;\n  }\n\n  @if $enable-transitions {\n    .progress-bar-animated {\n      animation: var(--progress-bar-animation);\n\n      @if $enable-reduced-motion {\n        @media (prefers-reduced-motion: reduce) {\n          animation: none;\n        }\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/tokens\" as *;\n\n// stylelint-disable custom-property-no-missing-var-function\n$spinner-border-tokens: () !default;\n\n// scss-docs-start spinner-border-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-border-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-border-width: .25em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-border,\n  ),\n  $spinner-border-tokens\n);\n// scss-docs-end spinner-border-tokens\n\n$spinner-grow-tokens: () !default;\n\n// scss-docs-start spinner-grow-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$spinner-grow-tokens: defaults(\n  (\n    --spinner-width: 2rem,\n    --spinner-height: 2rem,\n    --spinner-vertical-align: -.125em,\n    --spinner-animation-speed: .75s,\n    --spinner-animation-name: spinner-grow,\n  ),\n  $spinner-grow-tokens\n);\n// scss-docs-end spinner-grow-tokens\n\n// stylelint-enable custom-property-no-missing-var-function\n\n//\n// Rotating border\n//\n\n@layer components {\n  // mdo-do: Refactor this to assume flex parent and remove `vertical-align`\n  .spinner-grow,\n  .spinner-border {\n    display: inline-block;\n    flex-shrink: 0;\n    width: var(--spinner-width);\n    height: var(--spinner-height);\n    vertical-align: var(--spinner-vertical-align);\n    // stylelint-disable-next-line property-disallowed-list\n    border-radius: 50%;\n    animation: var(--spinner-animation-speed) linear infinite var(--spinner-animation-name);\n  }\n\n  // scss-docs-start spinner-border-keyframes\n  @keyframes spinner-border {\n    to { transform: rotate(360deg); }\n  }\n  // scss-docs-end spinner-border-keyframes\n\n  .spinner-border {\n    @include tokens($spinner-border-tokens);\n\n    border: var(--spinner-border-width) solid currentcolor;\n    border-inline-end-color: transparent;\n  }\n\n  .spinner-border-sm {\n    // scss-docs-start spinner-border-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    --spinner-border-width: .2em;\n    // scss-docs-end spinner-border-sm-css-vars\n  }\n\n  //\n  // Growing circle\n  //\n\n  // scss-docs-start spinner-grow-keyframes\n  @keyframes spinner-grow {\n    0% {\n      transform: scale(0);\n    }\n    50% {\n      opacity: 1;\n      transform: none;\n    }\n  }\n  // scss-docs-end spinner-grow-keyframes\n\n  .spinner-grow {\n    @include tokens($spinner-grow-tokens);\n\n    background-color: currentcolor;\n    opacity: 0;\n  }\n\n  .spinner-grow-sm {\n    // scss-docs-start spinner-grow-sm-css-vars\n    --spinner-width: 1rem;\n    --spinner-height: 1rem;\n    // scss-docs-end spinner-grow-sm-css-vars\n  }\n\n  @if $enable-reduced-motion {\n    @media (prefers-reduced-motion: reduce) {\n      .spinner-border,\n      .spinner-grow {\n        --spinner-animation-speed: 1.5s;\n      }\n    }\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"layout/breakpoints\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$stepper-tokens: () !default;\n\n// scss-docs-start stepper-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$stepper-tokens: defaults(\n  (\n    --stepper-size: 2rem,\n    --stepper-gap: 1rem,\n    --stepper-font-size: var(--font-size-sm),\n    --stepper-text-gap: .5rem,\n    --stepper-track-size: .125rem,\n    --stepper-bg: var(--bg-2),\n    --stepper-active-color: var(--primary-contrast),\n    --stepper-active-bg: var(--primary-bg),\n  ),\n  $stepper-tokens\n);\n// scss-docs-end stepper-tokens\n\n// scss-docs-start stepper-horizontal-mixin\n@mixin stepper-horizontal() {\n  display: inline-grid;\n  grid-auto-columns: 1fr;\n  grid-auto-flow: column;\n\n  .stepper-item {\n    grid-template-rows: var(--stepper-size) auto;\n    grid-template-columns: auto;\n    align-items: start;\n    justify-items: center;\n    text-align: center;\n\n    &::after {\n      inset-block-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      inset-block-end: auto;\n      inset-inline-start: 50%;\n      inset-inline-end: 100%;\n      width: calc(100% + var(--stepper-gap));\n      height: var(--stepper-track-size);\n    }\n\n    &:last-child::after {\n      right: 100%;\n    }\n  }\n}\n// scss-docs-end stepper-horizontal-mixin\n\n@layer components {\n  .stepper {\n    @include tokens($stepper-tokens);\n\n    display: grid;\n    grid-auto-rows: 1fr;\n    grid-auto-flow: row;\n    gap: var(--stepper-gap);\n    padding-inline-start: 0;\n    list-style-type: \"\";\n    counter-reset: stepper;\n  }\n\n  .stepper-item {\n    position: relative;\n    display: grid;\n    grid-template-rows: auto;\n    grid-template-columns: var(--stepper-size) auto;\n    gap: var(--stepper-text-gap);\n    align-items: var(--stepper-align-items, center);\n    text-decoration: none;\n\n    // The counter\n    &::before {\n      position: relative;\n      z-index: 1;\n      display: flex;\n      flex-shrink: 0;\n      align-items: center;\n      justify-content: center;\n      width: var(--stepper-size);\n      height: var(--stepper-size);\n      padding: .5rem;\n      font-size: var(--stepper-font-size);\n      font-weight: 600;\n      line-height: 1;\n      text-align: center;\n      content: counter(stepper);\n      counter-increment: stepper;\n      background-color: var(--stepper-bg);\n      @include border-radius(50%);\n    }\n\n    // Connecting lines\n    &::after {\n      position: absolute;\n      inset-block-start: 50%;\n      inset-block-end: 100%;\n      inset-inline-start: calc((var(--stepper-size) * .5) - (var(--stepper-track-size) * .5));\n      width: var(--stepper-track-size);\n      height: calc(100% + var(--stepper-gap));\n      content: \"\";\n      background-color: var(--stepper-bg);\n    }\n\n    // Avoid sibling selector for easier CSS overrides\n    &:last-child::after {\n      display: none;\n    }\n\n    &.active {\n      &::before,\n      &::after {\n        color: var(--theme-contrast, var(--stepper-active-color));\n        background-color: var(--theme-bg, var(--stepper-active-bg));\n      }\n    }\n  }\n\n  // Targets the last .active element from a sequence of active elements\n  .stepper-item.active:not(:has(+ .stepper-item.active))::after {\n    background-color: var(--stepper-bg);\n  }\n\n  .stepper-horizontal {\n    @include stepper-horizontal();\n  }\n\n  @include loop-breakpoints-down() using ($breakpoint, $next, $prefix) {\n    @if $next {\n      .#{$prefix}stepper-horizontal {\n        @include container-breakpoint-up($next) {\n          @include stepper-horizontal();\n        }\n      }\n    }\n  }\n\n  // scss-docs-start stepper-overflow\n  .stepper-overflow {\n    container-type: inline-size;\n    overflow-x: auto;\n    overscroll-behavior-x: contain;\n    -webkit-overflow-scrolling: touch;\n\n    > .stepper {\n      width: max-content;\n      min-width: 100%;\n    }\n  }\n  // scss-docs-end stepper-overflow\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/tokens\" as *;\n\n$toast-tokens: () !default;\n\n// scss-docs-start toast-tokens\n// stylelint-disable custom-property-no-missing-var-function\n// stylelint-disable-next-line scss/dollar-variable-default\n$toast-tokens: defaults(\n  (\n    --toast-zindex: #{$zindex-toast},\n    --toast-padding-x: 1rem,\n    --toast-padding-y: .75rem,\n    --toast-spacing: #{$container-padding-x},\n    --toast-max-width: 350px,\n    --toast-font-size: var(--font-size-sm),\n    --toast-color: null,\n    --toast-bg: var(--bg-body),\n    --toast-border-width: var(--border-width),\n    --toast-border-color: var(--border-color-translucent),\n    --toast-border-radius: null,\n    --toast-box-shadow: var(--box-shadow),\n    --toast-header-color: var(--fg-3),\n    --toast-header-bg: var(--bg-1),\n    --toast-header-border-color: var(--border-color-translucent),\n  ),\n  $toast-tokens\n);\n// stylelint-enable custom-property-no-missing-var-function\n// scss-docs-end toast-tokens\n\n@layer components {\n  .toast {\n    @include tokens($toast-tokens);\n\n    display: flex;\n    flex-direction: column;\n    width: var(--toast-max-width);\n    max-width: 100%;\n    overflow: hidden;\n    font-size: var(--toast-font-size);\n    color: var(--toast-color, var(--fg-body));\n    pointer-events: auto;\n    background-color: var(--toast-bg);\n    background-clip: padding-box;\n    border: var(--toast-border-width) solid var(--theme-border, var(--toast-border-color));\n    box-shadow: var(--toast-box-shadow);\n    @include border-radius(var(--toast-border-radius, var(--radius-7)));\n\n    &.showing {\n      opacity: 0;\n    }\n\n    &:not(.show) {\n      display: none;\n    }\n  }\n\n  .toast-container {\n    --toast-zindex: #{$zindex-toast};\n\n    position: absolute;\n    z-index: var(--toast-zindex);\n    width: max-content;\n    max-width: 100%;\n    pointer-events: none;\n\n    > :not(:last-child) {\n      margin-bottom: var(--toast-spacing);\n    }\n  }\n\n  .toast-header {\n    display: flex;\n    align-items: center;\n    padding: var(--toast-padding-y) var(--toast-padding-x);\n    color: var(--theme-fg-emphasis, var(--toast-header-color));\n    background-color: var(--theme-bg-subtle, var(--toast-header-bg));\n    // background-clip: padding-box;\n    border-block-end: var(--toast-border-width, var(--border-width)) solid var(--theme-border, var(--toast-header-border-color, var(--border-color-translucent)));\n\n    .btn-close {\n      margin-inline-start: calc(.5 * var(--toast-padding-x));\n      margin-inline-end: calc(-.25 * var(--toast-padding-x));\n      color: inherit;\n    }\n  }\n\n  .toast-translucent {\n    backdrop-filter: blur(5px) saturate(180%);\n  }\n\n  .toast-body {\n    padding: var(--toast-padding-x);\n    word-wrap: break-word;\n  }\n}\n","@use \"config\" as *;\n@use \"functions\" as *;\n@use \"mixins/border-radius\" as *;\n@use \"mixins/reset-text\" as *;\n@use \"mixins/tokens\" as *;\n\n$tooltip-tokens: () !default;\n\n// scss-docs-start tooltip-tokens\n// stylelint-disable-next-line scss/dollar-variable-default\n$tooltip-tokens: defaults(\n  (\n    --tooltip-zindex: #{$zindex-tooltip},\n    --tooltip-max-width: 200px,\n    --tooltip-padding-x: var(--spacer-3),\n    --tooltip-padding-y: calc(var(--spacer) * .375),\n    --tooltip-font-size: var(--font-size-sm),\n    --tooltip-color: var(--bg-body),\n    --tooltip-bg: var(--fg-body),\n    --tooltip-border-radius: var(--radius-5),\n    --tooltip-opacity: .95,\n    --tooltip-arrow-width: .8rem,\n    --tooltip-arrow-height: .4rem,\n  ),\n  $tooltip-tokens\n);\n// scss-docs-end tooltip-tokens\n\n@layer components {\n  .tooltip {\n    @include tokens($tooltip-tokens);\n\n    z-index: var(--tooltip-zindex);\n    display: block;\n    // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n    // So reset our font and text properties to avoid inheriting weird values.\n    @include reset-text();\n    font-size: var(--tooltip-font-size);\n    // Allow breaking very long words so they don't overflow the tooltip's bounds\n    word-wrap: break-word;\n    opacity: 0;\n\n    &.show { opacity: var(--tooltip-opacity); }\n\n    .tooltip-arrow {\n      display: block;\n      width: var(--tooltip-arrow-width);\n      height: var(--tooltip-arrow-height);\n\n      &::before {\n        position: absolute;\n        content: \"\";\n        border-color: transparent;\n        border-style: solid;\n      }\n    }\n  }\n\n  .bs-tooltip-top .tooltip-arrow {\n    bottom: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      top: -1px;\n      border-width: var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-block-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-end .tooltip-arrow {\n    left: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      right: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height) calc(var(--tooltip-arrow-width) * .5) 0;\n      border-inline-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-bottom .tooltip-arrow {\n    top: calc(-1 * var(--tooltip-arrow-height));\n\n    &::before {\n      bottom: -1px;\n      border-width: 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-block-end-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-start .tooltip-arrow {\n    right: calc(-1 * var(--tooltip-arrow-height));\n    width: var(--tooltip-arrow-height);\n    height: var(--tooltip-arrow-width);\n\n    &::before {\n      left: -1px;\n      border-width: calc(var(--tooltip-arrow-width) * .5) 0 calc(var(--tooltip-arrow-width) * .5) var(--tooltip-arrow-height);\n      border-inline-start-color: var(--tooltip-bg);\n    }\n  }\n\n  .bs-tooltip-auto {\n    &[data-bs-placement^=\"top\"] {\n      @extend .bs-tooltip-top;\n    }\n    &[data-bs-placement^=\"right\"] {\n      @extend .bs-tooltip-end;\n    }\n    &[data-bs-placement^=\"bottom\"] {\n      @extend .bs-tooltip-bottom;\n    }\n    &[data-bs-placement^=\"left\"] {\n      @extend .bs-tooltip-start;\n    }\n  }\n\n  // Wrapper for the tooltip content\n  .tooltip-inner {\n    max-width: var(--tooltip-max-width);\n    padding: var(--tooltip-padding-y) var(--tooltip-padding-x);\n    color: var(--tooltip-color);\n    text-align: center;\n    background-color: var(--tooltip-bg);\n    @include border-radius(var(--tooltip-border-radius));\n  }\n}\n","@use \"config\" as *;\n@use \"mixins/transition\" as *;\n\n.fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n// scss-docs-start collapse-classes\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n\n  &.collapse-horizontal {\n    width: 0;\n    height: auto;\n    @include transition($transition-collapse-width);\n  }\n}\n// scss-docs-end collapse-classes\n","@layer helpers {\n  .focus-ring:focus-visible {\n    // outline: var(--focus-ring);\n    outline: var(--focus-ring-width) solid var(--theme-focus-ring, var(--focus-ring-color));\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/transition\" as *;\n\n@layer helpers {\n  .icon-link {\n    display: inline-flex;\n    gap: $icon-link-gap;\n    align-items: center;\n    text-decoration-color: rgba(var(--link-color-rgb), var(--link-opacity, .5));\n    text-underline-offset: $icon-link-underline-offset;\n    backface-visibility: hidden;\n\n    > .bi {\n      flex-shrink: 0;\n      width: $icon-link-icon-size;\n      height: $icon-link-icon-size;\n      fill: currentcolor;\n      @include transition($icon-link-icon-transition);\n    }\n  }\n\n  .icon-link-hover {\n    &:hover,\n    &:focus-visible {\n      > .bi {\n        transform: var(--icon-link-transform, $icon-link-icon-transform);\n      }\n    }\n  }\n}\n","@use \"sass:map\";\n@use \"../config\" as *;\n@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  .fixed-top {\n    position: fixed;\n    inset: 0 0 auto;\n    z-index: $zindex-fixed;\n  }\n\n  .fixed-bottom {\n    position: fixed;\n    inset: auto 0 0;\n    z-index: $zindex-fixed;\n  }\n\n  // Responsive sticky top and bottom\n  @each $breakpoint in map.keys($breakpoints) {\n    @include media-breakpoint-up($breakpoint) {\n      $prefix: breakpoint-prefix($breakpoint, $breakpoints);\n\n      .#{$prefix}sticky-top {\n        position: sticky;\n        top: 0;\n        z-index: $zindex-sticky;\n      }\n\n      .#{$prefix}sticky-bottom {\n        position: sticky;\n        bottom: 0;\n        z-index: $zindex-sticky;\n      }\n    }\n  }\n}\n","@use \"../layout/breakpoints\" as *;\n\n@layer helpers {\n  // scss-docs-start stacks\n  .stack-container {\n    @include set-container();\n  }\n\n  [class*=\"hstack\"],\n  [class*=\"vstack\"] {\n    display: flex;\n    flex: var(--stack-flex, 1 1 auto);\n    flex-direction: var(--stack-direction, row);\n    align-items: var(--stack-align-items, center);\n    align-self: var(--stack-align-self, stretch);\n  }\n\n  @include loop-breakpoints-up() using ($breakpoint, $prefix) {\n    .#{$prefix}vstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: column;\n        --stack-align-items: stretch;\n      }\n    }\n    .#{$prefix}hstack {\n      @include container-breakpoint-up($breakpoint) {\n        --stack-direction: row;\n        --stack-align-items: flex-start;\n      }\n    }\n  }\n  // scss-docs-end stacks\n}\n","@use \"../theme\" as *;\n\n// Generate theme modifier classes (e.g., .theme-primary, .theme-accent, etc.)\n@layer helpers {\n  @include generate-theme-classes();\n}\n","@use \"sass:map\";\n\n@function theme-color-values($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: map.get($color-map, $key)));\n    }\n  }\n\n  @return $result;\n}\n\n// Themes map sub-keys\n//\n// Return var() references to root tokens instead of raw values.\n// Ex: theme-color-refs(\"bg\") => (primary: var(--primary-bg), accent: var(--accent-bg), ...)\n@function theme-color-refs($key) {\n  $result: ();\n\n  @each $color-name, $color-map in $theme-colors {\n    @if map.has-key($color-map, $key) {\n      $result: map.merge($result, ($color-name: var(--#{$color-name}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Theme token to root tokens\n//\n// Returns the global :root token reference for a given a given token map, prefix, and key.\n// Ex: theme-token-refs($theme-bgs, \"bg\") => (body: var(--bg-body), 1: var(--bg-1), ...)\n// Skips `inherit` since it's a CSS-wide keyword that can't be stored in a custom property.\n@function theme-token-refs($map, $prefix) {\n  $result: ();\n\n  @each $key, $value in $map {\n    @if $value != inherit {\n      $result: map.merge($result, ($key: var(--#{$prefix}-#{$key})));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate opacity values using color-mix()\n@function theme-opacity-values($color-var, $opacities: $util-opacity) {\n  $result: ();\n\n  @each $key, $value in $opacities {\n    @if $key == 100 {\n      // For 100%, use direct variable reference (more efficient)\n      $result: map.merge($result, ($key: var($color-var)));\n    } @else {\n      // For other values, use color-mix()\n      $percentage: $key * 1%;\n      $result: map.merge($result, ($key: color-mix(in oklch, var($color-var) $percentage, transparent)));\n    }\n  }\n\n  @return $result;\n}\n\n// Generate theme classes dynamically based on the keys in each theme color map\n@mixin generate-theme-classes() {\n  @each $color-name, $color-map in $theme-colors {\n    .theme-#{$color-name} {\n      @each $key, $value in $color-map {\n        --theme-#{$key}: var(--#{$color-name}-#{$key});\n      }\n    }\n  }\n}\n\n// scss-docs-start theme-colors\n$theme-colors: (\n  \"primary\": (\n    \"base\": var(--blue-500),\n    \"fg\": light-dark(var(--blue-600), var(--blue-400)),\n    \"fg-emphasis\": light-dark(var(--blue-800), var(--blue-200)),\n    \"bg\": var(--blue-500),\n    \"bg-subtle\": light-dark(var(--blue-100), var(--blue-900)),\n    \"bg-muted\": light-dark(var(--blue-200), var(--blue-800)),\n    \"border\": light-dark(var(--blue-300), var(--blue-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--blue-500) 50%, var(--bg-body)), color-mix(in oklch, var(--blue-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"accent\": (\n    \"base\": var(--indigo-500),\n    \"fg\": light-dark(var(--indigo-600), color-mix(in oklch, var(--indigo-400), var(--indigo-300))),\n    \"fg-emphasis\": light-dark(var(--indigo-800), var(--indigo-300)),\n    \"bg\": var(--indigo-500),\n    \"bg-subtle\": light-dark(var(--indigo-100), var(--indigo-900)),\n    \"bg-muted\": light-dark(var(--indigo-200), var(--indigo-800)),\n    \"border\": light-dark(var(--indigo-300), var(--indigo-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--indigo-500) 50%, var(--bg-body)), color-mix(in oklch, var(--indigo-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"success\": (\n    \"base\": var(--green-500),\n    \"fg\": light-dark(var(--green-600), var(--green-400)),\n    \"fg-emphasis\": light-dark(var(--green-800), var(--green-300)),\n    \"bg\": var(--green-500),\n    \"bg-subtle\": light-dark(var(--green-100), var(--green-900)),\n    \"bg-muted\": light-dark(var(--green-200), var(--green-800)),\n    \"border\": light-dark(var(--green-300), var(--green-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--green-500) 50%, var(--bg-body)), color-mix(in oklch, var(--green-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"danger\": (\n    \"base\": var(--red-500),\n    \"fg\": light-dark(var(--red-600), var(--red-400)),\n    \"fg-emphasis\": light-dark(var(--red-800), var(--red-300)),\n    \"bg\": var(--red-500),\n    \"bg-subtle\": light-dark(var(--red-100), var(--red-900)),\n    \"bg-muted\": light-dark(var(--red-200), var(--red-800)),\n    \"border\": light-dark(var(--red-300), var(--red-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--red-500) 50%, var(--bg-body)), color-mix(in oklch, var(--red-500) 75%, var(--bg-body))),\n    \"contrast\": var(--white)\n  ),\n  \"warning\": (\n    \"base\": var(--yellow-500),\n    \"fg\": light-dark(var(--yellow-700), var(--yellow-400)),\n    \"fg-emphasis\": light-dark(var(--yellow-800), var(--yellow-300)),\n    \"bg\": var(--yellow-500),\n    \"bg-subtle\": light-dark(var(--yellow-100), var(--yellow-900)),\n    \"bg-muted\": light-dark(var(--yellow-200), var(--yellow-800)),\n    \"border\": light-dark(var(--yellow-300), var(--yellow-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--yellow-500) 50%, var(--bg-body)), color-mix(in oklch, var(--yellow-400) 85%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"info\": (\n    \"base\": var(--cyan-500),\n    \"fg\": light-dark(var(--cyan-600), var(--cyan-400)),\n    \"fg-emphasis\": light-dark(var(--cyan-800), var(--cyan-300)),\n    \"bg\": var(--cyan-500),\n    \"bg-subtle\": light-dark(var(--cyan-100), var(--cyan-900)),\n    \"bg-muted\": light-dark(var(--cyan-200), var(--cyan-800)),\n    \"border\": light-dark(var(--cyan-300), var(--cyan-600)),\n    \"focus-ring\": light-dark(color-mix(in oklch, var(--cyan-500) 50%, var(--bg-body)), color-mix(in oklch, var(--cyan-500) 75%, var(--bg-body))),\n    \"contrast\": var(--gray-900)\n  ),\n  \"inverse\": (\n    \"base\": var(--gray-900),\n    \"fg\": light-dark(var(--gray-900), var(--gray-200)),\n    \"fg-emphasis\": light-dark(var(--gray-975), var(--white)),\n    \"bg\": light-dark(var(--gray-900), var(--gray-025)),\n    \"bg-subtle\": light-dark(var(--gray-100), var(--gray-900)),\n    \"bg-muted\": light-dark(var(--gray-200), var(--gray-300)),\n    \"border\": light-dark(var(--gray-400), var(--gray-100)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-900), var(--gray-100)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--white), var(--gray-900))\n  ),\n  \"secondary\": (\n    \"base\": var(--gray-200),\n    \"fg\": light-dark(var(--gray-600), var(--gray-400)),\n    \"fg-emphasis\": light-dark(var(--gray-800), var(--gray-200)),\n    \"bg\": light-dark(var(--gray-100), var(--gray-600)),\n    \"bg-subtle\": light-dark(var(--gray-050), var(--gray-800)),\n    \"bg-muted\": light-dark(var(--gray-100), var(--gray-700)),\n    \"border\": light-dark(var(--gray-300), var(--gray-600)),\n    \"focus-ring\": color-mix(in oklch, light-dark(var(--gray-500), var(--gray-300)) 50%, var(--bg-body)),\n    \"contrast\": light-dark(var(--gray-900), var(--white))\n  )\n) !default;\n// scss-docs-end theme-colors\n\n// mdo-do: consider using muted, subtle, ghost or something instead of linear scale?\n$theme-bgs: (\n  \"body\": light-dark(var(--white), var(--gray-975)),\n  \"1\": light-dark(var(--gray-025), var(--gray-950)),\n  \"2\": light-dark(var(--gray-050), var(--gray-900)),\n  \"3\": light-dark(var(--gray-100), var(--gray-800)),\n  \"4\": light-dark(var(--gray-200), var(--gray-700)),\n  \"fg\": var(--fg-body),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"transparent\": transparent,\n  \"inherit\": inherit,\n) !default;\n\n$theme-fgs: (\n  \"body\": light-dark(var(--gray-900), var(--gray-050)),\n  \"1\": light-dark(var(--gray-800), var(--gray-200)),\n  \"2\": light-dark(var(--gray-700), var(--gray-300)),\n  \"3\": light-dark(var(--gray-600), var(--gray-500)),\n  \"4\": light-dark(var(--gray-500), var(--gray-600)),\n  \"bg\": var(--bg-body),\n  \"white\": var(--white),\n  \"black\": var(--black),\n  \"inherit\": inherit,\n) !default;\n\n$theme-borders: (\n  \"bg\": var(--bg-body),\n  \"body\": light-dark(var(--gray-300), var(--gray-800)),\n  \"muted\": light-dark(var(--gray-200), var(--gray-800)),\n  \"subtle\": light-dark(color-mix(in oklch, var(--gray-100), var(--gray-200)), var(--gray-900)),\n  \"emphasized\": light-dark(var(--gray-400), var(--gray-600)),\n  \"white\": var(--white),\n  \"black\": var(--black),\n) !default;\n\n$util-opacity: (\n  10: .1,\n  20: .2,\n  30: .3,\n  40: .4,\n  50: .5,\n  60: .6,\n  70: .7,\n  80: .8,\n  90: .9,\n  100: 1\n) !default;\n","@use \"../mixins/visually-hidden\" as *;\n\n@layer helpers {\n  .visually-hidden,\n  .visually-hidden-focusable:not(:focus, :focus-within) {\n    @include visually-hidden();\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Hide content visually while keeping it accessible to assistive technologies\n//\n// See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/\n// See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin visually-hidden() {\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important; // Fix for https://github.com/twbs/bootstrap/issues/25686\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n\n  // Fix for positioned table caption that could become anonymous cells\n  &:not(caption) {\n    position: absolute !important;\n  }\n\n  // Fix to prevent overflowing children to become focusable\n  * {\n    overflow: hidden !important;\n  }\n}\n\n// Use to only display content when it's focused, or one of its child elements is focused\n// (i.e. when focus is within the element/container that the class was applied to)\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/WAI/WCAG22/Techniques/general/G1.html\n\n@mixin visually-hidden-focusable() {\n  &:not(:focus, :focus-within) {\n    @include visually-hidden();\n  }\n}\n","@use \"../config\" as *;\n\n@layer helpers {\n  .stretched-link {\n    &::#{$stretched-link-pseudo-element} {\n      position: absolute;\n      inset: 0;\n      z-index: $stretched-link-z-index;\n      content: \"\";\n    }\n  }\n}\n","@use \"../mixins/text-truncate\" as *;\n\n@layer helpers {\n  .text-truncate {\n    @include text-truncate();\n  }\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","@layer helpers {\n  .vr {\n    display: inline-block;\n    align-self: stretch;\n    width: var(--vr-border-width, var(--border-width));\n    min-height: 1em;\n    background-color: var(--border-color);\n  }\n}\n","@use \"../config\" as *;\n@use \"../mixins/utilities\" as *;\n@use \"../utilities\" as *;\n\n@layer utilities {\n  @include generate-utilities-loop($utilities, $breakpoints);\n}\n","@use \"sass:list\";\n@use \"sass:map\";\n@use \"sass:meta\";\n@use \"../layout/breakpoints\" as bp;\n\n// Utility generator\n\n// - Utilities can use three different types of selectors:\n//   - class: .class\n//   - attr-starts: [class^=\"class\"]\n//   - attr-includes: [class*=\"class\"]\n// - Utilities can target children via `child-selector`, wrapped in :where() for zero specificity\n// - Utilities can generate regular CSS properties and CSS custom properties\n// - Utilities can be responsive or not\n// - Utilities can have state variants (e.g., hover, focus, active)\n// - Utilities can define local CSS variables\n//\n// CSS custom properties can be generated in two ways:\n//\n// 1. Property map with null values (CSS var receives the utility value):\n// \"bg-color\": (\n//   property: (\n//     \"--bg\": null,\n//     \"background-color\": var(--bg)\n//   ),\n//   class: bg,\n//   values: (\n//     primary: var(--blue-500),\n//   )\n// )\n// Generates:\n// .bg-primary {\n//   --bs-bg: var(--bs-blue-500);\n//   background-color: var(--bs-bg);\n// }\n//\n// 2. Variables map (static CSS custom properties on every class):\n// \"link-underline\": (\n//   property: text-decoration-color,\n//   class: link-underline,\n//   variables: (\n//     \"link-underline-opacity\": 1\n//   ),\n//   values: (...)\n// )\n// Generates:\n// .link-underline {\n//   --bs-link-underline-opacity: 1;\n//   text-decoration-color: ...;\n// }\n\n// Helper mixin to emit CSS custom properties from a utility's `variables` key.\n// When variables is a map, the provided static values are used on each class.\n// When variables is a list or single identifier, each variable receives the current utility value.\n@mixin generate-variables($utility, $value) {\n  @if map.has-key($utility, variables) {\n    $variables: map.get($utility, variables);\n    @if meta.type-of($variables) == \"map\" {\n      @each $var-key, $var-value in $variables {\n        --#{$var-key}: #{$var-value};\n      }\n    } @else {\n      // Treat as a list (or single identifier) — each variable gets the utility value\n      @each $var-name in $variables {\n        --#{$var-name}: #{$value};\n      }\n    }\n  }\n}\n\n// Helper mixin to generate CSS properties for both legacy and property map approaches\n@mixin generate-properties($utility, $property-map, $properties, $value) {\n  @if $property-map != null {\n    // Property-Value Mapping approach\n    @each $property, $default-value in $property-map {\n      // If value is a map, check if it has a key for this property.\n      // Otherwise, use default-value (or $value if default-value is null).\n      $actual-value: $default-value;\n      @if meta.type-of($value) == \"map\" and map.has-key($value, $property) {\n        $actual-value: map.get($value, $property);\n      } @else if $default-value == null {\n        $actual-value: $value;\n      }\n      @if map.get($utility, important) {\n        #{$property}: $actual-value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $actual-value;\n      }\n    }\n  } @else {\n    // Legacy approach\n    @each $property in $properties {\n      @if map.get($utility, important) {\n        #{$property}: $value !important; // stylelint-disable-line declaration-no-important\n      } @else {\n        #{$property}: $value;\n      }\n    }\n  }\n}\n\n@mixin generate-utility($utility, $prefix: \"\") {\n  // Validate required keys\n  @if not map.has-key($utility, property) {\n    @error \"Utility is missing required `property` key: #{$utility}\";\n  }\n  @if not map.has-key($utility, values) {\n    @error \"Utility is missing required `values` key: #{$utility}\";\n  }\n\n  // Warn on unknown keys (likely typos)\n  $valid-keys: property, values, class, selector, responsive, print, dark, important, state, variables, child-selector, enabled;\n  @each $key in map.keys($utility) {\n    @if not list.index($valid-keys, $key) {\n      @warn \"Unknown utility key `#{$key}` found. Valid keys are: #{$valid-keys}\";\n    }\n  }\n\n  // Validate boolean keys\n  @each $bool-key in (responsive, print, dark, important, enabled) {\n    @if map.has-key($utility, $bool-key) {\n      $val: map.get($utility, $bool-key);\n      @if $val != true and $val != false {\n        @error \"Utility key `#{$bool-key}` should be a boolean (true or false), got: #{$val}\";\n      }\n    }\n  }\n\n  // Determine if we're generating a class, or an attribute selector\n  $selector-type: \"class\";\n  @if map.has-key($utility, selector) {\n    $selector-type: map.get($utility, selector);\n    // Validate selector type\n    $valid-selectors: \"class\", \"attr-starts\", \"attr-includes\";\n    @if not list.index($valid-selectors, $selector-type) {\n      @error \"Invalid `selector` value `#{$selector-type}`. Must be one of: #{$valid-selectors}\";\n    }\n  }\n  // Then get the class name to use in a class (e.g., .class) or in an attribute selector (e.g., [class^=\"class\"])\n  $selector-class: map.get($utility, class);\n\n  // Attribute selectors require a `class` key\n  @if $selector-type != \"class\" and not map.has-key($utility, class) {\n    @error \"Utility with `selector: #{$selector-type}` requires a `class` key.\";\n  }\n\n  // Get the list or map of values and ensure it's a map\n  $values: map.get($utility, values);\n  @if meta.type-of($values) != \"map\" {\n    @if meta.type-of($values) == \"list\" {\n      $list: ();\n      @each $value in $values {\n        $list: map.merge($list, ($value: $value));\n      }\n      $values: $list;\n    } @else {\n      $values: (null: $values);\n    }\n  }\n\n  @each $key, $value in $values {\n    $properties: map.get($utility, property);\n    $property-map: null;\n    $custom-class: \"\";\n\n    // Check if property is a map (Property-Value Mapping approach)\n    @if meta.type-of($properties) == \"map\" {\n      $property-map: $properties;\n      @if map.has-key($utility, class) {\n        $custom-class: map.get($utility, class);\n      }\n    } @else {\n      // Legacy approach: multiple properties are possible, for example with vertical or horizontal margins or paddings\n      @if meta.type-of($properties) == \"string\" {\n        $properties: list.append((), $properties);\n      }\n      // Use custom class if present, otherwise use the first value from the list of properties\n      @if map.has-key($utility, class) {\n        $custom-class: map.get($utility, class);\n      } @else {\n        $custom-class: list.nth($properties, 1);\n      }\n      @if $custom-class == null {\n        $custom-class: \"\";\n      }\n    }\n\n    // State params to generate state variants\n    $state: ();\n    @if map.has-key($utility, state) {\n      $state: map.get($utility, state);\n    }\n\n    // Don't add a dash before value key if value key is null (e.g. with shadow class)\n    $custom-class-modifier: \"\";\n    @if $key {\n      @if $custom-class == \"\" {\n        $custom-class-modifier: $key;\n      } @else {\n        $custom-class-modifier: \"-\" + $key;\n      }\n    }\n\n    // Build the class name fragment (without prefix or dot) for reuse in state variants\n    $class-name: \"\";\n    @if $selector-type == \"class\" {\n      @if $custom-class != \"\" {\n        $class-name: $custom-class + $custom-class-modifier;\n      } @else if $selector-class != null and $selector-class != \"\" {\n        $class-name: $selector-class + $custom-class-modifier;\n      } @else {\n        $class-name: $custom-class-modifier;\n      }\n    }\n\n    $selector: \"\";\n    @if $selector-type == \"class\" {\n      $selector: \".#{$prefix + $class-name}\";\n    } @else if $selector-type == \"attr-starts\" {\n      $selector: \"[class^=\\\"#{$selector-class}\\\"]\";\n    } @else if $selector-type == \"attr-includes\" {\n      $selector: \"[class*=\\\"#{$selector-class}\\\"]\";\n    }\n\n    // Apply child-selector wrapping if present (wraps in :where() for zero specificity)\n    $child-sel: null;\n    @if map.has-key($utility, child-selector) {\n      $child-sel: map.get($utility, child-selector);\n    }\n\n    $final-selector: $selector;\n    @if $child-sel {\n      $final-selector: \":where(#{$selector} #{$child-sel})\";\n    }\n\n    #{$final-selector} {\n      @include generate-variables($utility, $value);\n      @include generate-properties($utility, $property-map, $properties, $value);\n    }\n\n    // Generate state variants (e.g., hover:link-10 instead of link-10-hover)\n    @if $state != () {\n      @each $state-variant in $state {\n        $state-selector: \".#{$prefix}#{$state-variant}\\\\:#{$class-name}:#{$state-variant}\";\n        @if $child-sel {\n          $state-selector: \":where(#{$state-selector} #{$child-sel})\";\n        }\n\n        #{$state-selector} {\n          @include generate-variables($utility, $value);\n          @include generate-properties($utility, $property-map, $properties, $value);\n        }\n      }\n    }\n  }\n}\n\n// Generates all utility classes: base, responsive, print, and dark.\n// Extracted so that tests can call this mixin directly with a custom $utilities map\n// rather than having to mirror the loop conditions inline.\n@mixin generate-utilities-loop($utilities, $breakpoints) {\n  // Base + responsive (one pass per breakpoint)\n  @each $breakpoint in map.keys($breakpoints) {\n    @include bp.media-breakpoint-up($breakpoint, $breakpoints) {\n      $prefix: bp.breakpoint-prefix($breakpoint, $breakpoints);\n\n      @each $key, $utility in $utilities {\n        @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and (map.get($utility, responsive) or $prefix == \"\") {\n          @include generate-utility($utility, $prefix);\n        }\n      }\n    }\n  }\n\n  // Print utilities\n  @media print {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, print) == true {\n        @include generate-utility($utility, \"print\\\\:\");\n      }\n    }\n  }\n\n  // Dark utilities\n  @media (prefers-color-scheme: dark) {\n    @each $key, $utility in $utilities {\n      @if meta.type-of($utility) == \"map\" and map.get($utility, enabled) != false and map.get($utility, dark) == true {\n        @include generate-utility($utility, \"dark\\\\:\");\n      }\n    }\n  }\n}\n"],"names":[]}
\ No newline at end of file
index a16692aadf98c63fb0cf680a6e32cc2487b5f118..cb951fd0d16d32d3a08195ca8a408fb58c836e69 100644 (file)
@@ -6541,7 +6541,7 @@ const SELECTOR_DATA_OTP = '[data-bs-otp]';
 const SELECTOR_INPUT$1 = 'input';
 
 // Events that should refresh the active-slot highlight as the caret moves
-const SYNC_EVENTS = ['blur', 'keyup', 'click', 'select'];
+const SYNC_EVENTS = ['blur', 'keyup', 'select'];
 const CLASS_NAME_INPUT = 'otp-input';
 const CLASS_NAME_RENDERED = 'otp-rendered';
 const CLASS_NAME_SLOTS = 'otp-slots';
@@ -6598,6 +6598,11 @@ class OtpInput extends BaseComponent {
     this._type = TYPES[this._config.type] || TYPES.numeric;
     this._length = this._resolveLength();
     this._slots = [];
+    // Tracks whether focus was triggered by a click so we can respect the
+    // clicked slot instead of jumping to the first empty one
+    this._pointerActive = false;
+    // Slot index from the most recent tap, applied once focus settles
+    this._pointerIndex = 0;
     this._setupInput();
     this._renderSlots();
     this._addEventListeners();
@@ -6631,14 +6636,16 @@ class OtpInput extends BaseComponent {
   }
   focus() {
     this._input.focus();
-    // Place the caret after the last entered character
-    const end = this._input.value.length;
-    this._input.setSelectionRange(end, end);
+    // Select the first empty slot (or the last one when the value is full)
+    this._selectSlot(this._firstEmptyIndex());
     this._render();
   }
   dispose() {
     EventHandler.off(this._input, 'input', this._onInput);
+    EventHandler.off(this._input, 'beforeinput', this._onBeforeInput);
     EventHandler.off(this._input, 'focus', this._onFocus);
+    EventHandler.off(this._input, 'pointerdown', this._onPointerDown);
+    EventHandler.off(document, 'selectionchange', this._onSelectionChange);
     for (const type of SYNC_EVENTS) {
       EventHandler.off(this._input, type, this._onSync);
     }
@@ -6710,30 +6717,152 @@ class OtpInput extends BaseComponent {
   }
   _addEventListeners() {
     // Listeners are attached with bare event names (not namespaced) because
-    // `input` is not in EventHandler's native-events list; we keep references
-    // so they can be removed on dispose.
+    // `input`, `beforeinput`, and `selectionchange` are not in EventHandler's
+    // native-events list; we keep references so they can be removed on dispose.
     this._onInput = () => this._handleInput();
-    this._onFocus = () => this.focus();
+    this._onBeforeInput = event => this._handleBeforeInput(event);
+    this._onPointerDown = event => this._handlePointerDown(event);
+    this._onFocus = () => {
+      if (this._pointerActive) {
+        // A tap focused the input natively; position the caret on the clicked
+        // slot now that focus has settled (doing this before native focus would
+        // make iOS/iPadOS raise then immediately dismiss the keyboard)
+        this._pointerActive = false;
+        this._selectSlot(this._pointerIndex);
+        this._render();
+        return;
+      }
+
+      // Keyboard (Tab) focus lands on the first empty slot
+      this._selectSlot(this._firstEmptyIndex());
+      this._render();
+    };
     this._onSync = () => this._render();
+    this._onSelectionChange = () => {
+      if (document.activeElement === this._input) {
+        this._render();
+      }
+    };
     EventHandler.on(this._input, 'input', this._onInput);
+    EventHandler.on(this._input, 'beforeinput', this._onBeforeInput);
     EventHandler.on(this._input, 'focus', this._onFocus);
+    EventHandler.on(this._input, 'pointerdown', this._onPointerDown);
+    EventHandler.on(document, 'selectionchange', this._onSelectionChange);
 
     // Keep the active-slot highlight in sync with the caret
     for (const type of SYNC_EVENTS) {
       EventHandler.on(this._input, type, this._onSync);
     }
   }
+
+  // Bulk path: paste, SMS autofill, or a programmatic value change land here as
+  // a single multi-character `input` event. Single keystrokes are handled by
+  // `_handleBeforeInput` (overwrite semantics) and never reach this method.
   _handleInput() {
     const sanitized = this._sanitize(this._input.value);
     if (sanitized !== this._input.value) {
       this._input.value = sanitized;
     }
+
+    // Place the caret on the first empty slot after a paste/autofill
+    if (document.activeElement === this._input) {
+      this._selectSlot(this._firstEmptyIndex());
+    }
+    this._afterValueChange();
+  }
+
+  // Intercept single-character typing and backspace so each slot is overwritten
+  // in place rather than inserting and shifting the rest of the value. Anything
+  // else (paste, autofill, IME composition) falls through to `_handleInput`.
+  _handleBeforeInput(event) {
+    const {
+      inputType,
+      data
+    } = event;
+    if (inputType === 'insertText' && data && data.length === 1) {
+      event.preventDefault();
+      const char = this._sanitize(data);
+      if (!char) {
+        return;
+      }
+      const index = Math.min(this._input.selectionStart ?? 0, this._length - 1);
+      const chars = [...this._input.value];
+      chars[index] = char;
+      this._input.value = chars.join('').slice(0, this._length);
+      this._selectSlot(index + 1);
+      this._afterValueChange();
+      return;
+    }
+    if (inputType === 'deleteContentBackward') {
+      event.preventDefault();
+      const start = this._input.selectionStart ?? 0;
+      const end = this._input.selectionEnd ?? start;
+      const chars = [...this._input.value];
+      if (end > start) {
+        // A filled slot is selected: clear it and keep the caret in place
+        chars.splice(start, end - start);
+        this._input.value = chars.join('');
+        this._selectSlot(start);
+      } else if (start > 0) {
+        // Collapsed caret: remove the previous character and step back
+        chars.splice(start - 1, 1);
+        this._input.value = chars.join('');
+        this._selectSlot(start - 1);
+      }
+      this._afterValueChange();
+    }
+  }
+  _handlePointerDown(event) {
+    const index = this._slotIndexFromPoint(event.clientX);
+    if (index === null) {
+      return;
+    }
+
+    // Don't let the caret land past the first empty slot
+    const target = Math.min(index, this._firstEmptyIndex());
+    if (document.activeElement === this._input) {
+      // Already focused (keyboard is up): take over caret placement from the
+      // browser. Safe to preventDefault here — it won't dismiss the keyboard.
+      event.preventDefault();
+      this._selectSlot(target);
+      this._render();
+      return;
+    }
+
+    // Not yet focused: let the browser focus the input natively so the
+    // on-screen keyboard is raised by the user's tap. Position the caret in the
+    // focus handler once focus settles.
+    this._pointerActive = true;
+    this._pointerIndex = target;
+  }
+
+  // Map a viewport x-coordinate to the slot under it, clamped to the last slot
+  _slotIndexFromPoint(x) {
+    for (const [index, slot] of this._slots.entries()) {
+      if (x <= slot.getBoundingClientRect().right || index === this._slots.length - 1) {
+        return index;
+      }
+    }
+    return null;
+  }
+  _afterValueChange() {
     this._render();
     EventHandler.trigger(this._element, EVENT_INPUT$1, {
       value: this._input.value
     });
     this._checkComplete();
   }
+  _firstEmptyIndex() {
+    return Math.min(this._input.value.length, this._length - 1);
+  }
+
+  // Represent the active slot as a selection: a filled slot is selected so the
+  // next keystroke overwrites it; an empty slot gets a collapsed caret.
+  _selectSlot(index) {
+    const clamped = Math.max(0, Math.min(index, this._length - 1));
+    const end = clamped < this._input.value.length ? clamped + 1 : clamped;
+    this._input.setSelectionRange(clamped, end);
+  }
   _sanitize(value) {
     return value.replace(this._type.filter, '').slice(0, this._length);
   }
index d9539ef7250b1ff384653cccd2002b8abae507c2..43445767224035b1cbfb3305a1f2794ba8ec946e 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"bootstrap.bundle.js","sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../node_modules/vanilla-calendar-pro/index.mjs","../../js/src/datepicker.js","../../js/src/dialog-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...instanceMap.keys()][0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll',\n  'scrollend'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsely appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [...Element.prototype.querySelectorAll.call(element, selector)]\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [...element.children].filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { isRTL, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\n\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects,\n        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        platform\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    if (floating) {\n      resizeObserver.observe(floating);\n    }\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // menu wrapper\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Don't auto-close when interacting with a form inside the menu — clicks\n      // on a form's labels, buttons, etc. (not just inputs) should keep it open.\n      const formAncestor = event.target.closest?.('form')\n      const isInsideMenuForm = Boolean(formAncestor) && instance._menu.contains(formAncestor)\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName) || isInsideMenuForm)) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // Treat contenteditable hosts (e.g. rich-text editors) like inputs so the\n    // menu doesn't hijack their arrow keys.\n    const isInput = /input|textarea/i.test(event.target.tagName) || event.target.isContentEditable\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items.at(-1)\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */\nvar __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,\"symbol\"!=typeof t?t+\"\":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the \"init()\" method first.',notLocale:\"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».\",incorrectTime:\"The value of the time property can be: false, 12 or 24.\",incorrectMonthsCount:\"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1.\"},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,\"inputElement\",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,\"mainElement\",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR=\"data-vc-prev-tabindex\",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(\"tabindex\");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:\"\")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);\"\"===t||null===t?e.removeAttribute(\"tabindex\"):e.setAttribute(\"tabindex\",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden=\"\",setContext(e,\"isShowInInputMode\",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,\"cleanupHandlers\",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){(\"function\"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()}e.onHide&&e.onHide(e)}};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return{top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return[{condition:i<h,position:\"top\"},{condition:i>h,position:\"bottom\"},{condition:r<p,position:\"left\"},{condition:r>p,position:\"right\"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date=\"${t}\"]`),s=null==l?void 0:l.querySelector(\"[data-vc-date-btn]\");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(\" \")),!(null==n?void 0:n.html))return;const i=document.createElement(\"div\");i.className=e.styles.datePopup,i.dataset.vcDatePopup=\"\",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded=\"true\",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\\s+|\\s+(?=\\s)|\\s+$/g,\"\").replace(/&nbsp;/g,\" \")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`})}))},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,\"0\")}-${String(e.getDate()).padStart(2,\"0\")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||\"number\"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\\d{4}-\\d{2}-\\d{2})$/g)?e.push(t):t.replace(/(\\d{4}-\\d{2}-\\d{2}).*?(\\d{4}-\\d{2}-\\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a=\"\")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n)},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&\"current\"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,\"data-vc-date-disabled\"),a&&updateAttribute(a,u,\"aria-disabled\",\"true\"),a&&updateAttribute(a,u,\"tabindex\",\"-1\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"data-vc-date-today\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"aria-current\",\"date\"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),\"data-vc-date-weekend\");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),\"data-vc-date-holiday\"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute(\"data-vc-date-selected\",\"\"),a&&a.setAttribute(\"aria-selected\",\"true\"),e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute(\"data-vc-date-selected\",\"first-and-last\"):e.context.selectedDates[0]===l?n.setAttribute(\"data-vc-date-selected\",\"first\"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute(\"data-vc-date-selected\",\"last\"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute(\"data-vc-date-selected\",\"middle\"))):n.hasAttribute(\"data-vc-date-selected\")&&(n.removeAttribute(\"data-vc-date-selected\"),a&&a.removeAttribute(\"aria-selected\")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,\"data-vc-date-selected\",\"middle\")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week))},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))))},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i=\"string\"==typeof e.locale&&e.locale.length?e.locale:\"en\",r=document.createElement(\"div\");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role=\"gridcell\",(\"current\"===l||e.displayDatesOutside)&&(c=document.createElement(\"button\"),c.className=e.styles.dateBtn,c.type=\"button\",c.ariaLabel=getLocaleString(o,i,{dateStyle:\"long\",timeZone:\"UTC\"}),c.dataset.vcDateBtn=\"\",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),\"current\")}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?\"01\":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,\"next\")}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,\"prev\")}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent=\"\";const l=document.createElement(\"b\");l.className=e.styles.weekNumbersTitle,l.innerText=\"#\",l.dataset.vcWeekNumbers=\"title\",a.appendChild(l);const s=document.createElement(\"div\");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers=\"content\",a.appendChild(s);const i=document.createElement(\"button\");i.type=\"button\",i.className=e.styles.weekNumber;const r=o.querySelectorAll(\"[data-vc-date]\"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(!0);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role=\"rowheader\",o.ariaLabel=`${a.week}`,s.appendChild(o)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc=\"dates\"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week=\"numbers\"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=\"\"),n.textContent=\"\";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement(\"div\");t.className=e.styles.datesRow,t.setAttribute(\"data-vc-dates\",\"row\"),t.setAttribute(\"role\",\"row\"),p.push(t)}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0)}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n)}))},layoutDefault=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <#WeekNumbers />\\n    <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n      <#Week />\\n      <#Dates />\\n      <#DateRangeTooltip />\\n    </div>\\n  </div>\\n  <#ControlTime />\\n`,layoutMonths=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Months />\\n    </div>\\n  </div>\\n`,layoutMultiple=e=>`\\n  <div class=\"${e.styles.controls}\" data-vc=\"controls\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.grid}\" data-vc=\"grid\">\\n    <#Multiple>\\n      <div class=\"${e.styles.column}\" data-vc=\"column\" role=\"region\">\\n        <div class=\"${e.styles.header}\" data-vc=\"header\">\\n          <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n            <#Month />\\n            <#Year />\\n          </div>\\n        </div>\\n        <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n          <#WeekNumbers />\\n          <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n            <#Week />\\n            <#Dates />\\n          </div>\\n        </div>\\n      </div>\\n    <#/Multiple>\\n    <#DateRangeTooltip />\\n  </div>\\n  <#ControlTime />\\n`,layoutYears=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [year] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [year] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Years />\\n    </div>\\n  </div>\\n`,ArrowNext=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowNext}\" data-vc-arrow=\"next\" aria-label=\"${e.labels.arrowNext[t]}\"></button>`,ArrowPrev=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowPrev}\" data-vc-arrow=\"prev\" aria-label=\"${e.labels.arrowPrev[t]}\"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class=\"${e.styles.time}\" data-vc=\"time\" role=\"group\" aria-label=\"${e.labels.selectingTime}\"></div>`:\"\",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class=\"${e.styles.dateRangeTooltip}\" data-vc-date-range-tooltip=\"hidden\"></div>`:\"\",Dates=e=>`<div class=\"${e.styles.dates}\" data-vc=\"dates\" aria-live=\"assertive\" aria-label=\"${e.labels.dates}\" ${\"multiple\"===e.type?\"aria-multiselectable\":\"\"}></div>`,Month=e=>`<button type=\"button\" class=\"${e.styles.month}\" data-vc=\"month\"></button>`,Months=e=>`<div class=\"${e.styles.months}\" data-vc=\"months\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.months}\"></div>`,Week=e=>`<div class=\"${e.styles.week}\" data-vc=\"week\" role=\"row\" aria-label=\"${e.labels.week}\"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class=\"${e.styles.weekNumbers}\" data-vc-week=\"numbers\" role=\"row\" aria-label=\"${e.labels.weekNumber}\"></div>`:\"\",Year=e=>`<button type=\"button\" class=\"${e.styles.year}\" data-vc=\"year\"></button>`,Years=e=>`<div class=\"${e.styles.years}\" data-vc=\"years\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.years}\"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\\n\\t]/g,\"\").replace(/<#(?!\\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\\[(.*?)\\]/)||[])[1],o=n.replace(/[/\\s\\n\\t]|\\[(.*?)\\]/g,\"\"),l=getComponent(o),s=l?l(e,null!=a?a:null):\"\";return e.sanitizerHTML(s)})).replace(/[\\n\\t]/g,\"\"),parseMultipleLayout=(e,t)=>t.replace(new RegExp(\"<#Multiple>(.*?)<#\\\\/Multiple>\",\"gs\"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join(\"\");return e.sanitizerHTML(a)})).replace(/[\\n\\t]/g,\"\"),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e))})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc=\"calendar\",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role=\"application\",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,\"multiple\"!==e.context.currentType){if(\"multiple\"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc=\"controls\"]'),a=e.context.mainElement.querySelector('[data-vc=\"grid\"]'),o=t.closest('[data-vc=\"column\"]');return n&&n.remove(),a&&(a.dataset.vcGrid=\"hidden\"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?\"hidden\":\"\",t.style.visibility=a?\"hidden\":\"\"},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s)},visibilityArrows=e=>{if(\"month\"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow=\"prev\"]'),n=e.context.mainElement.querySelector('[data-vc-arrow=\"next\"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})[\"multiple\"===e.context.currentType?\"default\":e.context.currentType]()},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc=\"column\"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[o]||\"only-arrows\"===d[o];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc=\"month\"]'),n=e.context.mainElement.querySelectorAll('[data-vc=\"year\"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))))},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:\"[data-vc-months-month]\",year:\"[data-vc-years-year]\"},i={month:{selected:\"data-vc-months-month-selected\",aria:\"aria-selected\",value:\"vcMonthsMonth\",selectedProperty:\"selectedMonth\"},year:{selected:\"data-vc-years-year-selected\",aria:\"aria-selected\",value:\"vcYearsYear\",selectedProperty:\"selectedYear\"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria)})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),\"year\"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,\"\"),t.setAttribute(i[n].aria,\"true\"))},getColumnID=(e,t)=>{var n;if(\"multiple\"!==e.type)return{currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc=\"column\"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column=\"${t}\"]`)));return{currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc=\"${t}\"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(!1);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role=\"gridcell\",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled=\"true\"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,\"month\",n===s,!1),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc=\"header\"]'))?void 0:n.querySelector('[data-vc=\"year\"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,\"currentType\",\"month\"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc=\"months\"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement(\"button\");c.type=\"button\";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,\"month\"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m)}null==(a=e.context.mainElement.querySelector(\"[data-vc-months-month]:not([disabled])\"))||a.focus()},TimeInput=(e,t,n,a,o)=>`\\n  <label class=\"${t}\" data-vc-time-input=\"${e}\">\\n    <input type=\"text\" name=\"${e}\" maxlength=\"2\" aria-label=\"${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${a}\" ${o?\"disabled\":\"\"}>\\n  </label>\\n`,TimeRange=(e,t,n,a,o,l,s)=>`\\n  <label class=\"${t}\" data-vc-time-range=\"${e}\">\\n    <input type=\"range\" name=\"${e}\" min=\"${a}\" max=\"${o}\" step=\"${l}\" aria-label=\"${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${s}\">\\n  </label>\\n`,handleActions=(e,t,n,a)=>{({hour:()=>setContext(e,\"selectedHours\",n),minute:()=>setContext(e,\"selectedMinutes\",n)})[a](),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:\"\"}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:\"00\",PM:\"12\"},1:{AM:\"01\",PM:\"13\"},2:{AM:\"02\",PM:\"14\"},3:{AM:\"03\",PM:\"15\"},4:{AM:\"04\",PM:\"16\"},5:{AM:\"05\",PM:\"17\"},6:{AM:\"06\",PM:\"18\"},7:{AM:\"07\",PM:\"19\"},8:{AM:\"08\",PM:\"20\"},9:{AM:\"09\",PM:\"21\"},10:{AM:\"10\",PM:\"22\"},11:{AM:\"11\",PM:\"23\"},12:{AM:\"00\",PM:\"12\"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s=\"AM\"===e.context.selectedKeeping?\"PM\":\"AM\",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,\"selectedKeeping\",s),n.value=i,handleActions(e,l,e.context.selectedHours,\"hour\"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,!0)};return t.addEventListener(\"click\",l),()=>{t.removeEventListener(\"click\",l)}},transformTime12=e=>({0:\"12\",13:\"01\",14:\"02\",15:\"03\",16:\"04\",17:\"05\",18:\"06\",19:\"07\",20:\"08\",21:\"09\",22:\"10\",23:\"11\"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,\"PM\"),handleActions(e,c,transformTime12(r),o)},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o)}})[e.selectionTimeMode]()},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=i,t.value=i,handleActions(e,r,i,o)}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,\"0\");i[o]&&i[o](t,a,e)};return n.addEventListener(\"change\",r),()=>{n.removeEventListener(\"change\",r)}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,\"0\"),r=\"hour\"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?\"AM\":\"PM\"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value))};return t.addEventListener(\"input\",l),()=>{t.removeEventListener(\"input\",l)}},handleMouseOver=e=>e.setAttribute(\"data-vc-input-focus\",\"\"),handleMouseOut=e=>e.removeAttribute(\"data-vc-input-focus\"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range=\"hour\"] input[name=\"hour\"]'),a=t.querySelector('[data-vc-time-range=\"minute\"] input[name=\"minute\"]'),o=t.querySelector('[data-vc-time-input=\"hour\"] input[name=\"hour\"]'),l=t.querySelector('[data-vc-time-input=\"minute\"] input[name=\"minute\"]'),s=t.querySelector('[data-vc-time=\"keeping\"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l)},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l)};return t.addEventListener(\"mouseover\",i),t.addEventListener(\"mouseout\",r),handleInput$1(e,n,o,s,\"hour\",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,\"minute\",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,\"hour\"),handleRange(e,a,l,s,\"minute\"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener(\"mouseover\",i),t.removeEventListener(\"mouseout\",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc=\"time\"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i=\"range\"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\\n    <div class=\"${e.styles.timeContent}\" data-vc-time=\"content\">\\n      ${TimeInput(\"hour\",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\\n      ${TimeInput(\"minute\",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type=\"button\" class=\"${e.styles.timeKeeping}\" aria-label=\"${e.labels.btnKeeping} ${r}\" data-vc-time=\"keeping\" ${i?\"disabled\":\"\"}>${r}</button>`):\"\"}\\n    </div>\\n    <div class=\"${e.styles.timeRanges}\" data-vc-time=\"ranges\">\\n      ${TimeRange(\"hour\",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\\n      ${TimeRange(\"minute\",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\\n    </div>\\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc=\"week\"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement(\"button\"):document.createElement(\"b\");e.onClickWeekDay&&(n.type=\"button\"),a.forEach((a=>{const o=n.cloneNode(!0);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role=\"columnheader\",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=\"\"),t.appendChild(o)}))}))},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(!1);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role=\"gridcell\",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled=\"true\"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,\"year\",n===o,!1),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,\"currentType\",\"year\"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc=\"years\"]');if(!e.selectionYearsMode||!o)return;const l=\"multiple\"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement(\"button\");s.type=\"button\";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i)}null==(n=e.context.mainElement.querySelector(\"[data-vc-years-year]:not([disabled])\"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?\"dark\":\"light\"),\"system\"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc=\"calendar\"]');null==t||t.forEach((t=>setTheme(t,e.matches?\"dark\":\"light\")))};t.addEventListener?t.addEventListener(\"change\",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\\[(.+)\\]/g,((e,t)=>t));if(!n||\"system\"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t)}))):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{\"not all\"!==window.matchMedia(\"(prefers-color-scheme)\").media?\"system\"===e.selectedTheme?detectTheme(e,window.matchMedia(\"(prefers-color-scheme: dark)\")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,\"light\")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\\./,\"\"),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{weekday:\"long\",timeZone:\"UTC\"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l))},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,\"0\")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{month:\"long\",timeZone:\"UTC\"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l))},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if(\"string\"==typeof e.locale){if(\"string\"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,\"locale\",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(![\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key)||\"button\"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc=\"calendar\"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute(\"data-vc-date-btn\")?7:i.hasAttribute(\"data-vc-months-month\")?4:i.hasAttribute(\"data-vc-years-year\")?5:1;var i;const r=(0,{ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus()};return e.context.mainElement.addEventListener(\"keydown\",t),()=>e.context.mainElement.removeEventListener(\"keydown\",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,\"selectedMonth\",n.getMonth()),setContext(e,\"selectedYear\",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest(\"[data-vc-arrow]\");if(n){if([\"default\",\"multiple\"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if(\"year\"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,\"displayYear\",e.context.displayYear+a),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||(\"function\"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest(\"[data-vc-date][data-vc-date-selected]\"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,\"selectedDates\",s)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip=\"hidden\",void(t.textContent=\"\");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+\"px\",t.style.top=o.bottom-a.top-o.height+\"px\",t.dataset.vcDateRangeTooltip=\"visible\",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${s}\"]`).forEach((e=>e.dataset.vcDateHover=\"\")),t.forEach((e=>e.dataset.vcDateHover=\"first\")),n.forEach((e=>{\"first\"===e.dataset.vcDateHover?e.dataset.vcDateHover=\"first-and-last\":e.dataset.vcDateHover=\"last\"})))},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll(\"[data-vc-date-hover]\").forEach((e=>e.removeAttribute(\"data-vc-date-hover\")))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc=\"dates\"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest(\"[data-vc-date]\");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${state.self.context.selectedDates[0]}\"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${o}\"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest(\"[data-vc-date-selected]\");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame((()=>{e(n),state.isHovering=!1})))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&\"Escape\"===e.key&&(state.lastDateEl=null,setContext(state.self,\"selectedDates\",[]),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()}),50)},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,\"displayDateMin\",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,\"displayDateMax\",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,\"displayDateMin\",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector(\"[data-vc-date-range-tooltip]\"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,\"selectedDates\",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.addEventListener(\"keydown\",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates)}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,\"selectedDates\",s),e.disableDatesGaps&&(setContext(e,\"displayDateMin\",state.rangeMin),setContext(e,\"displayDateMax\",state.rangeMax)),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave)}}})[1===e.context.selectedDates.length?\"set\":\"reset\"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll(\"[data-vc-date]\").forEach((t=>{const n=t.querySelector(\"[data-vc-date-btn]\"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,\"current\")}))},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest(\"[data-vc-date-btn]\");if(!e.selectionDatesMode||![\"single\",\"multiple\",\"multiple-ranged\"].includes(e.selectionDatesMode)||!o)return;const l=o.closest(\"[data-vc-date]\");({single:()=>handleSelectDate(e,l,!1),multiple:()=>handleSelectDate(e,l,!0),\"multiple-ranged\":()=>handleSelectDateRange(e,l)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month=\"prev\"]'),i=a.closest('[data-vc-date-month=\"next\"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"prev\"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"next\"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?\"prev\":i?\"next\":\"current\"]()},typeClick=[\"month\",\"year\"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return\"month\"===e.context.currentType&&o>=0?n-o:\"year\"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,\"year\",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,\"year\"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,\"selectedYear\",u),setContext(e,\"selectedMonth\",m)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column=\"month\"]').querySelector('[data-vc=\"year\"]'),a=getValue(e,\"month\",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,\"selectedYear\",o),setContext(e,\"selectedMonth\",i?l.getMonth():r?s.getMonth():a)},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if(\"multiple\"===e.type)return handleMultipleYearSelection(e,a);setContext(e,\"selectedYear\",Number(a.dataset.vcYearsYear))},month:()=>{if(\"multiple\"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,\"selectedMonth\",Number(a.dataset.vcMonthsMonth))}})[n]();({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}})[n](),e.context.currentType!==e.type?(setContext(e,\"currentType\",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||o.focus()):setYearModifier(e,a,n,!0,!0)},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc=\"${n}\"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc=\"grid\"]'),c=o.closest('[data-vc=\"column\"]');(e.context.currentType===n&&l||\"multiple\"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,\"currentType\",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||a.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a)}))},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest(\"[data-vc-week-number]\"),a=e.context.mainElement.querySelectorAll(\"[data-vc-date-week-number]\");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest(\"[data-vc-week-day]\"),a=t.target.closest('[data-vc=\"column\"]'),o=a?a.querySelectorAll(\"[data-vc-date-week-day]\"):e.context.mainElement.querySelectorAll(\"[data-vc-date-week-day]\");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener(\"click\",t),()=>e.context.mainElement.removeEventListener(\"click\",t)},initMonthsCount=e=>{if(\"multiple\"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if(\"multiple\"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,\"displayMonthsCount\",e.displayMonthsCount?e.displayMonthsCount:\"multiple\"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>\"today\"===e?getLocalDate():e instanceof Date||\"number\"==typeof e||\"string\"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,\"dateToday\",resolveDate(e.dateToday,e.dateToday)),setContext(e,\"displayDateMin\",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,\"displayDateMax\",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,\"displayDateMin\",r||e.disableAllDates?e.context.dateToday:s),setContext(e,\"displayDateMax\",e.disableAllDates?e.context.dateToday:i),setContext(e,\"disableDates\",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,\"enableDates\",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,\"disableDates\",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,\"displayDateMin\",e.context.enableDates[0]),setContext(e,\"displayDateMax\",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,\"dateMin\",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,\"dateMax\",e.displayDisabledDates?l:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,\"selectedDates\",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&\"today\"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,a;if(e.displayDateMax&&\"today\"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,\"selectedMonth\",t),setContext(e,\"selectedYear\",n),setContext(e,\"displayYear\",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r=\"AM\"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?\"PM\":\"AM\":null),setContext(e,\"selectedHours\",s.padStart(2,\"0\")),setContext(e,\"selectedMinutes\",i.padStart(2,\"0\")),setContext(e,\"selectedKeeping\",r),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:\"\"}`)},initAllVariables=e=>{setContext(e,\"currentType\",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=!0)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates=\"only-first\"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:!0===a?r.dates:e.context.selectedDates,l){setContext(e,\"locale\",{months:{short:[],long:[]},weekdays:{short:[],long:[]}})}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,\"multiple-ranged\"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement(\"div\");return t.className=e.styles.calendar,t.dataset.vc=\"calendar\",t.dataset.vcInput=\"\",t.dataset.vcCalendarHidden=\"\",setContext(e,\"inputModeInit\",!0),setContext(e,\"isShowInInputMode\",!1),setContext(e,\"mainElement\",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,\"inputElement\",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e)};e.context.inputElement.addEventListener(\"click\",t);const n=\"function\"==typeof e.openOnFocus||!0===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener(\"focus\",a);const o=t=>{const n=\"Tab\"===t.key&&!t.shiftKey,a=[\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const a=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus())})(t)};return e.context.inputElement.addEventListener(\"keydown\",o),()=>{e.context.inputElement.removeEventListener(\"click\",t),n&&e.context.inputElement.removeEventListener(\"focus\",a),e.context.inputElement.removeEventListener(\"keydown\",o)}},init=e=>(setContext(e,\"originalElement\",e.context.mainElement.cloneNode(!0)),setContext(e,\"isInit\",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];\"object\"!=typeof e[o]||\"object\"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n=\"left\";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return(l&&a.bottom?\"center\":l&&a.top?[\"top\",\"center\"]:Array.isArray(o)?[\"bottom\"===o[0]?\"top\":\"bottom\",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a=\"auto\"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:\"bottom\",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,\"cleanupHandlers\",[]),setContext(e,\"isShowInInputMode\",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute(\"data-vc-calendar-hidden\");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener(\"resize\",t),e.context.cleanupHandlers.push((()=>window.removeEventListener(\"resize\",t)));const n=t=>{\"Escape\"===t.key&&hide(e)};document.addEventListener(\"keydown\",n),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"keydown\",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener(\"click\",a,{capture:!0}),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"click\",a,{capture:!0}))),e.onShow&&e.onShow(e)},labels={application:\"Calendar\",navigation:\"Calendar Navigation\",arrowNext:{month:\"Next month\",year:\"Next list of years\"},arrowPrev:{month:\"Previous month\",year:\"Previous list of years\"},month:\"Select month, current selected month:\",months:\"List of months\",year:\"Select year, current selected year:\",years:\"List of years\",week:\"Days of the week\",weekNumber:\"Numbers of weeks in a year\",dates:\"Dates in the current month\",selectingTime:\"Selecting a time \",inputHour:\"Hours\",inputMinute:\"Minutes\",rangeHour:\"Slider for selecting hours\",rangeMinute:\"Slider for selecting minutes\",btnKeeping:\"Switch AM/PM, current position:\"},styles={calendar:\"vc\",controls:\"vc-controls\",grid:\"vc-grid\",column:\"vc-column\",header:\"vc-header\",headerContent:\"vc-header__content\",month:\"vc-month\",year:\"vc-year\",arrowPrev:\"vc-arrow vc-arrow_prev\",arrowNext:\"vc-arrow vc-arrow_next\",wrapper:\"vc-wrapper\",content:\"vc-content\",months:\"vc-months\",monthsMonth:\"vc-months__month\",years:\"vc-years\",yearsYear:\"vc-years__year\",week:\"vc-week\",weekDay:\"vc-week__day\",weekNumbers:\"vc-week-numbers\",weekNumbersTitle:\"vc-week-numbers__title\",weekNumbersContent:\"vc-week-numbers__content\",weekNumber:\"vc-week-number\",dates:\"vc-dates\",datesRow:\"vc-dates__row\",date:\"vc-date\",dateBtn:\"vc-date__btn\",datePopup:\"vc-date__popup\",dateRangeTooltip:\"vc-date-range-tooltip\",time:\"vc-time\",timeContent:\"vc-time__content\",timeHour:\"vc-time__hour\",timeMinute:\"vc-time__minute\",timeKeeping:\"vc-time__keeping\",timeRanges:\"vc-time__ranges\",timeRange:\"vc-time__range\"};class OptionsCalendar{constructor(){__publicField(this,\"type\",\"default\"),__publicField(this,\"inputMode\",!1),__publicField(this,\"openOnFocus\",!0),__publicField(this,\"positionToInput\",\"left\"),__publicField(this,\"firstWeekday\",1),__publicField(this,\"monthsToSwitch\",1),__publicField(this,\"themeAttrDetect\",\"html[data-theme]\"),__publicField(this,\"locale\",\"en\"),__publicField(this,\"dateToday\",\"today\"),__publicField(this,\"dateMin\",\"1970-01-01\"),__publicField(this,\"dateMax\",\"2470-12-31\"),__publicField(this,\"displayDateMin\"),__publicField(this,\"displayDateMax\"),__publicField(this,\"displayDatesOutside\",!0),__publicField(this,\"displayDisabledDates\",!1),__publicField(this,\"displayMonthsCount\"),__publicField(this,\"disableDates\",[]),__publicField(this,\"disableAllDates\",!1),__publicField(this,\"disableDatesPast\",!1),__publicField(this,\"disableDatesGaps\",!1),__publicField(this,\"disableWeekdays\",[]),__publicField(this,\"disableToday\",!1),__publicField(this,\"enableDates\",[]),__publicField(this,\"enableEdgeDatesOnly\",!0),__publicField(this,\"enableDateToggle\",!0),__publicField(this,\"enableWeekNumbers\",!1),__publicField(this,\"enableMonthChangeOnDayClick\",!0),__publicField(this,\"enableJumpToSelectedDate\",!1),__publicField(this,\"selectionDatesMode\",\"single\"),__publicField(this,\"selectionMonthsMode\",!0),__publicField(this,\"selectionYearsMode\",!0),__publicField(this,\"selectionTimeMode\",!1),__publicField(this,\"selectedDates\",[]),__publicField(this,\"selectedMonth\"),__publicField(this,\"selectedYear\"),__publicField(this,\"selectedHolidays\",[]),__publicField(this,\"selectedWeekends\",[0,6]),__publicField(this,\"selectedTime\"),__publicField(this,\"selectedTheme\",\"system\"),__publicField(this,\"timeMinHour\",0),__publicField(this,\"timeMaxHour\",23),__publicField(this,\"timeMinMinute\",0),__publicField(this,\"timeMaxMinute\",59),__publicField(this,\"timeControls\",\"all\"),__publicField(this,\"timeStepHour\",1),__publicField(this,\"timeStepMinute\",1),__publicField(this,\"sanitizerHTML\",(e=>e)),__publicField(this,\"onClickDate\"),__publicField(this,\"onClickWeekDay\"),__publicField(this,\"onClickWeekNumber\"),__publicField(this,\"onClickTitle\"),__publicField(this,\"onClickMonth\"),__publicField(this,\"onClickYear\"),__publicField(this,\"onClickArrow\"),__publicField(this,\"onChangeTime\"),__publicField(this,\"onChangeToInput\"),__publicField(this,\"onCreateDateRangeTooltip\"),__publicField(this,\"onCreateDateEls\"),__publicField(this,\"onCreateMonthEls\"),__publicField(this,\"onCreateYearEls\"),__publicField(this,\"onInit\"),__publicField(this,\"onUpdate\"),__publicField(this,\"onDestroy\"),__publicField(this,\"onShow\"),__publicField(this,\"onHide\"),__publicField(this,\"popups\",{}),__publicField(this,\"labels\",__spreadValues({},labels)),__publicField(this,\"layouts\",{default:\"\",multiple:\"\",month:\"\",year:\"\"}),__publicField(this,\"styles\",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,\"init\",(()=>init(this))),__publicField(this,\"update\",(e=>update(this,e))),__publicField(this,\"destroy\",(()=>destroy(this))),__publicField(this,\"show\",(()=>show(this))),__publicField(this,\"hide\",(()=>hide(this))),__publicField(this,\"set\",((e,t)=>set(this,e,t))),__publicField(this,\"context\"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,\"mainElement\",\"string\"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,\"memoizedElements\",new Map);let Calendar=_Calendar;export{Calendar};","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('shown'),\n        { relatedTarget }\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  dispose() {\n    // If disposed while still open, close the native <dialog> and restore body\n    // scroll. Otherwise `dialog-open` (overflow: hidden) would stay stuck on the\n    // body — e.g. when an SPA tears the component down mid-navigation.\n    if (this._element.open) {\n      this._closeAndCleanup()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      // Lock scroll on the root element (not <body>) so it lands on the same\n      // element that carries `scrollbar-gutter: stable`. Co-locating them keeps\n      // the gutter reserved while the scrollbar is hidden, so the page doesn't\n      // shift (and the ::backdrop covers the gutter instead of leaving a strip).\n      document.documentElement.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.documentElement.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, `keydown${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends DialogBase {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus({ preventScroll: true })\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._collapseBelow = 0\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\n      if (overflowItem) {\n        if (itemsToOverflow.length > 0) {\n          overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n        } else {\n          overflowItem.classList.add(CLASS_NAME_HIDDEN)\n        }\n      }\n\n      if (itemsToOverflow.length > 0) {\n        EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n          overflowCount: itemsToOverflow.length,\n          visibleCount: this._items.length - itemsToOverflow.length\n        })\n      }\n\n      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null,\n  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._deltaY = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    if (isVisible(this)) {\n      this.focus({ preventScroll: true })\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.value = ''\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio\n * types — notably NOT `data:text/html`, which is an XSS vector.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L49\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z=]+$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [...createdDocument.body.querySelectorAll('*')]\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [...element.attributes]\n    const allowedAttributes = [...(allowList['*'] || []), ...(allowList[elementName] || [])]\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\nconst EVENT_KEYDOWN = 'keydown'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._keydownHandler = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    this._removeEscapeListener()\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      // Reset the transient hover/active state so a prevented (or not-in-DOM)\n      // show doesn't leave `_isHovered` stuck true — otherwise a click-triggered\n      // tip would hit the `_enter()` early-return on every later click and never\n      // reopen.\n      this._isHovered = false\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._removeEscapeListener()\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle()) || this._hasNewContent()\n  }\n\n  // Content supplied via setContent() (a `{ selector: content }` map) overrides\n  // the configured title/content when rendering, so it should also satisfy the\n  // show() gate — otherwise a tip whose content is only set via setContent()\n  // can never be shown.\n  _hasNewContent() {\n    return Boolean(this._newContent) && Object.values(this._newContent).some(Boolean)\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    // Coerce number/boolean title and content to strings. `data-bs-title=\"true\"`\n    // / `data-bs-content=\"false\"` are auto-converted to booleans by the data-API,\n    // which would otherwise fail the (null|string|element|function) type check.\n    if (typeof config.title === 'number' || typeof config.title === 'boolean') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number' || typeof config.content === 'boolean') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return Boolean(this._getTitle() || this._getContent()) || this._hasNewContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap range.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_SCROLLEND = `scrollend${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\n// How long (ms) to wait after the last scroll event before settling a pending\n// smooth-scroll navigation, when the native `scrollend` event is unavailable.\nconst SCROLL_IDLE_TIMEOUT = 100\n// Debounce (ms) for rebuilding the observer on resize (px activation lines only).\nconst RESIZE_DEBOUNCE = 100\n\nconst Default = {\n  // `rootMargin` is the raw IntersectionObserver root-box override. When set it\n  // takes precedence over `topMargin` and is passed straight to the observer.\n  // Leave it null and use `topMargin` for everyday use.\n  rootMargin: null,\n  smoothScroll: false,\n  target: null,\n  threshold: [0],\n  // Position of the activation line, measured from the top of the scroll root.\n  // The active section is the deepest one whose top has scrolled to/above it.\n  // Accepts a percentage (`12%`) or pixels (`96px`, e.g. below a sticky navbar).\n  topMargin: '12%'\n}\n\nconst DefaultType = {\n  rootMargin: '(string|null)',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array',\n  topMargin: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._sections = [] // observable section elements, in DOM order\n    this._linkBySection = new Map() // section element -> nav link\n    this._sectionByLink = new Map() // nav link -> section element (for smooth scroll)\n    this._intersecting = new Set() // sections currently crossing the activation line\n    this._activeTarget = null\n    this._lastActive = null // last activated section (keep-last across gaps)\n    this._atBottom = false\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n\n    this._observer = null\n    this._sentinel = null\n    this._sentinelObserver = null\n\n    this._pendingNavigation = null\n    this._settleTimeout = null\n    this._settleHandler = null\n    this._scrollIdleHandler = null\n\n    this._resizeHandler = null\n    this._resizeTimeout = null\n\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    // (Re)build the activation observer.\n    this._observer?.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n\n    // Detect the bottom-of-page case (a short last section whose top never\n    // reaches the activation line) natively, via a dedicated sentinel observer.\n    this._setUpSentinel()\n\n    // A px activation line doesn't track viewport height the way `%` does, so\n    // rebuild the observer (debounced) on resize when px units are in play.\n    this._maybeAddResizeListener()\n  }\n\n  dispose() {\n    this._observer?.disconnect()\n    this._teardownSentinel()\n    this._disarmSettle()\n    this._removeResizeListener()\n    EventHandler.off(this._config.target, EVENT_CLICK)\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  // --- Detection (IntersectionObserver-driven) -----------------------------\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin ?? this._getDerivedRootMargin()\n    }\n\n    return new IntersectionObserver(entries => this._onIntersect(entries), options)\n  }\n\n  _onIntersect(entries) {\n    for (const entry of entries) {\n      if (entry.isIntersecting) {\n        this._intersecting.add(entry.target)\n      } else {\n        this._intersecting.delete(entry.target)\n      }\n    }\n\n    this._computeActive()\n  }\n\n  // Single source of truth for active selection, derived only from IO state —\n  // no per-frame layout reads. The active section is the deepest (DOM-order)\n  // one currently crossing the activation line; in a gap we keep the last one;\n  // above the first section the first stays active; at the very bottom the last\n  // section wins.\n  _computeActive() {\n    // Guard against observer callbacks that outlive a disposed/detached instance.\n    if (!this._element?.isConnected || this._sections.length === 0) {\n      return\n    }\n\n    let active = null\n\n    if (this._atBottom) {\n      active = this._sections.at(-1)\n    } else {\n      for (const section of this._sections) {\n        if (this._intersecting.has(section)) {\n          active = section\n        }\n      }\n\n      // No section crosses the line: keep the last active (content gap), or fall\n      // back to the first section at the top of the page.\n      active ||= this._lastActive ?? this._sections.at(0)\n    }\n\n    if (!active) {\n      return\n    }\n\n    this._lastActive = active\n    const link = this._linkBySection.get(active)\n    if (link) {\n      this._process(link)\n    }\n  }\n\n  // Single source of truth for the `topMargin` option: its numeric value and\n  // whether it's expressed as a percentage of the root height or in pixels.\n  _parseTopMargin() {\n    const value = String(this._config.topMargin)\n    return {\n      value: Number.parseFloat(value) || 0,\n      unit: value.endsWith('%') ? '%' : 'px'\n    }\n  }\n\n  // Collapse the observer root to a strip from the top down to the activation\n  // line, so a section is \"intersecting\" exactly while it crosses that line.\n  _getDerivedRootMargin() {\n    const { value, unit } = this._parseTopMargin()\n    let percent = value\n\n    // Express a pixel activation line as a percentage of the root height.\n    if (unit === 'px') {\n      const rootHeight = this._rootElement ?\n        this._rootElement.clientHeight :\n        (document.documentElement.clientHeight || window.innerHeight)\n      percent = rootHeight ? (value / rootHeight) * 100 : 12\n    }\n\n    // Clamp so the bottom inset stays a valid (non-negative) rootMargin even if\n    // the line sits outside the root box.\n    const bottom = Math.min(Math.max(100 - percent, 0), 100)\n    return `0px 0px -${bottom}% 0px`\n  }\n\n  // Whether the activation line is derived from a pixel `topMargin` (in which\n  // case it must be recomputed on resize). An explicit `rootMargin` is owned by\n  // the caller, and a `%` topMargin is recomputed by the browser automatically.\n  _usesPixelMargin() {\n    return !this._config.rootMargin && this._parseTopMargin().unit === 'px'\n  }\n\n  // --- Bottom sentinel -----------------------------------------------------\n\n  _setUpSentinel() {\n    this._teardownSentinel()\n\n    if (this._sections.length === 0) {\n      return\n    }\n\n    const sentinel = document.createElement('div')\n    sentinel.setAttribute('aria-hidden', 'true')\n    sentinel.style.cssText = 'position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;'\n    this._element.append(sentinel)\n    this._sentinel = sentinel\n\n    this._sentinelObserver = new IntersectionObserver(entries => this._onSentinel(entries), {\n      root: this._rootElement,\n      threshold: [0]\n    })\n    this._sentinelObserver.observe(sentinel)\n  }\n\n  _onSentinel(entries) {\n    const entry = entries.at(-1)\n    // Only treat the sentinel as \"bottom reached\" when content actually\n    // overflows; otherwise everything is visible and there's nothing to spy.\n    this._atBottom = Boolean(entry?.isIntersecting) && this._isOverflowing()\n    this._computeActive()\n  }\n\n  _isOverflowing() {\n    const scroller = this._rootElement || document.scrollingElement || document.documentElement\n    return scroller.scrollHeight > scroller.clientHeight\n  }\n\n  _teardownSentinel() {\n    this._sentinelObserver?.disconnect()\n    this._sentinelObserver = null\n    this._sentinel?.remove()\n    this._sentinel = null\n    this._atBottom = false\n  }\n\n  // --- Resize (px activation lines only) -----------------------------------\n\n  _maybeAddResizeListener() {\n    this._removeResizeListener()\n\n    if (!this._usesPixelMargin()) {\n      return\n    }\n\n    this._resizeHandler = () => {\n      clearTimeout(this._resizeTimeout)\n      this._resizeTimeout = setTimeout(() => this._rebuildObserver(), RESIZE_DEBOUNCE)\n    }\n\n    EventHandler.on(window, EVENT_RESIZE, this._resizeHandler)\n  }\n\n  _removeResizeListener() {\n    clearTimeout(this._resizeTimeout)\n    this._resizeTimeout = null\n\n    if (this._resizeHandler) {\n      EventHandler.off(window, EVENT_RESIZE, this._resizeHandler)\n      this._resizeHandler = null\n    }\n  }\n\n  _rebuildObserver() {\n    if (!this._observer) {\n      return\n    }\n\n    this._observer.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n  }\n\n  // --- Smooth-scroll settle (hash + focus) ---------------------------------\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // Unregister any previous listener so refresh() doesn't stack them.\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const link = event.target.closest(SELECTOR_TARGET_LINKS)\n      const section = link && this._sectionByLink.get(link)\n      if (!section || !this._element) {\n        return\n      }\n\n      event.preventDefault()\n\n      const root = this._rootElement || window\n      const height = section.offsetTop - this._element.offsetTop\n      const currentTop = this._rootElement ?\n        this._rootElement.scrollTop :\n        (window.scrollY ?? window.pageYOffset)\n      const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)').matches\n\n      // If we're already there (or motion is reduced), there will be no scroll\n      // — and thus no `scrollend` — to wait for, so settle immediately. This\n      // avoids a stuck pending navigation that never restores hash/focus.\n      if (reduceMotion || Math.abs(currentTop - height) <= 2) {\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'auto' })\n        } else {\n          root.scrollTop = height\n        }\n\n        this._settleNavigation(link.hash, section)\n        return\n      }\n\n      // Defer the URL-hash and focus updates until the scroll settles, so we\n      // don't thrash the address bar mid-animation (and so the native hash\n      // navigation we just prevented is restored once we arrive).\n      this._pendingNavigation = { hash: link.hash, section }\n      this._armSettle()\n\n      if (root.scrollTo) {\n        root.scrollTo({ top: height, behavior: 'smooth' })\n      } else {\n        root.scrollTop = height\n      }\n    })\n  }\n\n  // Arm a one-shot settle for the in-flight smooth scroll. `scrollend` is the\n  // primary signal; a transient scroll-idle timer covers engines without it.\n  // Both are removed on settle, so a later unrelated scroll can't replay it.\n  _armSettle() {\n    this._disarmSettle()\n\n    const target = this._getSettleTarget()\n\n    this._settleHandler = () => this._onSettle()\n    this._scrollIdleHandler = () => {\n      clearTimeout(this._settleTimeout)\n      this._settleTimeout = setTimeout(() => this._onSettle(), SCROLL_IDLE_TIMEOUT)\n    }\n\n    EventHandler.on(target, EVENT_SCROLLEND, this._settleHandler)\n    EventHandler.on(target, EVENT_SCROLL, this._scrollIdleHandler)\n  }\n\n  _disarmSettle() {\n    clearTimeout(this._settleTimeout)\n    this._settleTimeout = null\n\n    const target = this._getSettleTarget()\n    if (this._settleHandler) {\n      EventHandler.off(target, EVENT_SCROLLEND, this._settleHandler)\n      this._settleHandler = null\n    }\n\n    if (this._scrollIdleHandler) {\n      EventHandler.off(target, EVENT_SCROLL, this._scrollIdleHandler)\n      this._scrollIdleHandler = null\n    }\n  }\n\n  _getSettleTarget() {\n    return this._rootElement || document\n  }\n\n  _onSettle() {\n    this._disarmSettle()\n\n    if (!this._pendingNavigation) {\n      return\n    }\n\n    const { hash, section } = this._pendingNavigation\n    this._settleNavigation(hash, section)\n  }\n\n  _settleNavigation(hash, section) {\n    this._pendingNavigation = null\n\n    // Restore the URL hash (without adding a history entry) now that we've\n    // arrived, and move focus to the section for keyboard/AT users.\n    if (window.history?.replaceState) {\n      window.history.replaceState(null, '', hash)\n    }\n\n    if (!section.hasAttribute('tabindex')) {\n      section.setAttribute('tabindex', '-1')\n    }\n\n    section.focus({ preventScroll: true })\n  }\n\n  // --- Targets / observables ----------------------------------------------\n\n  _initializeTargetsAndObservables() {\n    this._sections = []\n    this._linkBySection = new Map()\n    this._sectionByLink = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n    const seen = new Set()\n\n    for (const anchor of targetLinks) {\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      // Resolve by id (decoded) rather than building a CSS selector, so any\n      // literal id works — dots, slashes, colons, and percent-encoded chars —\n      // without escaping.\n      const id = decodeFragment(anchor.hash.slice(1))\n      if (!id) {\n        continue\n      }\n\n      const section = document.getElementById(id)\n      // ensure the section exists, is scoped to this element, and is visible\n      if (!section || !this._element.contains(section) || !isVisible(section)) {\n        continue\n      }\n\n      this._sectionByLink.set(anchor, section)\n      this._linkBySection.set(section, anchor) // last link wins for a section\n\n      if (!seen.has(section)) {\n        seen.add(section)\n        this._sections.push(section)\n      }\n    }\n\n    // Keep sections in top-to-bottom order so \"deepest\" selection is\n    // well-defined. Read once here (refresh/resize), never on the hot path.\n    this._sections.sort((a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top)\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n// Decode a URL fragment id, tolerating malformed escapes (returns it as-is).\nfunction decodeFragment(hash) {\n  try {\n    return decodeURIComponent(hash)\n  } catch {\n    return hash\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    // Don't hijack modifier+arrow shortcuts (e.g. Alt+Left/Right for browser\n    // history navigation); only the bare keys drive tablist navigation.\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = event.key === HOME_KEY ? children[0] : children.at(-1)\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","length","elementEvent","slice","keyHandlers","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","undefined","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","_element","_config","existingInstance","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","startEvent","activeInstance","dimension","_getDimension","complete","capitalizedDimension","scrollSize","selected","triggerArray","isOpen","computePosition","arrow","flip","offset","shift","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","minWidth","createBreakpointListeners","listeners","mql","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","Menu","_openInstances","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","showEvent","_moveMenuToContainer","_createFloating","body","focusVisible","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","wrapper","hideEvent","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","fallbackPlacements","_getFallbackPlacements","fallbackMap","bottom","defaultConfig","_getContainer","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","timeoutId","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","at","clearMenus","composedPath","isMenuTarget","formAncestor","isInsideMenuForm","dataApiKeydownHandler","isInput","isContentEditable","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","selectedItems","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","displayChild","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","shouldHide","dateStr","year","month","day","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","getTime","String","getDate","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","hidePreventedEvent","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","currentDialog","shouldSwap","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconHtml","_resolveIcon","iconSpan","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","overflowWidth","keepWidth","reduce","sum","usedWidth","overflowThreshold","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","useModal","_initSwipe","swipeConfig","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","end","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","addEvent","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeEvent","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","start","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","domParser","DOMParser","createdDocument","parseFromString","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_hasNewContent","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","sort","stops","gridTemplateColumns","stop","tick","gridColumnStart","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_SCROLLEND","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","SCROLL_IDLE_TIMEOUT","RESIZE_DEBOUNCE","rootMargin","smoothScroll","topMargin","ScrollSpy","_sections","_linkBySection","_sectionByLink","_intersecting","_activeTarget","_lastActive","_atBottom","_rootElement","overflowY","_sentinel","_sentinelObserver","_pendingNavigation","_settleTimeout","_settleHandler","_scrollIdleHandler","_resizeHandler","_resizeTimeout","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","_setUpSentinel","_maybeAddResizeListener","_teardownSentinel","_disarmSettle","_removeResizeListener","_getDerivedRootMargin","_onIntersect","_computeActive","_process","_parseTopMargin","unit","endsWith","percent","rootHeight","clientHeight","innerHeight","_usesPixelMargin","sentinel","cssText","_onSentinel","_isOverflowing","scroller","scrollingElement","scrollHeight","_rebuildObserver","height","offsetTop","currentTop","scrollTop","scrollY","pageYOffset","reduceMotion","_settleNavigation","hash","_armSettle","_getSettleTarget","_onSettle","history","replaceState","targetLinks","seen","anchor","decodeFragment","_clearActiveClass","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","altKey","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":";;;;;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAMA,UAAU,GAAG,IAAIC,GAAG,EAAE;AAE5B,aAAe;AACbC,EAAAA,GAAGA,CAACC,OAAO,EAAEC,GAAG,EAAEC,QAAQ,EAAE;AAC1B,IAAA,IAAI,CAACL,UAAU,CAACM,GAAG,CAACH,OAAO,CAAC,EAAE;MAC5BH,UAAU,CAACE,GAAG,CAACC,OAAO,EAAE,IAAIF,GAAG,EAAE,CAAC;AACpC,IAAA;AAEA,IAAA,MAAMM,WAAW,GAAGP,UAAU,CAACQ,GAAG,CAACL,OAAO,CAAC;;AAE3C;AACA;AACA,IAAA,IAAI,CAACI,WAAW,CAACD,GAAG,CAACF,GAAG,CAAC,IAAIG,WAAW,CAACE,IAAI,KAAK,CAAC,EAAE;AACnD;AACAC,MAAAA,OAAO,CAACC,KAAK,CAAC,CAAA,4EAAA,EAA+E,CAAC,GAAGJ,WAAW,CAACK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3H,MAAA;AACF,IAAA;AAEAL,IAAAA,WAAW,CAACL,GAAG,CAACE,GAAG,EAAEC,QAAQ,CAAC;EAChC,CAAC;AAEDG,EAAAA,GAAGA,CAACL,OAAO,EAAEC,GAAG,EAAE;AAChB,IAAA,IAAIJ,UAAU,CAACM,GAAG,CAACH,OAAO,CAAC,EAAE;AAC3B,MAAA,OAAOH,UAAU,CAACQ,GAAG,CAACL,OAAO,CAAC,CAACK,GAAG,CAACJ,GAAG,CAAC,IAAI,IAAI;AACjD,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;EAEDS,MAAMA,CAACV,OAAO,EAAE;AACd,IAAA,IAAIH,UAAU,CAACM,GAAG,CAACH,OAAO,CAAC,EAAE;AAC3B,MAAA,OAAOH,UAAU,CAACQ,GAAG,CAACL,OAAO,CAAC,CAACW,MAAM,EAAE,CAACC,IAAI,EAAE,CAACC,KAAK,IAAI,IAAI;AAC9D,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;AAEDC,EAAAA,MAAMA,CAACd,OAAO,EAAEC,GAAG,EAAE;AACnB,IAAA,IAAI,CAACJ,UAAU,CAACM,GAAG,CAACH,OAAO,CAAC,EAAE;AAC5B,MAAA;AACF,IAAA;AAEA,IAAA,MAAMI,WAAW,GAAGP,UAAU,CAACQ,GAAG,CAACL,OAAO,CAAC;AAE3CI,IAAAA,WAAW,CAACW,MAAM,CAACd,GAAG,CAAC;;AAEvB;AACA,IAAA,IAAIG,WAAW,CAACE,IAAI,KAAK,CAAC,EAAE;AAC1BT,MAAAA,UAAU,CAACkB,MAAM,CAACf,OAAO,CAAC;AAC5B,IAAA;AACF,EAAA;AACF,CAAC;;AC9DD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAMgB,cAAc,GAAG,oBAAoB;AAC3C,MAAMC,cAAc,GAAG,MAAM;AAC7B,MAAMC,aAAa,GAAG,QAAQ;AAC9B,MAAMC,aAAa,GAAG,EAAE,CAAA;AACxB,IAAIC,QAAQ,GAAG,CAAC;AAChB,MAAMC,YAAY,GAAG;AACnBC,EAAAA,UAAU,EAAE,WAAW;AACvBC,EAAAA,UAAU,EAAE;AACd,CAAC;AAED,MAAMC,YAAY,GAAG,IAAIC,GAAG,CAAC,CAC3B,OAAO,EACP,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,OAAO,EACP,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,MAAM,EACN,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EAClB,OAAO,EACP,OAAO,EACP,QAAQ,EACR,WAAW,CACZ,CAAC;;AAEF;AACA;AACA;;AAEA,SAASC,YAAYA,CAAC1B,OAAO,EAAE2B,GAAG,EAAE;AAClC,EAAA,OAAQA,GAAG,IAAI,CAAA,EAAGA,GAAG,KAAKP,QAAQ,EAAE,CAAA,CAAE,IAAKpB,OAAO,CAACoB,QAAQ,IAAIA,QAAQ,EAAE;AAC3E;AAEA,SAASQ,gBAAgBA,CAAC5B,OAAO,EAAE;AACjC,EAAA,MAAM2B,GAAG,GAAGD,YAAY,CAAC1B,OAAO,CAAC;EAEjCA,OAAO,CAACoB,QAAQ,GAAGO,GAAG;EACtBR,aAAa,CAACQ,GAAG,CAAC,GAAGR,aAAa,CAACQ,GAAG,CAAC,IAAI,EAAE;EAE7C,OAAOR,aAAa,CAACQ,GAAG,CAAC;AAC3B;AAEA,SAASE,gBAAgBA,CAAC7B,OAAO,EAAE8B,EAAE,EAAE;AACrC,EAAA,OAAO,SAASC,OAAOA,CAACC,KAAK,EAAE;IAC7BC,UAAU,CAACD,KAAK,EAAE;AAAEE,MAAAA,cAAc,EAAElC;AAAQ,KAAC,CAAC;IAE9C,IAAI+B,OAAO,CAACI,MAAM,EAAE;MAClBC,YAAY,CAACC,GAAG,CAACrC,OAAO,EAAEgC,KAAK,CAACM,IAAI,EAAER,EAAE,CAAC;AAC3C,IAAA;IAEA,OAAOA,EAAE,CAACS,KAAK,CAACvC,OAAO,EAAE,CAACgC,KAAK,CAAC,CAAC;EACnC,CAAC;AACH;AAEA,SAASQ,0BAA0BA,CAACxC,OAAO,EAAEyC,QAAQ,EAAEX,EAAE,EAAE;AACzD,EAAA,OAAO,SAASC,OAAOA,CAACC,KAAK,EAAE;AAC7B,IAAA,MAAMU,WAAW,GAAG1C,OAAO,CAAC2C,gBAAgB,CAACF,QAAQ,CAAC;AAEtD,IAAA,KAAK,IAAI;AAAEG,MAAAA;AAAO,KAAC,GAAGZ,KAAK,EAAEY,MAAM,IAAIA,MAAM,KAAK,IAAI,EAAEA,MAAM,GAAGA,MAAM,CAACC,UAAU,EAAE;AAClF,MAAA,KAAK,MAAMC,UAAU,IAAIJ,WAAW,EAAE;QACpC,IAAII,UAAU,KAAKF,MAAM,EAAE;AACzB,UAAA;AACF,QAAA;QAEAX,UAAU,CAACD,KAAK,EAAE;AAAEE,UAAAA,cAAc,EAAEU;AAAO,SAAC,CAAC;QAE7C,IAAIb,OAAO,CAACI,MAAM,EAAE;AAClBC,UAAAA,YAAY,CAACC,GAAG,CAACrC,OAAO,EAAEgC,KAAK,CAACM,IAAI,EAAEG,QAAQ,EAAEX,EAAE,CAAC;AACrD,QAAA;QAEA,OAAOA,EAAE,CAACS,KAAK,CAACK,MAAM,EAAE,CAACZ,KAAK,CAAC,CAAC;AAClC,MAAA;AACF,IAAA;EACF,CAAC;AACH;AAEA,SAASe,WAAWA,CAACC,MAAM,EAAEC,QAAQ,EAAEC,kBAAkB,GAAG,IAAI,EAAE;EAChE,OAAOC,MAAM,CAACxC,MAAM,CAACqC,MAAM,CAAC,CACzBI,IAAI,CAACpB,KAAK,IAAIA,KAAK,CAACiB,QAAQ,KAAKA,QAAQ,IAAIjB,KAAK,CAACkB,kBAAkB,KAAKA,kBAAkB,CAAC;AAClG;AAEA,SAASG,mBAAmBA,CAACC,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,EAAE;AAC3E,EAAA,MAAMC,WAAW,GAAG,OAAOzB,OAAO,KAAK,QAAQ;EAC/C,MAAMkB,QAAQ,GAAGO,WAAW,GAAGD,kBAAkB,GAAIxB,OAAO,IAAIwB,kBAAmB;AACnF,EAAA,IAAIE,SAAS,GAAGC,YAAY,CAACJ,iBAAiB,CAAC;AAE/C,EAAA,IAAI,CAAC9B,YAAY,CAACrB,GAAG,CAACsD,SAAS,CAAC,EAAE;AAChCA,IAAAA,SAAS,GAAGH,iBAAiB;AAC/B,EAAA;AAEA,EAAA,OAAO,CAACE,WAAW,EAAEP,QAAQ,EAAEQ,SAAS,CAAC;AAC3C;AAEA,SAASE,UAAUA,CAAC3D,OAAO,EAAEsD,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,EAAEpB,MAAM,EAAE;AACnF,EAAA,IAAI,OAAOmB,iBAAiB,KAAK,QAAQ,IAAI,CAACtD,OAAO,EAAE;AACrD,IAAA;AACF,EAAA;AAEA,EAAA,IAAI,CAACwD,WAAW,EAAEP,QAAQ,EAAEQ,SAAS,CAAC,GAAGJ,mBAAmB,CAACC,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,CAAC;;AAE5G;AACA;EACA,IAAID,iBAAiB,IAAIjC,YAAY,EAAE;IACrC,MAAMuC,YAAY,GAAG9B,EAAE,IAAI;MACzB,OAAO,UAAUE,KAAK,EAAE;QACtB,IAAI,CAACA,KAAK,CAAC6B,aAAa,IAAK7B,KAAK,CAAC6B,aAAa,KAAK7B,KAAK,CAACE,cAAc,IAAI,CAACF,KAAK,CAACE,cAAc,CAAC4B,QAAQ,CAAC9B,KAAK,CAAC6B,aAAa,CAAE,EAAE;AACjI,UAAA,OAAO/B,EAAE,CAACiC,IAAI,CAAC,IAAI,EAAE/B,KAAK,CAAC;AAC7B,QAAA;MACF,CAAC;IACH,CAAC;AAEDiB,IAAAA,QAAQ,GAAGW,YAAY,CAACX,QAAQ,CAAC;AACnC,EAAA;AAEA,EAAA,MAAMD,MAAM,GAAGpB,gBAAgB,CAAC5B,OAAO,CAAC;AACxC,EAAA,MAAMgE,QAAQ,GAAGhB,MAAM,CAACS,SAAS,CAAC,KAAKT,MAAM,CAACS,SAAS,CAAC,GAAG,EAAE,CAAC;AAC9D,EAAA,MAAMQ,gBAAgB,GAAGlB,WAAW,CAACiB,QAAQ,EAAEf,QAAQ,EAAEO,WAAW,GAAGzB,OAAO,GAAG,IAAI,CAAC;AAEtF,EAAA,IAAIkC,gBAAgB,EAAE;AACpBA,IAAAA,gBAAgB,CAAC9B,MAAM,GAAG8B,gBAAgB,CAAC9B,MAAM,IAAIA,MAAM;AAE3D,IAAA;AACF,EAAA;AAEA,EAAA,MAAMR,GAAG,GAAGD,YAAY,CAACuB,QAAQ,EAAEK,iBAAiB,CAACY,OAAO,CAAClD,cAAc,EAAE,EAAE,CAAC,CAAC;AACjF,EAAA,MAAMc,EAAE,GAAG0B,WAAW,GACpBhB,0BAA0B,CAACxC,OAAO,EAAE+B,OAAO,EAAEkB,QAAQ,CAAC,GACtDpB,gBAAgB,CAAC7B,OAAO,EAAEiD,QAAQ,CAAC;AAErCnB,EAAAA,EAAE,CAACoB,kBAAkB,GAAGM,WAAW,GAAGzB,OAAO,GAAG,IAAI;EACpDD,EAAE,CAACmB,QAAQ,GAAGA,QAAQ;EACtBnB,EAAE,CAACK,MAAM,GAAGA,MAAM;EAClBL,EAAE,CAACV,QAAQ,GAAGO,GAAG;AACjBqC,EAAAA,QAAQ,CAACrC,GAAG,CAAC,GAAGG,EAAE;EAElB9B,OAAO,CAACmE,gBAAgB,CAACV,SAAS,EAAE3B,EAAE,EAAE0B,WAAW,CAAC;AACtD;AAEA,SAASY,aAAaA,CAACpE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAE1B,OAAO,EAAEmB,kBAAkB,EAAE;AAC9E,EAAA,MAAMpB,EAAE,GAAGiB,WAAW,CAACC,MAAM,CAACS,SAAS,CAAC,EAAE1B,OAAO,EAAEmB,kBAAkB,CAAC;EAEtE,IAAI,CAACpB,EAAE,EAAE;AACP,IAAA;AACF,EAAA;EAEA9B,OAAO,CAACqE,mBAAmB,CAACZ,SAAS,EAAE3B,EAAE,EAAEwC,OAAO,CAACpB,kBAAkB,CAAC,CAAC;EACvE,OAAOF,MAAM,CAACS,SAAS,CAAC,CAAC3B,EAAE,CAACV,QAAQ,CAAC;AACvC;AAEA,SAASmD,wBAAwBA,CAACvE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAEe,SAAS,EAAE;EACvE,MAAMC,iBAAiB,GAAGzB,MAAM,CAACS,SAAS,CAAC,IAAI,EAAE;AAEjD,EAAA,KAAK,MAAM,CAACiB,UAAU,EAAE1C,KAAK,CAAC,IAAImB,MAAM,CAACwB,OAAO,CAACF,iBAAiB,CAAC,EAAE;AACnE,IAAA,IAAIC,UAAU,CAACE,QAAQ,CAACJ,SAAS,CAAC,EAAE;AAClCJ,MAAAA,aAAa,CAACpE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAEzB,KAAK,CAACiB,QAAQ,EAAEjB,KAAK,CAACkB,kBAAkB,CAAC;AACrF,IAAA;AACF,EAAA;AACF;AAEA,SAASQ,YAAYA,CAAC1B,KAAK,EAAE;AAC3B;EACAA,KAAK,GAAGA,KAAK,CAACkC,OAAO,CAACjD,cAAc,EAAE,EAAE,CAAC;AACzC,EAAA,OAAOI,YAAY,CAACW,KAAK,CAAC,IAAIA,KAAK;AACrC;AAEA,MAAMI,YAAY,GAAG;EACnByC,EAAEA,CAAC7E,OAAO,EAAEgC,KAAK,EAAED,OAAO,EAAEwB,kBAAkB,EAAE;IAC9CI,UAAU,CAAC3D,OAAO,EAAEgC,KAAK,EAAED,OAAO,EAAEwB,kBAAkB,EAAE,KAAK,CAAC;EAChE,CAAC;EAEDuB,GAAGA,CAAC9E,OAAO,EAAEgC,KAAK,EAAED,OAAO,EAAEwB,kBAAkB,EAAE;IAC/CI,UAAU,CAAC3D,OAAO,EAAEgC,KAAK,EAAED,OAAO,EAAEwB,kBAAkB,EAAE,IAAI,CAAC;EAC/D,CAAC;EAEDlB,GAAGA,CAACrC,OAAO,EAAEsD,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,EAAE;AAC3D,IAAA,IAAI,OAAOD,iBAAiB,KAAK,QAAQ,IAAI,CAACtD,OAAO,EAAE;AACrD,MAAA;AACF,IAAA;AAEA,IAAA,MAAM,CAACwD,WAAW,EAAEP,QAAQ,EAAEQ,SAAS,CAAC,GAAGJ,mBAAmB,CAACC,iBAAiB,EAAEvB,OAAO,EAAEwB,kBAAkB,CAAC;AAC9G,IAAA,MAAMwB,WAAW,GAAGtB,SAAS,KAAKH,iBAAiB;AACnD,IAAA,MAAMN,MAAM,GAAGpB,gBAAgB,CAAC5B,OAAO,CAAC;IACxC,MAAMyE,iBAAiB,GAAGzB,MAAM,CAACS,SAAS,CAAC,IAAI,EAAE;AACjD,IAAA,MAAMuB,WAAW,GAAG1B,iBAAiB,CAAC2B,UAAU,CAAC,GAAG,CAAC;AAErD,IAAA,IAAI,OAAOhC,QAAQ,KAAK,WAAW,EAAE;AACnC;MACA,IAAI,CAACE,MAAM,CAAC1C,IAAI,CAACgE,iBAAiB,CAAC,CAACS,MAAM,EAAE;AAC1C,QAAA;AACF,MAAA;AAEAd,MAAAA,aAAa,CAACpE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAER,QAAQ,EAAEO,WAAW,GAAGzB,OAAO,GAAG,IAAI,CAAC;AACjF,MAAA;AACF,IAAA;AAEA,IAAA,IAAIiD,WAAW,EAAE;MACf,KAAK,MAAMG,YAAY,IAAIhC,MAAM,CAAC1C,IAAI,CAACuC,MAAM,CAAC,EAAE;AAC9CuB,QAAAA,wBAAwB,CAACvE,OAAO,EAAEgD,MAAM,EAAEmC,YAAY,EAAE7B,iBAAiB,CAAC8B,KAAK,CAAC,CAAC,CAAC,CAAC;AACrF,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAM,CAACC,WAAW,EAAErD,KAAK,CAAC,IAAImB,MAAM,CAACwB,OAAO,CAACF,iBAAiB,CAAC,EAAE;MACpE,MAAMC,UAAU,GAAGW,WAAW,CAACnB,OAAO,CAAChD,aAAa,EAAE,EAAE,CAAC;MAEzD,IAAI,CAAC6D,WAAW,IAAIzB,iBAAiB,CAACsB,QAAQ,CAACF,UAAU,CAAC,EAAE;AAC1DN,QAAAA,aAAa,CAACpE,OAAO,EAAEgD,MAAM,EAAES,SAAS,EAAEzB,KAAK,CAACiB,QAAQ,EAAEjB,KAAK,CAACkB,kBAAkB,CAAC;AACrF,MAAA;AACF,IAAA;EACF,CAAC;AAEDoC,EAAAA,OAAOA,CAACtF,OAAO,EAAEgC,KAAK,EAAEuD,IAAI,EAAE;AAC5B,IAAA,IAAI,OAAOvD,KAAK,KAAK,QAAQ,IAAI,CAAChC,OAAO,EAAE;AACzC,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,MAAMwF,GAAG,GAAGvD,UAAU,CAAC,IAAIwD,KAAK,CAACzD,KAAK,EAAE;AAAE0D,MAAAA,OAAO,EAAE,IAAI;AAAEC,MAAAA,UAAU,EAAE;KAAM,CAAC,EAAEJ,IAAI,CAAC;AACnFvF,IAAAA,OAAO,CAAC4F,aAAa,CAACJ,GAAG,CAAC;AAC1B,IAAA,OAAOA,GAAG;AACZ,EAAA;AACF,CAAC;AAED,SAASvD,UAAUA,CAAC4D,GAAG,EAAEC,IAAI,GAAG,EAAE,EAAE;AAClC,EAAA,KAAK,MAAM,CAAC7F,GAAG,EAAEY,KAAK,CAAC,IAAIsC,MAAM,CAACwB,OAAO,CAACmB,IAAI,CAAC,EAAE;IAC/C,IAAI;AACFD,MAAAA,GAAG,CAAC5F,GAAG,CAAC,GAAGY,KAAK;AAClB,IAAA,CAAC,CAAC,MAAM;AACNsC,MAAAA,MAAM,CAAC4C,cAAc,CAACF,GAAG,EAAE5F,GAAG,EAAE;AAC9B+F,QAAAA,YAAY,EAAE,IAAI;AAClB3F,QAAAA,GAAGA,GAAG;AACJ,UAAA,OAAOQ,KAAK;AACd,QAAA;AACF,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;AAEA,EAAA,OAAOgF,GAAG;AACZ;;AC1RA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASI,aAAaA,CAACpF,KAAK,EAAE;EAC5B,IAAIA,KAAK,KAAK,MAAM,EAAE;AACpB,IAAA,OAAO,IAAI;AACb,EAAA;EAEA,IAAIA,KAAK,KAAK,OAAO,EAAE;AACrB,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,IAAIA,KAAK,KAAKqF,MAAM,CAACrF,KAAK,CAAC,CAACsF,QAAQ,EAAE,EAAE;IACtC,OAAOD,MAAM,CAACrF,KAAK,CAAC;AACtB,EAAA;AAEA,EAAA,IAAIA,KAAK,KAAK,EAAE,IAAIA,KAAK,KAAK,MAAM,EAAE;AACpC,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;AAC7B,IAAA,OAAOA,KAAK;AACd,EAAA;EAEA,IAAI;IACF,OAAOuF,IAAI,CAACC,KAAK,CAACC,kBAAkB,CAACzF,KAAK,CAAC,CAAC;AAC9C,EAAA,CAAC,CAAC,MAAM;AACN,IAAA,OAAOA,KAAK;AACd,EAAA;AACF;AAEA,SAAS0F,gBAAgBA,CAACtG,GAAG,EAAE;AAC7B,EAAA,OAAOA,GAAG,CAACiE,OAAO,CAAC,QAAQ,EAAEsC,GAAG,IAAI,CAAA,CAAA,EAAIA,GAAG,CAACC,WAAW,EAAE,EAAE,CAAC;AAC9D;AAEA,MAAMC,WAAW,GAAG;AAClBC,EAAAA,gBAAgBA,CAAC3G,OAAO,EAAEC,GAAG,EAAEY,KAAK,EAAE;IACpCb,OAAO,CAAC4G,YAAY,CAAC,CAAA,QAAA,EAAWL,gBAAgB,CAACtG,GAAG,CAAC,CAAA,CAAE,EAAEY,KAAK,CAAC;EACjE,CAAC;AAEDgG,EAAAA,mBAAmBA,CAAC7G,OAAO,EAAEC,GAAG,EAAE;IAChCD,OAAO,CAAC8G,eAAe,CAAC,CAAA,QAAA,EAAWP,gBAAgB,CAACtG,GAAG,CAAC,CAAA,CAAE,CAAC;EAC7D,CAAC;EAED8G,iBAAiBA,CAAC/G,OAAO,EAAE;IACzB,IAAI,CAACA,OAAO,EAAE;AACZ,MAAA,OAAO,EAAE;AACX,IAAA;IAEA,MAAMgH,UAAU,GAAG,EAAE;AACrB,IAAA,MAAMC,MAAM,GAAG9D,MAAM,CAAC1C,IAAI,CAACT,OAAO,CAACkH,OAAO,CAAC,CAACC,MAAM,CAAClH,GAAG,IAAIA,GAAG,CAACgF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAChF,GAAG,CAACgF,UAAU,CAAC,UAAU,CAAC,CAAC;AAE9G,IAAA,KAAK,MAAMhF,GAAG,IAAIgH,MAAM,EAAE;MACxB,IAAIG,OAAO,GAAGnH,GAAG,CAACiE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACpCkD,MAAAA,OAAO,GAAGA,OAAO,CAACC,MAAM,CAAC,CAAC,CAAC,CAACZ,WAAW,EAAE,GAAGW,OAAO,CAAChC,KAAK,CAAC,CAAC,CAAC;AAC5D4B,MAAAA,UAAU,CAACI,OAAO,CAAC,GAAGnB,aAAa,CAACjG,OAAO,CAACkH,OAAO,CAACjH,GAAG,CAAC,CAAC;AAC3D,IAAA;AAEA,IAAA,OAAO+G,UAAU;EACnB,CAAC;AAEDM,EAAAA,gBAAgBA,CAACtH,OAAO,EAAEC,GAAG,EAAE;AAC7B,IAAA,OAAOgG,aAAa,CAACjG,OAAO,CAACuH,YAAY,CAAC,CAAA,QAAA,EAAWhB,gBAAgB,CAACtG,GAAG,CAAC,CAAA,CAAE,CAAC,CAAC;AAChF,EAAA;AACF,CAAC;;ACpED;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMuH,OAAO,GAAG,SAAS;AACzB,MAAMC,uBAAuB,GAAG,IAAI;AACpC,MAAMC,cAAc,GAAG,eAAe;;AAEtC;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAGlF,QAAQ,IAAI;EAChC,IAAIA,QAAQ,IAAImF,MAAM,CAACC,GAAG,IAAID,MAAM,CAACC,GAAG,CAACC,MAAM,EAAE;AAC/C;IACArF,QAAQ,GAAGA,QAAQ,CAACyB,OAAO,CAAC,eAAe,EAAE,CAAC6D,KAAK,EAAEC,EAAE,KAAK,CAAA,CAAA,EAAIH,GAAG,CAACC,MAAM,CAACE,EAAE,CAAC,EAAE,CAAC;AACnF,EAAA;AAEA,EAAA,OAAOvF,QAAQ;AACjB,CAAC;;AAED;AACA,MAAMwF,MAAM,GAAGC,MAAM,IAAI;AACvB,EAAA,IAAIA,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAKC,SAAS,EAAE;IAC3C,OAAO,CAAA,EAAGD,MAAM,CAAA,CAAE;AACpB,EAAA;EAEA,OAAO/E,MAAM,CAACiF,SAAS,CAACjC,QAAQ,CAACpC,IAAI,CAACmE,MAAM,CAAC,CAACH,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAACtB,WAAW,EAAE;AACrF,CAAC;;AAED;AACA;AACA;;AAEA,MAAM4B,MAAM,GAAGC,MAAM,IAAI;EACvB,GAAG;AACDA,IAAAA,MAAM,IAAIC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAGjB,OAAO,CAAC;AAC/C,EAAA,CAAC,QAAQkB,QAAQ,CAACC,cAAc,CAACL,MAAM,CAAC;AAExC,EAAA,OAAOA,MAAM;AACf,CAAC;AAED,MAAMM,gCAAgC,GAAG5I,OAAO,IAAI;EAClD,IAAI,CAACA,OAAO,EAAE;AACZ,IAAA,OAAO,CAAC;AACV,EAAA;;AAEA;EACA,IAAI;IAAE6I,kBAAkB;AAAEC,IAAAA;AAAgB,GAAC,GAAGlB,MAAM,CAACmB,gBAAgB,CAAC/I,OAAO,CAAC;AAE9E,EAAA,MAAMgJ,uBAAuB,GAAG9C,MAAM,CAAC+C,UAAU,CAACJ,kBAAkB,CAAC;AACrE,EAAA,MAAMK,oBAAoB,GAAGhD,MAAM,CAAC+C,UAAU,CAACH,eAAe,CAAC;;AAE/D;AACA,EAAA,IAAI,CAACE,uBAAuB,IAAI,CAACE,oBAAoB,EAAE;AACrD,IAAA,OAAO,CAAC;AACV,EAAA;;AAEA;EACAL,kBAAkB,GAAGA,kBAAkB,CAACM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrDL,eAAe,GAAGA,eAAe,CAACK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE/C,EAAA,OAAO,CAACjD,MAAM,CAAC+C,UAAU,CAACJ,kBAAkB,CAAC,GAAG3C,MAAM,CAAC+C,UAAU,CAACH,eAAe,CAAC,IAAIrB,uBAAuB;AAC/G,CAAC;AAED,MAAM2B,oBAAoB,GAAGpJ,OAAO,IAAI;EACtCA,OAAO,CAAC4F,aAAa,CAAC,IAAIH,KAAK,CAACiC,cAAc,CAAC,CAAC;AAClD,CAAC;AAED,MAAM2B,WAAS,GAAGnB,MAAM,IAAI;AAC1B,EAAA,IAAI,CAACA,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;AACzC,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,OAAO,OAAOA,MAAM,CAACoB,QAAQ,KAAK,WAAW;AAC/C,CAAC;AAED,MAAMC,UAAU,GAAGrB,MAAM,IAAI;AAC3B,EAAA,IAAImB,WAAS,CAACnB,MAAM,CAAC,EAAE;AACrB,IAAA,OAAOA,MAAM;AACf,EAAA;EAEA,IAAI,OAAOA,MAAM,KAAK,QAAQ,IAAIA,MAAM,CAAChD,MAAM,GAAG,CAAC,EAAE;IACnD,OAAOwD,QAAQ,CAACc,aAAa,CAAC7B,aAAa,CAACO,MAAM,CAAC,CAAC;AACtD,EAAA;AAEA,EAAA,OAAO,IAAI;AACb,CAAC;AAED,MAAMuB,SAAS,GAAGzJ,OAAO,IAAI;AAC3B,EAAA,IAAI,CAACqJ,WAAS,CAACrJ,OAAO,CAAC,IAAIA,OAAO,CAAC0J,cAAc,EAAE,CAACxE,MAAM,KAAK,CAAC,EAAE;AAChE,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,MAAMyE,gBAAgB,GAAGZ,gBAAgB,CAAC/I,OAAO,CAAC,CAAC4J,gBAAgB,CAAC,YAAY,CAAC,KAAK,SAAS;AAC/F;AACA,EAAA,MAAMC,aAAa,GAAG7J,OAAO,CAAC8J,OAAO,CAAC,qBAAqB,CAAC;EAE5D,IAAI,CAACD,aAAa,EAAE;AAClB,IAAA,OAAOF,gBAAgB;AACzB,EAAA;EAEA,IAAIE,aAAa,KAAK7J,OAAO,EAAE;AAC7B,IAAA,MAAM+J,OAAO,GAAG/J,OAAO,CAAC8J,OAAO,CAAC,SAAS,CAAC;AAC1C,IAAA,IAAIC,OAAO,IAAIA,OAAO,CAAClH,UAAU,KAAKgH,aAAa,EAAE;AACnD,MAAA,OAAO,KAAK;AACd,IAAA;IAEA,IAAIE,OAAO,KAAK,IAAI,EAAE;AACpB,MAAA,OAAO,KAAK;AACd,IAAA;AACF,EAAA;AAEA,EAAA,OAAOJ,gBAAgB;AACzB,CAAC;AAED,MAAMK,UAAU,GAAGhK,OAAO,IAAI;EAC5B,IAAI,CAACA,OAAO,IAAIA,OAAO,CAACsJ,QAAQ,KAAKW,IAAI,CAACC,YAAY,EAAE;AACtD,IAAA,OAAO,IAAI;AACb,EAAA;EAEA,IAAIlK,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAAC,UAAU,CAAC,EAAE;AAC1C,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,IAAI,OAAO9D,OAAO,CAACoK,QAAQ,KAAK,WAAW,EAAE;IAC3C,OAAOpK,OAAO,CAACoK,QAAQ;AACzB,EAAA;AAEA,EAAA,OAAOpK,OAAO,CAACqK,YAAY,CAAC,UAAU,CAAC,IAAIrK,OAAO,CAACuH,YAAY,CAAC,UAAU,CAAC,KAAK,OAAO;AACzF,CAAC;AAED,MAAM+C,cAAc,GAAGtK,OAAO,IAAI;AAChC,EAAA,IAAI,CAAC0I,QAAQ,CAAC6B,eAAe,CAACC,YAAY,EAAE;AAC1C,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACA,EAAA,IAAI,OAAOxK,OAAO,CAACyK,WAAW,KAAK,UAAU,EAAE;AAC7C,IAAA,MAAMC,IAAI,GAAG1K,OAAO,CAACyK,WAAW,EAAE;AAClC,IAAA,OAAOC,IAAI,YAAYC,UAAU,GAAGD,IAAI,GAAG,IAAI;AACjD,EAAA;EAEA,IAAI1K,OAAO,YAAY2K,UAAU,EAAE;AACjC,IAAA,OAAO3K,OAAO;AAChB,EAAA;;AAEA;AACA,EAAA,IAAI,CAACA,OAAO,CAAC6C,UAAU,EAAE;AACvB,IAAA,OAAO,IAAI;AACb,EAAA;AAEA,EAAA,OAAOyH,cAAc,CAACtK,OAAO,CAAC6C,UAAU,CAAC;AAC3C,CAAC;AAED,MAAM+H,IAAI,GAAGA,MAAM,CAAC,CAAC;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,MAAM,GAAG7K,OAAO,IAAI;EACxBA,OAAO,CAAC8K,YAAY,CAAA;AACtB,CAAC;AAqBD,MAAMC,OAAK,GAAGA,MAAMrC,QAAQ,CAAC6B,eAAe,CAACS,GAAG,KAAK,KAAK;AAE1D,MAAMC,OAAO,GAAGA,CAACC,gBAAgB,EAAE3F,IAAI,GAAG,EAAE,EAAE4F,YAAY,GAAGD,gBAAgB,KAAK;AAChF,EAAA,OAAO,OAAOA,gBAAgB,KAAK,UAAU,GAAGA,gBAAgB,CAACnH,IAAI,CAAC,GAAGwB,IAAI,CAAC,GAAG4F,YAAY;AAC/F,CAAC;AAED,MAAMC,sBAAsB,GAAGA,CAACC,QAAQ,EAAEC,iBAAiB,EAAEC,iBAAiB,GAAG,IAAI,KAAK;EACxF,IAAI,CAACA,iBAAiB,EAAE;IACtBN,OAAO,CAACI,QAAQ,CAAC;AACjB,IAAA;AACF,EAAA;EAEA,MAAMG,eAAe,GAAG,CAAC;AACzB,EAAA,MAAMC,gBAAgB,GAAG7C,gCAAgC,CAAC0C,iBAAiB,CAAC,GAAGE,eAAe;EAE9F,IAAIE,MAAM,GAAG,KAAK;EAElB,MAAM3J,OAAO,GAAGA,CAAC;AAAEa,IAAAA;AAAO,GAAC,KAAK;IAC9B,IAAIA,MAAM,KAAK0I,iBAAiB,EAAE;AAChC,MAAA;AACF,IAAA;AAEAI,IAAAA,MAAM,GAAG,IAAI;AACbJ,IAAAA,iBAAiB,CAACjH,mBAAmB,CAACqD,cAAc,EAAE3F,OAAO,CAAC;IAC9DkJ,OAAO,CAACI,QAAQ,CAAC;EACnB,CAAC;AAEDC,EAAAA,iBAAiB,CAACnH,gBAAgB,CAACuD,cAAc,EAAE3F,OAAO,CAAC;AAC3D4J,EAAAA,UAAU,CAAC,MAAM;IACf,IAAI,CAACD,MAAM,EAAE;MACXtC,oBAAoB,CAACkC,iBAAiB,CAAC;AACzC,IAAA;EACF,CAAC,EAAEG,gBAAgB,CAAC;AACtB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMG,oBAAoB,GAAGA,CAACC,IAAI,EAAEC,aAAa,EAAEC,aAAa,EAAEC,cAAc,KAAK;AACnF,EAAA,MAAMC,UAAU,GAAGJ,IAAI,CAAC3G,MAAM;AAC9B,EAAA,IAAIgH,KAAK,GAAGL,IAAI,CAACM,OAAO,CAACL,aAAa,CAAC;;AAEvC;AACA;AACA,EAAA,IAAII,KAAK,KAAK,EAAE,EAAE;AAChB,IAAA,OAAO,CAACH,aAAa,IAAIC,cAAc,GAAGH,IAAI,CAACI,UAAU,GAAG,CAAC,CAAC,GAAGJ,IAAI,CAAC,CAAC,CAAC;AAC1E,EAAA;AAEAK,EAAAA,KAAK,IAAIH,aAAa,GAAG,CAAC,GAAG,EAAE;AAE/B,EAAA,IAAIC,cAAc,EAAE;AAClBE,IAAAA,KAAK,GAAG,CAACA,KAAK,GAAGD,UAAU,IAAIA,UAAU;AAC3C,EAAA;AAEA,EAAA,OAAOJ,IAAI,CAACtD,IAAI,CAAC6D,GAAG,CAAC,CAAC,EAAE7D,IAAI,CAAC8D,GAAG,CAACH,KAAK,EAAED,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;;AC7PD;AACA;AACA;AACA;AACA;AACA;;;AAKA;AACA;AACA;;AAEA,MAAMK,MAAM,CAAC;AACX;EACA,WAAWC,OAAOA,GAAG;AACnB,IAAA,OAAO,EAAE;AACX,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAO,EAAE;AACX,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,MAAM,IAAIC,KAAK,CAAC,qEAAqE,CAAC;AACxF,EAAA;EAEAC,UAAUA,CAACC,MAAM,EAAE;AACjBA,IAAAA,MAAM,GAAG,IAAI,CAACC,eAAe,CAACD,MAAM,CAAC;AACrCA,IAAAA,MAAM,GAAG,IAAI,CAACE,iBAAiB,CAACF,MAAM,CAAC;AACvC,IAAA,IAAI,CAACG,gBAAgB,CAACH,MAAM,CAAC;AAC7B,IAAA,OAAOA,MAAM;AACf,EAAA;EAEAE,iBAAiBA,CAACF,MAAM,EAAE;AACxB,IAAA,OAAOA,MAAM;AACf,EAAA;AAEAC,EAAAA,eAAeA,CAACD,MAAM,EAAE5M,OAAO,EAAE;AAC/B,IAAA,MAAMgN,UAAU,GAAG3D,WAAS,CAACrJ,OAAO,CAAC,GAAG0G,WAAW,CAACY,gBAAgB,CAACtH,OAAO,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAA;;IAE5F,OAAO;AACL,MAAA,GAAG,IAAI,CAACiN,WAAW,CAACV,OAAO;MAC3B,IAAI,OAAOS,UAAU,KAAK,QAAQ,GAAGA,UAAU,GAAG,EAAE,CAAC;AACrD,MAAA,IAAI3D,WAAS,CAACrJ,OAAO,CAAC,GAAG0G,WAAW,CAACK,iBAAiB,CAAC/G,OAAO,CAAC,GAAG,EAAE,CAAC;MACrE,IAAI,OAAO4M,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,EAAE;KAC7C;AACH,EAAA;EAEAG,gBAAgBA,CAACH,MAAM,EAAEM,WAAW,GAAG,IAAI,CAACD,WAAW,CAACT,WAAW,EAAE;AACnE,IAAA,KAAK,MAAM,CAACW,QAAQ,EAAEC,aAAa,CAAC,IAAIjK,MAAM,CAACwB,OAAO,CAACuI,WAAW,CAAC,EAAE;AACnE,MAAA,MAAMrM,KAAK,GAAG+L,MAAM,CAACO,QAAQ,CAAC;AAC9B,MAAA,MAAME,SAAS,GAAGhE,WAAS,CAACxI,KAAK,CAAC,GAAG,SAAS,GAAGoH,MAAM,CAACpH,KAAK,CAAC;MAE9D,IAAI,CAAC,IAAIyM,MAAM,CAACF,aAAa,CAAC,CAACG,IAAI,CAACF,SAAS,CAAC,EAAE;QAC9C,MAAM,IAAIG,SAAS,CACjB,CAAA,EAAG,IAAI,CAACP,WAAW,CAACR,IAAI,CAACgB,WAAW,EAAE,aAAaN,QAAQ,CAAA,iBAAA,EAAoBE,SAAS,CAAA,qBAAA,EAAwBD,aAAa,IAC/H,CAAC;AACH,MAAA;AACF,IAAA;AACF,EAAA;AACF;;AC9DA;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMM,OAAO,GAAG,cAAc;;AAE9B;AACA;AACA;;AAEA,MAAMC,aAAa,SAASrB,MAAM,CAAC;AACjCW,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,EAAE;AAEP5M,IAAAA,OAAO,GAAGuJ,UAAU,CAACvJ,OAAO,CAAC;IAC7B,IAAI,CAACA,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;IAEA,IAAI,CAAC4N,QAAQ,GAAG5N,OAAO;IACvB,IAAI,CAAC6N,OAAO,GAAG,IAAI,CAAClB,UAAU,CAACC,MAAM,CAAC;;AAEtC;AACA;AACA,IAAA,MAAMkB,gBAAgB,GAAGC,IAAI,CAAC1N,GAAG,CAAC,IAAI,CAACuN,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACe,QAAQ,CAAC;AAC3E,IAAA,IAAIF,gBAAgB,EAAE;MACpBA,gBAAgB,CAACG,OAAO,EAAE;AAC5B,IAAA;AAEAF,IAAAA,IAAI,CAAChO,GAAG,CAAC,IAAI,CAAC6N,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACe,QAAQ,EAAE,IAAI,CAAC;AAC1D,EAAA;;AAEA;AACAC,EAAAA,OAAOA,GAAG;AACRF,IAAAA,IAAI,CAACjN,MAAM,CAAC,IAAI,CAAC8M,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACe,QAAQ,CAAC;AACrD5L,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACuL,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACiB,SAAS,CAAC;IAE3D,KAAK,MAAMC,YAAY,IAAIhL,MAAM,CAACiL,mBAAmB,CAAC,IAAI,CAAC,EAAE;AAC3D,MAAA,IAAI,CAACD,YAAY,CAAC,GAAG,IAAI;AAC3B,IAAA;AACF,EAAA;;AAEA;EACAE,cAAcA,CAAChD,QAAQ,EAAErL,OAAO,EAAEsO,UAAU,GAAG,IAAI,EAAE;AACnDlD,IAAAA,sBAAsB,CAAC,MAAM;AAC3B;AACA,MAAA,IAAI,CAAC,IAAI,CAACwC,QAAQ,EAAE;AAClB,QAAA;AACF,MAAA;AAEAvC,MAAAA,QAAQ,EAAE;AACZ,IAAA,CAAC,EAAErL,OAAO,EAAEsO,UAAU,CAAC;AACzB,EAAA;EAEA3B,UAAUA,CAACC,MAAM,EAAE;IACjBA,MAAM,GAAG,IAAI,CAACC,eAAe,CAACD,MAAM,EAAE,IAAI,CAACgB,QAAQ,CAAC;AACpDhB,IAAAA,MAAM,GAAG,IAAI,CAACE,iBAAiB,CAACF,MAAM,CAAC;AACvC,IAAA,IAAI,CAACG,gBAAgB,CAACH,MAAM,CAAC;AAC7B,IAAA,OAAOA,MAAM;AACf,EAAA;;AAEA;EACA,OAAO2B,WAAWA,CAACvO,OAAO,EAAE;AAC1B,IAAA,OAAO+N,IAAI,CAAC1N,GAAG,CAACkJ,UAAU,CAACvJ,OAAO,CAAC,EAAE,IAAI,CAACgO,QAAQ,CAAC;AACrD,EAAA;EAEA,OAAOQ,mBAAmBA,CAACxO,OAAO,EAAE4M,MAAM,GAAG,EAAE,EAAE;IAC/C,OAAO,IAAI,CAAC2B,WAAW,CAACvO,OAAO,CAAC,IAAI,IAAI,IAAI,CAACA,OAAO,EAAE,OAAO4M,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAG,IAAI,CAAC;AACnG,EAAA;EAEA,WAAWc,OAAOA,GAAG;AACnB,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,WAAWM,QAAQA,GAAG;AACpB,IAAA,OAAO,CAAA,GAAA,EAAM,IAAI,CAACvB,IAAI,CAAA,CAAE;AAC1B,EAAA;EAEA,WAAWyB,SAASA,GAAG;AACrB,IAAA,OAAO,CAAA,CAAA,EAAI,IAAI,CAACF,QAAQ,CAAA,CAAE;AAC5B,EAAA;EAEA,OAAOS,SAASA,CAACC,IAAI,EAAE;AACrB,IAAA,OAAO,GAAGA,IAAI,CAAA,EAAG,IAAI,CAACR,SAAS,CAAA,CAAE;AACnC,EAAA;AACF;;ACjGA;AACA;AACA;AACA;AACA;AACA;;AAIA,MAAMS,WAAW,GAAG3O,OAAO,IAAI;AAC7B,EAAA,IAAIyC,QAAQ,GAAGzC,OAAO,CAACuH,YAAY,CAAC,gBAAgB,CAAC;AAErD,EAAA,IAAI,CAAC9E,QAAQ,IAAIA,QAAQ,KAAK,GAAG,EAAE;AACjC,IAAA,IAAImM,aAAa,GAAG5O,OAAO,CAACuH,YAAY,CAAC,MAAM,CAAC;;AAEhD;AACA;AACA;AACA;AACA,IAAA,IAAI,CAACqH,aAAa,IAAK,CAACA,aAAa,CAAChK,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACgK,aAAa,CAAC3J,UAAU,CAAC,GAAG,CAAE,EAAE;AACtF,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACA,IAAA,IAAI2J,aAAa,CAAChK,QAAQ,CAAC,GAAG,CAAC,IAAI,CAACgK,aAAa,CAAC3J,UAAU,CAAC,GAAG,CAAC,EAAE;MACjE2J,aAAa,GAAG,CAAA,CAAA,EAAIA,aAAa,CAACzF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA,CAAE;AACnD,IAAA;AAEA1G,IAAAA,QAAQ,GAAGmM,aAAa,IAAIA,aAAa,KAAK,GAAG,GAAGA,aAAa,CAACC,IAAI,EAAE,GAAG,IAAI;AACjF,EAAA;EAEA,OAAOpM,QAAQ,GAAGA,QAAQ,CAAC0G,KAAK,CAAC,GAAG,CAAC,CAAC2F,GAAG,CAACC,GAAG,IAAIpH,aAAa,CAACoH,GAAG,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI;AACvF,CAAC;AAED,MAAMC,cAAc,GAAG;EACrB7L,IAAIA,CAACX,QAAQ,EAAEzC,OAAO,GAAG0I,QAAQ,CAAC6B,eAAe,EAAE;AACjD,IAAA,OAAO,CAAC,GAAG2E,OAAO,CAAC9G,SAAS,CAACzF,gBAAgB,CAACoB,IAAI,CAAC/D,OAAO,EAAEyC,QAAQ,CAAC,CAAC;EACxE,CAAC;EAED0M,OAAOA,CAAC1M,QAAQ,EAAEzC,OAAO,GAAG0I,QAAQ,CAAC6B,eAAe,EAAE;IACpD,OAAO2E,OAAO,CAAC9G,SAAS,CAACoB,aAAa,CAACzF,IAAI,CAAC/D,OAAO,EAAEyC,QAAQ,CAAC;EAChE,CAAC;AAED2M,EAAAA,QAAQA,CAACpP,OAAO,EAAEyC,QAAQ,EAAE;AAC1B,IAAA,OAAO,CAAC,GAAGzC,OAAO,CAACoP,QAAQ,CAAC,CAACjI,MAAM,CAACkI,KAAK,IAAIA,KAAK,CAACC,OAAO,CAAC7M,QAAQ,CAAC,CAAC;EACvE,CAAC;AAED8M,EAAAA,OAAOA,CAACvP,OAAO,EAAEyC,QAAQ,EAAE;IACzB,MAAM8M,OAAO,GAAG,EAAE;IAClB,IAAIC,QAAQ,GAAGxP,OAAO,CAAC6C,UAAU,CAACiH,OAAO,CAACrH,QAAQ,CAAC;AAEnD,IAAA,OAAO+M,QAAQ,EAAE;AACfD,MAAAA,OAAO,CAACE,IAAI,CAACD,QAAQ,CAAC;MACtBA,QAAQ,GAAGA,QAAQ,CAAC3M,UAAU,CAACiH,OAAO,CAACrH,QAAQ,CAAC;AAClD,IAAA;AAEA,IAAA,OAAO8M,OAAO;EAChB,CAAC;AAEDzF,EAAAA,OAAOA,CAAC9J,OAAO,EAAEyC,QAAQ,EAAE;IACzB,OAAOyM,OAAO,CAAC9G,SAAS,CAAC0B,OAAO,CAAC/F,IAAI,CAAC/D,OAAO,EAAEyC,QAAQ,CAAC;EAC1D,CAAC;AAEDiN,EAAAA,IAAIA,CAAC1P,OAAO,EAAEyC,QAAQ,EAAE;AACtB,IAAA,IAAIkN,QAAQ,GAAG3P,OAAO,CAAC4P,sBAAsB;AAE7C,IAAA,OAAOD,QAAQ,EAAE;AACf,MAAA,IAAIA,QAAQ,CAACL,OAAO,CAAC7M,QAAQ,CAAC,EAAE;QAC9B,OAAO,CAACkN,QAAQ,CAAC;AACnB,MAAA;MAEAA,QAAQ,GAAGA,QAAQ,CAACC,sBAAsB;AAC5C,IAAA;AAEA,IAAA,OAAO,EAAE;EACX,CAAC;AAED;AACAhP,EAAAA,IAAIA,CAACZ,OAAO,EAAEyC,QAAQ,EAAE;AACtB,IAAA,IAAI7B,IAAI,GAAGZ,OAAO,CAAC6P,kBAAkB;AAErC,IAAA,OAAOjP,IAAI,EAAE;AACX,MAAA,IAAIA,IAAI,CAAC0O,OAAO,CAAC7M,QAAQ,CAAC,EAAE;QAC1B,OAAO,CAAC7B,IAAI,CAAC;AACf,MAAA;MAEAA,IAAI,GAAGA,IAAI,CAACiP,kBAAkB;AAChC,IAAA;AAEA,IAAA,OAAO,EAAE;EACX,CAAC;EAEDC,iBAAiBA,CAAC9P,OAAO,EAAE;AACzB,IAAA,MAAM+P,UAAU,GAAG,CACjB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,0BAA0B,CAC3B,CAACjB,GAAG,CAACrM,QAAQ,IAAI,CAAA,EAAGA,QAAQ,CAAA,qBAAA,CAAuB,CAAC,CAACuM,IAAI,CAAC,GAAG,CAAC;IAE/D,OAAO,IAAI,CAAC5L,IAAI,CAAC2M,UAAU,EAAE/P,OAAO,CAAC,CAACmH,MAAM,CAAC6I,EAAE,IAAI,CAAChG,UAAU,CAACgG,EAAE,CAAC,IAAIvG,SAAS,CAACuG,EAAE,CAAC,CAAC;EACtF,CAAC;EAEDC,sBAAsBA,CAACjQ,OAAO,EAAE;AAC9B,IAAA,MAAMyC,QAAQ,GAAGkM,WAAW,CAAC3O,OAAO,CAAC;AAErC,IAAA,IAAIyC,QAAQ,EAAE;MACZ,OAAOwM,cAAc,CAACE,OAAO,CAAC1M,QAAQ,CAAC,GAAGA,QAAQ,GAAG,IAAI;AAC3D,IAAA;AAEA,IAAA,OAAO,IAAI;EACb,CAAC;EAEDyN,sBAAsBA,CAAClQ,OAAO,EAAE;AAC9B,IAAA,MAAMyC,QAAQ,GAAGkM,WAAW,CAAC3O,OAAO,CAAC;IAErC,OAAOyC,QAAQ,GAAGwM,cAAc,CAACE,OAAO,CAAC1M,QAAQ,CAAC,GAAG,IAAI;EAC3D,CAAC;EAED0N,+BAA+BA,CAACnQ,OAAO,EAAE;AACvC,IAAA,MAAMyC,QAAQ,GAAGkM,WAAW,CAAC3O,OAAO,CAAC;IAErC,OAAOyC,QAAQ,GAAGwM,cAAc,CAAC7L,IAAI,CAACX,QAAQ,CAAC,GAAG,EAAE;AACtD,EAAA;AACF,CAAC;;AChID;AACA;AACA;AACA;AACA;AACA;;AAMA,MAAM2N,oBAAoB,GAAGA,CAACC,SAAS,EAAEC,MAAM,GAAG,MAAM,KAAK;AAC3D,EAAA,MAAMC,UAAU,GAAG,CAAA,aAAA,EAAgBF,SAAS,CAACnC,SAAS,CAAA,CAAE;AACxD,EAAA,MAAMQ,IAAI,GAAG2B,SAAS,CAAC5D,IAAI;AAE3BrK,EAAAA,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE6H,UAAU,EAAE,CAAA,kBAAA,EAAqB7B,IAAI,CAAA,EAAA,CAAI,EAAE,UAAU1M,KAAK,EAAE;AACpF,IAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC4C,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;MACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,IAAA;AAEA,IAAA,IAAIzG,UAAU,CAAC,IAAI,CAAC,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMpH,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC,IAAI,IAAI,CAACpG,OAAO,CAAC,CAAA,CAAA,EAAI4E,IAAI,EAAE,CAAC;AACtF,IAAA,MAAMxO,QAAQ,GAAGmQ,SAAS,CAAC7B,mBAAmB,CAAC5L,MAAM,CAAC;;AAEtD;AACA1C,IAAAA,QAAQ,CAACoQ,MAAM,CAAC,EAAE;AACpB,EAAA,CAAC,CAAC;AACJ,CAAC;AAED,MAAMI,mBAAmB,GAAGA,CAACC,MAAM,EAAEC,OAAO,EAAEC,cAAc,EAAEP,MAAM,EAAEjF,QAAQ,GAAG,IAAI,KAAK;AACxFyF,EAAAA,WAAW,CAAC,CAAA,EAAGF,OAAO,CAAA,CAAA,EAAID,MAAM,CAAClE,IAAI,CAAA,CAAE,EAAEoE,cAAc,EAAEE,IAAI,IAAI;IAC/D,MAAMC,SAAS,GAAGD,IAAI,CAACE,OAAO,CAAC9J,MAAM,CAAC7C,OAAO,CAAC,CAACwK,GAAG,CAAC9O,OAAO,IAAI2Q,MAAM,CAACnC,mBAAmB,CAACxO,OAAO,CAAC,CAAC;AAClG,IAAA,IAAI,OAAOqL,QAAQ,KAAK,UAAU,EAAE;AAClCA,MAAAA,QAAQ,CAAC;AAAE,QAAA,GAAG0F,IAAI;AAAEC,QAAAA;AAAU,OAAC,CAAC;AAClC,IAAA;AAEA,IAAA,KAAK,MAAM9Q,QAAQ,IAAI8Q,SAAS,EAAE;AAChC9Q,MAAAA,QAAQ,CAACoQ,MAAM,CAAC,EAAE;AACpB,IAAA;AACF,EAAA,CAAC,CAAC;AACJ,CAAC;AAED,MAAMQ,WAAW,GAAGA,CAACF,OAAO,EAAEC,cAAc,EAAExF,QAAQ,KAAK;AACzD,EAAA,MAAM5I,QAAQ,GAAG,CAAA,EAAGoO,cAAc,CAAA,8BAAA,CAAgC;EAClEzO,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEkI,OAAO,EAAEnO,QAAQ,EAAE,UAAUT,KAAK,EAAE;AAC5D,IAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC4C,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;MACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,IAAA;AAEA,IAAA,MAAMhO,QAAQ,GAAGwM,cAAc,CAACgB,sBAAsB,CAAC,IAAI,CAAC;AAC5D,IAAA,MAAMgB,OAAO,GAAGxO,QAAQ,GAAGwM,cAAc,CAAC7L,IAAI,CAACX,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AAEjE4I,IAAAA,QAAQ,CAAC;MAAE4F,OAAO;AAAEjP,MAAAA;AAAM,KAAC,CAAC;AAC9B,EAAA,CAAC,CAAC;AACJ,CAAC;;ACzDD;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMyK,MAAI,GAAG,OAAO;AACpB,MAAMuB,UAAQ,GAAG,UAAU;AAC3B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAEhC,MAAMkD,WAAW,GAAG,CAAA,KAAA,EAAQhD,WAAS,CAAA,CAAE;AACvC,MAAMiD,YAAY,GAAG,CAAA,MAAA,EAASjD,WAAS,CAAA,CAAE;AACzC,MAAMkD,iBAAe,GAAG,MAAM;AAC9B,MAAMC,iBAAe,GAAG,MAAM;;AAE9B;AACA;AACA;;AAEA,MAAMC,KAAK,SAAS3D,aAAa,CAAC;AAChC;EACA,WAAWlB,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA8E,EAAAA,KAAKA,GAAG;IACN,MAAMC,UAAU,GAAGpP,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEsD,WAAW,CAAC;IAEnE,IAAIM,UAAU,CAACC,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;IAEA,IAAI,CAAC7D,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;IAE/C,MAAM/C,UAAU,GAAG,IAAI,CAACV,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAC;AACpE,IAAA,IAAI,CAAC/C,cAAc,CAAC,MAAM,IAAI,CAACqD,eAAe,EAAE,EAAE,IAAI,CAAC9D,QAAQ,EAAEU,UAAU,CAAC;AAC9E,EAAA;;AAEA;AACAoD,EAAAA,eAAeA,GAAG;AAChB,IAAA,IAAI,CAAC9D,QAAQ,CAAC9M,MAAM,EAAE;IACtBsB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEuD,YAAY,CAAC;IACjD,IAAI,CAAClD,OAAO,EAAE;AAChB,EAAA;AACF;;AAEA;AACA;AACA;;AAEAmC,oBAAoB,CAACkB,KAAK,EAAE,OAAO,CAAC;;AC5DpC;AACA;AACA;AACA;AACA;AACA;;;AAKA;AACA;AACA;;AAEA,MAAM7E,MAAI,GAAG,QAAQ;AACrB,MAAMuB,UAAQ,GAAG,WAAW;AAC5B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMC,mBAAiB,GAAG,QAAQ;AAClC,MAAMC,sBAAoB,GAAG,2BAA2B;AACxD,MAAMC,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;;AAE/D;AACA;AACA;;AAEA,MAAMI,MAAM,SAASpE,aAAa,CAAC;AACjC;EACA,WAAWlB,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP;AACA,IAAA,IAAI,CAACpE,QAAQ,CAAChH,YAAY,CAAC,cAAc,EAAE,IAAI,CAACgH,QAAQ,CAACzD,SAAS,CAAC6H,MAAM,CAACJ,mBAAiB,CAAC,CAAC;AAC/F,EAAA;AACF;;AAEA;AACA;AACA;;AAEAxP,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE7P,KAAK,IAAI;EAC7EA,KAAK,CAACyO,cAAc,EAAE;EAEtB,MAAMwB,MAAM,GAAGjQ,KAAK,CAACY,MAAM,CAACkH,OAAO,CAAC+H,sBAAoB,CAAC;AACzD,EAAA,MAAMd,IAAI,GAAGgB,MAAM,CAACvD,mBAAmB,CAACyD,MAAM,CAAC;EAE/ClB,IAAI,CAACiB,MAAM,EAAE;AACf,CAAC,CAAC;;ACnDF;AACA;AACA;AACA;AACA;AACA;;;AAQA;AACA;AACA;;AAEA,MAAMvF,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMO,gBAAc,GAAG,WAAW;AAClC,MAAMC,iBAAe,GAAG,YAAY;AAEpC,MAAMC,cAAc,GAAG,MAAM;AAC7B,MAAMC,eAAe,GAAG,OAAO;AAE/B,MAAMC,WAAW,GAAG,CAAA,KAAA,EAAQpE,WAAS,CAAA,CAAE;AACvC,MAAMqE,UAAU,GAAG,CAAA,IAAA,EAAOrE,WAAS,CAAA,CAAE;AACrC,MAAMsE,eAAa,GAAG,CAAA,OAAA,EAAUtE,WAAS,CAAA,CAAE;AAC3C,MAAMuE,kBAAgB,GAAG,CAAA,UAAA,EAAavE,WAAS,CAAA,CAAE;AACjD,MAAMwE,kBAAgB,GAAG,CAAA,UAAA,EAAaxE,WAAS,CAAA,CAAE;AACjD,MAAMyE,mBAAiB,GAAG,CAAA,WAAA,EAAczE,WAAS,CAAA,CAAE;AACnD,MAAM0E,qBAAmB,GAAG,CAAA,IAAA,EAAO1E,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAC7D,MAAMG,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAMkB,mBAAmB,GAAG,UAAU;AACtC,MAAMjB,mBAAiB,GAAG,QAAQ;AAClC,MAAMR,iBAAe,GAAG,eAAe;AACvC,MAAM0B,iBAAiB,GAAG,iBAAiB;AAC3C,MAAMC,eAAe,GAAG,eAAe;AACvC,MAAMC,gBAAgB,GAAG,qBAAqB;AAC9C,MAAMC,iBAAiB,GAAG,QAAQ;AAClC;AACA;AACA,MAAMC,kBAAkB,GAAG,kBAAkB;;AAE7C;AACA;AACA;AACA,MAAMC,iBAAiB,GAAG,wBAAwB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,eAAe,GAAG,GAAG;;AAE3B;AACA;AACA;AACA;AACA;AACA,MAAMC,sBAAsB,GAAG,IAAI;AAEnC,MAAMC,eAAe,GAAG,SAAS;AACjC;AACA;AACA,MAAMC,aAAa,GAAG,CAAA,oBAAA,EAAuBP,gBAAgB,CAAA,CAAA,CAAG;AAChE,MAAMQ,oBAAoB,GAAGF,eAAe,GAAGC,aAAa;AAC5D,MAAME,gBAAc,GAAG,iBAAiB;AACxC,MAAMC,mBAAmB,GAAG,sBAAsB;AAClD,MAAMC,mBAAmB,GAAG,8BAA8B;AAC1D,MAAMC,mBAAmB,GAAG,qCAAqC;AACjE,MAAMC,wBAAwB,GAAG,wBAAwB;AACzD,MAAMC,wBAAwB,GAAG,wBAAwB;AACzD,MAAMC,sBAAsB,GAAG,2BAA2B;AAE1D,MAAMC,gBAAgB,GAAG;EACvB,CAAC9B,gBAAc,GAAGG,eAAe;AACjC,EAAA,CAACF,iBAAe,GAAGC;AACrB,CAAC;AAED,MAAM6B,SAAS,GAAG,MAAM;AACxB,MAAMC,SAAS,GAAG,MAAM;AACxB,MAAMC,SAAS,GAAG,MAAM;AAExB,MAAM5H,SAAO,GAAG;AACd6H,EAAAA,QAAQ,EAAE,KAAK;AACfC,EAAAA,IAAI,EAAEF,SAAS;AACfG,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAMhI,aAAW,GAAG;AAClB4H,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA,MAAMC,cAAc,GAAGC,QAAQ,IAAKA,QAAQ,GAAG,GAAG,GAChD,CAAC,GAAGA,QAAQ,GAAGA,QAAQ,GAAGA,QAAQ,GAClC,CAAC,GAAK,CAAE,EAAE,GAAGA,QAAQ,GAAI,CAAC,KAAK,CAAC,GAAI,CAAG;;AAEzC;AACA;AACA;;AAEA,MAAMC,QAAQ,SAAShH,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;;AAEtB;AACA;AACA;AACA,IAAA,IAAI,CAACgI,SAAS,GAAG3F,cAAc,CAACE,OAAO,CAACsE,gBAAc,EAAE,IAAI,CAAC7F,QAAQ,CAAC,IAAI,IAAI,CAACA,QAAQ;AACvF,IAAA,IAAI,CAACiH,kBAAkB,GAAG5F,cAAc,CAACE,OAAO,CAACuE,mBAAmB,EAAE,IAAI,CAAC9F,QAAQ,CAAC;AACpF,IAAA,IAAI,CAACkH,iBAAiB,GAAG7F,cAAc,CAACE,OAAO,CAACwE,mBAAmB,EAAE,IAAI,CAAC/F,QAAQ,CAAC;AACnF;AACA;AACA,IAAA,IAAI,CAACmH,aAAa,GAAG9F,cAAc,CAAC7L,IAAI,CAACyQ,wBAAwB,EAAE,IAAI,CAACjG,QAAQ,CAAC;AACjF,IAAA,IAAI,CAACoH,aAAa,GAAG/F,cAAc,CAAC7L,IAAI,CAAC0Q,wBAAwB,EAAE,IAAI,CAAClG,QAAQ,CAAC;IAEjF,IAAI,CAACqH,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,SAAS,GAAG,IAAI;AACrB;IACA,IAAI,CAACC,YAAY,GAAG,IAAI;AACxB;AACA;IACA,IAAI,CAACC,QAAQ,GAAG,KAAK;AACrB,IAAA,IAAI,CAACC,WAAW,GAAG,IAAIvV,GAAG,EAAE;AAC5B;AACA;AACA;AACA;AACA,IAAA,IAAI,CAACwV,QAAQ,GAAG,IAAI,CAACzH,OAAO,CAACuG,QAAQ;AAErC,IAAA,IAAI,CAACmB,YAAY,GAAG,IAAI,CAACC,mBAAmB,EAAE;IAE9C,IAAI,CAACC,kBAAkB,EAAE;IACzB,IAAI,CAACC,aAAa,EAAE;IACpB,IAAI,CAACC,mBAAmB,EAAE;IAE1B,IAAI,IAAI,CAACL,QAAQ,EAAE;MACjB,IAAI,CAACM,KAAK,EAAE;AACd,IAAA;IAEA,IAAI,CAACC,uBAAuB,EAAE;AAChC,EAAA;;AAEA;EACA,WAAWtJ,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA7L,EAAAA,IAAIA,GAAG;IACL,IAAI,CAACkV,EAAE,CAAC,IAAI,CAACC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC/B,EAAA;AAEAC,EAAAA,eAAeA,GAAG;AAChB;AACA,IAAA,IAAItN,QAAQ,CAACuN,eAAe,KAAK,SAAS,IAAIxM,SAAS,CAAC,IAAI,CAACmE,QAAQ,CAAC,EAAE;MACtE,IAAI,CAAChN,IAAI,EAAE;AACb,IAAA;AACF,EAAA;AAEA8O,EAAAA,IAAIA,GAAG;IACL,IAAI,CAACoG,EAAE,CAAC,IAAI,CAACC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC/B,EAAA;AAEAvB,EAAAA,KAAKA,GAAG;IACN,IAAI,CAAC0B,cAAc,EAAE;AACrB;AACA;IACA,IAAI,CAACtI,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACoS,kBAAkB,CAAC;AACpD,EAAA;AAEA0C,EAAAA,KAAKA,GAAG;IACN,IAAI,CAACM,cAAc,EAAE;IACrB,IAAI,CAACC,iBAAiB,EAAE;IACxB,IAAI,CAACvI,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAClD,kBAAkB,CAAC;AACjD,EAAA;EAEA4C,EAAEA,CAAC5J,KAAK,EAAE;AACR;IACA,IAAI,IAAI,CAACkJ,QAAQ,EAAE;AACjB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMiB,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;IAC9B,MAAMC,QAAQ,GAAGrQ,MAAM,CAACsQ,QAAQ,CAACtK,KAAK,EAAE,EAAE,CAAC;;AAE3C;AACA;AACA;IACA,IAAI,IAAI,CAAC2B,OAAO,CAACwG,IAAI,KAAKF,SAAS,IAAI,CAAC,IAAI,CAACsC,qBAAqB,EAAE,IAAI,IAAI,CAACC,QAAQ,EAAE,EAAE;AACvF,MAAA,IAAIH,QAAQ,GAAGF,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;AAC/B,QAAA,IAAI,CAACyR,eAAe,CAAC,IAAI,CAAC;AAC1B,QAAA;AACF,MAAA;MAEA,IAAIJ,QAAQ,GAAG,CAAC,EAAE;AAChB,QAAA,IAAI,CAACI,eAAe,CAAC,KAAK,CAAC;AAC3B,QAAA;AACF,MAAA;AACF,IAAA;IAEA,MAAMC,WAAW,GAAG,IAAI,CAACC,eAAe,CAACN,QAAQ,EAAEF,KAAK,CAACnR,MAAM,CAAC;AAChE;AACA;AACA;AACA;AACA,IAAA,MAAM4R,YAAY,GAAG,IAAI,CAACf,SAAS,EAAE;AAErC,IAAA,IAAIa,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAKE,YAAY,EAAE;AACxD,MAAA;AACF,IAAA;IAEA,MAAMC,UAAU,GAAG3U,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0E,WAAW,EAAE;AAClEzO,MAAAA,aAAa,EAAEwS,KAAK,CAACO,WAAW,CAAC;MACjCI,SAAS,EAAE,IAAI,CAACC,UAAU,CAACH,YAAY,EAAEF,WAAW,CAAC;AACrDM,MAAAA,IAAI,EAAEJ,YAAY;AAClBhB,MAAAA,EAAE,EAAEc;AACN,KAAC,CAAC;IAEF,IAAIG,UAAU,CAACtF,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC0F,OAAO,EAAE,EAAE;AAClB,MAAA,IAAI,CAACC,OAAO,CAACR,WAAW,CAAC;AACzB,MAAA;AACF,IAAA;;AAEA;AACA;AACA,IAAA,IAAI,CAACS,cAAc,CAACT,WAAW,CAAC;AAClC,EAAA;AAEA3I,EAAAA,OAAOA,GAAG;AACR;AACA;IACA,IAAI,CAACiI,cAAc,EAAE;IAErB,IAAI,IAAI,CAAChB,SAAS,EAAE;AAClB,MAAA,IAAI,CAACA,SAAS,CAACoC,UAAU,EAAE;AAC7B,IAAA;AAEA,IAAA,IAAI,IAAI,CAACnC,YAAY,KAAK,IAAI,EAAE;AAC9BoC,MAAAA,oBAAoB,CAAC,IAAI,CAACpC,YAAY,CAAC;AACzC,IAAA;;AAEA;AACA;AACA,IAAA,KAAK,MAAMqC,KAAK,IAAIvI,cAAc,CAAC7L,IAAI,CAAC,CAAA,CAAA,EAAI4P,gBAAgB,EAAE,EAAE,IAAI,CAAC4B,SAAS,CAAC,EAAE;MAC/E4C,KAAK,CAAC1W,MAAM,EAAE;AAChB,IAAA;AAEA,IAAA,IAAI,CAAC8T,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,EAAE;;AAExC;AACA;IACAtV,YAAY,CAACC,GAAG,CAAC,IAAI,CAACuS,SAAS,EAAE1G,WAAS,CAAC;IAE3C,KAAK,CAACD,OAAO,EAAE;AACjB,EAAA;;AAEA;AACA;AACA;EACAnB,iBAAiBA,CAACF,MAAM,EAAE;AACxB,IAAA,IAAI,CAAC,CAACqH,SAAS,EAAEC,SAAS,EAAEC,SAAS,CAAC,CAACvP,QAAQ,CAACgI,MAAM,CAACyH,IAAI,CAAC,EAAE;AAC5DzH,MAAAA,MAAM,CAACyH,IAAI,GAAG9H,SAAO,CAAC8H,IAAI;AAC5B,IAAA;AAEA,IAAA,OAAOzH,MAAM;AACf,EAAA;AAEA4I,EAAAA,mBAAmBA,GAAG;IACpB,MAAMmC,MAAM,GAAG1I,cAAc,CAACE,OAAO,CAACqE,oBAAoB,EAAE,IAAI,CAAC5F,QAAQ,CAAC;AAC1E,IAAA,MAAM1B,KAAK,GAAGyL,MAAM,GAAG,IAAI,CAACrB,SAAS,EAAE,CAACnK,OAAO,CAACwL,MAAM,CAAC,GAAG,CAAC;AAC3D,IAAA,OAAOpP,IAAI,CAAC6D,GAAG,CAACF,KAAK,EAAE,CAAC,CAAC;AAC3B,EAAA;AAEAuJ,EAAAA,kBAAkBA,GAAG;AACnB,IAAA,IAAI,IAAI,CAAC5H,OAAO,CAAC0G,QAAQ,EAAE;AACzBnS,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE4E,eAAa,EAAExQ,KAAK,IAAI,IAAI,CAAC4V,QAAQ,CAAC5V,KAAK,CAAC,CAAC;AAC9E,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC6L,OAAO,CAAC2G,KAAK,KAAK,OAAO,EAAE;AAClCpS,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE6E,kBAAgB,EAAE,MAAM,IAAI,CAAC+B,KAAK,EAAE,CAAC;AACpEpS,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE8E,kBAAgB,EAAE,MAAM,IAAI,CAACmF,iBAAiB,EAAE,CAAC;AAClF,IAAA;;AAEA;AACAzV,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+P,SAAS,EAAEjC,mBAAiB,EAAE,MAAM,IAAI,CAACmF,qBAAqB,EAAE,CAAC;AACxF,EAAA;EAEAF,QAAQA,CAAC5V,KAAK,EAAE;IACd,IAAI,iBAAiB,CAACuL,IAAI,CAACvL,KAAK,CAACY,MAAM,CAAC4N,OAAO,CAAC,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAMwG,SAAS,GAAGhD,gBAAgB,CAAChS,KAAK,CAAC/B,GAAG,CAAC;AAC7C,IAAA,IAAI+W,SAAS,EAAE;MACbhV,KAAK,CAACyO,cAAc,EAAE;MACtB,IAAI,CAACqH,qBAAqB,EAAE;MAC5B,IAAId,SAAS,KAAK3E,eAAe,EAAE;QACjC,IAAI,CAAC3C,IAAI,EAAE;AACb,MAAA,CAAC,MAAM;QACL,IAAI,CAAC9O,IAAI,EAAE;AACb,MAAA;AACF,IAAA;AACF,EAAA;AAEA8U,EAAAA,aAAaA,GAAG;AACd;IACA,IAAI,IAAI,CAACyB,OAAO,EAAE,IAAI,OAAOY,oBAAoB,KAAK,WAAW,EAAE;AACjE,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC7C,SAAS,GAAG,IAAI6C,oBAAoB,CACvCpT,OAAO,IAAI,IAAI,CAACqT,mBAAmB,CAACrT,OAAO,CAAC,EAC5C;MAAE+F,IAAI,EAAE,IAAI,CAACkK,SAAS;MAAEqD,SAAS,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAAE,KAC7D,CAAC;IAED,KAAK,MAAMC,IAAI,IAAI,IAAI,CAAC5B,SAAS,EAAE,EAAE;AACnC,MAAA,IAAI,CAACpB,SAAS,CAACiD,OAAO,CAACD,IAAI,CAAC;AAC9B,IAAA;AACF,EAAA;EAEAF,mBAAmBA,CAACrT,OAAO,EAAE;AAC3B;AACA;IACA,IAAI,IAAI,CAACyQ,QAAQ,EAAE;AACjB,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAMgD,KAAK,IAAIzT,OAAO,EAAE;AAC3B,MAAA,IAAI,CAAC0Q,WAAW,CAACtV,GAAG,CAACqY,KAAK,CAACxV,MAAM,EAAEwV,KAAK,CAACC,cAAc,GAAGD,KAAK,CAACE,iBAAiB,GAAG,CAAC,CAAC;AACxF,IAAA;AAEA,IAAA,MAAMjC,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;AAC9B,IAAA,MAAMiC,MAAM,GAAGlC,KAAK,CAACvH,GAAG,CAACoJ,IAAI,IAAI,IAAI,CAAC7C,WAAW,CAAChV,GAAG,CAAC6X,IAAI,CAAC,IAAI,CAAC,CAAC;IACjE,MAAMM,QAAQ,GAAGjQ,IAAI,CAAC6D,GAAG,CAAC,GAAGmM,MAAM,CAAC;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAA,IAAIE,SAAS,GAAG,IAAI,CAAClD,YAAY;IAEjC,IAAIiD,QAAQ,GAAG,CAAC,EAAE;AAChBC,MAAAA,SAAS,GAAGF,MAAM,CAACG,SAAS,CAACC,KAAK,IAAIA,KAAK,IAAIH,QAAQ,GAAGnF,sBAAsB,CAAC;AACnF,IAAA;AAEA,IAAA,IAAI,CAACuF,UAAU,CAACH,SAAS,CAAC;AAC1B;AACA;AACA;IACA,IAAI,CAACI,kBAAkB,EAAE;AAC3B,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA9C,EAAAA,SAASA,GAAG;AACV,IAAA,IAAI,IAAI,CAACoB,OAAO,EAAE,IAAK,IAAI,CAACvC,SAAS,CAACkE,WAAW,GAAG,IAAI,CAAClE,SAAS,CAACmE,WAAW,IAAK,CAAC,EAAE;MACpF,OAAO,IAAI,CAACxD,YAAY;AAC1B,IAAA;AAEA,IAAA,IAAIrJ,KAAK,GAAG,IAAI,CAACqJ,YAAY;AAC7B,IAAA,IAAIyD,aAAa,GAAG9S,MAAM,CAAC+S,iBAAiB;AAE5C,IAAA,KAAK,MAAM,CAACC,SAAS,EAAEhB,IAAI,CAAC,IAAI,IAAI,CAAC5B,SAAS,EAAE,CAAC3R,OAAO,EAAE,EAAE;AAC1D;AACA,MAAA,MAAMwU,KAAK,GAAG5Q,IAAI,CAAC6Q,GAAG,CAAC,IAAI,CAACC,YAAY,CAACnB,IAAI,CAAC,CAAC;MAC/C,IAAIiB,KAAK,GAAGH,aAAa,EAAE;AACzBA,QAAAA,aAAa,GAAGG,KAAK;AACrBjN,QAAAA,KAAK,GAAGgN,SAAS;AACnB,MAAA;AACF,IAAA;AAEA,IAAA,OAAOhN,KAAK;AACd,EAAA;EAEAmL,cAAcA,CAACnL,KAAK,EAAE;IACpB,MAAMgM,IAAI,GAAG,IAAI,CAAC5B,SAAS,EAAE,CAACpK,KAAK,CAAC;IACpC,IAAI,CAACgM,IAAI,EAAE;AACT,MAAA;AACF,IAAA;AAEA,IAAA,MAAMoB,IAAI,GAAG,IAAI,CAACD,YAAY,CAACnB,IAAI,CAAC;IACpC,IAAI3P,IAAI,CAAC6Q,GAAG,CAACE,IAAI,CAAC,GAAG,CAAC,EAAE;AACtB,MAAA;AACF,IAAA;;AAEA;AACA;AACA;AACA;AACA;IACA,MAAMC,UAAU,GAAG,IAAI,CAAC3E,SAAS,CAAC4E,UAAU,GAAGF,IAAI;AACnD,IAAA,IAAI,CAAC1E,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,MAAM;AAC5C,IAAA,IAAI,CAAC+B,cAAc,CAACF,UAAU,EAAE,MAAM;AACpC,MAAA,IAAI,CAAC3E,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,EAAE;AACxC;AACA;AACA;AACA,MAAA,IAAI,CAAC,IAAI,CAACxC,SAAS,EAAE;AACnB,QAAA,IAAI,CAAC0D,UAAU,CAAC1M,KAAK,CAAC;AACxB,MAAA;;AAEA;AACA;AACA;MACA,IAAI,CAAC2M,kBAAkB,EAAE;AAC3B,IAAA,CAAC,CAAC;AACJ,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACAY,EAAAA,cAAcA,CAACF,UAAU,EAAEG,UAAU,EAAE;AACrC,IAAA,IAAI,IAAI,CAACvE,YAAY,KAAK,IAAI,EAAE;AAC9BoC,MAAAA,oBAAoB,CAAC,IAAI,CAACpC,YAAY,CAAC;MACvC,IAAI,CAACA,YAAY,GAAG,IAAI;AAC1B,IAAA;AAEA,IAAA,MAAMwE,SAAS,GAAG,IAAI,CAAC/E,SAAS,CAAC4E,UAAU;AAC3C,IAAA,MAAMI,QAAQ,GAAGL,UAAU,GAAGI,SAAS;;AAEvC;IACA,IAAI,IAAI,CAAClD,qBAAqB,EAAE,IAAI,OAAOoD,qBAAqB,KAAK,WAAW,EAAE;AAChF,MAAA,IAAI,CAACjF,SAAS,CAACkF,QAAQ,CAAC;AAAER,QAAAA,IAAI,EAAEC,UAAU;AAAEQ,QAAAA,QAAQ,EAAE;AAAU,OAAC,CAAC;AAClEL,MAAAA,UAAU,EAAE;AACZ,MAAA;AACF,IAAA;IAEA,IAAIM,SAAS,GAAG,IAAI;IACpB,MAAMC,IAAI,GAAGC,GAAG,IAAI;MAClB,IAAIF,SAAS,KAAK,IAAI,EAAE;AACtBA,QAAAA,SAAS,GAAGE,GAAG;AACjB,MAAA;AAEA,MAAA,MAAMxF,QAAQ,GAAGnM,IAAI,CAAC8D,GAAG,CAAC,CAAC6N,GAAG,GAAGF,SAAS,IAAI5G,eAAe,EAAE,CAAC,CAAC;AACjE;AACA;AACA;AACA,MAAA,IAAI,CAACwB,SAAS,CAACkF,QAAQ,CAAC;QAAER,IAAI,EAAEK,SAAS,GAAIC,QAAQ,GAAGnF,cAAc,CAACC,QAAQ,CAAE;AAAEqF,QAAAA,QAAQ,EAAE;AAAU,OAAC,CAAC;MAEzG,IAAIrF,QAAQ,GAAG,CAAC,EAAE;AAChB,QAAA,IAAI,CAACS,YAAY,GAAG0E,qBAAqB,CAACI,IAAI,CAAC;AAC/C,QAAA;AACF,MAAA;;AAEA;AACA,MAAA,IAAI,CAACrF,SAAS,CAACkF,QAAQ,CAAC;AAAER,QAAAA,IAAI,EAAEC,UAAU;AAAEQ,QAAAA,QAAQ,EAAE;AAAU,OAAC,CAAC;MAClE,IAAI,CAAC5E,YAAY,GAAG,IAAI;AACxBuE,MAAAA,UAAU,EAAE;IACd,CAAC;AAED,IAAA,IAAI,CAACvE,YAAY,GAAG0E,qBAAqB,CAACI,IAAI,CAAC;AACjD,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;EACAZ,YAAYA,CAACrZ,OAAO,EAAE;IACpB,MAAMma,YAAY,GAAG,IAAI,CAACvF,SAAS,CAACwF,qBAAqB,EAAE;AAC3D,IAAA,MAAMC,IAAI,GAAGra,OAAO,CAACoa,qBAAqB,EAAE;IAE5C,IAAI,IAAI,CAACxM,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACgP,iBAAiB,CAAC,EAAE;AACvD,MAAA,OAAQuH,IAAI,CAACf,IAAI,GAAIe,IAAI,CAACC,KAAK,GAAG,CAAE,IAAKH,YAAY,CAACb,IAAI,GAAIa,YAAY,CAACG,KAAK,GAAG,CAAE,CAAC;AACxF,IAAA;;AAEA;AACA;AACA;AACA;AACA,IAAA,MAAMC,QAAQ,GAAGrU,MAAM,CAAC+C,UAAU,CAACF,gBAAgB,CAAC,IAAI,CAAC6L,SAAS,CAAC,CAAC4F,wBAAwB,CAAC,IAAI,CAAC;IAElG,OAAOzP,OAAK,EAAE,GACZsP,IAAI,CAACI,KAAK,IAAIN,YAAY,CAACM,KAAK,GAAGF,QAAQ,CAAC,GAC5CF,IAAI,CAACf,IAAI,IAAIa,YAAY,CAACb,IAAI,GAAGiB,QAAQ,CAAC;AAC9C,EAAA;;AAEA;AACA;EACA5D,eAAeA,CAAC+D,MAAM,EAAE;AACtB,IAAA,MAAMrE,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;AAC9B,IAAA,MAAMqE,IAAI,GAAGtE,KAAK,CAACnR,MAAM,GAAG,CAAC;AAC7B,IAAA,MAAM0V,SAAS,GAAG,IAAI,CAACrF,YAAY;AACnC,IAAA,MAAMsF,OAAO,GAAGH,MAAM,GAAG,CAAC,GAAGC,IAAI;AACjC,IAAA,MAAM3D,SAAS,GAAG,IAAI,CAAC8D,cAAc,CAACJ,MAAM,CAAC;IAE7C,MAAM3D,UAAU,GAAG3U,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0E,WAAW,EAAE;AAClEzO,MAAAA,aAAa,EAAEwS,KAAK,CAACwE,OAAO,CAAC;MAC7B7D,SAAS;AACTE,MAAAA,IAAI,EAAE0D,SAAS;AACf9E,MAAAA,EAAE,EAAE+E;AACN,KAAC,CAAC;IAEF,IAAI9D,UAAU,CAACtF,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;IAEA,IAAI,CAAC2D,QAAQ,GAAG,IAAI;AAEpB,IAAA,MAAMoC,KAAK,GAAG,CAACkD,MAAM,GAAGrE,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAACsE,IAAI,CAAC,EAAEI,SAAS,CAAC,IAAI,CAAC;AAC/DvD,IAAAA,KAAK,CAACrN,SAAS,CAACiM,GAAG,CAACpD,gBAAgB,CAAC;AACrCwE,IAAAA,KAAK,CAACrN,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AACzC4F,IAAAA,KAAK,CAAC1Q,eAAe,CAAC,IAAI,CAAC;AAC3B;AACA;IACA,KAAK,MAAMkU,IAAI,IAAI/L,cAAc,CAAC7L,IAAI,CAAC,MAAM,EAAEoU,KAAK,CAAC,EAAE;AACrDwD,MAAAA,IAAI,CAAClU,eAAe,CAAC,IAAI,CAAC;AAC5B,IAAA;AAEA0Q,IAAAA,KAAK,CAAC5Q,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IACzC4Q,KAAK,CAACyD,KAAK,GAAG,IAAI;AAElB,IAAA,IAAI,CAACrG,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,MAAM;AAE5C,IAAA,IAAIgD,MAAM,EAAE;AACV,MAAA,IAAI,CAAC9F,SAAS,CAACsG,MAAM,CAAC1D,KAAK,CAAC;AAC9B,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAAC5C,SAAS,CAACuG,OAAO,CAAC3D,KAAK,CAAC;AAC7B;AACA;AACA,MAAA,IAAI,CAAC4D,WAAW,CAAC,IAAI,CAAC/B,YAAY,CAAChD,KAAK,CAACuE,SAAS,CAAC,CAAC,CAAC;AACvD,IAAA;AAEA,IAAA,IAAI,CAACnB,cAAc,CAAC,IAAI,CAAC7E,SAAS,CAAC4E,UAAU,GAAG,IAAI,CAACH,YAAY,CAAC7B,KAAK,CAAC,EAAE,MAAM;AAC9E;AACA;AACA;MACAA,KAAK,CAAC1W,MAAM,EAAE;AACd,MAAA,IAAI,CAACsa,WAAW,CAAC,IAAI,CAAC/B,YAAY,CAAChD,KAAK,CAACwE,OAAO,CAAC,CAAC,CAAC;MAEnD,IAAI,CAACtF,YAAY,GAAGsF,OAAO;MAC3B,IAAI,CAAClF,mBAAmB,EAAE;MAE1BvT,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2E,UAAU,EAAE;AAC9C1O,QAAAA,aAAa,EAAEwS,KAAK,CAACwE,OAAO,CAAC;QAC7B7D,SAAS;AACTE,QAAAA,IAAI,EAAE0D,SAAS;AACf9E,QAAAA,EAAE,EAAE+E;AACN,OAAC,CAAC;AAEF,MAAA,IAAI,CAACjG,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,EAAE;MACxC,IAAI,CAACtC,QAAQ,GAAG,KAAK;AACvB,IAAA,CAAC,CAAC;AACJ,EAAA;EAEA0F,cAAcA,CAACJ,MAAM,EAAE;IACrB,IAAI3P,OAAK,EAAE,EAAE;AACX,MAAA,OAAO2P,MAAM,GAAGrI,eAAe,GAAGD,cAAc;AAClD,IAAA;AAEA,IAAA,OAAOsI,MAAM,GAAGtI,cAAc,GAAGC,eAAe;AAClD,EAAA;;AAEA;AACA;AACA;AACA;EACA+I,WAAWA,CAACjC,KAAK,EAAE;AACjB,IAAA,IAAI,CAACvE,SAAS,CAAC6C,KAAK,CAACC,cAAc,GAAG,MAAM;AAC5C,IAAA,IAAI,CAAC9C,SAAS,CAACyG,QAAQ,CAAC;AAAE/B,MAAAA,IAAI,EAAEH,KAAK;AAAEmC,MAAAA,GAAG,EAAE,CAAC;AAAEvB,MAAAA,QAAQ,EAAE;AAAU,KAAC,CAAC;AACvE,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;EACA3C,OAAOA,CAAClL,KAAK,EAAE;AACb,IAAA,IAAI,CAAC0M,UAAU,CAAC1M,KAAK,CAAC;AACxB,EAAA;EAEA0M,UAAUA,CAAC1M,KAAK,EAAE;AAChB,IAAA,MAAMmK,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;IAC9B,IAAIpK,KAAK,KAAK,IAAI,CAACqJ,YAAY,IAAI,CAACc,KAAK,CAACnK,KAAK,CAAC,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAMgL,IAAI,GAAG,IAAI,CAAC3B,YAAY;IAE9B,IAAI,CAACA,YAAY,GAAGrJ,KAAK;IACzB,IAAI,CAACyJ,mBAAmB,EAAE;IAE1BvT,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2E,UAAU,EAAE;AAC9C1O,MAAAA,aAAa,EAAEwS,KAAK,CAACnK,KAAK,CAAC;MAC3B8K,SAAS,EAAE,IAAI,CAACC,UAAU,CAACC,IAAI,EAAEhL,KAAK,CAAC;MACvCgL,IAAI;AACJpB,MAAAA,EAAE,EAAE5J;AACN,KAAC,CAAC;AACJ,EAAA;AAEAyJ,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,MAAMU,KAAK,GAAG,IAAI,CAACC,SAAS,EAAE;AAE9B,IAAA,KAAK,MAAM,CAACpK,KAAK,EAAEgM,IAAI,CAAC,IAAI7B,KAAK,CAAC1R,OAAO,EAAE,EAAE;AAC3CuT,MAAAA,IAAI,CAAC/N,SAAS,CAAC6H,MAAM,CAACJ,mBAAiB,EAAE1F,KAAK,KAAK,IAAI,CAACqJ,YAAY,CAAC;AACvE,IAAA;AAEA,IAAA,IAAI,CAACgG,0BAA0B,CAAC,IAAI,CAAChG,YAAY,CAAC;IAClD,IAAI,CAACsD,kBAAkB,EAAE;AAC3B,EAAA;AAEAA,EAAAA,kBAAkBA,GAAG;AACnB;AACA;AACA;AACA;AACA,IAAA,IAAI,IAAI,CAAChL,OAAO,CAACwG,IAAI,KAAKJ,SAAS,EAAE;AACnC,MAAA;AACF,IAAA;AAEA,IAAA,MAAMuH,QAAQ,GAAG,IAAI,CAAC5G,SAAS;IAC/B,MAAM6G,SAAS,GAAGD,QAAQ,CAAC1C,WAAW,GAAG0C,QAAQ,CAACzC,WAAW;AAE7D,IAAA,IAAI2C,OAAO;AACX,IAAA,IAAIC,KAAK;IAET,IAAIF,SAAS,GAAG,CAAC,EAAE;AACjB;AACA;AACA;AACA;MACA,MAAM/G,QAAQ,GAAGnM,IAAI,CAAC6Q,GAAG,CAACoC,QAAQ,CAAChC,UAAU,CAAC;MAC9CkC,OAAO,GAAGhH,QAAQ,IAAI,CAAC;AACvBiH,MAAAA,KAAK,GAAGjH,QAAQ,IAAI+G,SAAS,GAAG,CAAC;AACnC,IAAA,CAAC,MAAM;AACL;AACA;MACA,MAAMd,IAAI,GAAG,IAAI,CAACrE,SAAS,EAAE,CAACpR,MAAM,GAAG,CAAC;AACxCwW,MAAAA,OAAO,GAAG,IAAI,CAACnG,YAAY,IAAI,CAAC;AAChCoG,MAAAA,KAAK,GAAG,IAAI,CAACpG,YAAY,IAAIoF,IAAI;AACnC,IAAA;IAEA,IAAI,CAACiB,oBAAoB,CAAC,IAAI,CAAC7G,aAAa,EAAE2G,OAAO,CAAC;IACtD,IAAI,CAACE,oBAAoB,CAAC,IAAI,CAAC5G,aAAa,EAAE2G,KAAK,CAAC;AACtD,EAAA;AAEAC,EAAAA,oBAAoBA,CAACC,QAAQ,EAAEzR,QAAQ,EAAE;AACvC,IAAA,KAAK,MAAM0R,OAAO,IAAID,QAAQ,EAAE;AAC9B;AACA;AACA,MAAA,IAAIzR,QAAQ,IAAI0R,OAAO,KAAKpT,QAAQ,CAACoD,aAAa,EAAE;AAClD,QAAA,MAAMiQ,QAAQ,GAAGF,QAAQ,KAAK,IAAI,CAAC9G,aAAa,GAAG,IAAI,CAACC,aAAa,GAAG,IAAI,CAACD,aAAa;QAC1F,MAAMiH,QAAQ,GAAGD,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAACnH,SAAS;AAC9C;AACA;QACAoH,QAAQ,CAACC,KAAK,CAAC;AAAEC,UAAAA,aAAa,EAAE;AAAK,SAAC,CAAC;AACzC,MAAA;MAEAJ,OAAO,CAAC1R,QAAQ,GAAGA,QAAQ;AAC7B,IAAA;AACF,EAAA;EAEAmR,0BAA0BA,CAACrP,KAAK,EAAE;AAChC,IAAA,IAAI,CAAC,IAAI,CAAC2I,kBAAkB,EAAE;AAC5B,MAAA;AACF,IAAA;IAEA,MAAM8C,MAAM,GAAG1I,cAAc,CAACE,OAAO,CAACmE,eAAe,EAAE,IAAI,CAACuB,kBAAkB,CAAC;AAC/E,IAAA,IAAI8C,MAAM,EAAE;AACVA,MAAAA,MAAM,CAACxN,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAC1C+F,MAAAA,MAAM,CAAC7Q,eAAe,CAAC,cAAc,CAAC;AACxC,IAAA;AAEA,IAAA,MAAMqV,SAAS,GAAGlN,cAAc,CAACE,OAAO,CAAC,CAAA,mBAAA,EAAsBjD,KAAK,CAAA,EAAA,CAAI,EAAE,IAAI,CAAC2I,kBAAkB,CAAC;AAClG,IAAA,IAAIsH,SAAS,EAAE;AACbA,MAAAA,SAAS,CAAChS,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AAC1CuK,MAAAA,SAAS,CAACvV,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC;AAChD,IAAA;AACF,EAAA;AAEAiQ,EAAAA,eAAeA,CAAC3K,KAAK,EAAEhH,MAAM,EAAE;IAC7B,IAAIgB,MAAM,CAACkW,KAAK,CAAClQ,KAAK,CAAC,IAAIhH,MAAM,KAAK,CAAC,EAAE;AACvC,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,IAAIgH,KAAK,GAAG,CAAC,EAAE;MACb,OAAO,IAAI,CAACmQ,YAAY,EAAE,GAAGnX,MAAM,GAAG,CAAC,GAAG,IAAI;AAChD,IAAA;AAEA,IAAA,IAAIgH,KAAK,GAAGhH,MAAM,GAAG,CAAC,EAAE;MACtB,OAAO,IAAI,CAACmX,YAAY,EAAE,GAAG,CAAC,GAAG,IAAI;AACvC,IAAA;AAEA,IAAA,OAAOnQ,KAAK;AACd,EAAA;;AAEA;AACA;AACAmQ,EAAAA,YAAYA,GAAG;AACb,IAAA,OAAO,IAAI,CAACxO,OAAO,CAACwG,IAAI,KAAKH,SAAS,IAAI,IAAI,CAACrG,OAAO,CAACwG,IAAI,KAAKF,SAAS;AAC3E,EAAA;;AAEA;AACA;AACA;AACAuC,EAAAA,QAAQA,GAAG;AACT,IAAA,IAAI,IAAI,CAACS,OAAO,EAAE,IAAI,IAAI,CAACb,SAAS,EAAE,CAACpR,MAAM,GAAG,CAAC,EAAE;AACjD,MAAA,OAAO,KAAK;AACd,IAAA;AAEA,IAAA,MAAMoX,MAAM,GAAGvT,gBAAgB,CAAC,IAAI,CAAC6E,QAAQ,CAAC;AAC9C,IAAA,MAAM2O,GAAG,GAAG7N,IAAI,IAAIxI,MAAM,CAAC+C,UAAU,CAACqT,MAAM,CAAC1S,gBAAgB,CAAC8E,IAAI,CAAC,CAAC,IAAI,CAAC;;AAEzE;AACA;AACA,IAAA,OAAO,CAAC6N,GAAG,CAAC,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,IAC5CA,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,IACrC,CAAC,IAAI,CAAC3O,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACgP,iBAAiB,CAAC,IACpD,CAAC,IAAI,CAAClF,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACiP,eAAe,CAAC;AACtD,EAAA;AAEAkE,EAAAA,UAAUA,CAACC,IAAI,EAAEpB,EAAE,EAAE;AACnB,IAAA,MAAM4E,MAAM,GAAG5E,EAAE,GAAGoB,IAAI;IACxB,IAAInM,OAAK,EAAE,EAAE;AACX,MAAA,OAAO2P,MAAM,GAAGrI,eAAe,GAAGD,cAAc;AAClD,IAAA;AAEA,IAAA,OAAOsI,MAAM,GAAGtI,cAAc,GAAGC,eAAe;AAClD,EAAA;AAEA8D,EAAAA,iBAAiBA,CAACjK,KAAK,GAAG,IAAI,CAACqJ,YAAY,EAAE;AAC3C,IAAA,MAAMjB,QAAQ,GAAG,IAAI,CAACkI,aAAa,CAACtQ,KAAK,CAAC;AAC1C;AACA,IAAA,IAAI,CAAC0B,QAAQ,CAAC6J,KAAK,CAACgF,WAAW,CAACtJ,iBAAiB,EAAE,CAAA,EAAGmB,QAAQ,CAAA,EAAA,CAAI,CAAC;AACnE,IAAA,IAAI,CAACW,SAAS,GAAGtJ,UAAU,CAAC,MAAM;AAChC;AACA;AACA;AACA;AACA,MAAA,MAAM+Q,QAAQ,GAAG,IAAI,CAACC,cAAc,EAAE;MACtC,IAAI,CAAC3G,eAAe,EAAE;;AAEtB;AACA;MACA,IAAI0G,QAAQ,KAAK,IAAI,EAAE;QACrB,IAAI,CAAClI,KAAK,EAAE;AACZ,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAAC2B,iBAAiB,CAACuG,QAAQ,CAAC;IAClC,CAAC,EAAEpI,QAAQ,CAAC;AACd,EAAA;;AAEA;AACA;AACA;AACAqI,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAAC9F,eAAe,CAAC,IAAI,CAACd,SAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAACO,SAAS,EAAE,CAACpR,MAAM,CAAC;AAC5E,EAAA;AAEAsX,EAAAA,aAAaA,CAACtQ,KAAK,GAAG,IAAI,CAACqJ,YAAY,EAAE;IACvC,MAAM2C,IAAI,GAAG,IAAI,CAAC5B,SAAS,EAAE,CAACpK,KAAK,CAAC;IACpC,MAAMoI,QAAQ,GAAG4D,IAAI,GAAGhS,MAAM,CAACsQ,QAAQ,CAAC0B,IAAI,CAAC3Q,YAAY,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,GAAGrB,MAAM,CAAC0W,GAAG;AAC/F,IAAA,OAAO1W,MAAM,CAACkW,KAAK,CAAC9H,QAAQ,CAAC,GAAG,IAAI,CAACzG,OAAO,CAACyG,QAAQ,GAAGA,QAAQ;AAClE,EAAA;AAEAuD,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,IAAI,CAAC,IAAI,CAACvC,QAAQ,EAAE;AAClB,MAAA;AACF,IAAA;IAEA,IAAI,CAACM,KAAK,EAAE;AACd,EAAA;;AAEA;AACAkC,EAAAA,qBAAqBA,GAAG;IACtB,IAAI,CAACxC,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACd,KAAK,EAAE;IACZ,IAAI,CAACqB,uBAAuB,EAAE;AAChC,EAAA;AAEAgH,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,IAAI,CAACvH,QAAQ,EAAE;MACjB,IAAI,CAACwC,qBAAqB,EAAE;AAC5B,MAAA;AACF,IAAA;IAEA,IAAI,CAACxC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACM,KAAK,EAAE;IACZ,IAAI,CAACC,uBAAuB,EAAE;AAChC,EAAA;AAEAA,EAAAA,uBAAuBA,GAAG;AACxB,IAAA,IAAI,CAAC,IAAI,CAACf,iBAAiB,EAAE;AAC3B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACA,iBAAiB,CAAC3K,SAAS,CAAC6H,MAAM,CAACiB,iBAAiB,EAAE,CAAC,IAAI,CAACqC,QAAQ,CAAC;AAE1E,IAAA,MAAMwH,KAAK,GAAG,IAAI,CAAChI,iBAAiB,CAACvN,YAAY,CAC/C,IAAI,CAAC+N,QAAQ,GAAG,qBAAqB,GAAG,oBAC1C,CAAC;AAED,IAAA,IAAIwH,KAAK,EAAE;MACT,IAAI,CAAChI,iBAAiB,CAAClO,YAAY,CAAC,YAAY,EAAEkW,KAAK,CAAC;AAC1D,IAAA;AACF,EAAA;AAEA3F,EAAAA,OAAOA,GAAG;IACR,OAAO,IAAI,CAACvJ,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAC;AAC1D,EAAA;AAEAqF,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,OAAO,OAAO7O,MAAM,KAAK,WAAW,IAClC,OAAOA,MAAM,CAACmV,UAAU,KAAK,UAAU,IACvCnV,MAAM,CAACmV,UAAU,CAAC,kCAAkC,CAAC,CAACzN,OAAO;AACjE,EAAA;AAEAgH,EAAAA,SAASA,GAAG;IACV,OAAOrH,cAAc,CAAC7L,IAAI,CAACmQ,aAAa,EAAE,IAAI,CAAC3F,QAAQ,CAAC;AAC1D,EAAA;AAEAsI,EAAAA,cAAcA,GAAG;IACf,IAAI,IAAI,CAACjB,SAAS,EAAE;AAClB+H,MAAAA,YAAY,CAAC,IAAI,CAAC/H,SAAS,CAAC;MAC5B,IAAI,CAACA,SAAS,GAAG,IAAI;AACvB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEA7S,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAE8B,mBAAmB,EAAE,UAAU5R,KAAK,EAAE;AACpF,EAAA,MAAMY,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC;AAE1D,EAAA,IAAI,CAACtN,MAAM,IAAI,CAACA,MAAM,CAACuH,SAAS,CAACrG,QAAQ,CAAC+O,mBAAmB,CAAC,EAAE;AAC9D,IAAA;AACF,EAAA;EAEA7Q,KAAK,CAACyO,cAAc,EAAE;AAEtB,EAAA,MAAMwM,QAAQ,GAAGtI,QAAQ,CAACnG,mBAAmB,CAAC5L,MAAM,CAAC;;AAErD;EACAqa,QAAQ,CAACnF,qBAAqB,EAAE;AAEhC,EAAA,MAAMoF,UAAU,GAAG,IAAI,CAAC3V,YAAY,CAAC,kBAAkB,CAAC;AAExD,EAAA,IAAI2V,UAAU,EAAE;AACdD,IAAAA,QAAQ,CAACnH,EAAE,CAACoH,UAAU,CAAC;AACvB,IAAA;AACF,EAAA;EAEA,IAAIxW,WAAW,CAACY,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,MAAM,EAAE;IAC1D2V,QAAQ,CAACrc,IAAI,EAAE;AACf,IAAA;AACF,EAAA;EAEAqc,QAAQ,CAACvN,IAAI,EAAE;AACjB,CAAC,CAAC;AAEFtN,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAE6B,mBAAmB,EAAE,UAAU3R,KAAK,EAAE;AACpF,EAAA,MAAMY,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC;AAE1D,EAAA,IAAI,CAACtN,MAAM,IAAI,CAACA,MAAM,CAACuH,SAAS,CAACrG,QAAQ,CAAC+O,mBAAmB,CAAC,EAAE;AAC9D,IAAA;AACF,EAAA;EAEA7Q,KAAK,CAACyO,cAAc,EAAE;EAEtBkE,QAAQ,CAACnG,mBAAmB,CAAC5L,MAAM,CAAC,CAACia,gBAAgB,EAAE;AACzD,CAAC,CAAC;AAEFza,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEgL,qBAAmB,EAAE,MAAM;AACjD,EAAA,MAAMuK,SAAS,GAAGlO,cAAc,CAAC7L,IAAI,CAAC2Q,sBAAsB,CAAC;AAE7D,EAAA,KAAK,MAAMkJ,QAAQ,IAAIE,SAAS,EAAE;AAChCxI,IAAAA,QAAQ,CAACnG,mBAAmB,CAACyO,QAAQ,CAAC;AACxC,EAAA;AACF,CAAC,CAAC;;ACn5BF;AACA;AACA;AACA;AACA;AACA;;;AAUA;AACA;AACA;;AAEA,MAAMxQ,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMyL,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAMoP,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAMN,iBAAe,GAAG,MAAM;AAC9B,MAAMmM,mBAAmB,GAAG,UAAU;AACtC,MAAMC,qBAAqB,GAAG,YAAY;AAC1C,MAAMC,oBAAoB,GAAG,WAAW;AACxC,MAAMC,0BAA0B,GAAG,CAAA,QAAA,EAAWH,mBAAmB,CAAA,EAAA,EAAKA,mBAAmB,CAAA,CAAE;AAC3F,MAAMI,qBAAqB,GAAG,qBAAqB;AAEnD,MAAMC,KAAK,GAAG,OAAO;AACrB,MAAMC,MAAM,GAAG,QAAQ;AAEvB,MAAMC,gBAAgB,GAAG,sCAAsC;AAC/D,MAAMlM,sBAAoB,GAAG,6BAA6B;AAE1D,MAAMtF,SAAO,GAAG;AACdyR,EAAAA,MAAM,EAAE,IAAI;AACZhM,EAAAA,MAAM,EAAE;AACV,CAAC;AAED,MAAMxF,aAAW,GAAG;AAClBwR,EAAAA,MAAM,EAAE,gBAAgB;AACxBhM,EAAAA,MAAM,EAAE;AACV,CAAC;;AAED;AACA;AACA;;AAEA,MAAMiM,QAAQ,SAAStQ,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACsR,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACC,aAAa,GAAG,EAAE;AAEvB,IAAA,MAAMC,UAAU,GAAGnP,cAAc,CAAC7L,IAAI,CAACyO,sBAAoB,CAAC;AAE5D,IAAA,KAAK,MAAMwM,IAAI,IAAID,UAAU,EAAE;AAC7B,MAAA,MAAM3b,QAAQ,GAAGwM,cAAc,CAACgB,sBAAsB,CAACoO,IAAI,CAAC;AAC5D,MAAA,MAAMC,aAAa,GAAGrP,cAAc,CAAC7L,IAAI,CAACX,QAAQ,CAAC,CAChD0E,MAAM,CAACoX,YAAY,IAAIA,YAAY,KAAK,IAAI,CAAC3Q,QAAQ,CAAC;AAEzD,MAAA,IAAInL,QAAQ,KAAK,IAAI,IAAI6b,aAAa,CAACpZ,MAAM,EAAE;AAC7C,QAAA,IAAI,CAACiZ,aAAa,CAAC1O,IAAI,CAAC4O,IAAI,CAAC;AAC/B,MAAA;AACF,IAAA;IAEA,IAAI,CAACG,mBAAmB,EAAE;AAE1B,IAAA,IAAI,CAAC,IAAI,CAAC3Q,OAAO,CAACmQ,MAAM,EAAE;AACxB,MAAA,IAAI,CAACS,yBAAyB,CAAC,IAAI,CAACN,aAAa,EAAE,IAAI,CAACO,QAAQ,EAAE,CAAC;AACrE,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC7Q,OAAO,CAACmE,MAAM,EAAE;MACvB,IAAI,CAACA,MAAM,EAAE;AACf,IAAA;AACF,EAAA;;AAEA;EACA,WAAWzF,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAAC0M,QAAQ,EAAE,EAAE;MACnB,IAAI,CAACC,IAAI,EAAE;AACb,IAAA,CAAC,MAAM;MACL,IAAI,CAACC,IAAI,EAAE;AACb,IAAA;AACF,EAAA;AAEAA,EAAAA,IAAIA,GAAG;IACL,IAAI,IAAI,CAACV,gBAAgB,IAAI,IAAI,CAACQ,QAAQ,EAAE,EAAE;AAC5C,MAAA;AACF,IAAA;IAEA,IAAIG,cAAc,GAAG,EAAE;;AAEvB;AACA,IAAA,IAAI,IAAI,CAAChR,OAAO,CAACmQ,MAAM,EAAE;AACvBa,MAAAA,cAAc,GAAG,IAAI,CAACC,sBAAsB,CAACf,gBAAgB,CAAC,CAC3D5W,MAAM,CAACnH,OAAO,IAAIA,OAAO,KAAK,IAAI,CAAC4N,QAAQ,CAAC,CAC5CkB,GAAG,CAAC9O,OAAO,IAAIie,QAAQ,CAACzP,mBAAmB,CAACxO,OAAO,EAAE;AAAEgS,QAAAA,MAAM,EAAE;AAAM,OAAC,CAAC,CAAC;AAC7E,IAAA;IAEA,IAAI6M,cAAc,CAAC3Z,MAAM,IAAI2Z,cAAc,CAAC,CAAC,CAAC,CAACX,gBAAgB,EAAE;AAC/D,MAAA;AACF,IAAA;IAEA,MAAMa,UAAU,GAAG3c,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwP,YAAU,CAAC;IAClE,IAAI2B,UAAU,CAACtN,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAMuN,cAAc,IAAIH,cAAc,EAAE;MAC3CG,cAAc,CAACL,IAAI,EAAE;AACvB,IAAA;AAEA,IAAA,MAAMM,SAAS,GAAG,IAAI,CAACC,aAAa,EAAE;IAEtC,IAAI,CAACtR,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC0c,mBAAmB,CAAC;IACnD,IAAI,CAAC5P,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACqH,qBAAqB,CAAC;IAElD,IAAI,CAAC7P,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,CAAC;IAElC,IAAI,CAACR,yBAAyB,CAAC,IAAI,CAACN,aAAa,EAAE,IAAI,CAAC;IACxD,IAAI,CAACD,gBAAgB,GAAG,IAAI;IAE5B,MAAMiB,QAAQ,GAAGA,MAAM;MACrB,IAAI,CAACjB,gBAAgB,GAAG,KAAK;MAE7B,IAAI,CAACtQ,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC2c,qBAAqB,CAAC;MACrD,IAAI,CAAC7P,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACoH,mBAAmB,EAAEnM,iBAAe,CAAC;MAEjE,IAAI,CAACzD,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,EAAE;MAEnC7c,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEyP,aAAW,CAAC;IAClD,CAAC;AAED,IAAA,MAAM+B,oBAAoB,GAAGH,SAAS,CAAC,CAAC,CAAC,CAACxR,WAAW,EAAE,GAAGwR,SAAS,CAAC7Z,KAAK,CAAC,CAAC,CAAC;AAC5E,IAAA,MAAMia,UAAU,GAAG,CAAA,MAAA,EAASD,oBAAoB,CAAA,CAAE;IAElD,IAAI,CAAC/Q,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACvR,QAAQ,EAAE,IAAI,CAAC;AAClD,IAAA,IAAI,CAACA,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,CAAA,EAAG,IAAI,CAACrR,QAAQ,CAACyR,UAAU,CAAC,CAAA,EAAA,CAAI;AACnE,EAAA;AAEAV,EAAAA,IAAIA,GAAG;IACL,IAAI,IAAI,CAACT,gBAAgB,IAAI,CAAC,IAAI,CAACQ,QAAQ,EAAE,EAAE;AAC7C,MAAA;AACF,IAAA;IAEA,MAAMK,UAAU,GAAG3c,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0P,YAAU,CAAC;IAClE,IAAIyB,UAAU,CAACtN,gBAAgB,EAAE;AAC/B,MAAA;AACF,IAAA;AAEA,IAAA,MAAMwN,SAAS,GAAG,IAAI,CAACC,aAAa,EAAE;AAEtC,IAAA,IAAI,CAACtR,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,CAAA,EAAG,IAAI,CAACrR,QAAQ,CAACwM,qBAAqB,EAAE,CAAC6E,SAAS,CAAC,CAAA,EAAA,CAAI;AAExFpU,IAAAA,MAAM,CAAC,IAAI,CAAC+C,QAAQ,CAAC;IAErB,IAAI,CAACA,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACqH,qBAAqB,CAAC;IAClD,IAAI,CAAC7P,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC0c,mBAAmB,EAAEnM,iBAAe,CAAC;AAEpE,IAAA,KAAK,MAAM/L,OAAO,IAAI,IAAI,CAAC6Y,aAAa,EAAE;AACxC,MAAA,MAAMne,OAAO,GAAGiP,cAAc,CAACiB,sBAAsB,CAAC5K,OAAO,CAAC;MAE9D,IAAItF,OAAO,IAAI,CAAC,IAAI,CAAC0e,QAAQ,CAAC1e,OAAO,CAAC,EAAE;QACtC,IAAI,CAACye,yBAAyB,CAAC,CAACnZ,OAAO,CAAC,EAAE,KAAK,CAAC;AAClD,MAAA;AACF,IAAA;IAEA,IAAI,CAAC4Y,gBAAgB,GAAG,IAAI;IAE5B,MAAMiB,QAAQ,GAAGA,MAAM;MACrB,IAAI,CAACjB,gBAAgB,GAAG,KAAK;MAC7B,IAAI,CAACtQ,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC2c,qBAAqB,CAAC;MACrD,IAAI,CAAC7P,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACoH,mBAAmB,CAAC;MAChDpb,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2P,cAAY,CAAC;IACnD,CAAC;IAED,IAAI,CAAC3P,QAAQ,CAAC6J,KAAK,CAACwH,SAAS,CAAC,GAAG,EAAE;IAEnC,IAAI,CAAC5Q,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACvR,QAAQ,EAAE,IAAI,CAAC;AACpD,EAAA;;AAEA;AACA8Q,EAAAA,QAAQA,CAAC1e,OAAO,GAAG,IAAI,CAAC4N,QAAQ,EAAE;AAChC,IAAA,OAAO5N,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAACuN,iBAAe,CAAC;AACpD,EAAA;EAEAvE,iBAAiBA,CAACF,MAAM,EAAE;IACxBA,MAAM,CAACoF,MAAM,GAAG1N,OAAO,CAACsI,MAAM,CAACoF,MAAM,CAAC,CAAA;IACtCpF,MAAM,CAACoR,MAAM,GAAGzU,UAAU,CAACqD,MAAM,CAACoR,MAAM,CAAC;AACzC,IAAA,OAAOpR,MAAM;AACf,EAAA;AAEAsS,EAAAA,aAAaA,GAAG;AACd,IAAA,OAAO,IAAI,CAACtR,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAAC8Z,qBAAqB,CAAC,GAAGC,KAAK,GAAGC,MAAM;AACjF,EAAA;AAEAU,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,IAAI,CAAC,IAAI,CAAC3Q,OAAO,CAACmQ,MAAM,EAAE;AACxB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM5O,QAAQ,GAAG,IAAI,CAAC0P,sBAAsB,CAACjN,sBAAoB,CAAC;AAElE,IAAA,KAAK,MAAM7R,OAAO,IAAIoP,QAAQ,EAAE;AAC9B,MAAA,MAAMkQ,QAAQ,GAAGrQ,cAAc,CAACiB,sBAAsB,CAAClQ,OAAO,CAAC;AAE/D,MAAA,IAAIsf,QAAQ,EAAE;AACZ,QAAA,IAAI,CAACb,yBAAyB,CAAC,CAACze,OAAO,CAAC,EAAE,IAAI,CAAC0e,QAAQ,CAACY,QAAQ,CAAC,CAAC;AACpE,MAAA;AACF,IAAA;AACF,EAAA;EAEAR,sBAAsBA,CAACrc,QAAQ,EAAE;AAC/B,IAAA,MAAM2M,QAAQ,GAAGH,cAAc,CAAC7L,IAAI,CAACua,0BAA0B,EAAE,IAAI,CAAC9P,OAAO,CAACmQ,MAAM,CAAC;AACrF;IACA,OAAO/O,cAAc,CAAC7L,IAAI,CAACX,QAAQ,EAAE,IAAI,CAACoL,OAAO,CAACmQ,MAAM,CAAC,CAAC7W,MAAM,CAACnH,OAAO,IAAI,CAACoP,QAAQ,CAACxK,QAAQ,CAAC5E,OAAO,CAAC,CAAC;AAC1G,EAAA;AAEAye,EAAAA,yBAAyBA,CAACc,YAAY,EAAEC,MAAM,EAAE;AAC9C,IAAA,IAAI,CAACD,YAAY,CAACra,MAAM,EAAE;AACxB,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAMlF,OAAO,IAAIuf,YAAY,EAAE;MAClCvf,OAAO,CAACmK,SAAS,CAAC6H,MAAM,CAAC0L,oBAAoB,EAAE,CAAC8B,MAAM,CAAC;AACvDxf,MAAAA,OAAO,CAAC4G,YAAY,CAAC,eAAe,EAAE4Y,MAAM,CAAC;AAC/C,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEApd,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF;AACA,EAAA,IAAIA,KAAK,CAACY,MAAM,CAAC4N,OAAO,KAAK,GAAG,IAAKxO,KAAK,CAACE,cAAc,IAAIF,KAAK,CAACE,cAAc,CAACsO,OAAO,KAAK,GAAI,EAAE;IAClGxO,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;EAEA,KAAK,MAAMzQ,OAAO,IAAIiP,cAAc,CAACkB,+BAA+B,CAAC,IAAI,CAAC,EAAE;AAC1E8N,IAAAA,QAAQ,CAACzP,mBAAmB,CAACxO,OAAO,EAAE;AAAEgS,MAAAA,MAAM,EAAE;AAAM,KAAC,CAAC,CAACA,MAAM,EAAE;AACnE,EAAA;AACF,CAAC,CAAC;;AC3QF;AACA;AACA;AACA;;AAKA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG;AACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AACxB,MAAM,YAAY,GAAG,CAAC,KAAK;AAC3B,EAAE,CAAC,EAAE,CAAC;AACN,EAAE,CAAC,EAAE;AACL,CAAC,CAAC;AACF,MAAM,eAAe,GAAG;AACxB,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,KAAK,EAAE,MAAM;AACf,EAAE,MAAM,EAAE,KAAK;AACf,EAAE,GAAG,EAAE;AACP,CAAC;AACD,SAAS,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;AAClC,EAAE,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpC;AACA,SAAS,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE;AAChC,EAAE,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK;AAC3D;AACA,SAAS,OAAO,CAAC,SAAS,EAAE;AAC5B,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC;AACA,SAAS,YAAY,CAAC,SAAS,EAAE;AACjC,EAAE,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChC;AACA,SAAS,eAAe,CAAC,IAAI,EAAE;AAC/B,EAAE,OAAO,IAAI,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;AACjC;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,EAAE,OAAO,IAAI,KAAK,GAAG,GAAG,QAAQ,GAAG,OAAO;AAC1C;AACA,SAAS,WAAW,CAAC,SAAS,EAAE;AAChC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;AAChC,EAAE,OAAO,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG;AAC3D;AACA,SAAS,gBAAgB,CAAC,SAAS,EAAE;AACrC,EAAE,OAAO,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAChD;AACA,SAAS,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;AAClD,EAAE,IAAI,GAAG,KAAK,MAAM,EAAE;AACtB,IAAI,GAAG,GAAG,KAAK;AACf,EAAE;AACF,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAC3C,EAAE,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,CAAC;AAC7C,EAAE,IAAI,iBAAiB,GAAG,aAAa,KAAK,GAAG,GAAG,SAAS,MAAM,GAAG,GAAG,KAAK,GAAG,OAAO,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,KAAK,OAAO,GAAG,QAAQ,GAAG,KAAK;AACrJ,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;AACxD,IAAI,iBAAiB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC;AAC/D,EAAE;AACF,EAAE,OAAO,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AACrE;AACA,SAAS,qBAAqB,CAAC,SAAS,EAAE;AAC1C,EAAE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC;AAC3D,EAAE,OAAO,CAAC,6BAA6B,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;AACxH;AACA,SAAS,6BAA6B,CAAC,SAAS,EAAE;AAClD,EAAE,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;AAC5G;AACA,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;AACrC,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;AACrC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC;AACrC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC;AACrC,SAAS,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;AACzC,EAAE,QAAQ,IAAI;AACd,IAAI,KAAK,KAAK;AACd,IAAI,KAAK,QAAQ;AACjB,MAAM,IAAI,GAAG,EAAE,OAAO,OAAO,GAAG,WAAW,GAAG,WAAW;AACzD,MAAM,OAAO,OAAO,GAAG,WAAW,GAAG,WAAW;AAChD,IAAI,KAAK,MAAM;AACf,IAAI,KAAK,OAAO;AAChB,MAAM,OAAO,OAAO,GAAG,WAAW,GAAG,WAAW;AAChD,IAAI;AACJ,MAAM,OAAO,EAAE;AACf;AACA;AACA,SAAS,yBAAyB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,EAAE;AAC7E,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAC3C,EAAE,IAAI,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,KAAK,OAAO,EAAE,GAAG,CAAC;AACxE,EAAE,IAAI,SAAS,EAAE;AACjB,IAAI,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC;AACnD,IAAI,IAAI,aAAa,EAAE;AACvB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AACjE,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI;AACb;AACA,SAAS,oBAAoB,CAAC,SAAS,EAAE;AACzC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AACjC,EAAE,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7D;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE;AACtC,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,CAAC;AACV,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,MAAM,EAAE,CAAC;AACb,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,GAAG;AACP,GAAG;AACH;AACA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,OAAO,OAAO,OAAO,KAAK,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG;AACtE,IAAI,GAAG,EAAE,OAAO;AAChB,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,MAAM,EAAE,OAAO;AACnB,IAAI,IAAI,EAAE;AACV,GAAG;AACH;AACA,SAAS,gBAAgB,CAAC,IAAI,EAAE;AAChC,EAAE,MAAM;AACR,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,KAAK;AACT,IAAI;AACJ,GAAG,GAAG,IAAI;AACV,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,GAAG,EAAE,CAAC;AACV,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,KAAK,EAAE,CAAC,GAAG,KAAK;AACpB,IAAI,MAAM,EAAE,CAAC,GAAG,MAAM;AACtB,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AClIA,SAAS,0BAA0B,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE;AAC1D,EAAE,IAAI;AACN,IAAI,SAAS;AACb,IAAI;AACJ,GAAG,GAAG,IAAI;AACV,EAAE,MAAM,QAAQ,GAAG,WAAW,CAAC,SAAS,CAAC;AACzC,EAAE,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC;AACnD,EAAE,MAAM,WAAW,GAAG,aAAa,CAAC,aAAa,CAAC;AAClD,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AACjC,EAAE,MAAM,UAAU,GAAG,QAAQ,KAAK,GAAG;AACrC,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC;AACxE,EAAE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC1E,EAAE,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;AAC5E,EAAE,IAAI,MAAM;AACZ,EAAE,QAAQ,IAAI;AACd,IAAI,KAAK,KAAK;AACd,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,OAAO;AAClB,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC;AAClC,OAAO;AACP,MAAM;AACN,IAAI,KAAK,QAAQ;AACjB,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,OAAO;AAClB,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC;AACnC,OAAO;AACP,MAAM;AACN,IAAI,KAAK,OAAO;AAChB,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK;AACxC,QAAQ,CAAC,EAAE;AACX,OAAO;AACP,MAAM;AACN,IAAI,KAAK,MAAM;AACf,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK;AACvC,QAAQ,CAAC,EAAE;AACX,OAAO;AACP,MAAM;AACN,IAAI;AACJ,MAAM,MAAM,GAAG;AACf,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;AACrB,OAAO;AACP;AACA,EAAE,QAAQ,YAAY,CAAC,SAAS,CAAC;AACjC,IAAI,KAAK,OAAO;AAChB,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,IAAI,GAAG,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,MAAM;AACN,IAAI,KAAK,KAAK;AACd,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW,IAAI,GAAG,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC;AACzE,MAAM;AACN;AACA,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;AAC9C,EAAE,IAAI,qBAAqB;AAC3B,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,EAAE;AAChB,EAAE;AACF,EAAE,MAAM;AACR,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,QAAQ;AACZ,IAAI,KAAK;AACT,IAAI,QAAQ;AACZ,IAAI;AACJ,GAAG,GAAG,KAAK;AACX,EAAE,MAAM;AACR,IAAI,QAAQ,GAAG,mBAAmB;AAClC,IAAI,YAAY,GAAG,UAAU;AAC7B,IAAI,cAAc,GAAG,UAAU;AAC/B,IAAI,WAAW,GAAG,KAAK;AACvB,IAAI,OAAO,GAAG;AACd,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;AAC9B,EAAE,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACjD,EAAE,MAAM,UAAU,GAAG,cAAc,KAAK,UAAU,GAAG,WAAW,GAAG,UAAU;AAC7E,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC;AACrE,EAAE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,QAAQ,CAAC,eAAe,CAAC;AAC7E,IAAI,OAAO,EAAE,CAAC,CAAC,qBAAqB,GAAG,OAAO,QAAQ,CAAC,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,GAAG,qBAAqB,GAAG,IAAI,IAAI,OAAO,GAAG,OAAO,CAAC,cAAc,KAAK,OAAO,QAAQ,CAAC,kBAAkB,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvS,IAAI,QAAQ;AACZ,IAAI,YAAY;AAChB,IAAI;AACJ,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,IAAI,GAAG,cAAc,KAAK,UAAU,GAAG;AAC/C,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;AAC/B,IAAI,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC;AAC3B,GAAG,GAAG,KAAK,CAAC,SAAS;AACrB,EAAE,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACtH,EAAE,MAAM,WAAW,GAAG,CAAC,OAAO,QAAQ,CAAC,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,QAAQ,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,KAAK;AAC3L,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,CAAC,EAAE;AACP,GAAG,GAAG;AACN,IAAI,CAAC,EAAE,CAAC;AACR,IAAI,CAAC,EAAE;AACP,GAAG;AACH,EAAE,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,qDAAqD,GAAG,MAAM,QAAQ,CAAC,qDAAqD,CAAC;AACnL,IAAI,QAAQ;AACZ,IAAI,IAAI;AACR,IAAI,YAAY;AAChB,IAAI;AACJ,GAAG,CAAC,GAAG,IAAI,CAAC;AACZ,EAAE,OAAO;AACT,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,GAAG,GAAG,iBAAiB,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;AAC7F,IAAI,MAAM,EAAE,CAAC,iBAAiB,CAAC,MAAM,GAAG,kBAAkB,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC;AACzG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;AACjG,IAAI,KAAK,EAAE,CAAC,iBAAiB,CAAC,KAAK,GAAG,kBAAkB,CAAC,KAAK,GAAG,aAAa,CAAC,KAAK,IAAI,WAAW,CAAC;AACpG,GAAG;AACH;;AAEA;AACA,MAAM,eAAe,GAAG,EAAE;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMyN,iBAAe,GAAG,OAAO,SAAS,EAAE,QAAQ,EAAE,MAAM,KAAK;AAC/D,EAAE,MAAM;AACR,IAAI,SAAS,GAAG,QAAQ;AACxB,IAAI,QAAQ,GAAG,UAAU;AACzB,IAAI,UAAU,GAAG,EAAE;AACnB,IAAI;AACJ,GAAG,GAAG,MAAM;AACZ,EAAE,MAAM,0BAA0B,GAAG,QAAQ,CAAC,cAAc,GAAG,QAAQ,GAAG;AAC1E,IAAI,GAAG,QAAQ;AACf,IAAI;AACJ,GAAG;AACH,EAAE,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChF,EAAE,IAAI,KAAK,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC;AAC7C,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI;AACJ,GAAG,CAAC;AACJ,EAAE,IAAI;AACN,IAAI,CAAC;AACL,IAAI;AACJ,GAAG,GAAG,0BAA0B,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC;AACvD,EAAE,IAAI,iBAAiB,GAAG,SAAS;AACnC,EAAE,IAAI,UAAU,GAAG,CAAC;AACpB,EAAE,MAAM,cAAc,GAAG,EAAE;AAC3B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,IAAI,MAAM,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC;AAC3C,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC5B,MAAM;AACN,IAAI;AACJ,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM;AACN,KAAK,GAAG,iBAAiB;AACzB,IAAI,MAAM;AACV,MAAM,CAAC,EAAE,KAAK;AACd,MAAM,CAAC,EAAE,KAAK;AACd,MAAM,IAAI;AACV,MAAM;AACN,KAAK,GAAG,MAAM,EAAE,CAAC;AACjB,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,gBAAgB,EAAE,SAAS;AACjC,MAAM,SAAS,EAAE,iBAAiB;AAClC,MAAM,QAAQ;AACd,MAAM,cAAc;AACpB,MAAM,KAAK;AACX,MAAM,QAAQ,EAAE,0BAA0B;AAC1C,MAAM,QAAQ,EAAE;AAChB,QAAQ,SAAS;AACjB,QAAQ;AACR;AACA,KAAK,CAAC;AACN,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC;AACjC,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC;AACjC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG;AAC3B,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC;AAC7B,MAAM,GAAG;AACT,KAAK;AACL,IAAI,IAAI,KAAK,IAAI,UAAU,GAAG,eAAe,EAAE;AAC/C,MAAM,UAAU,EAAE;AAClB,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE;AAC7B,UAAU,iBAAiB,GAAG,KAAK,CAAC,SAAS;AAC7C,QAAQ;AACR,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE;AACzB,UAAU,KAAK,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC;AACxE,YAAY,SAAS;AACrB,YAAY,QAAQ;AACpB,YAAY;AACZ,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK;AAC1B,QAAQ;AACR,QAAQ,CAAC;AACT,UAAU,CAAC;AACX,UAAU;AACV,SAAS,GAAG,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,CAAC;AACrE,MAAM;AACN,MAAM,CAAC,GAAG,EAAE;AACZ,IAAI;AACJ,EAAE;AACF,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,SAAS,EAAE,iBAAiB;AAChC,IAAI,QAAQ;AACZ,IAAI;AACJ,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,OAAK,GAAG,OAAO,KAAK;AAC1B,EAAE,IAAI,EAAE,OAAO;AACf,EAAE,OAAO;AACT,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE;AAClB,IAAI,MAAM;AACV,MAAM,CAAC;AACP,MAAM,CAAC;AACP,MAAM,SAAS;AACf,MAAM,KAAK;AACX,MAAM,QAAQ;AACd,MAAM,QAAQ;AACd,MAAM;AACN,KAAK,GAAG,KAAK;AACb;AACA,IAAI,MAAM;AACV,MAAM,OAAO;AACb,MAAM,OAAO,GAAG;AAChB,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE;AACtC,IAAI,IAAI,OAAO,IAAI,IAAI,EAAE;AACzB,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,IAAI,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACnD,IAAI,MAAM,MAAM,GAAG;AACnB,MAAM,CAAC;AACP,MAAM;AACN,KAAK;AACL,IAAI,MAAM,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC;AAC5C,IAAI,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC;AACtC,IAAI,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AACjE,IAAI,MAAM,OAAO,GAAG,IAAI,KAAK,GAAG;AAChC,IAAI,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM;AAC5C,IAAI,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO;AAChD,IAAI,MAAM,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,aAAa;AAC/D,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC3G,IAAI,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;AAC1D,IAAI,MAAM,iBAAiB,GAAG,OAAO,QAAQ,CAAC,eAAe,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACnH,IAAI,IAAI,UAAU,GAAG,iBAAiB,GAAG,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC;;AAE1E;AACA,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,OAAO,QAAQ,CAAC,SAAS,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;AAC/G,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;AAC1E,IAAI;AACJ,IAAI,MAAM,iBAAiB,GAAG,OAAO,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC;;AAEzD;AACA;AACA,IAAI,MAAM,sBAAsB,GAAG,UAAU,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACnF,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;AAC1E,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC;;AAE1E;AACA;AACA,IAAI,MAAM,KAAK,GAAG,UAAU;AAC5B,IAAI,MAAM,GAAG,GAAG,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,UAAU;AACjE,IAAI,MAAM,MAAM,GAAG,UAAU,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,iBAAiB;AACnF,IAAI,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC;;AAE5C;AACA;AACA;AACA;AACA,IAAI,MAAM,eAAe,GAAG,CAAC,cAAc,CAAC,KAAK,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;AACvN,IAAI,MAAM,eAAe,GAAG,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,GAAG,GAAG,CAAC;AAChG,IAAI,OAAO;AACX,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe;AAC5C,MAAM,IAAI,EAAE;AACZ,QAAQ,CAAC,IAAI,GAAG,MAAM;AACtB,QAAQ,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,eAAe;AACvD,QAAQ,IAAI,eAAe,IAAI;AAC/B,UAAU;AACV,SAAS;AACT,OAAO;AACP,MAAM,KAAK,EAAE;AACb,KAAK;AACL,EAAE;AACF,CAAC,CAAC;;AAyGF;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,MAAI,GAAG,UAAU,OAAO,EAAE;AAChC,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,EAAE;AAChB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE;AACpB,MAAM,IAAI,qBAAqB,EAAE,oBAAoB;AACrD,MAAM,MAAM;AACZ,QAAQ,SAAS;AACjB,QAAQ,cAAc;AACtB,QAAQ,KAAK;AACb,QAAQ,gBAAgB;AACxB,QAAQ,QAAQ;AAChB,QAAQ;AACR,OAAO,GAAG,KAAK;AACf,MAAM,MAAM;AACZ,QAAQ,QAAQ,EAAE,aAAa,GAAG,IAAI;AACtC,QAAQ,SAAS,EAAE,cAAc,GAAG,IAAI;AACxC,QAAQ,kBAAkB,EAAE,2BAA2B;AACvD,QAAQ,gBAAgB,GAAG,SAAS;AACpC,QAAQ,yBAAyB,GAAG,MAAM;AAC1C,QAAQ,aAAa,GAAG,IAAI;AAC5B,QAAQ,GAAG;AACX,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;;AAElC;AACA;AACA;AACA;AACA,MAAM,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC,KAAK,KAAK,IAAI,IAAI,qBAAqB,CAAC,eAAe,EAAE;AAC3G,QAAQ,OAAO,EAAE;AACjB,MAAM;AACN,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AACrC,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,gBAAgB,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,KAAK,gBAAgB;AAC5E,MAAM,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC7F,MAAM,MAAM,kBAAkB,GAAG,2BAA2B,KAAK,eAAe,IAAI,CAAC,aAAa,GAAG,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;AACxL,MAAM,MAAM,4BAA4B,GAAG,yBAAyB,KAAK,MAAM;AAC/E,MAAM,IAAI,CAAC,2BAA2B,IAAI,4BAA4B,EAAE;AACxE,QAAQ,kBAAkB,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,gBAAgB,EAAE,aAAa,EAAE,yBAAyB,EAAE,GAAG,CAAC,CAAC;AAC9H,MAAM;AACN,MAAM,MAAM,UAAU,GAAG,CAAC,gBAAgB,EAAE,GAAG,kBAAkB,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,qBAAqB,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,EAAE;AAC1B,MAAM,IAAI,aAAa,GAAG,CAAC,CAAC,oBAAoB,GAAG,cAAc,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,oBAAoB,CAAC,SAAS,KAAK,EAAE;AAChI,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtC,MAAM;AACN,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC;AAC9D,QAAQ,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,MAAM;AACN,MAAM,aAAa,GAAG,CAAC,GAAG,aAAa,EAAE;AACzC,QAAQ,SAAS;AACjB,QAAQ;AACR,OAAO,CAAC;;AAER;AACA,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE;AAC/C,QAAQ,IAAI,qBAAqB,EAAE,qBAAqB;AACxD,QAAQ,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,qBAAqB,GAAG,cAAc,CAAC,IAAI,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC;AACnI,QAAQ,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC;AACnD,QAAQ,IAAI,aAAa,EAAE;AAC3B,UAAU,MAAM,uBAAuB,GAAG,cAAc,KAAK,WAAW,GAAG,eAAe,KAAK,WAAW,CAAC,aAAa,CAAC,GAAG,KAAK;AACjI,UAAU,IAAI,CAAC,uBAAuB;AACtC;AACA;AACA,UAAU,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,eAAe,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;AAC9G;AACA,YAAY,OAAO;AACnB,cAAc,IAAI,EAAE;AACpB,gBAAgB,KAAK,EAAE,SAAS;AAChC,gBAAgB,SAAS,EAAE;AAC3B,eAAe;AACf,cAAc,KAAK,EAAE;AACrB,gBAAgB,SAAS,EAAE;AAC3B;AACA,aAAa;AACb,UAAU;AACV,QAAQ;;AAER;AACA;AACA,QAAQ,IAAI,cAAc,GAAG,CAAC,qBAAqB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,SAAS;;AAE3M;AACA,QAAQ,IAAI,CAAC,cAAc,EAAE;AAC7B,UAAU,QAAQ,gBAAgB;AAClC,YAAY,KAAK,SAAS;AAC1B,cAAc;AACd,gBAAgB,IAAI,sBAAsB;AAC1C,gBAAgB,MAAM,SAAS,GAAG,CAAC,sBAAsB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI;AACtF,kBAAkB,IAAI,4BAA4B,EAAE;AACpD,oBAAoB,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,oBAAoB,OAAO,eAAe,KAAK,eAAe;AAC9D;AACA;AACA,oBAAoB,eAAe,KAAK,GAAG;AAC3C,kBAAkB;AAClB,kBAAkB,OAAO,IAAI;AAC7B,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,sBAAsB,CAAC,CAAC,CAAC;AAClN,gBAAgB,IAAI,SAAS,EAAE;AAC/B,kBAAkB,cAAc,GAAG,SAAS;AAC5C,gBAAgB;AAChB,gBAAgB;AAChB,cAAc;AACd,YAAY,KAAK,kBAAkB;AACnC,cAAc,cAAc,GAAG,gBAAgB;AAC/C,cAAc;AACd;AACA,QAAQ;AACR,QAAQ,IAAI,SAAS,KAAK,cAAc,EAAE;AAC1C,UAAU,OAAO;AACjB,YAAY,KAAK,EAAE;AACnB,cAAc,SAAS,EAAE;AACzB;AACA,WAAW;AACX,QAAQ;AACR,MAAM;AACN,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,GAAG;AACH,CAAC;;AA2MD,MAAM,WAAW,gBAAgB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;;AAEzD;AACA;;AAEA,eAAe,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE;AACpD,EAAE,MAAM;AACR,IAAI,SAAS;AACb,IAAI,QAAQ;AACZ,IAAI;AACJ,GAAG,GAAG,KAAK;AACX,EAAE,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,KAAK,IAAI,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzF,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;AACjC,EAAE,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;AAC3C,EAAE,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,GAAG;AACnD,EAAE,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AACtD,EAAE,MAAM,cAAc,GAAG,GAAG,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC;AACnD,EAAE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;;AAE3C;AACA,EAAE,IAAI;AACN,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI;AACJ,GAAG,GAAG,OAAO,QAAQ,KAAK,QAAQ,GAAG;AACrC,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,SAAS,EAAE,CAAC;AAChB,IAAI,aAAa,EAAE;AACnB,GAAG,GAAG;AACN,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,CAAC;AACpC,IAAI,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,CAAC;AACtC,IAAI,aAAa,EAAE,QAAQ,CAAC;AAC5B,GAAG;AACH,EAAE,IAAI,SAAS,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;AACtD,IAAI,SAAS,GAAG,SAAS,KAAK,KAAK,GAAG,aAAa,GAAG,EAAE,GAAG,aAAa;AACxE,EAAE;AACF,EAAE,OAAO,UAAU,GAAG;AACtB,IAAI,CAAC,EAAE,SAAS,GAAG,cAAc;AACjC,IAAI,CAAC,EAAE,QAAQ,GAAG;AAClB,GAAG,GAAG;AACN,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa;AAC/B,IAAI,CAAC,EAAE,SAAS,GAAG;AACnB,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,QAAM,GAAG,UAAU,OAAO,EAAE;AAClC,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,CAAC;AACf,EAAE;AACF,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,QAAQ;AAClB,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE;AACpB,MAAM,IAAI,qBAAqB,EAAE,qBAAqB;AACtD,MAAM,MAAM;AACZ,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,QAAQ,SAAS;AACjB,QAAQ;AACR,OAAO,GAAG,KAAK;AACf,MAAM,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC;;AAEnE;AACA;AACA,MAAM,IAAI,SAAS,MAAM,CAAC,qBAAqB,GAAG,cAAc,CAAC,MAAM,KAAK,IAAI,GAAG,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,GAAG,cAAc,CAAC,KAAK,KAAK,IAAI,IAAI,qBAAqB,CAAC,eAAe,EAAE;AACjO,QAAQ,OAAO,EAAE;AACjB,MAAM;AACN,MAAM,OAAO;AACb,QAAQ,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;AAC3B,QAAQ,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;AAC3B,QAAQ,IAAI,EAAE;AACd,UAAU,GAAG,UAAU;AACvB,UAAU;AACV;AACA,OAAO;AACP,IAAI;AACJ,GAAG;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAMC,OAAK,GAAG,UAAU,OAAO,EAAE;AACjC,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,EAAE;AAChB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,OAAO;AACX,IAAI,MAAM,EAAE,CAAC,KAAK,EAAE;AACpB,MAAM,MAAM;AACZ,QAAQ,CAAC;AACT,QAAQ,CAAC;AACT,QAAQ,SAAS;AACjB,QAAQ;AACR,OAAO,GAAG,KAAK;AACf,MAAM,MAAM;AACZ,QAAQ,QAAQ,EAAE,aAAa,GAAG,IAAI;AACtC,QAAQ,SAAS,EAAE,cAAc,GAAG,KAAK;AACzC,QAAQ,OAAO,GAAG;AAClB,UAAU,EAAE,EAAE,IAAI,IAAI;AACtB,YAAY,IAAI;AAChB,cAAc,CAAC;AACf,cAAc;AACd,aAAa,GAAG,IAAI;AACpB,YAAY,OAAO;AACnB,cAAc,CAAC;AACf,cAAc;AACd,aAAa;AACb,UAAU;AACV,SAAS;AACT,QAAQ,GAAG;AACX,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;AAClC,MAAM,MAAM,MAAM,GAAG;AACrB,QAAQ,CAAC;AACT,QAAQ;AACR,OAAO;AACP,MAAM,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,qBAAqB,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC;AACjD,MAAM,IAAI,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAC1C,MAAM,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC;AAC5C,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,MAAM,OAAO,GAAG,QAAQ,KAAK,GAAG,GAAG,KAAK,GAAG,MAAM;AACzD,QAAQ,MAAM,OAAO,GAAG,QAAQ,KAAK,GAAG,GAAG,QAAQ,GAAG,OAAO;AAC7D,QAAQ,MAAM,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;AACrD,QAAQ,MAAM,GAAG,GAAG,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;AACrD,QAAQ,aAAa,GAAG,KAAK,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC;AACtD,MAAM;AACN,MAAM,IAAI,cAAc,EAAE;AAC1B,QAAQ,MAAM,OAAO,GAAG,SAAS,KAAK,GAAG,GAAG,KAAK,GAAG,MAAM;AAC1D,QAAQ,MAAM,OAAO,GAAG,SAAS,KAAK,GAAG,GAAG,QAAQ,GAAG,OAAO;AAC9D,QAAQ,MAAM,GAAG,GAAG,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;AACtD,QAAQ,MAAM,GAAG,GAAG,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;AACtD,QAAQ,cAAc,GAAG,KAAK,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,CAAC;AACxD,MAAM;AACN,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,EAAE,CAAC;AACvC,QAAQ,GAAG,KAAK;AAChB,QAAQ,CAAC,QAAQ,GAAG,aAAa;AACjC,QAAQ,CAAC,SAAS,GAAG;AACrB,OAAO,CAAC;AACR,MAAM,OAAO;AACb,QAAQ,GAAG,aAAa;AACxB,QAAQ,IAAI,EAAE;AACd,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC;AAChC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC;AAChC,UAAU,OAAO,EAAE;AACnB,YAAY,CAAC,QAAQ,GAAG,aAAa;AACrC,YAAY,CAAC,SAAS,GAAG;AACzB;AACA;AACA,OAAO;AACP,IAAI;AACJ,GAAG;AACH,CAAC;;ACv4BD,SAAS,SAAS,GAAG;AACrB,EAAE,OAAO,OAAO,MAAM,KAAK,WAAW;AACtC;AACA,SAAS,WAAW,CAAC,IAAI,EAAE;AAC3B,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE;AACpB,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,WAAW,EAAE;AAC9C,EAAE;AACF;AACA;AACA;AACA,EAAE,OAAO,WAAW;AACpB;AACA,SAAS,SAAS,CAAC,IAAI,EAAE;AACzB,EAAE,IAAI,mBAAmB;AACzB,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,MAAM,GAAG,mBAAmB,CAAC,WAAW,KAAK,MAAM;AAClI;AACA,SAAS,kBAAkB,CAAC,IAAI,EAAE;AAClC,EAAE,IAAI,IAAI;AACV,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,KAAK,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,eAAe;AAChI;AACA,SAAS,MAAM,CAAC,KAAK,EAAE;AACvB,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI;AACxE;AACA,SAAS,SAAS,CAAC,KAAK,EAAE;AAC1B,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,KAAK,YAAY,OAAO,IAAI,KAAK,YAAY,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO;AAC9E;AACA,SAAS,aAAa,CAAC,KAAK,EAAE;AAC9B,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE;AACpB,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW;AACtF;AACA,SAAS,YAAY,CAAC,KAAK,EAAE;AAC7B,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;AACzD,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,SAAS,CAAC,KAAK,CAAC,CAAC,UAAU;AACpF;AACA,SAAS,iBAAiB,CAAC,OAAO,EAAE;AACpC,EAAE,MAAM;AACR,IAAI,QAAQ;AACZ,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI;AACJ,GAAG,GAAG9W,kBAAgB,CAAC,OAAO,CAAC;AAC/B,EAAE,OAAO,iCAAiC,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,UAAU;AACnI;AACA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,EAAE,OAAO,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACrD;AACA,SAAS,UAAU,CAAC,OAAO,EAAE;AAC7B,EAAE,IAAI;AACN,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;AAC1C,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;AACf;AACA,EAAE;AACF,EAAE,IAAI;AACN,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;AACpC,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;AACf,IAAI,OAAO,KAAK;AAChB,EAAE;AACF;AACA,MAAM,YAAY,GAAG,qDAAqD;AAC1E,MAAM,SAAS,GAAG,6BAA6B;AAC/C,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;AACtD,IAAI,aAAa;AACjB,SAAS,iBAAiB,CAAC,YAAY,EAAE;AACzC,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,YAAY,CAAC,GAAGA,kBAAgB,CAAC,YAAY,CAAC,GAAG,YAAY;;AAErF;AACA;AACA,EAAE,OAAO,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;AACvS;AACA,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,IAAI,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,EAAE,OAAO,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE;AAC5E,IAAI,IAAI,iBAAiB,CAAC,WAAW,CAAC,EAAE;AACxC,MAAM,OAAO,WAAW;AACxB,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE;AACxC,MAAM,OAAO,IAAI;AACjB,IAAI;AACJ,IAAI,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;AAC5C,EAAE;AACF,EAAE,OAAO,IAAI;AACb;AACA,SAAS,QAAQ,GAAG;AACpB,EAAE,IAAI,aAAa,IAAI,IAAI,EAAE;AAC7B,IAAI,aAAa,GAAG,OAAO,GAAG,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;AACjH,EAAE;AACF,EAAE,OAAO,aAAa;AACtB;AACA,SAAS,qBAAqB,CAAC,IAAI,EAAE;AACrC,EAAE,OAAO,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1D;AACA,SAASA,kBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC;AACrD;AACA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;AAC1B,IAAI,OAAO;AACX,MAAM,UAAU,EAAE,OAAO,CAAC,UAAU;AACpC,MAAM,SAAS,EAAE,OAAO,CAAC;AACzB,KAAK;AACL,EAAE;AACF,EAAE,OAAO;AACT,IAAI,UAAU,EAAE,OAAO,CAAC,OAAO;AAC/B,IAAI,SAAS,EAAE,OAAO,CAAC;AACvB,GAAG;AACH;AACA,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,MAAM,EAAE;AACpC,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,MAAM,MAAM;AACd;AACA,EAAE,IAAI,CAAC,YAAY;AACnB;AACA,EAAE,IAAI,CAAC,UAAU;AACjB;AACA,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;AACjC;AACA,EAAE,kBAAkB,CAAC,IAAI,CAAC;AAC1B,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM;AACpD;AACA,SAAS,0BAA0B,CAAC,IAAI,EAAE;AAC1C,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC;AACxC,EAAE,IAAI,qBAAqB,CAAC,UAAU,CAAC,EAAE;AACzC,IAAI,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACnE,EAAE;AACF,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;AAClE,IAAI,OAAO,UAAU;AACrB,EAAE;AACF,EAAE,OAAO,0BAA0B,CAAC,UAAU,CAAC;AAC/C;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;AAC3D,EAAE,IAAI,oBAAoB;AAC1B,EAAE,IAAI,IAAI,KAAK,MAAM,EAAE;AACvB,IAAI,IAAI,GAAG,EAAE;AACb,EAAE;AACF,EAAE,IAAI,eAAe,KAAK,MAAM,EAAE;AAClC,IAAI,eAAe,GAAG,IAAI;AAC1B,EAAE;AACF,EAAE,MAAM,kBAAkB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AAC7D,EAAE,MAAM,MAAM,GAAG,kBAAkB,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAClI,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC;AAC3C,EAAE,IAAI,MAAM,EAAE;AACd,IAAI,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC;AAC7C,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,GAAG,EAAE,EAAE,YAAY,IAAI,eAAe,GAAG,oBAAoB,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;AACjM,EAAE,CAAC,MAAM;AACT,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,kBAAkB,EAAE,EAAE,EAAE,eAAe,CAAC,CAAC;AACzG,EAAE;AACF;AACA,SAAS,eAAe,CAAC,GAAG,EAAE;AAC9B,EAAE,OAAO,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,GAAG,IAAI;AAClF;;AC7JA,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,GAAG,GAAG,kBAAkB,CAAC,OAAO,CAAC;AACzC;AACA;AACA,EAAE,IAAI,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;AACxC,EAAE,IAAI,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1C,EAAE,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,EAAE,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK;AAC7D,EAAE,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM;AAChE,EAAE,MAAM,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,YAAY;AACvF,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,KAAK,GAAG,WAAW;AACvB,IAAI,MAAM,GAAG,YAAY;AACzB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC,EAAE;AACP,GAAG;AACH;;AAEA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO;AAC/D;;AAEA,SAAS,QAAQ,CAAC,OAAO,EAAE;AAC3B,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;AAC3C,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;AAClC,IAAI,OAAO,YAAY,CAAC,CAAC,CAAC;AAC1B,EAAE;AACF,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE;AACjD,EAAE,MAAM;AACR,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI;AACJ,GAAG,GAAG,gBAAgB,CAAC,UAAU,CAAC;AAClC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK;AACtD,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM;;AAEzD;;AAEA,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACjC,IAAI,CAAC,GAAG,CAAC;AACT,EAAE;AACF,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;AACjC,IAAI,CAAC,GAAG,CAAC;AACT,EAAE;AACF,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AAEA,MAAM,SAAS,gBAAgB,YAAY,CAAC,CAAC,CAAC;AAC9C,SAAS,gBAAgB,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;AAChC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE;AAC1C,IAAI,OAAO,SAAS;AACpB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,UAAU;AACpC,IAAI,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC;AAC1B,GAAG;AACH;AACA,SAAS,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE;AACxE,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,KAAK;AACnB,EAAE;AACF,EAAE,IAAI,CAAC,oBAAoB,IAAI,OAAO,IAAI,oBAAoB,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE;AACvF,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,OAAO;AAChB;;AAEA,SAAS,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE;AACrF,EAAE,IAAI,YAAY,KAAK,MAAM,EAAE;AAC/B,IAAI,YAAY,GAAG,KAAK;AACxB,EAAE;AACF,EAAE,IAAI,eAAe,KAAK,MAAM,EAAE;AAClC,IAAI,eAAe,GAAG,KAAK;AAC3B,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,EAAE;AACpD,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;AAC3C,EAAE,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;AAC7B,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,IAAI,YAAY,EAAE;AACtB,MAAM,IAAI,SAAS,CAAC,YAAY,CAAC,EAAE;AACnC,QAAQ,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;AACtC,MAAM;AACN,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC/B,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,aAAa,GAAG,sBAAsB,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,CAAC,GAAG,gBAAgB,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAC1I,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AACvD,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;AACtD,EAAE,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACxC,EAAE,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AAC1C,EAAE,IAAI,UAAU,EAAE;AAClB,IAAI,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,CAAC;AACrC,IAAI,MAAM,SAAS,GAAG,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,GAAG,YAAY;AACtG,IAAI,IAAI,UAAU,GAAG,GAAG;AACxB,IAAI,IAAI,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC;AACnD,IAAI,OAAO,aAAa,IAAI,YAAY,IAAI,SAAS,KAAK,UAAU,EAAE;AACtE,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC;AACjD,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC,qBAAqB,EAAE;AAC9D,MAAM,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,CAAC;AACnD,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,CAAC;AAC7G,MAAM,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,WAAW,CAAC,CAAC;AACzG,MAAM,CAAC,IAAI,WAAW,CAAC,CAAC;AACxB,MAAM,CAAC,IAAI,WAAW,CAAC,CAAC;AACxB,MAAM,KAAK,IAAI,WAAW,CAAC,CAAC;AAC5B,MAAM,MAAM,IAAI,WAAW,CAAC,CAAC;AAC7B,MAAM,CAAC,IAAI,IAAI;AACf,MAAM,CAAC,IAAI,GAAG;AACd,MAAM,UAAU,GAAG,SAAS,CAAC,aAAa,CAAC;AAC3C,MAAM,aAAa,GAAG,eAAe,CAAC,UAAU,CAAC;AACjD,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,gBAAgB,CAAC;AAC1B,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC;AACL,IAAI;AACJ,GAAG,CAAC;AACJ;;AAEA;AACA;AACA,SAAS,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE;AAC5C,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,UAAU;AACtD,EAAE,IAAI,CAAC,IAAI,EAAE;AACb,IAAI,OAAO,qBAAqB,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU;AAC/E,EAAE;AACF,EAAE,OAAO,IAAI,CAAC,IAAI,GAAG,UAAU;AAC/B;;AAEA,SAAS,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE;AAChD,EAAE,MAAM,QAAQ,GAAG,eAAe,CAAC,qBAAqB,EAAE;AAC1D,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC;AAC9F,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS;AAC3C,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AAEA,SAAS,qDAAqD,CAAC,IAAI,EAAE;AACrE,EAAE,IAAI;AACN,IAAI,QAAQ;AACZ,IAAI,IAAI;AACR,IAAI,YAAY;AAChB,IAAI;AACJ,GAAG,GAAG,IAAI;AACV,EAAE,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO;AACtC,EAAE,MAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC;AAC1D,EAAE,MAAM,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,KAAK;AACnE,EAAE,IAAI,YAAY,KAAK,eAAe,IAAI,QAAQ,IAAI,OAAO,EAAE;AAC/D,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,UAAU,EAAE,CAAC;AACjB,IAAI,SAAS,EAAE;AACf,GAAG;AACH,EAAE,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC;AAC7B,EAAE,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;AACjC,EAAE,MAAM,uBAAuB,GAAG,aAAa,CAAC,YAAY,CAAC;AAC7D,EAAE,IAAI,uBAAuB,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,EAAE;AACvE,IAAI,IAAI,WAAW,CAAC,YAAY,CAAC,KAAK,MAAM,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE;AACpF,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAI,uBAAuB,EAAE;AACjC,MAAM,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,CAAC;AAC5D,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC;AACpC,MAAM,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU;AACxD,MAAM,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS;AACvD,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,eAAe,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AACvI,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AAC/B,IAAI,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;AACjC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAChF,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC;AAC9E,GAAG;AACH;;AAEA,SAAS,cAAc,CAAC,OAAO,EAAE;AACjC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AAC7C;;AAEA;AACA;AACA,SAAS,eAAe,CAAC,OAAO,EAAE;AAClC,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAC1C,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;AACvC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI;AACzC,EAAE,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;AAC3F,EAAE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC;AAChG,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAC3D,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS;AAC7B,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,EAAE;AACpD,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK;AACxD,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AAEA;AACA;AACA;AACA,MAAM,aAAa,GAAG,EAAE;AACxB,SAAS,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC5C,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;AAChC,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAC1C,EAAE,MAAM,cAAc,GAAG,GAAG,CAAC,cAAc;AAC3C,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW;AAC9B,EAAE,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY;AAChC,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,KAAK,GAAG,cAAc,CAAC,KAAK;AAChC,IAAI,MAAM,GAAG,cAAc,CAAC,MAAM;AAClC,IAAI,MAAM,mBAAmB,GAAG,QAAQ,EAAE;AAC1C,IAAI,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,IAAI,QAAQ,KAAK,OAAO,EAAE;AAC7E,MAAM,CAAC,GAAG,cAAc,CAAC,UAAU;AACnC,MAAM,CAAC,GAAG,cAAc,CAAC,SAAS;AAClC,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC;AACpD;AACA;AACA;AACA,EAAE,IAAI,gBAAgB,IAAI,CAAC,EAAE;AAC7B,IAAI,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa;AAClC,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI;AACzB,IAAI,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAC7C,IAAI,MAAM,gBAAgB,GAAG,GAAG,CAAC,UAAU,KAAK,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC9I,IAAI,MAAM,4BAA4B,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC;AACzG,IAAI,IAAI,4BAA4B,IAAI,aAAa,EAAE;AACvD,MAAM,KAAK,IAAI,4BAA4B;AAC3C,IAAI;AACJ,EAAE,CAAC,MAAM,IAAI,gBAAgB,IAAI,aAAa,EAAE;AAChD;AACA;AACA,IAAI,KAAK,IAAI,gBAAgB;AAC7B,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;;AAEA;AACA,SAAS,0BAA0B,CAAC,OAAO,EAAE,QAAQ,EAAE;AACvD,EAAE,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC;AAC/E,EAAE,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS;AAChD,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,UAAU;AACnD,EAAE,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AAC5E,EAAE,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;AAC7C,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;AAC/C,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AAC1B,EAAE,MAAM,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;AACzB,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI,MAAM;AACV,IAAI,CAAC;AACL,IAAI;AACJ,GAAG;AACH;AACA,SAAS,iCAAiC,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE;AAChF,EAAE,IAAI,IAAI;AACV,EAAE,IAAI,gBAAgB,KAAK,UAAU,EAAE;AACvC,IAAI,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC7C,EAAE,CAAC,MAAM,IAAI,gBAAgB,KAAK,UAAU,EAAE;AAC9C,IAAI,IAAI,GAAG,eAAe,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACvD,EAAE,CAAC,MAAM,IAAI,SAAS,CAAC,gBAAgB,CAAC,EAAE;AAC1C,IAAI,IAAI,GAAG,0BAA0B,CAAC,gBAAgB,EAAE,QAAQ,CAAC;AACjE,EAAE,CAAC,MAAM;AACT,IAAI,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC;AACnD,IAAI,IAAI,GAAG;AACX,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;AAC7C,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;AAC7C,MAAM,KAAK,EAAE,gBAAgB,CAAC,KAAK;AACnC,MAAM,MAAM,EAAE,gBAAgB,CAAC;AAC/B,KAAK;AACL,EAAE;AACF,EAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC;AAC/B;AACA,SAAS,wBAAwB,CAAC,OAAO,EAAE,QAAQ,EAAE;AACrD,EAAE,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC;AAC3C,EAAE,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,qBAAqB,CAAC,UAAU,CAAC,EAAE;AAC9F,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,OAAO,kBAAkB,CAAC,UAAU,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,wBAAwB,CAAC,UAAU,EAAE,QAAQ,CAAC;AAC9G;;AAEA;AACA;AACA;AACA,SAAS,2BAA2B,CAAC,OAAO,EAAE,KAAK,EAAE;AACrD,EAAE,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;AACzC,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,OAAO,YAAY;AACvB,EAAE;AACF,EAAE,IAAI,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC;AACjH,EAAE,IAAI,mCAAmC,GAAG,IAAI;AAChD,EAAE,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO;AACzE,EAAE,IAAI,WAAW,GAAG,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO;;AAErE;AACA,EAAE,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE;AACxE,IAAI,MAAM,aAAa,GAAG,kBAAkB,CAAC,WAAW,CAAC;AACzD,IAAI,MAAM,uBAAuB,GAAG,iBAAiB,CAAC,WAAW,CAAC;AAClE,IAAI,IAAI,CAAC,uBAAuB,IAAI,aAAa,CAAC,QAAQ,KAAK,OAAO,EAAE;AACxE,MAAM,mCAAmC,GAAG,IAAI;AAChD,IAAI;AACJ,IAAI,MAAM,qBAAqB,GAAG,cAAc,GAAG,CAAC,uBAAuB,IAAI,CAAC,mCAAmC,GAAG,CAAC,uBAAuB,IAAI,aAAa,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,mCAAmC,KAAK,mCAAmC,CAAC,QAAQ,KAAK,UAAU,IAAI,mCAAmC,CAAC,QAAQ,KAAK,OAAO,CAAC,IAAI,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,IAAI,wBAAwB,CAAC,OAAO,EAAE,WAAW,CAAC;AAC3c,IAAI,IAAI,qBAAqB,EAAE;AAC/B;AACA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,KAAK,WAAW,CAAC;AAClE,IAAI,CAAC,MAAM;AACX;AACA,MAAM,mCAAmC,GAAG,aAAa;AACzD,IAAI;AACJ,IAAI,WAAW,GAAG,aAAa,CAAC,WAAW,CAAC;AAC5C,EAAE;AACF,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;AAC5B,EAAE,OAAO,MAAM;AACf;;AAEA;AACA;AACA,SAAS,eAAe,CAAC,IAAI,EAAE;AAC/B,EAAE,IAAI;AACN,IAAI,OAAO;AACX,IAAI,QAAQ;AACZ,IAAI,YAAY;AAChB,IAAI;AACJ,GAAG,GAAG,IAAI;AACV,EAAE,MAAM,wBAAwB,GAAG,QAAQ,KAAK,mBAAmB,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;AACpK,EAAE,MAAM,iBAAiB,GAAG,CAAC,GAAG,wBAAwB,EAAE,YAAY,CAAC;AACvE,EAAE,MAAM,SAAS,GAAG,iCAAiC,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC9F,EAAE,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG;AACzB,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK;AAC7B,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM;AAC/B,EAAE,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI;AAC3B,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,IAAI,MAAM,IAAI,GAAG,iCAAiC,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC3F,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;AAC5B,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC;AAClC,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC;AACrC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AAC/B,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK,EAAE,KAAK,GAAG,IAAI;AACvB,IAAI,MAAM,EAAE,MAAM,GAAG,GAAG;AACxB,IAAI,CAAC,EAAE,IAAI;AACX,IAAI,CAAC,EAAE;AACP,GAAG;AACH;;AAEA,SAAS,aAAa,CAAC,OAAO,EAAE;AAChC,EAAE,MAAM;AACR,IAAI,KAAK;AACT,IAAI;AACJ,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC;AAC/B,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI;AACJ,GAAG;AACH;;AAEA,SAAS,6BAA6B,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE;AACxE,EAAE,MAAM,uBAAuB,GAAG,aAAa,CAAC,YAAY,CAAC;AAC7D,EAAE,MAAM,eAAe,GAAG,kBAAkB,CAAC,YAAY,CAAC;AAC1D,EAAE,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO;AACtC,EAAE,MAAM,IAAI,GAAG,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;AAC1E,EAAE,IAAI,MAAM,GAAG;AACf,IAAI,UAAU,EAAE,CAAC;AACjB,IAAI,SAAS,EAAE;AACf,GAAG;AACH,EAAE,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC;;AAEjC;AACA;AACA,EAAE,SAAS,yBAAyB,GAAG;AACvC,IAAI,OAAO,CAAC,CAAC,GAAG,mBAAmB,CAAC,eAAe,CAAC;AACpD,EAAE;AACF,EAAE,IAAI,uBAAuB,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,EAAE;AACvE,IAAI,IAAI,WAAW,CAAC,YAAY,CAAC,KAAK,MAAM,IAAI,iBAAiB,CAAC,eAAe,CAAC,EAAE;AACpF,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;AAC1C,IAAI;AACJ,IAAI,IAAI,uBAAuB,EAAE;AACjC,MAAM,MAAM,UAAU,GAAG,qBAAqB,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC;AACzF,MAAM,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU;AACxD,MAAM,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS;AACvD,IAAI,CAAC,MAAM,IAAI,eAAe,EAAE;AAChC,MAAM,yBAAyB,EAAE;AACjC,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,OAAO,IAAI,CAAC,uBAAuB,IAAI,eAAe,EAAE;AAC9D,IAAI,yBAAyB,EAAE;AAC/B,EAAE;AACF,EAAE,MAAM,UAAU,GAAG,eAAe,IAAI,CAAC,uBAAuB,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;AACvI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AACpE,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAClE,EAAE,OAAO;AACT,IAAI,CAAC;AACL,IAAI,CAAC;AACL,IAAI,KAAK,EAAE,IAAI,CAAC,KAAK;AACrB,IAAI,MAAM,EAAE,IAAI,CAAC;AACjB,GAAG;AACH;;AAEA,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ;AAC1D;;AAEA,SAAS,mBAAmB,CAAC,OAAO,EAAE,QAAQ,EAAE;AAChD,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE;AACnF,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC5B,EAAE;AACF,EAAE,IAAI,eAAe,GAAG,OAAO,CAAC,YAAY;;AAE5C;AACA;AACA;AACA;AACA,EAAE,IAAI,kBAAkB,CAAC,OAAO,CAAC,KAAK,eAAe,EAAE;AACvD,IAAI,eAAe,GAAG,eAAe,CAAC,aAAa,CAAC,IAAI;AACxD,EAAE;AACF,EAAE,OAAO,eAAe;AACxB;;AAEA;AACA;AACA,SAAS,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE;AAC5C,EAAE,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;AAChC,EAAE,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE;AAC3B,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;AAC/B,IAAI,IAAI,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC;AAChD,IAAI,OAAO,eAAe,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,EAAE;AACvE,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE;AAC9E,QAAQ,OAAO,eAAe;AAC9B,MAAM;AACN,MAAM,eAAe,GAAG,aAAa,CAAC,eAAe,CAAC;AACtD,IAAI;AACJ,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,IAAI,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC;AAC3D,EAAE,OAAO,YAAY,IAAI,cAAc,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,EAAE;AAC3F,IAAI,YAAY,GAAG,mBAAmB,CAAC,YAAY,EAAE,QAAQ,CAAC;AAC9D,EAAE;AACF,EAAE,IAAI,YAAY,IAAI,qBAAqB,CAAC,YAAY,CAAC,IAAI,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE;AACnI,IAAI,OAAO,GAAG;AACd,EAAE;AACF,EAAE,OAAO,YAAY,IAAI,kBAAkB,CAAC,OAAO,CAAC,IAAI,GAAG;AAC3D;;AAEA,MAAM,eAAe,GAAG,gBAAgB,IAAI,EAAE;AAC9C,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,IAAI,eAAe;AACnE,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa;AAC5C,EAAE,MAAM,kBAAkB,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjE,EAAE,OAAO;AACT,IAAI,SAAS,EAAE,6BAA6B,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;AACnH,IAAI,QAAQ,EAAE;AACd,MAAM,CAAC,EAAE,CAAC;AACV,MAAM,CAAC,EAAE,CAAC;AACV,MAAM,KAAK,EAAE,kBAAkB,CAAC,KAAK;AACrC,MAAM,MAAM,EAAE,kBAAkB,CAAC;AACjC;AACA,GAAG;AACH,CAAC;;AAED,SAAS,KAAK,CAAC,OAAO,EAAE;AACxB,EAAE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC,SAAS,KAAK,KAAK;AACxD;;AAEA,MAAM,QAAQ,GAAG;AACjB,EAAE,qDAAqD;AACvD,EAAE,kBAAkB;AACpB,EAAE,eAAe;AACjB,EAAE,eAAe;AACjB,EAAE,eAAe;AACjB,EAAE,cAAc;AAChB,EAAE,aAAa;AACf,EAAE,QAAQ;AACV,EAAE,SAAS;AACX,EAAE;AACF,CAAC;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;AAC7B,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AACnF;;AAEA;AACA,SAAS,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AACtC,EAAE,IAAI,EAAE,GAAG,IAAI;AACf,EAAE,IAAI,SAAS;AACf,EAAE,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC;AAC1C,EAAE,SAAS,OAAO,GAAG;AACrB,IAAI,IAAI,GAAG;AACX,IAAI,YAAY,CAAC,SAAS,CAAC;AAC3B,IAAI,CAAC,GAAG,GAAG,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE;AAC1C,IAAI,EAAE,GAAG,IAAI;AACb,EAAE;AACF,EAAE,SAAS,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE;AACpC,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AACzB,MAAM,IAAI,GAAG,KAAK;AAClB,IAAI;AACJ,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE;AAC9B,MAAM,SAAS,GAAG,CAAC;AACnB,IAAI;AACJ,IAAI,OAAO,EAAE;AACb,IAAI,MAAM,wBAAwB,GAAG,OAAO,CAAC,qBAAqB,EAAE;AACpE,IAAI,MAAM;AACV,MAAM,IAAI;AACV,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM;AACN,KAAK,GAAG,wBAAwB;AAChC,IAAI,IAAI,CAAC,IAAI,EAAE;AACf,MAAM,MAAM,EAAE;AACd,IAAI;AACJ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AAC3B,MAAM;AACN,IAAI;AACJ,IAAI,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;AAC/B,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC;AAC/D,IAAI,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC;AACjE,IAAI,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AACjC,IAAI,MAAM,UAAU,GAAG,CAAC,QAAQ,GAAG,KAAK,GAAG,CAAC,UAAU,GAAG,KAAK,GAAG,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,SAAS,GAAG,IAAI;AACzG,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,UAAU;AAChB,MAAM,SAAS,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI;AAC9C,KAAK;AACL,IAAI,IAAI,aAAa,GAAG,IAAI;AAC5B,IAAI,SAAS,aAAa,CAAC,OAAO,EAAE;AACpC,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB;AAChD,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;AAC/B,QAAQ,IAAI,CAAC,aAAa,EAAE;AAC5B,UAAU,OAAO,OAAO,EAAE;AAC1B,QAAQ;AACR,QAAQ,IAAI,CAAC,KAAK,EAAE;AACpB;AACA;AACA,UAAU,SAAS,GAAG,UAAU,CAAC,MAAM;AACvC,YAAY,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;AAChC,UAAU,CAAC,EAAE,IAAI,CAAC;AAClB,QAAQ,CAAC,MAAM;AACf,UAAU,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;AAC/B,QAAQ;AACR,MAAM;AACN,MAAM,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE,OAAO,CAAC,qBAAqB,EAAE,CAAC,EAAE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,OAAO,EAAE;AACjB,MAAM;AACN,MAAM,aAAa,GAAG,KAAK;AAC3B,IAAI;;AAEJ;AACA;AACA,IAAI,IAAI;AACR,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,aAAa,EAAE;AACnD,QAAQ,GAAG,OAAO;AAClB;AACA,QAAQ,IAAI,EAAE,IAAI,CAAC;AACnB,OAAO,CAAC;AACR,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;AACjB,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC;AAC3D,IAAI;AACJ,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;AACvB,EAAE;AACF,EAAE,OAAO,CAAC,IAAI,CAAC;AACf,EAAE,OAAO,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;AAC1D,EAAE,IAAI,OAAO,KAAK,MAAM,EAAE;AAC1B,IAAI,OAAO,GAAG,EAAE;AAChB,EAAE;AACF,EAAE,MAAM;AACR,IAAI,cAAc,GAAG,IAAI;AACzB,IAAI,cAAc,GAAG,IAAI;AACzB,IAAI,aAAa,GAAG,OAAO,cAAc,KAAK,UAAU;AACxD,IAAI,WAAW,GAAG,OAAO,oBAAoB,KAAK,UAAU;AAC5D,IAAI,cAAc,GAAG;AACrB,GAAG,GAAG,OAAO;AACb,EAAE,MAAM,WAAW,GAAG,aAAa,CAAC,SAAS,CAAC;AAC9C,EAAE,MAAM,SAAS,GAAG,cAAc,IAAI,cAAc,GAAG,CAAC,IAAI,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE;AAC5K,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI;AAChC,IAAI,cAAc,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE;AAClE,MAAM,OAAO,EAAE;AACf,KAAK,CAAC;AACN,IAAI,cAAc,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC;AACjE,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,SAAS,GAAG,WAAW,IAAI,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,IAAI;AACxF,EAAE,IAAI,cAAc,GAAG,EAAE;AACzB,EAAE,IAAI,cAAc,GAAG,IAAI;AAC3B,EAAE,IAAI,aAAa,EAAE;AACrB,IAAI,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,IAAI;AAChD,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI;AAC7B,MAAM,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,IAAI,cAAc,IAAI,QAAQ,EAAE;AACzF;AACA;AACA,QAAQ,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC;AAC1C,QAAQ,oBAAoB,CAAC,cAAc,CAAC;AAC5C,QAAQ,cAAc,GAAG,qBAAqB,CAAC,MAAM;AACrD,UAAU,IAAI,eAAe;AAC7B,UAAU,CAAC,eAAe,GAAG,cAAc,KAAK,IAAI,IAAI,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC;AACzF,QAAQ,CAAC,CAAC;AACV,MAAM;AACN,MAAM,MAAM,EAAE;AACd,IAAI,CAAC,CAAC;AACN,IAAI,IAAI,WAAW,IAAI,CAAC,cAAc,EAAE;AACxC,MAAM,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC;AACzC,IAAI;AACJ,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC;AACtC,IAAI;AACJ,EAAE;AACF,EAAE,IAAI,OAAO;AACb,EAAE,IAAI,WAAW,GAAG,cAAc,GAAG,qBAAqB,CAAC,SAAS,CAAC,GAAG,IAAI;AAC5E,EAAE,IAAI,cAAc,EAAE;AACtB,IAAI,SAAS,EAAE;AACf,EAAE;AACF,EAAE,SAAS,SAAS,GAAG;AACvB,IAAI,MAAM,WAAW,GAAG,qBAAqB,CAAC,SAAS,CAAC;AACxD,IAAI,IAAI,WAAW,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE;AACjE,MAAM,MAAM,EAAE;AACd,IAAI;AACJ,IAAI,WAAW,GAAG,WAAW;AAC7B,IAAI,OAAO,GAAG,qBAAqB,CAAC,SAAS,CAAC;AAC9C,EAAE;AACF,EAAE,MAAM,EAAE;AACV,EAAE,OAAO,MAAM;AACf,IAAI,IAAI,gBAAgB;AACxB,IAAI,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAI;AAClC,MAAM,cAAc,IAAI,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtE,MAAM,cAAc,IAAI,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC;AACtE,IAAI,CAAC,CAAC;AACN,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,EAAE;AACpC,IAAI,CAAC,gBAAgB,GAAG,cAAc,KAAK,IAAI,IAAI,gBAAgB,CAAC,UAAU,EAAE;AAChF,IAAI,cAAc,GAAG,IAAI;AACzB,IAAI,IAAI,cAAc,EAAE;AACxB,MAAM,oBAAoB,CAAC,OAAO,CAAC;AACnC,IAAI;AACJ,EAAE,CAAC;AACH;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,GAAG,QAAQ;;AAUvB;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,GAAG,OAAO;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,IAAI,GAAG,MAAM;;AAiBnB;AACA;AACA;AACA;AACA;AACA,MAAM,KAAK,GAAG,OAAO;;AAcrB;AACA;AACA;AACA;AACA,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,KAAK;AAC1D;AACA;AACA;AACA,EAAE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE;AACzB,EAAE,MAAM,aAAa,GAAG;AACxB,IAAI,QAAQ;AACZ,IAAI,GAAG;AACP,GAAG;AACH,EAAE,MAAM,iBAAiB,GAAG;AAC5B,IAAI,GAAG,aAAa,CAAC,QAAQ;AAC7B,IAAI,EAAE,EAAE;AACR,GAAG;AACH,EAAE,OAAO,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE;AAChD,IAAI,GAAG,aAAa;AACpB,IAAI,QAAQ,EAAE;AACd,GAAG,CAAC;AACJ,CAAC;;AC1wBD;AACA;AACA;AACA;AACA;AACA;;;AAIA;AACA;AACA;AACO,MAAM+W,WAAW,GAAG;AACzBC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,EAAE,EAAE,GAAG;AACPC,EAAAA,EAAE,EAAE,IAAI;AACRC,EAAAA,EAAE,EAAE,IAAI;AACR,EAAA,KAAK,EAAE;AACT,CAAC;;AAeD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,wBAAwB,GAAGA,CAACC,eAAe,EAAEC,gBAAgB,GAAG,QAAQ,KAAK;AACxF;EACA,IAAI,CAACD,eAAe,IAAI,CAACA,eAAe,CAACxb,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtD,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACA,EAAA,MAAM0b,KAAK,GAAGF,eAAe,CAACjX,KAAK,CAAC,KAAK,CAAC;AAC1C,EAAA,MAAMoX,UAAU,GAAG;AAAEC,IAAAA,EAAE,EAAEH;AAAiB,GAAC,CAAA;;AAE3C,EAAA,KAAK,MAAMI,IAAI,IAAIH,KAAK,EAAE;AACxB,IAAA,IAAIG,IAAI,CAAC7b,QAAQ,CAAC,GAAG,CAAC,EAAE;AACtB;MACA,MAAM,CAAC8b,UAAU,EAAEC,SAAS,CAAC,GAAGF,IAAI,CAACtX,KAAK,CAAC,GAAG,CAAC;AAC/C,MAAA,IAAI2W,WAAW,CAACY,UAAU,CAAC,KAAKvY,SAAS,EAAE;AACzCoY,QAAAA,UAAU,CAACG,UAAU,CAAC,GAAGC,SAAS;AACpC,MAAA;AACF,IAAA,CAAC,MAAM;AACL;MACAJ,UAAU,CAACC,EAAE,GAAGC,IAAI;AACtB,IAAA;AACF,EAAA;AAEA,EAAA,OAAOF,UAAU;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,sBAAsB,GAAGA,CAACC,oBAAoB,EAAER,gBAAgB,GAAG,QAAQ,KAAK;EAC3F,IAAI,CAACQ,oBAAoB,EAAE;AACzB,IAAA,OAAOR,gBAAgB;AACzB,EAAA;;AAEA;AACA,EAAA,MAAMS,aAAa,GAAGlZ,MAAM,CAACmZ,UAAU;;AAEvC;AACA,EAAA,IAAIC,eAAe,GAAGH,oBAAoB,CAACL,EAAE,IAAIH,gBAAgB;;AAEjE;AACA,EAAA,MAAMY,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;AAEvD,EAAA,KAAK,MAAMP,UAAU,IAAIO,eAAe,EAAE;AACxC,IAAA,MAAMC,QAAQ,GAAGpB,WAAW,CAACY,UAAU,CAAC;IACxC,IAAII,aAAa,IAAII,QAAQ,IAAIL,oBAAoB,CAACH,UAAU,CAAC,EAAE;AACjEM,MAAAA,eAAe,GAAGH,oBAAoB,CAACH,UAAU,CAAC;AACpD,IAAA;AACF,EAAA;AAEA,EAAA,OAAOM,eAAe;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,yBAAyB,GAAG9V,QAAQ,IAAI;EACnD,MAAM+V,SAAS,GAAG,EAAE;EAEpB,KAAK,MAAMV,UAAU,IAAIvd,MAAM,CAAC1C,IAAI,CAACqf,WAAW,CAAC,EAAE;AACjD,IAAA,MAAMoB,QAAQ,GAAGpB,WAAW,CAACY,UAAU,CAAC;IACxC,MAAMW,GAAG,GAAGzZ,MAAM,CAACmV,UAAU,CAAC,CAAA,YAAA,EAAemE,QAAQ,CAAA,GAAA,CAAK,CAAC;AAE3DG,IAAAA,GAAG,CAACld,gBAAgB,CAAC,QAAQ,EAAEkH,QAAQ,CAAC;IACxC+V,SAAS,CAAC3R,IAAI,CAAC;MAAE4R,GAAG;AAAEtf,MAAAA,OAAO,EAAEsJ;AAAS,KAAC,CAAC;AAC5C,EAAA;AAEA,EAAA,OAAO+V,SAAS;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACO,MAAME,0BAA0B,GAAGF,SAAS,IAAI;AACrD,EAAA,KAAK,MAAM;IAAEC,GAAG;AAAEtf,IAAAA;GAAS,IAAIqf,SAAS,EAAE;AACxCC,IAAAA,GAAG,CAAChd,mBAAmB,CAAC,QAAQ,EAAEtC,OAAO,CAAC;AAC5C,EAAA;AACF,CAAC;;AC/HD;AACA;AACA;AACA;AACA;AACA;;;AA8BA;AACA;AACA;;AAEA,MAAM0K,MAAI,GAAG,MAAM;AACnB,MAAMuB,UAAQ,GAAG,SAAS;AAC1B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAM4P,YAAU,GAAG,QAAQ;AAC3B,MAAMC,SAAO,GAAG,KAAK;AACrB,MAAMC,cAAY,GAAG,SAAS;AAC9B,MAAMC,gBAAc,GAAG,WAAW;AAClC,MAAMxP,gBAAc,GAAG,WAAW;AAClC,MAAMC,iBAAe,GAAG,YAAY;AACpC,MAAMwP,UAAQ,GAAG,MAAM;AACvB,MAAMC,SAAO,GAAG,KAAK;AACrB,MAAMC,WAAS,GAAG,OAAO;AACzB,MAAMC,WAAS,GAAG,GAAG;AACrB,MAAMC,kBAAkB,GAAG,CAAC;AAE5B,MAAMC,mBAAmB,GAAG,GAAG;AAE/B,MAAM1E,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAMkP,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAC/D,MAAMsQ,sBAAsB,GAAG,CAAA,OAAA,EAAU/T,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AACnE,MAAMuQ,oBAAoB,GAAG,CAAA,KAAA,EAAQhU,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAMN,iBAAe,GAAG,MAAM;AAE9B,MAAMQ,sBAAoB,GAAG,uDAAuD;AAEpF,MAAMsQ,eAAa,GAAG,OAAO;AAC7B,MAAMC,gBAAgB,GAAG,UAAU;AACnC,MAAMC,uBAAuB,GAAG,uBAAuB;AACvD,MAAMC,mBAAmB,GAAG,aAAa;AACzC,MAAMC,wBAAsB,GAAG,0CAA0C;AAEzE,MAAMC,iBAAiB,GAAG,cAAc;AACxC,MAAMC,iBAAiB,GAAG,WAAW;AAErC,MAAMC,uBAAuB,GAAG/B,SAAS,IAAI;EAC3C,IAAI5V,OAAK,EAAE,EAAE;AACX,IAAA,OAAO4V,SAAS,CAACzc,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;AACnF,EAAA;AAEA,EAAA,OAAOyc,SAAS,CAACzc,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAACA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AACnF,CAAC;AAED,MAAMye,YAAY,GAAGA,CAACC,EAAE,EAAEC,EAAE,EAAEC,EAAE,KAC7B,CAACF,EAAE,CAACG,CAAC,GAAGD,EAAE,CAACC,CAAC,KAAKF,EAAE,CAACG,CAAC,GAAGF,EAAE,CAACE,CAAC,CAAC,GAAK,CAACH,EAAE,CAACE,CAAC,GAAGD,EAAE,CAACC,CAAC,KAAKH,EAAE,CAACI,CAAC,GAAGF,EAAE,CAACE,CAAC,CAAE;AAEnE,MAAMzW,SAAO,GAAG;AACd0W,EAAAA,SAAS,EAAE,IAAI;AACfC,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BC,EAAAA,SAAS,EAAE,KAAK;AAChBC,EAAAA,OAAO,EAAE,SAAS;AAClBxD,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACdyD,EAAAA,cAAc,EAAE,IAAI;AACpBC,EAAAA,IAAI,EAAE,IAAI;AACV3C,EAAAA,SAAS,EAAE6B,iBAAiB;AAC5Be,EAAAA,SAAS,EAAE,QAAQ;AACnBC,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,cAAc,EAAE,MAAM;AACtBC,EAAAA,YAAY,EAAE1B;AAChB,CAAC;AAED,MAAMxV,aAAW,GAAG;AAClByW,EAAAA,SAAS,EAAE,kBAAkB;AAC7BC,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BC,EAAAA,SAAS,EAAE,0BAA0B;AACrCC,EAAAA,OAAO,EAAE,QAAQ;AACjBxD,EAAAA,MAAM,EAAE,yBAAyB;AACjCyD,EAAAA,cAAc,EAAE,wBAAwB;AACxCC,EAAAA,IAAI,EAAE,gBAAgB;AACtB3C,EAAAA,SAAS,EAAE,QAAQ;AACnB4C,EAAAA,SAAS,EAAE,yBAAyB;AACpCC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,cAAc,EAAE,QAAQ;AACxBC,EAAAA,YAAY,EAAE;AAChB,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,IAAI,SAAShW,aAAa,CAAC;AAC/B,EAAA,OAAOiW,cAAc,GAAG,IAAIniB,GAAG,EAAE;AAEjCwL,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,IAAI,OAAO6S,eAAe,KAAK,WAAW,EAAE;AAC1C,MAAA,MAAM,IAAIjS,SAAS,CAAC,kEAAkE,CAAC;AACzF,IAAA;AAEA,IAAA,KAAK,CAACxN,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACiX,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,oBAAoB,GAAG,EAAE;IAC9B,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC,IAAI,CAACC,OAAO,GAAG,IAAI,CAACpW,QAAQ,CAAC/K,UAAU,CAAA;AACvC,IAAA,IAAI,CAACohB,aAAa,GAAG,IAAInkB,GAAG,EAAE;AAC9B,IAAA,IAAI,CAACokB,qBAAqB,GAAG,IAAIpkB,GAAG,EAAE;IACtC,IAAI,CAACqkB,gBAAgB,GAAG,IAAI;AAE5B,IAAA,IAAI,CAACC,KAAK,GAAG,IAAI,CAACvW,OAAO,CAACyV,IAAI,IAAI,IAAI,CAACe,SAAS,EAAE;;AAElD;AACA;AACA;AACA;IACA,IAAI,CAAC,IAAI,CAACxW,OAAO,CAACyV,IAAI,IAAI,IAAI,CAACc,KAAK,EAAE;MACpC,IAAI,CAACJ,OAAO,GAAG,IAAI,CAACM,YAAY,CAAC,IAAI,CAACF,KAAK,CAAC;AAC9C,IAAA;AAEA,IAAA,IAAI,CAACG,UAAU,GAAG,IAAI,CAACP,OAAO,CAAC7Z,SAAS,EAAErG,QAAQ,CAAC,SAAS,CAAC;AAE7D,IAAA,IAAI,CAAC0gB,mBAAmB,GAAG,IAAI,CAACJ,KAAK,EAAEvhB,UAAU;IAEjD,IAAI,CAAC4hB,0BAA0B,EAAE;IACjC,IAAI,CAACC,sBAAsB,EAAE;AAC/B,EAAA;;AAEA;EACA,WAAWnY,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP,IAAA,OAAO,IAAI,CAAC0M,QAAQ,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE;AACpD,EAAA;AAEAA,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI5U,UAAU,CAAC,IAAI,CAAC4D,QAAQ,CAAC,IAAI,IAAI,CAAC8Q,QAAQ,EAAE,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAM7a,aAAa,GAAG;MACpBA,aAAa,EAAE,IAAI,CAAC+J;KACrB;AAED,IAAA,MAAM+W,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwP,YAAU,EAAEvZ,aAAa,CAAC;IAEhF,IAAI8gB,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACmT,oBAAoB,EAAE;IAC3B,IAAI,CAACC,eAAe,EAAE;AAEtB,IAAA,IAAI,cAAc,IAAInc,QAAQ,CAAC6B,eAAe,IAAI,CAAC,IAAI,CAACyZ,OAAO,CAACla,OAAO,CAACwY,mBAAmB,CAAC,EAAE;MAC5F,KAAK,MAAMtiB,OAAO,IAAI0I,QAAQ,CAACoc,IAAI,CAAC1V,QAAQ,EAAE;QAC5ChN,YAAY,CAACyC,EAAE,CAAC7E,OAAO,EAAE,WAAW,EAAE4K,IAAI,CAAC;AAC7C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACgD,QAAQ,CAACqO,KAAK,CAAC;AAAE8I,MAAAA,YAAY,EAAE;AAAM,KAAC,CAAC;IAC5C,IAAI,CAACnX,QAAQ,CAAChH,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IAEnD,IAAI,CAACwd,KAAK,CAACja,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;IACzC,IAAI,CAACzD,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;IAE5C,IAAI,IAAI,CAAC2S,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAAC7Z,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;AAC7C,IAAA;AAEAsS,IAAAA,IAAI,CAACC,cAAc,CAACxN,GAAG,CAAC,IAAI,CAAC;IAC7BhU,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEyP,aAAW,EAAExZ,aAAa,CAAC;AACjE,EAAA;AAEA8a,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI3U,UAAU,CAAC,IAAI,CAAC4D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC8Q,QAAQ,EAAE,EAAE;AACjD,MAAA;AACF,IAAA;AAEA,IAAA,MAAM7a,aAAa,GAAG;MACpBA,aAAa,EAAE,IAAI,CAAC+J;KACrB;AAED,IAAA,IAAI,CAACoX,aAAa,CAACnhB,aAAa,CAAC;AACnC,EAAA;AAEAoK,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACgX,gBAAgB,EAAE;IACvB,IAAI,CAACC,4BAA4B,EAAE;IACnC,IAAI,CAACC,2BAA2B,EAAE;IAClC,IAAI,CAACC,iBAAiB,EAAE;IACxB,IAAI,CAACC,wBAAwB,EAAE;AAC/B1B,IAAAA,IAAI,CAACC,cAAc,CAAC7iB,MAAM,CAAC,IAAI,CAAC;IAChC,KAAK,CAACkN,OAAO,EAAE;AACjB,EAAA;AAEAqX,EAAAA,MAAMA,GAAG;IACP,IAAI,IAAI,CAACzB,gBAAgB,EAAE;MACzB,IAAI,CAAC0B,uBAAuB,EAAE;AAChC,IAAA;AACF,EAAA;;AAEA;AACAlB,EAAAA,SAASA,GAAG;AACV;AACA;AACA,IAAA,MAAMmB,OAAO,GAAGvW,cAAc,CAACnF,OAAO,CAAC,IAAI,CAAC8D,QAAQ,EAAE,CAAA,KAAA,EAAQuU,eAAa,GAAG,CAAC;AAC/E,IAAA,OAAOlT,cAAc,CAACrO,IAAI,CAAC,IAAI,CAACgN,QAAQ,EAAEuU,eAAa,CAAC,CAAC,CAAC,CAAC,IACzDlT,cAAc,CAACS,IAAI,CAAC,IAAI,CAAC9B,QAAQ,EAAEuU,eAAa,CAAC,CAAC,CAAC,CAAC,IACpDlT,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEqD,OAAO,IAAI,IAAI,CAACxB,OAAO,CAAC;AAClE,EAAA;EAEAM,YAAYA,CAAChB,IAAI,EAAE;AACjB,IAAA,IAAIkC,OAAO,GAAG,IAAI,CAAC5X,QAAQ,CAAC/K,UAAU;IACtC,OAAO2iB,OAAO,YAAYtW,OAAO,IAAI,CAACsW,OAAO,CAAC1hB,QAAQ,CAACwf,IAAI,CAAC,EAAE;MAC5DkC,OAAO,GAAGA,OAAO,CAAC3iB,UAAU;AAC9B,IAAA;IAEA,OAAO2iB,OAAO,YAAYtW,OAAO,GAAGsW,OAAO,GAAG,IAAI,CAAC5X,QAAQ,CAAC/K,UAAU;AACxE,EAAA;EAEAmiB,aAAaA,CAACnhB,aAAa,EAAE;AAC3B,IAAA,MAAM4hB,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0P,YAAU,EAAEzZ,aAAa,CAAC;IAChF,IAAI4hB,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAAC2T,iBAAiB,EAAE;AAExB,IAAA,IAAI,cAAc,IAAI1c,QAAQ,CAAC6B,eAAe,EAAE;MAC9C,KAAK,MAAMvK,OAAO,IAAI0I,QAAQ,CAACoc,IAAI,CAAC1V,QAAQ,EAAE;QAC5ChN,YAAY,CAACC,GAAG,CAACrC,OAAO,EAAE,WAAW,EAAE4K,IAAI,CAAC;AAC9C,MAAA;AACF,IAAA;IAEA,IAAI,CAACqa,gBAAgB,EAAE;IACvB,IAAI,CAACC,4BAA4B,EAAE;IAEnC,IAAI,CAACd,KAAK,CAACja,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;IAC5C,IAAI,CAACzD,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;IAE/C,IAAI,IAAI,CAAC2S,OAAO,EAAE;MAChB,IAAI,CAACA,OAAO,CAAC7Z,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;AAChD,IAAA;IAEA,IAAI,CAACzD,QAAQ,CAAChH,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;IACpDF,WAAW,CAACG,mBAAmB,CAAC,IAAI,CAACud,KAAK,EAAE,WAAW,CAAC;IACxD1d,WAAW,CAACG,mBAAmB,CAAC,IAAI,CAACud,KAAK,EAAE,SAAS,CAAC;AACtDT,IAAAA,IAAI,CAACC,cAAc,CAAC7iB,MAAM,CAAC,IAAI,CAAC;IAChCqB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2P,cAAY,EAAE1Z,aAAa,CAAC;AAClE,EAAA;EAEA8I,UAAUA,CAACC,MAAM,EAAE;AACjBA,IAAAA,MAAM,GAAG,KAAK,CAACD,UAAU,CAACC,MAAM,CAAC;IAEjC,IAAI,OAAOA,MAAM,CAAC2W,SAAS,KAAK,QAAQ,IAAI,CAACla,WAAS,CAACuD,MAAM,CAAC2W,SAAS,CAAC,IACtE,OAAO3W,MAAM,CAAC2W,SAAS,CAACnJ,qBAAqB,KAAK,UAAU,EAC5D;MACA,MAAM,IAAI5M,SAAS,CAAC,CAAA,EAAGf,MAAI,CAACgB,WAAW,EAAE,CAAA,8FAAA,CAAgG,CAAC;AAC5I,IAAA;AAEA,IAAA,OAAOb,MAAM;AACf,EAAA;AAEAiY,EAAAA,eAAeA,GAAG;AAChB,IAAA,IAAI,IAAI,CAAChX,OAAO,CAACuV,OAAO,KAAK,QAAQ,EAAE;MACrC1c,WAAW,CAACC,gBAAgB,CAAC,IAAI,CAACyd,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC;AAC7D,MAAA;AACF,IAAA;AAEA,IAAA,IAAIsB,gBAAgB,GAAG,IAAI,CAAC9X,QAAQ;AAEpC,IAAA,IAAI,IAAI,CAACC,OAAO,CAAC0V,SAAS,KAAK,QAAQ,EAAE;MACvCmC,gBAAgB,GAAG,IAAI,CAAC1B,OAAO;IACjC,CAAC,MAAM,IAAI3a,WAAS,CAAC,IAAI,CAACwE,OAAO,CAAC0V,SAAS,CAAC,EAAE;MAC5CmC,gBAAgB,GAAGnc,UAAU,CAAC,IAAI,CAACsE,OAAO,CAAC0V,SAAS,CAAC;IACvD,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC1V,OAAO,CAAC0V,SAAS,KAAK,QAAQ,EAAE;AACrDmC,MAAAA,gBAAgB,GAAG,IAAI,CAAC7X,OAAO,CAAC0V,SAAS;AAC3C,IAAA;AAEA,IAAA,IAAI,CAACgC,uBAAuB,CAACG,gBAAgB,CAAC;AAE9C,IAAA,IAAI,CAAC7B,gBAAgB,GAAG8B,UAAU,CAChCD,gBAAgB,EAChB,IAAI,CAACtB,KAAK,EACV,MAAM,IAAI,CAACmB,uBAAuB,CAACG,gBAAgB,CACrD,CAAC;AACH,EAAA;AAEA,EAAA,MAAMH,uBAAuBA,CAACG,gBAAgB,GAAG,IAAI,EAAE;AACrD,IAAA,IAAI,CAAC,IAAI,CAACtB,KAAK,EAAE;AACf,MAAA;AACF,IAAA;IAEA,IAAI,CAACsB,gBAAgB,EAAE;AACrB,MAAA,IAAI,IAAI,CAAC7X,OAAO,CAAC0V,SAAS,KAAK,QAAQ,EAAE;QACvCmC,gBAAgB,GAAG,IAAI,CAAC1B,OAAO;MACjC,CAAC,MAAM,IAAI3a,WAAS,CAAC,IAAI,CAACwE,OAAO,CAAC0V,SAAS,CAAC,EAAE;QAC5CmC,gBAAgB,GAAGnc,UAAU,CAAC,IAAI,CAACsE,OAAO,CAAC0V,SAAS,CAAC;MACvD,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC1V,OAAO,CAAC0V,SAAS,KAAK,QAAQ,EAAE;AACrDmC,QAAAA,gBAAgB,GAAG,IAAI,CAAC7X,OAAO,CAAC0V,SAAS;AAC3C,MAAA,CAAC,MAAM;QACLmC,gBAAgB,GAAG,IAAI,CAAC9X,QAAQ;AAClC,MAAA;AACF,IAAA;AAEA,IAAA,MAAM+S,SAAS,GAAG,IAAI,CAACiF,aAAa,EAAE;AACtC,IAAA,MAAMC,UAAU,GAAG,IAAI,CAACC,sBAAsB,EAAE;IAChD,MAAMzC,cAAc,GAAG,IAAI,CAAC0C,kBAAkB,CAACpF,SAAS,EAAEkF,UAAU,CAAC;IAErE,MAAM,IAAI,CAACG,sBAAsB,CAC/BN,gBAAgB,EAChB,IAAI,CAACtB,KAAK,EACVf,cAAc,CAAC1C,SAAS,EACxB0C,cAAc,CAACwC,UAAU,EACzBxC,cAAc,CAACG,QACjB,CAAC;AACH,EAAA;AAEA9E,EAAAA,QAAQA,GAAG;IACT,OAAO,IAAI,CAAC0F,KAAK,CAACja,SAAS,CAACrG,QAAQ,CAACuN,iBAAe,CAAC;AACvD,EAAA;AAEAuU,EAAAA,aAAaA,GAAG;AACd,IAAA,MAAMjF,SAAS,GAAG,IAAI,CAACoD,qBAAqB,GAC1CnD,sBAAsB,CAAC,IAAI,CAACmD,qBAAqB,EAAEvB,iBAAiB,CAAC,GACrE,IAAI,CAAC3U,OAAO,CAAC8S,SAAS;IAExB,OAAO+B,uBAAuB,CAAC/B,SAAS,CAAC;AAC3C,EAAA;AAEA8D,EAAAA,0BAA0BA,GAAG;AAC3B,IAAA,IAAI,CAACV,qBAAqB,GAAG5D,wBAAwB,CAAC,IAAI,CAACtS,OAAO,CAAC8S,SAAS,EAAE6B,iBAAiB,CAAC;IAEhG,IAAI,IAAI,CAACuB,qBAAqB,EAAE;MAC9B,IAAI,CAACkC,yBAAyB,EAAE;AAClC,IAAA;AACF,EAAA;AAEAA,EAAAA,yBAAyBA,GAAG;IAC1B,IAAI,CAACd,2BAA2B,EAAE;AAClC,IAAA,IAAI,CAACrB,oBAAoB,GAAG3C,yBAAyB,CAAC,MAAM;AAC1D,MAAA,IAAI,IAAI,CAACzC,QAAQ,EAAE,EAAE;QACnB,IAAI,CAAC6G,uBAAuB,EAAE;AAChC,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAJ,EAAAA,2BAA2BA,GAAG;AAC5B7D,IAAAA,0BAA0B,CAAC,IAAI,CAACwC,oBAAoB,CAAC;IACrD,IAAI,CAACA,oBAAoB,GAAG,EAAE;AAChC,EAAA;AAEAoC,EAAAA,UAAUA,GAAG;IACX,MAAM;AAAEtG,MAAAA,MAAM,EAAEuG;KAAc,GAAG,IAAI,CAACtY,OAAO;AAE7C,IAAA,IAAI,OAAOsY,YAAY,KAAK,QAAQ,EAAE;AACpC,MAAA,OAAOA,YAAY,CAAChd,KAAK,CAAC,GAAG,CAAC,CAAC2F,GAAG,CAACjO,KAAK,IAAIqF,MAAM,CAACsQ,QAAQ,CAAC3V,KAAK,EAAE,EAAE,CAAC,CAAC;AACzE,IAAA;AAEA,IAAA,IAAI,OAAOslB,YAAY,KAAK,UAAU,EAAE;AACtC,MAAA,OAAO,CAAC;QAAExF,SAAS;AAAEyF,QAAAA;AAAM,OAAC,KAAK;QAC/B,MAAMC,MAAM,GAAGF,YAAY,CAAC;UAAExF,SAAS;UAAE4C,SAAS,EAAE6C,KAAK,CAAC7C,SAAS;UAAE+C,QAAQ,EAAEF,KAAK,CAACE;AAAS,SAAC,EAAE,IAAI,CAAC1Y,QAAQ,CAAC;AAC/G,QAAA,OAAOyY,MAAM;MACf,CAAC;AACH,IAAA;AAEA,IAAA,OAAOF,YAAY;AACrB,EAAA;AAEAL,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,MAAMS,WAAW,GAAG,IAAI,CAACL,UAAU,EAAE;IAErC,MAAML,UAAU,GAAG,CACjBjG,MAAM,CACJ,OAAO2G,WAAW,KAAK,UAAU,GAC/BA,WAAW,GACX;AAAEC,MAAAA,QAAQ,EAAED,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAAEE,MAAAA,SAAS,EAAEF,WAAW,CAAC,CAAC,CAAC,IAAI;KAClE,CAAC,EACD5G,IAAI,CAAC;AACH+G,MAAAA,kBAAkB,EAAE,IAAI,CAACC,sBAAsB;KAChD,CAAC,EACF9G,KAAK,CAAC;AACJqD,MAAAA,QAAQ,EAAE,IAAI,CAACrV,OAAO,CAACqV,QAAQ,KAAK,iBAAiB,GAAG,mBAAmB,GAAG,IAAI,CAACrV,OAAO,CAACqV;AAC7F,KAAC,CAAC,CACH;AAED,IAAA,OAAO2C,UAAU;AACnB,EAAA;AAEAc,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,MAAMhG,SAAS,GAAG,IAAI,CAACiF,aAAa,EAAE;AAEtC,IAAA,MAAMgB,WAAW,GAAG;MAClBC,MAAM,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC;AACrE,MAAA,cAAc,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC;AACtD,MAAA,YAAY,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC;MACtDvL,GAAG,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,CAAC;AACrE,MAAA,WAAW,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC;AACtD,MAAA,SAAS,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,CAAC;MACtDb,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,CAAC;MACrE,aAAa,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC;MACnF,WAAW,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC;MAC/EnB,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC;MACrE,YAAY,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,CAAC;MACnF,UAAU,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY;KAC/E;AAED,IAAA,OAAOsN,WAAW,CAACjG,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACrE,EAAA;AAEAoF,EAAAA,kBAAkBA,CAACpF,SAAS,EAAEkF,UAAU,EAAE;AACxC,IAAA,MAAMiB,aAAa,GAAG;MACpBnG,SAAS;MACTkF,UAAU;AACVrC,MAAAA,QAAQ,EAAE,IAAI,CAAC3V,OAAO,CAAC2V;KACxB;IAED,OAAO;AACL,MAAA,GAAGsD,aAAa;AAChB,MAAA,GAAG7b,OAAO,CAAC,IAAI,CAAC4C,OAAO,CAACwV,cAAc,EAAE,CAAClb,SAAS,EAAE2e,aAAa,CAAC;KACnE;AACH,EAAA;AAEA7B,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,IAAI,CAACpB,gBAAgB,EAAE;MACzB,IAAI,CAACA,gBAAgB,EAAE;MACvB,IAAI,CAACA,gBAAgB,GAAG,IAAI;AAC9B,IAAA;AACF,EAAA;AAEAkD,EAAAA,aAAaA,GAAG;IACd,MAAM;AAAE5D,MAAAA;KAAW,GAAG,IAAI,CAACtV,OAAO;IAClC,IAAIsV,SAAS,KAAK,KAAK,EAAE;AACvB,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,OAAOA,SAAS,KAAK,IAAI,GAAGza,QAAQ,CAACoc,IAAI,GAAGvb,UAAU,CAAC4Z,SAAS,CAAC;AACnE,EAAA;AAEAyB,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,MAAMzB,SAAS,GAAG,IAAI,CAAC4D,aAAa,EAAE;AACtC,IAAA,IAAI,CAAC5D,SAAS,IAAI,CAAC,IAAI,CAACiB,KAAK,EAAE;AAC7B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACA,KAAK,CAACvhB,UAAU,KAAKsgB,SAAS,EAAE;AACvCA,MAAAA,SAAS,CAACjI,MAAM,CAAC,IAAI,CAACkJ,KAAK,CAAC;AAC9B,IAAA;AACF,EAAA;AAEAc,EAAAA,4BAA4BA,GAAG;IAC7B,IAAI,CAAC,IAAI,CAACV,mBAAmB,IAAI,CAAC,IAAI,CAACJ,KAAK,EAAE;AAC5C,MAAA;AACF,IAAA;IAEA,IAAI,IAAI,CAACA,KAAK,CAACvhB,UAAU,KAAK,IAAI,CAAC2hB,mBAAmB,EAAE;MACtD,IAAI,CAACA,mBAAmB,CAACtJ,MAAM,CAAC,IAAI,CAACkJ,KAAK,CAAC;AAC7C,IAAA;AACF,EAAA;AAEA,EAAA,MAAM4B,sBAAsBA,CAACzC,SAAS,EAAE+C,QAAQ,EAAE3F,SAAS,EAAEkF,UAAU,EAAErC,QAAQ,GAAG,UAAU,EAAE;AAC9F,IAAA,IAAI,CAAC8C,QAAQ,CAACU,WAAW,EAAE;AACzB,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,MAAM;MAAEjE,CAAC;MAAEC,CAAC;AAAErC,MAAAA,SAAS,EAAEsG;AAAe,KAAC,GAAG,MAAMxH,eAAe,CAC/D8D,SAAS,EACT+C,QAAQ,EACR;MAAE3F,SAAS;MAAEkF,UAAU;AAAErC,MAAAA;AAAS,KACpC,CAAC;AAED,IAAA,IAAI,CAAC8C,QAAQ,CAACU,WAAW,EAAE;AACzB,MAAA,OAAO,IAAI;AACb,IAAA;AAEA7jB,IAAAA,MAAM,CAAC+jB,MAAM,CAACZ,QAAQ,CAAC7O,KAAK,EAAE;AAC5B0P,MAAAA,QAAQ,EAAE3D,QAAQ;MAClBlK,IAAI,EAAE,CAAA,EAAGyJ,CAAC,CAAA,EAAA,CAAI;MACdzH,GAAG,EAAE,CAAA,EAAG0H,CAAC,CAAA,EAAA,CAAI;AACboE,MAAAA,MAAM,EAAE;AACV,KAAC,CAAC;IAEF1gB,WAAW,CAACC,gBAAgB,CAAC2f,QAAQ,EAAE,WAAW,EAAEW,cAAc,CAAC;AACnE,IAAA,OAAOA,cAAc;AACvB,EAAA;;AAEA;AACA;AACA;;AAEAvC,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,IAAI,IAAI,CAAC7W,OAAO,CAAC4V,cAAc,KAAK,OAAO,IAAI,IAAI,CAAC5V,OAAO,CAAC4V,cAAc,KAAK,MAAM,EAAE;AACrFrhB,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,YAAY,EAAE/B,uBAAuB,EAAErgB,KAAK,IAAI;AAC1E,QAAA,IAAI,CAACqlB,sBAAsB,CAACrlB,KAAK,CAAC;AACpC,MAAA,CAAC,CAAC;AAEFI,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,YAAY,EAAEhC,gBAAgB,EAAEpgB,KAAK,IAAI;AACnE,QAAA,IAAI,CAACslB,eAAe,CAACtlB,KAAK,CAAC;AAC7B,MAAA,CAAC,CAAC;MAEFI,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,WAAW,EAAEpiB,KAAK,IAAI;AAChD,QAAA,IAAI,CAACulB,mBAAmB,CAACvlB,KAAK,CAAC;AACjC,MAAA,CAAC,CAAC;AACJ,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC6L,OAAO,CAAC4V,cAAc,KAAK,OAAO,IAAI,IAAI,CAAC5V,OAAO,CAAC4V,cAAc,KAAK,MAAM,EAAE;AACrFrhB,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,OAAO,EAAE/B,uBAAuB,EAAErgB,KAAK,IAAI;AACrE,QAAA,IAAI,CAACwlB,sBAAsB,CAACxlB,KAAK,CAAC;AACpC,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;EAEAqlB,sBAAsBA,CAACrlB,KAAK,EAAE;IAC5B,MAAMsD,OAAO,GAAGtD,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACuY,uBAAuB,CAAC;IAC7D,IAAI,CAAC/c,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEA,IAAA,MAAMmiB,cAAc,GAAGniB,OAAO,CAACwE,OAAO,CAACsY,gBAAgB,CAAC;IACxD,MAAMsF,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;IACrE,IAAI,CAACC,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACC,0BAA0B,CAACD,OAAO,CAAC;AACxC,IAAA,IAAI,CAACE,qBAAqB,CAACH,cAAc,CAAC;IAC1C,IAAI,CAACI,YAAY,CAACviB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,CAAC;AACrD,EAAA;EAEAH,eAAeA,CAACtlB,KAAK,EAAE;IACrB,MAAMylB,cAAc,GAAGzlB,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACsY,gBAAgB,CAAC;IAC7D,MAAMsF,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;AACrE,IAAA,IAAI,CAACC,OAAO,IAAI,CAAC,IAAI,CAACzD,aAAa,CAAC9jB,GAAG,CAACunB,OAAO,CAAC,EAAE;AAChD,MAAA;AACF,IAAA;IAEA,IAAI,IAAI,CAACI,sBAAsB,CAAC9lB,KAAK,EAAE0lB,OAAO,CAAC,EAAE;AAC/C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACK,qBAAqB,CAACL,OAAO,EAAED,cAAc,CAAC;AACrD,EAAA;EAEAD,sBAAsBA,CAACxlB,KAAK,EAAE;IAC5B,MAAMsD,OAAO,GAAGtD,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACuY,uBAAuB,CAAC;IAC7D,IAAI,CAAC/c,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;IAEAtD,KAAK,CAACyO,cAAc,EAAE;IACtBzO,KAAK,CAACgmB,eAAe,EAAE;AAEvB,IAAA,MAAMP,cAAc,GAAGniB,OAAO,CAACwE,OAAO,CAACsY,gBAAgB,CAAC;IACxD,MAAMsF,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;IACrE,IAAI,CAACC,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;IAEA,IAAI,IAAI,CAACzD,aAAa,CAAC9jB,GAAG,CAACunB,OAAO,CAAC,EAAE;AACnC,MAAA,IAAI,CAACO,aAAa,CAACP,OAAO,EAAED,cAAc,CAAC;AAC7C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACG,qBAAqB,CAACH,cAAc,CAAC;MAC1C,IAAI,CAACI,YAAY,CAACviB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,CAAC;AACrD,IAAA;AACF,EAAA;AAEAI,EAAAA,YAAYA,CAACviB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,EAAE;IAC7C,IAAI,IAAI,CAACxD,aAAa,CAAC9jB,GAAG,CAACunB,OAAO,CAAC,EAAE;AACnC,MAAA;AACF,IAAA;AAEApiB,IAAAA,OAAO,CAACsB,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;AAC7CtB,IAAAA,OAAO,CAACsB,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;;AAE7C;AACA;AACA;AACA;AACA8gB,IAAAA,OAAO,CAACjQ,KAAK,CAACyQ,OAAO,GAAG,GAAG;AAC3BR,IAAAA,OAAO,CAACvd,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;AACtCoW,IAAAA,cAAc,CAACtd,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;IAE7C,MAAM8W,OAAO,GAAG,IAAI,CAACC,sBAAsB,CAAC9iB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,CAAC;IAC7E,IAAI,CAACxD,aAAa,CAAClkB,GAAG,CAAC2nB,OAAO,EAAES,OAAO,CAAC;AAExC/lB,IAAAA,YAAY,CAACyC,EAAE,CAAC6iB,OAAO,EAAE,YAAY,EAAE,MAAM;AAC3C,MAAA,IAAI,CAACC,0BAA0B,CAACD,OAAO,CAAC;AAC1C,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAO,EAAAA,aAAaA,CAACP,OAAO,EAAED,cAAc,EAAE;IACrC,IAAI,CAAC,IAAI,CAACxD,aAAa,CAAC9jB,GAAG,CAACunB,OAAO,CAAC,EAAE;AACpC,MAAA;AACF,IAAA;AAEA,IAAA,MAAMW,cAAc,GAAGpZ,cAAc,CAAC7L,IAAI,CAAC,CAAA,EAAGgf,gBAAgB,CAAA,CAAA,EAAID,eAAa,CAAA,CAAA,EAAI9Q,iBAAe,CAAA,CAAE,EAAEqW,OAAO,CAAC;AAC9G,IAAA,KAAK,MAAMY,MAAM,IAAID,cAAc,EAAE;AACnC,MAAA,MAAME,aAAa,GAAGD,MAAM,CAACxe,OAAO,CAACsY,gBAAgB,CAAC;AACtD,MAAA,IAAI,CAAC6F,aAAa,CAACK,MAAM,EAAEC,aAAa,CAAC;AAC3C,IAAA;IAEA,MAAMjjB,OAAO,GAAG2J,cAAc,CAACE,OAAO,CAACkT,uBAAuB,EAAEoF,cAAc,CAAC;IAE/E,MAAMU,OAAO,GAAG,IAAI,CAAClE,aAAa,CAAC5jB,GAAG,CAACqnB,OAAO,CAAC;AAC/C,IAAA,IAAIS,OAAO,EAAE;AACXA,MAAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,IAAI,CAAClE,aAAa,CAACljB,MAAM,CAAC2mB,OAAO,CAAC;AAClCtlB,IAAAA,YAAY,CAACC,GAAG,CAACqlB,OAAO,EAAE,YAAY,CAAC;AAEvC,IAAA,IAAIpiB,OAAO,EAAE;AACXA,MAAAA,OAAO,CAACsB,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AAChD,IAAA;AAEA8gB,IAAAA,OAAO,CAACvd,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;AACzCoW,IAAAA,cAAc,CAACtd,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;;AAEhD;AACA;AACA;AACA;AACA;AACAqW,IAAAA,OAAO,CAACjQ,KAAK,CAACyQ,OAAO,GAAG,EAAE;AAC5B,EAAA;AAEA9C,EAAAA,iBAAiBA,GAAG;IAClB,KAAK,MAAM,CAACsC,OAAO,CAAC,IAAI,IAAI,CAACzD,aAAa,EAAE;AAC1C,MAAA,MAAMwD,cAAc,GAAGC,OAAO,CAAC5d,OAAO,CAACsY,gBAAgB,CAAC;AACxD,MAAA,IAAI,CAAC6F,aAAa,CAACP,OAAO,EAAED,cAAc,CAAC;AAC7C,IAAA;AACF,EAAA;EAEAG,qBAAqBA,CAACY,qBAAqB,EAAE;AAC3C,IAAA,MAAMxK,MAAM,GAAGwK,qBAAqB,CAAC3lB,UAAU;AAC/C,IAAA,MAAM4lB,eAAe,GAAGxZ,cAAc,CAAC7L,IAAI,CAAC,CAAA,EAAGgf,gBAAgB,CAAA,GAAA,EAAMD,eAAa,CAAA,CAAA,EAAI9Q,iBAAe,CAAA,CAAE,EAAE2M,MAAM,CAAC;AAEhH,IAAA,KAAK,MAAM0K,WAAW,IAAID,eAAe,EAAE;AACzC,MAAA,MAAME,cAAc,GAAGD,WAAW,CAAC5e,OAAO,CAACsY,gBAAgB,CAAC;MAC5D,IAAIuG,cAAc,KAAKH,qBAAqB,EAAE;AAC5C,QAAA,IAAI,CAACP,aAAa,CAACS,WAAW,EAAEC,cAAc,CAAC;AACjD,MAAA;AACF,IAAA;AACF,EAAA;AAEAP,EAAAA,sBAAsBA,CAAC9iB,OAAO,EAAEoiB,OAAO,EAAED,cAAc,EAAE;IACvD,MAAM/B,gBAAgB,GAAG+B,cAAc;AACvC,IAAA,MAAM9G,SAAS,GAAG+B,uBAAuB,CAACD,iBAAiB,CAAC;AAC5D,IAAA,MAAMoD,UAAU,GAAG,CACjBjG,MAAM,CAAC;AAAE4G,MAAAA,QAAQ,EAAE,CAAC;AAAEC,MAAAA,SAAS,EAAE;KAAI,CAAC,EACtC9G,IAAI,CAAC;AACH+G,MAAAA,kBAAkB,EAAE,CAClBhE,uBAAuB,CAAC,aAAa,CAAC,EACtCA,uBAAuB,CAAC,SAAS,CAAC,EAClCA,uBAAuB,CAAC,WAAW,CAAC;KAEvC,CAAC,EACF7C,KAAK,CAAC;AAAE+I,MAAAA,OAAO,EAAE;AAAE,KAAC,CAAC,CACtB;IAED,MAAMC,cAAc,GAAGA,MAAM,IAAI,CAAC7C,sBAAsB,CAACN,gBAAgB,EAAEgC,OAAO,EAAE/G,SAAS,EAAEkF,UAAU,CAAC,CACvGiD,IAAI,CAAC7B,cAAc,IAAI;AACtB;AACA;AACAS,MAAAA,OAAO,CAACjQ,KAAK,CAACyQ,OAAO,GAAG,EAAE;AAC1B,MAAA,OAAOjB,cAAc;AACvB,IAAA,CAAC,CAAC;AAEJ4B,IAAAA,cAAc,EAAE;AAChB,IAAA,OAAOlD,UAAU,CAACD,gBAAgB,EAAEgC,OAAO,EAAEmB,cAAc,CAAC;AAC9D,EAAA;AAEAd,EAAAA,qBAAqBA,CAACL,OAAO,EAAED,cAAc,EAAE;AAC7C,IAAA,IAAI,CAACE,0BAA0B,CAACD,OAAO,CAAC;AAExC,IAAA,MAAMqB,SAAS,GAAGpd,UAAU,CAAC,MAAM;AACjC,MAAA,IAAI,CAACsc,aAAa,CAACP,OAAO,EAAED,cAAc,CAAC;AAC3C,MAAA,IAAI,CAACvD,qBAAqB,CAACnjB,MAAM,CAAC2mB,OAAO,CAAC;AAC5C,IAAA,CAAC,EAAE,IAAI,CAAC7Z,OAAO,CAAC6V,YAAY,CAAC;IAE7B,IAAI,CAACQ,qBAAqB,CAACnkB,GAAG,CAAC2nB,OAAO,EAAEqB,SAAS,CAAC;AACpD,EAAA;EAEApB,0BAA0BA,CAACD,OAAO,EAAE;IAClC,MAAMqB,SAAS,GAAG,IAAI,CAAC7E,qBAAqB,CAAC7jB,GAAG,CAACqnB,OAAO,CAAC;AACzD,IAAA,IAAIqB,SAAS,EAAE;MACb/L,YAAY,CAAC+L,SAAS,CAAC;AACvB,MAAA,IAAI,CAAC7E,qBAAqB,CAACnjB,MAAM,CAAC2mB,OAAO,CAAC;AAC5C,IAAA;AACF,EAAA;AAEArC,EAAAA,wBAAwBA,GAAG;IACzB,KAAK,MAAM0D,SAAS,IAAI,IAAI,CAAC7E,qBAAqB,CAACvjB,MAAM,EAAE,EAAE;MAC3Dqc,YAAY,CAAC+L,SAAS,CAAC;AACzB,IAAA;AAEA,IAAA,IAAI,CAAC7E,qBAAqB,CAAC8E,KAAK,EAAE;AACpC,EAAA;;AAEA;AACA;AACA;;EAEAzB,mBAAmBA,CAACvlB,KAAK,EAAE;IACzB,IAAI,CAACmiB,gBAAgB,GAAG;MACtBpB,CAAC,EAAE/gB,KAAK,CAACinB,OAAO;MAChBjG,CAAC,EAAEhhB,KAAK,CAACknB,OAAO;AAChBC,MAAAA,SAAS,EAAEC,IAAI,CAAClP,GAAG;KACpB;AACH,EAAA;AAEA4N,EAAAA,sBAAsBA,CAAC9lB,KAAK,EAAE0lB,OAAO,EAAE;AACrC,IAAA,IAAI,CAAC,IAAI,CAACvD,gBAAgB,EAAE;AAC1B,MAAA,OAAO,KAAK;AACd,IAAA;AAEA,IAAA,MAAMkF,WAAW,GAAG3B,OAAO,CAACtN,qBAAqB,EAAE;AACnD,IAAA,MAAMkP,UAAU,GAAG;MAAEvG,CAAC,EAAE/gB,KAAK,CAACinB,OAAO;MAAEjG,CAAC,EAAEhhB,KAAK,CAACknB;KAAS;AACzD,IAAA,MAAMK,OAAO,GAAG;AAAExG,MAAAA,CAAC,EAAE,IAAI,CAACoB,gBAAgB,CAACpB,CAAC;AAAEC,MAAAA,CAAC,EAAE,IAAI,CAACmB,gBAAgB,CAACnB;KAAG;AAE1E,IAAA,MAAMwG,KAAK,GAAGze,OAAK,EAAE;IACrB,MAAM0e,OAAO,GAAGD,KAAK,GAAGH,WAAW,CAAC5O,KAAK,GAAG4O,WAAW,CAAC/P,IAAI;AAC5D,IAAA,MAAMoQ,SAAS,GAAG;AAAE3G,MAAAA,CAAC,EAAE0G,OAAO;MAAEzG,CAAC,EAAEqG,WAAW,CAAC/N;KAAK;AACpD,IAAA,MAAMqO,YAAY,GAAG;AAAE5G,MAAAA,CAAC,EAAE0G,OAAO;MAAEzG,CAAC,EAAEqG,WAAW,CAACxC;KAAQ;IAE1D,OAAO,IAAI,CAAC+C,gBAAgB,CAACN,UAAU,EAAEC,OAAO,EAAEG,SAAS,EAAEC,YAAY,CAAC;AAC5E,EAAA;EAEAC,gBAAgBA,CAACC,KAAK,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAE;IAClC,MAAMC,EAAE,GAAGtH,YAAY,CAACkH,KAAK,EAAEC,EAAE,EAAEC,EAAE,CAAC;IACtC,MAAMG,EAAE,GAAGvH,YAAY,CAACkH,KAAK,EAAEE,EAAE,EAAEC,EAAE,CAAC;IACtC,MAAMG,EAAE,GAAGxH,YAAY,CAACkH,KAAK,EAAEG,EAAE,EAAEF,EAAE,CAAC;AAEtC,IAAA,MAAMM,MAAM,GAAIH,EAAE,GAAG,CAAC,IAAMC,EAAE,GAAG,CAAE,IAAKC,EAAE,GAAG,CAAE;AAC/C,IAAA,MAAME,MAAM,GAAIJ,EAAE,GAAG,CAAC,IAAMC,EAAE,GAAG,CAAE,IAAKC,EAAE,GAAG,CAAE;AAE/C,IAAA,OAAO,EAAEC,MAAM,IAAIC,MAAM,CAAC;AAC5B,EAAA;;AAEA;AACA;AACA;;AAEAC,EAAAA,eAAeA,CAAC;IAAErqB,GAAG;AAAE2C,IAAAA;AAAO,GAAC,EAAE;IAC/B,MAAM2nB,WAAW,GAAG3nB,MAAM,CAACkH,OAAO,CAACqY,eAAa,CAAC,IAAI,IAAI,CAACiC,KAAK;IAC/D,MAAM/N,KAAK,GAAGpH,cAAc,CAAC7L,IAAI,CAAC,CAAA,SAAA,EAAYmf,wBAAsB,CAAA,CAAE,EAAEgI,WAAW,CAAC,CACjFpjB,MAAM,CAACnH,OAAO,IAAIyJ,SAAS,CAACzJ,OAAO,CAAC,CAAC;AAExC,IAAA,IAAI,CAACqW,KAAK,CAACnR,MAAM,EAAE;AACjB,MAAA;AACF,IAAA;IAEA0G,oBAAoB,CAACyK,KAAK,EAAEzT,MAAM,EAAE3C,GAAG,KAAKyhB,gBAAc,EAAE,CAACrL,KAAK,CAACzR,QAAQ,CAAChC,MAAM,CAAC,CAAC,CAACqZ,KAAK,EAAE;AAC9F,EAAA;EAEAuO,qBAAqBA,CAACxoB,KAAK,EAAE;IAC3B,MAAM;MAAE/B,GAAG;AAAE2C,MAAAA;AAAO,KAAC,GAAGZ,KAAK;AAC7B,IAAA,MAAMwnB,KAAK,GAAGze,OAAK,EAAE;AAErB,IAAA,MAAM0f,QAAQ,GAAGjB,KAAK,GAAGtX,gBAAc,GAAGC,iBAAe;AACzD,IAAA,MAAMuY,OAAO,GAAGlB,KAAK,GAAGrX,iBAAe,GAAGD,gBAAc;AAExD,IAAA,MAAMuV,cAAc,GAAG7kB,MAAM,CAACkH,OAAO,CAACsY,gBAAgB,CAAC;IACvD,MAAMuI,gBAAgB,GAAGlD,cAAc,IAAI7kB,MAAM,CAAC0M,OAAO,CAAC+S,uBAAuB,CAAC;IAElF,IAAI,CAACpiB,GAAG,KAAK4hB,WAAS,IAAI5hB,GAAG,KAAK6hB,WAAS,KAAK6I,gBAAgB,EAAE;MAChE3oB,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MAEvB,MAAMN,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;AACrE,MAAA,IAAIC,OAAO,EAAE;AACX,QAAA,IAAI,CAACE,qBAAqB,CAACH,cAAc,CAAC;QAC1C,IAAI,CAACI,YAAY,CAACjlB,MAAM,EAAE8kB,OAAO,EAAED,cAAc,CAAC;AAClD5N,QAAAA,qBAAqB,CAAC,MAAM;UAC1B,MAAM+Q,SAAS,GAAG3b,cAAc,CAACE,OAAO,CAACoT,wBAAsB,EAAEmF,OAAO,CAAC;AACzE,UAAA,IAAIkD,SAAS,EAAE;YACbA,SAAS,CAAC3O,KAAK,EAAE;AACnB,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,IAAIhc,GAAG,KAAKwqB,QAAQ,IAAIE,gBAAgB,EAAE;MACxC3oB,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MAEvB,MAAMN,OAAO,GAAGzY,cAAc,CAACE,OAAO,CAACgT,eAAa,EAAEsF,cAAc,CAAC;AACrE,MAAA,IAAIC,OAAO,EAAE;AACX,QAAA,IAAI,CAACE,qBAAqB,CAACH,cAAc,CAAC;QAC1C,IAAI,CAACI,YAAY,CAACjlB,MAAM,EAAE8kB,OAAO,EAAED,cAAc,CAAC;AAClD5N,QAAAA,qBAAqB,CAAC,MAAM;UAC1B,MAAM+Q,SAAS,GAAG3b,cAAc,CAACE,OAAO,CAACoT,wBAAsB,EAAEmF,OAAO,CAAC;AACzE,UAAA,IAAIkD,SAAS,EAAE;YACbA,SAAS,CAAC3O,KAAK,EAAE;AACnB,UAAA;AACF,QAAA,CAAC,CAAC;AACJ,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,IAAIhc,GAAG,KAAKyqB,OAAO,EAAE;AACnB,MAAA,MAAMH,WAAW,GAAG3nB,MAAM,CAACkH,OAAO,CAACqY,eAAa,CAAC;AACjD,MAAA,MAAM0I,oBAAoB,GAAGN,WAAW,EAAEzgB,OAAO,CAACsY,gBAAgB,CAAC;AAEnE,MAAA,IAAIyI,oBAAoB,EAAE;QACxB7oB,KAAK,CAACyO,cAAc,EAAE;QACtBzO,KAAK,CAACgmB,eAAe,EAAE;QAEvB,MAAM8C,aAAa,GAAG7b,cAAc,CAACE,OAAO,CAACkT,uBAAuB,EAAEwI,oBAAoB,CAAC;AAC3F,QAAA,IAAI,CAAC5C,aAAa,CAACsC,WAAW,EAAEM,oBAAoB,CAAC;AACrD,QAAA,IAAIC,aAAa,EAAE;UACjBA,aAAa,CAAC7O,KAAK,EAAE;AACvB,QAAA;AAEA,QAAA,OAAO,IAAI;AACb,MAAA;AACF,IAAA;AAEA,IAAA,IAAIhc,GAAG,KAAK0hB,UAAQ,IAAI1hB,GAAG,KAAK2hB,SAAO,EAAE;MACvC5f,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;AAEvB,MAAA,MAAMuC,WAAW,GAAG3nB,MAAM,CAACkH,OAAO,CAACqY,eAAa,CAAC;MACjD,MAAM9L,KAAK,GAAGpH,cAAc,CAAC7L,IAAI,CAAC,CAAA,SAAA,EAAYmf,wBAAsB,CAAA,CAAE,EAAEgI,WAAW,CAAC,CACjFpjB,MAAM,CAACnH,OAAO,IAAIyJ,SAAS,CAACzJ,OAAO,CAAC,CAAC;MAExC,IAAIqW,KAAK,CAACnR,MAAM,EAAE;AAChB,QAAA,MAAM6lB,UAAU,GAAG9qB,GAAG,KAAK0hB,UAAQ,GAAGtL,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC2U,EAAE,CAAC,EAAE,CAAC;QAC7DD,UAAU,CAAC9O,KAAK,EAAE;AACpB,MAAA;AAEA,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,OAAO,KAAK;AACd,EAAA;EAEA,OAAOgP,UAAUA,CAACjpB,KAAK,EAAE;AACvB,IAAA,IAAIA,KAAK,CAACiQ,MAAM,KAAK8P,kBAAkB,IAAK/f,KAAK,CAACM,IAAI,KAAK,OAAO,IAAIN,KAAK,CAAC/B,GAAG,KAAKuhB,SAAQ,EAAE;AAC5F,MAAA;AACF,IAAA;AAEA,IAAA,KAAK,MAAMthB,QAAQ,IAAIyjB,IAAI,CAACC,cAAc,EAAE;AAC1C,MAAA,IAAI1jB,QAAQ,CAAC2N,OAAO,CAACoV,SAAS,KAAK,KAAK,EAAE;AACxC,QAAA;AACF,MAAA;AAEA,MAAA,MAAMiI,YAAY,GAAGlpB,KAAK,CAACkpB,YAAY,EAAE;MACzC,MAAMC,YAAY,GAAGD,YAAY,CAACtmB,QAAQ,CAAC1E,QAAQ,CAACkkB,KAAK,CAAC;AAC1D,MAAA,IACE8G,YAAY,CAACtmB,QAAQ,CAAC1E,QAAQ,CAAC0N,QAAQ,CAAC,IACvC1N,QAAQ,CAAC2N,OAAO,CAACoV,SAAS,KAAK,QAAQ,IAAI,CAACkI,YAAa,IACzDjrB,QAAQ,CAAC2N,OAAO,CAACoV,SAAS,KAAK,SAAS,IAAIkI,YAAa,EAC1D;AACA,QAAA;AACF,MAAA;;AAEA;AACA;MACA,MAAMC,YAAY,GAAGppB,KAAK,CAACY,MAAM,CAACkH,OAAO,GAAG,MAAM,CAAC;AACnD,MAAA,MAAMuhB,gBAAgB,GAAG/mB,OAAO,CAAC8mB,YAAY,CAAC,IAAIlrB,QAAQ,CAACkkB,KAAK,CAACtgB,QAAQ,CAACsnB,YAAY,CAAC;AACvF,MAAA,IAAIlrB,QAAQ,CAACkkB,KAAK,CAACtgB,QAAQ,CAAC9B,KAAK,CAACY,MAAM,CAAC,KAAMZ,KAAK,CAACM,IAAI,KAAK,OAAO,IAAIN,KAAK,CAAC/B,GAAG,KAAKuhB,SAAO,IAAK,oCAAoC,CAACjU,IAAI,CAACvL,KAAK,CAACY,MAAM,CAAC4N,OAAO,CAAC,IAAI6a,gBAAgB,CAAC,EAAE;AACvL,QAAA;AACF,MAAA;AAEA,MAAA,MAAMxnB,aAAa,GAAG;QAAEA,aAAa,EAAE3D,QAAQ,CAAC0N;OAAU;AAE1D,MAAA,IAAI5L,KAAK,CAACM,IAAI,KAAK,OAAO,EAAE;QAC1BuB,aAAa,CAAC0M,UAAU,GAAGvO,KAAK;AAClC,MAAA;AAEA9B,MAAAA,QAAQ,CAAC8kB,aAAa,CAACnhB,aAAa,CAAC;AACvC,IAAA;AACF,EAAA;EAEA,OAAOynB,qBAAqBA,CAACtpB,KAAK,EAAE;AAClC;AACA;AACA,IAAA,MAAMupB,OAAO,GAAG,iBAAiB,CAAChe,IAAI,CAACvL,KAAK,CAACY,MAAM,CAAC4N,OAAO,CAAC,IAAIxO,KAAK,CAACY,MAAM,CAAC4oB,iBAAiB;AAC9F,IAAA,MAAMC,aAAa,GAAGzpB,KAAK,CAAC/B,GAAG,KAAKshB,YAAU;AAC9C,IAAA,MAAMmK,eAAe,GAAG,CAACjK,cAAY,EAAEC,gBAAc,CAAC,CAAC9c,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;AAC1E,IAAA,MAAM0rB,kBAAkB,GAAG,CAACzZ,gBAAc,EAAEC,iBAAe,CAAC,CAACvN,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;AAChF,IAAA,MAAM2rB,gBAAgB,GAAG,CAACjK,UAAQ,EAAEC,SAAO,CAAC,CAAChd,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;AAChE,IAAA,MAAM4rB,mBAAmB,GAAG,CAAChK,WAAS,EAAEC,WAAS,CAAC,CAACld,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;IAEtE,MAAM0qB,gBAAgB,GAAG3oB,KAAK,CAACY,MAAM,CAAC0M,OAAO,CAAC+S,uBAAuB,CAAC;AAEtE,IAAA,IAAI,CAACqJ,eAAe,IAAI,CAACD,aAAa,IAAI,CAACE,kBAAkB,IAAI,CAACC,gBAAgB,IAC9E,EAAEC,mBAAmB,IAAIlB,gBAAgB,CAAC,EAAE;AAC9C,MAAA;AACF,IAAA;AAEA,IAAA,IAAIY,OAAO,IAAI,CAACE,aAAa,EAAE;AAC7B,MAAA;AACF,IAAA;IAEA,MAAMK,eAAe,GAAG,IAAI,CAACxc,OAAO,CAACuC,sBAAoB,CAAC,GACxD,IAAI,GACH5C,cAAc,CAACS,IAAI,CAAC,IAAI,EAAEmC,sBAAoB,CAAC,CAAC,CAAC,CAAC,IACjD5C,cAAc,CAACrO,IAAI,CAAC,IAAI,EAAEiR,sBAAoB,CAAC,CAAC,CAAC,CAAC,IAClD5C,cAAc,CAACE,OAAO,CAAC0C,sBAAoB,EAAE7P,KAAK,CAACE,cAAc,CAACW,UAAU,CAAE;IAElF,IAAI,CAACipB,eAAe,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM5rB,QAAQ,GAAGyjB,IAAI,CAACnV,mBAAmB,CAACsd,eAAe,CAAC;AAE1D,IAAA,IAAI,CAACH,kBAAkB,IAAIC,gBAAgB,IAAKC,mBAAmB,IAAIlB,gBAAiB,KAAKzqB,QAAQ,CAACsqB,qBAAqB,CAACxoB,KAAK,CAAC,EAAE;AAClI,MAAA;AACF,IAAA;AAEA,IAAA,IAAI0pB,eAAe,EAAE;MACnB1pB,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MACvB9nB,QAAQ,CAAC0e,IAAI,EAAE;AACf1e,MAAAA,QAAQ,CAACoqB,eAAe,CAACtoB,KAAK,CAAC;AAC/B,MAAA;AACF,IAAA;AAEA,IAAA,IAAIypB,aAAa,IAAIvrB,QAAQ,CAACwe,QAAQ,EAAE,EAAE;MACxC1c,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MAEvB,MAAMuC,WAAW,GAAGvoB,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACqY,eAAa,CAAC;AACvD,MAAA,MAAM0I,oBAAoB,GAAGN,WAAW,EAAEzgB,OAAO,CAACsY,gBAAgB,CAAC;MAEnE,IAAIyI,oBAAoB,IAAI3qB,QAAQ,CAAC+jB,aAAa,CAAC3jB,IAAI,GAAG,CAAC,EAAE;QAC3D,MAAMwqB,aAAa,GAAG7b,cAAc,CAACE,OAAO,CAACkT,uBAAuB,EAAEwI,oBAAoB,CAAC;AAC3F3qB,QAAAA,QAAQ,CAAC+nB,aAAa,CAACsC,WAAW,EAAEM,oBAAoB,CAAC;AACzD,QAAA,IAAIC,aAAa,EAAE;UACjBA,aAAa,CAAC7O,KAAK,EAAE;AACvB,QAAA;AAEA,QAAA;AACF,MAAA;MAEA/b,QAAQ,CAACye,IAAI,EAAE;MACfmN,eAAe,CAAC7P,KAAK,EAAE;AACzB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEA7Z,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEuZ,sBAAsB,EAAEpQ,sBAAoB,EAAE8R,IAAI,CAAC2H,qBAAqB,CAAC;AACnGlpB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEuZ,sBAAsB,EAAEE,eAAa,EAAEwB,IAAI,CAAC2H,qBAAqB,CAAC;AAC5FlpB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAE6R,IAAI,CAACsH,UAAU,CAAC;AAChE7oB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEwZ,oBAAoB,EAAEyB,IAAI,CAACsH,UAAU,CAAC;AAChE7oB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;EACrFA,KAAK,CAACyO,cAAc,EAAE;EACtBkT,IAAI,CAACnV,mBAAmB,CAAC,IAAI,CAAC,CAACwD,MAAM,EAAE;AACzC,CAAC,CAAC;;ACx+BF;AACA;AACA;AACA;AACA;AACA;;;AAQA;AACA;AACA;;AAEA,MAAMvF,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAM4P,YAAU,GAAG,QAAQ;AAC3B,MAAMC,OAAO,GAAG,KAAK;AACrB,MAAMC,cAAY,GAAG,SAAS;AAC9B,MAAMC,gBAAc,GAAG,WAAW;AAClC,MAAMC,UAAQ,GAAG,MAAM;AACvB,MAAMC,SAAO,GAAG,KAAK;AACrB,MAAMC,SAAS,GAAG,OAAO;AACzB,MAAMC,SAAS,GAAG,GAAG;AAErB,MAAMiK,cAAY,GAAG,CAAA,MAAA,EAAS7d,WAAS,CAAA,CAAE;AACzC,MAAMkP,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAMoP,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAMN,iBAAe,GAAG,MAAM;AAC9B,MAAM2a,mBAAmB,GAAG,UAAU;AACtC,MAAMC,sBAAsB,GAAG,sBAAsB;AAErD,MAAMpa,sBAAoB,GAAG,6BAA6B;AAC1D,MAAMsQ,eAAa,GAAG,OAAO;AAC7B,MAAM+J,kBAAkB,GAAG,2BAA2B;AACtD,MAAM3J,sBAAsB,GAAG,yDAAyD;AACxF,MAAM4J,cAAc,GAAG,iBAAiB;AACxC,MAAMC,qBAAqB,GAAG,wBAAwB;AACtD,MAAMC,mBAAmB,GAAG,sBAAsB;AAElD,MAAM9f,SAAO,GAAG;AACd2W,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BoJ,EAAAA,QAAQ,EAAE,KAAK;AACf5d,EAAAA,IAAI,EAAE,IAAI;AACVkR,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACd2M,EAAAA,WAAW,EAAE,EAAE;AACf5L,EAAAA,SAAS,EAAE,cAAc;AACzB6L,EAAAA,MAAM,EAAE,KAAK;AACbC,EAAAA,eAAe,EAAE;AACnB,CAAC;AAED,MAAMjgB,aAAW,GAAG;AAClB0W,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BoJ,EAAAA,QAAQ,EAAE,SAAS;AACnB5d,EAAAA,IAAI,EAAE,eAAe;AACrBkR,EAAAA,MAAM,EAAE,yBAAyB;AACjC2M,EAAAA,WAAW,EAAE,QAAQ;AACrB5L,EAAAA,SAAS,EAAE,QAAQ;AACnB6L,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,eAAe,EAAE;AACnB,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,QAAQ,SAAS/e,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;AAEtB,IAAA,IAAI,CAAC+f,OAAO,GAAG,IAAI,CAAC/e,QAAQ;AAC5B,IAAA,IAAI,CAACwW,KAAK,GAAGnV,cAAc,CAACrO,IAAI,CAAC,IAAI,CAAC+rB,OAAO,EAAExK,eAAa,CAAC,CAAC,CAAC,CAAC;AAChE,IAAA,IAAI,CAACyK,aAAa,GAAG3d,cAAc,CAACE,OAAO,CAACgd,cAAc,EAAE,IAAI,CAACQ,OAAO,CAAC;AACzE,IAAA,IAAI,CAACE,YAAY,GAAG5d,cAAc,CAACE,OAAO,CAACid,qBAAqB,EAAE,IAAI,CAAChI,KAAK,CAAC;AAC7E,IAAA,IAAI,CAAC0I,UAAU,GAAG7d,cAAc,CAACE,OAAO,CAACkd,mBAAmB,EAAE,IAAI,CAACjI,KAAK,CAAC;IACzE,IAAI,CAAC2I,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,aAAa,GAAG,IAAI;IAEzB,IAAI,CAACC,kBAAkB,EAAE;IACzB,IAAI,CAACC,mBAAmB,EAAE;IAC1B,IAAI,CAACC,qBAAqB,EAAE;IAC5B,IAAI,CAAC1X,kBAAkB,EAAE;AAC3B,EAAA;;AAEA;EACA,WAAWlJ,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP,IAAA,OAAO,IAAI,CAAC0M,QAAQ,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE;AACpD,EAAA;AAEAA,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI5U,UAAU,CAAC,IAAI,CAAC2iB,OAAO,CAAC,IAAI,IAAI,CAACjO,QAAQ,EAAE,EAAE;AAC/C,MAAA;AACF,IAAA;IAEA,MAAMiG,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACqnB,OAAO,EAAEvP,YAAU,CAAC;IAChE,IAAIuH,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACub,aAAa,CAACpO,IAAI,EAAE;IAEzB,IAAI,IAAI,CAACiO,YAAY,EAAE;AACrB,MAAA,IAAI,CAACA,YAAY,CAAChsB,KAAK,GAAG,EAAE;AAC5B,MAAA,IAAI,CAACusB,YAAY,CAAC,EAAE,CAAC;MACrBvT,qBAAqB,CAAC,MAAM,IAAI,CAACgT,YAAY,CAAC5Q,KAAK,EAAE,CAAC;AACxD,IAAA;IAEA7Z,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACqnB,OAAO,EAAEtP,aAAW,CAAC;AACjD,EAAA;AAEAsB,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE,EAAE;AACpB,MAAA;AACF,IAAA;IAEA,MAAM+G,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACqnB,OAAO,EAAErP,YAAU,CAAC;IAChE,IAAImI,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACub,aAAa,CAACrO,IAAI,EAAE;IACzBvc,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACqnB,OAAO,EAAEpP,cAAY,CAAC;AAClD,EAAA;AAEAtP,EAAAA,OAAOA,GAAG;IACR,IAAI,IAAI,CAAC+e,aAAa,EAAE;AACtB,MAAA,IAAI,CAACA,aAAa,CAAC/e,OAAO,EAAE;MAC5B,IAAI,CAAC+e,aAAa,GAAG,IAAI;AAC3B,IAAA;IAEA,IAAI,IAAI,CAACD,YAAY,EAAE;AACrB,MAAA,IAAI,CAACA,YAAY,CAACjsB,MAAM,EAAE;MAC1B,IAAI,CAACisB,YAAY,GAAG,IAAI;AAC1B,IAAA;IAEA3qB,YAAY,CAACC,GAAG,CAAC,IAAI,CAAC+hB,KAAK,EAAElW,WAAS,CAAC;IACvC9L,YAAY,CAACC,GAAG,CAAC,IAAI,CAACsqB,OAAO,EAAEze,WAAS,CAAC;IAEzC,KAAK,CAACD,OAAO,EAAE;AACjB,EAAA;;AAEA;AACAyQ,EAAAA,QAAQA,GAAG;IACT,OAAO,IAAI,CAAC0F,KAAK,CAACja,SAAS,CAACrG,QAAQ,CAACuN,iBAAe,CAAC;AACvD,EAAA;AAEA4b,EAAAA,kBAAkBA,GAAG;IACnB,MAAM;AAAEve,MAAAA;KAAM,GAAG,IAAI,CAACb,OAAO;IAC7B,IAAI,CAACa,IAAI,EAAE;AACT,MAAA;AACF,IAAA;IAEA,IAAI,CAACqe,YAAY,GAAGrkB,QAAQ,CAAC2kB,aAAa,CAAC,OAAO,CAAC;AACnD,IAAA,IAAI,CAACN,YAAY,CAACzqB,IAAI,GAAG,QAAQ;AACjC,IAAA,IAAI,CAACyqB,YAAY,CAACre,IAAI,GAAGA,IAAI;AAC7B,IAAA,IAAI,CAACqe,YAAY,CAAClsB,KAAK,GAAG,EAAE;AAC5B,IAAA,IAAI,CAAC8rB,OAAO,CAAC9pB,UAAU,CAACyqB,YAAY,CAAC,IAAI,CAACP,YAAY,EAAE,IAAI,CAACJ,OAAO,CAAC;AACvE,EAAA;AAEAO,EAAAA,mBAAmBA,GAAG;IACpB,IAAI,CAACF,aAAa,GAAG,IAAIrJ,IAAI,CAAC,IAAI,CAACgJ,OAAO,EAAE;MAC1CrJ,IAAI,EAAE,IAAI,CAACc,KAAK;MAChBnB,SAAS,EAAE,IAAI,CAACpV,OAAO,CAACye,QAAQ,GAAG,SAAS,GAAG,IAAI;AACnDpJ,MAAAA,QAAQ,EAAE,IAAI,CAACrV,OAAO,CAACqV,QAAQ;AAC/BtD,MAAAA,MAAM,EAAE,IAAI,CAAC/R,OAAO,CAAC+R,MAAM;AAC3Be,MAAAA,SAAS,EAAE,IAAI,CAAC9S,OAAO,CAAC8S;AAC1B,KAAC,CAAC;AACJ,EAAA;AAEAwM,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,MAAMI,aAAa,GAAG,IAAI,CAACC,iBAAiB,EAAE;AAC9C,IAAA,IAAID,aAAa,CAACroB,MAAM,GAAG,CAAC,EAAE;MAC5B,IAAI,CAACuoB,iBAAiB,EAAE;MACxB,IAAI,CAACC,kBAAkB,EAAE;AAC3B,IAAA,CAAC,MAAM;MACL,IAAI,CAACC,gBAAgB,EAAE;AACzB,IAAA;AACF,EAAA;AAEAlY,EAAAA,kBAAkBA,GAAG;AACnBrT,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,OAAO,EAAE8H,kBAAkB,EAAElqB,KAAK,IAAI;MAChE,MAAMkW,IAAI,GAAGlW,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACoiB,kBAAkB,CAAC;AACrD,MAAA,IAAI,CAAChU,IAAI,IAAIlO,UAAU,CAACkO,IAAI,CAAC,EAAE;AAC7B,QAAA;AACF,MAAA;MAEAlW,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;AACvB,MAAA,IAAI,CAAC4F,WAAW,CAAC1V,IAAI,CAAC;AACxB,IAAA,CAAC,CAAC;IAEF9V,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC8nB,OAAO,EAAE,SAAS,EAAE3qB,KAAK,IAAI;AAChD,MAAA,IAAI,CAAC6rB,oBAAoB,CAAC7rB,KAAK,CAAC;AAClC,IAAA,CAAC,CAAC;IAEFI,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACuf,KAAK,EAAE,SAAS,EAAEpiB,KAAK,IAAI;AAC9C,MAAA,IAAI,CAAC8rB,kBAAkB,CAAC9rB,KAAK,CAAC;AAChC,IAAA,CAAC,CAAC;IAEF,IAAI,IAAI,CAAC6qB,YAAY,EAAE;MACrBzqB,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACgoB,YAAY,EAAE,OAAO,EAAE,MAAM;QAChD,IAAI,CAACO,YAAY,CAAC,IAAI,CAACP,YAAY,CAAChsB,KAAK,CAAC;AAC5C,MAAA,CAAC,CAAC;MAEFuB,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACgoB,YAAY,EAAE,SAAS,EAAE7qB,KAAK,IAAI;AACrD,QAAA,IAAIA,KAAK,CAAC/B,GAAG,KAAKyhB,gBAAc,EAAE;UAChC1f,KAAK,CAACyO,cAAc,EAAE;AACtB,UAAA,MAAM4F,KAAK,GAAG,IAAI,CAAC0X,gBAAgB,EAAE;AACrC,UAAA,IAAI1X,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;AACpBmR,YAAAA,KAAK,CAAC,CAAC,CAAC,CAAC4F,KAAK,EAAE;AAClB,UAAA;AACF,QAAA;AAEA,QAAA,IAAIja,KAAK,CAAC/B,GAAG,KAAKshB,YAAU,EAAE;UAC5B,IAAI,CAAC5C,IAAI,EAAE;AACX,UAAA,IAAI,CAACgO,OAAO,CAAC1Q,KAAK,EAAE;AACtB,QAAA;AACF,MAAA,CAAC,CAAC;AACJ,IAAA;AACF,EAAA;EAEA2R,WAAWA,CAAC1V,IAAI,EAAE;AAChB,IAAA,IAAI,IAAI,CAACrK,OAAO,CAACye,QAAQ,EAAE;AACzBpU,MAAAA,IAAI,CAAC/N,SAAS,CAAC6H,MAAM,CAACga,mBAAmB,CAAC;AAC1C9T,MAAAA,IAAI,CAACtR,YAAY,CAAC,eAAe,EAAEsR,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAACkoB,mBAAmB,CAAC,CAAC;AAClF,IAAA,CAAC,MAAM;AACL,MAAA,MAAMgC,kBAAkB,GAAG/e,cAAc,CAAC7L,IAAI,CAAC,CAAA,CAAA,EAAI4oB,mBAAmB,CAAA,CAAE,EAAE,IAAI,CAAC5H,KAAK,CAAC;AACrF,MAAA,KAAK,MAAM1U,IAAI,IAAIse,kBAAkB,EAAE;AACrCte,QAAAA,IAAI,CAACvF,SAAS,CAACrJ,MAAM,CAACkrB,mBAAmB,CAAC;AAC1Ctc,QAAAA,IAAI,CAAC9I,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC;AAC7C,MAAA;AAEAsR,MAAAA,IAAI,CAAC/N,SAAS,CAACiM,GAAG,CAAC4V,mBAAmB,CAAC;AACvC9T,MAAAA,IAAI,CAACtR,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;AAC5C,IAAA;IAEA,IAAI,CAAC6mB,iBAAiB,EAAE;IACxB,IAAI,CAACC,kBAAkB,EAAE;AAEzB,IAAA,MAAM7sB,KAAK,GAAG,IAAI,CAACgN,OAAO,CAACye,QAAQ,GACjC,IAAI,CAACkB,iBAAiB,EAAE,CAAC1e,GAAG,CAACkB,EAAE,IAAIA,EAAE,CAAC9I,OAAO,CAAC+mB,OAAO,CAAC,GACtD/V,IAAI,CAAChR,OAAO,CAAC+mB,OAAO;IAEtB7rB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACqnB,OAAO,EAAEZ,cAAY,EAAE;MAC/ClrB,KAAK;AACLqX,MAAAA;AACF,KAAC,CAAC;AAEF,IAAA,IAAI,CAAC,IAAI,CAACrK,OAAO,CAACye,QAAQ,EAAE;MAC1B,IAAI,CAAC3N,IAAI,EAAE;AACX,MAAA,IAAI,CAACgO,OAAO,CAAC1Q,KAAK,EAAE;AACtB,IAAA;AACF,EAAA;AAEAwR,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,MAAMF,aAAa,GAAG,IAAI,CAACC,iBAAiB,EAAE;AAE9C,IAAA,IAAID,aAAa,CAACroB,MAAM,KAAK,CAAC,EAAE;MAC9B,IAAI,CAACyoB,gBAAgB,EAAE;AACvB,MAAA;AACF,IAAA;IAEA,IAAI,CAACf,aAAa,CAACziB,SAAS,CAACrJ,MAAM,CAACmrB,sBAAsB,CAAC;IAE3D,IAAI,IAAI,CAACpe,OAAO,CAACye,QAAQ,IAAIiB,aAAa,CAACroB,MAAM,GAAG,CAAC,EAAE;MACrD,IAAI,CAAC0nB,aAAa,CAACsB,WAAW,GAAG,CAAA,EAAGX,aAAa,CAACroB,MAAM,CAAA,SAAA,CAAW;AACrE,IAAA,CAAC,MAAM;AACL,MAAA,MAAMgT,IAAI,GAAGqV,aAAa,CAAC,CAAC,CAAC;MAC7B,MAAMzQ,KAAK,GAAG7N,cAAc,CAACE,OAAO,CAAC,uCAAuC,EAAE+I,IAAI,CAAC;AACnF,MAAA,IAAI,CAAC0U,aAAa,CAACsB,WAAW,GAAGpR,KAAK,GAAGA,KAAK,CAACoR,WAAW,GAAGhW,IAAI,CAACgW,WAAW,CAACrf,IAAI,EAAE;AACtF,IAAA;AACF,EAAA;AAEA8e,EAAAA,gBAAgBA,GAAG;IACjB,MAAM;AAAEpB,MAAAA;KAAa,GAAG,IAAI,CAAC1e,OAAO;AACpC,IAAA,IAAI0e,WAAW,EAAE;AACf,MAAA,IAAI,CAACK,aAAa,CAACsB,WAAW,GAAG3B,WAAW;MAC5C,IAAI,CAACK,aAAa,CAACziB,SAAS,CAACiM,GAAG,CAAC6V,sBAAsB,CAAC;AAC1D,IAAA;AACF,EAAA;AAEAyB,EAAAA,kBAAkBA,GAAG;AACnB,IAAA,IAAI,CAAC,IAAI,CAACX,YAAY,EAAE;AACtB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMQ,aAAa,GAAG,IAAI,CAACC,iBAAiB,EAAE;AAC9C,IAAA,MAAM7sB,MAAM,GAAG4sB,aAAa,CAACze,GAAG,CAACkB,EAAE,IAAIA,EAAE,CAAC9I,OAAO,CAAC+mB,OAAO,CAAC;IAC1D,IAAI,CAAClB,YAAY,CAAClsB,KAAK,GAAG,IAAI,CAACgN,OAAO,CAACye,QAAQ,GAAG3rB,MAAM,CAACqO,IAAI,CAAC,GAAG,CAAC,GAAIrO,MAAM,CAAC,CAAC,CAAC,IAAI,EAAG;AACxF,EAAA;AAEA6sB,EAAAA,iBAAiBA,GAAG;IAClB,OAAOve,cAAc,CAAC7L,IAAI,CAAC,CAAA,CAAA,EAAI4oB,mBAAmB,CAAA,CAAE,EAAE,IAAI,CAAC5H,KAAK,CAAC;AACnE,EAAA;AAEA2J,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,OAAO9e,cAAc,CAAC7L,IAAI,CAACmf,sBAAsB,EAAE,IAAI,CAAC6B,KAAK,CAAC,CAC3Djd,MAAM,CAAC+Q,IAAI,IAAIzO,SAAS,CAACyO,IAAI,CAAC,CAAC;AACpC,EAAA;EAEAkV,YAAYA,CAACe,KAAK,EAAE;AAClB,IAAA,MAAMC,eAAe,GAAG,IAAI,CAACC,cAAc,CAACF,KAAK,CAAC1nB,WAAW,EAAE,CAACoI,IAAI,EAAE,CAAC;IACvE,MAAMwH,KAAK,GAAGpH,cAAc,CAAC7L,IAAI,CAAC8oB,kBAAkB,EAAE,IAAI,CAAC9H,KAAK,CAAC;IACjE,IAAIkK,YAAY,GAAG,CAAC;AAEpB,IAAA,KAAK,MAAMpW,IAAI,IAAI7B,KAAK,EAAE;AACxB,MAAA,MAAMkY,IAAI,GAAG,IAAI,CAACF,cAAc,CAACnW,IAAI,CAACgW,WAAW,CAACznB,WAAW,EAAE,CAACoI,IAAI,EAAE,CAAC;MACvE,MAAMS,OAAO,GAAG,CAAC8e,eAAe,IAAIG,IAAI,CAAC3pB,QAAQ,CAACwpB,eAAe,CAAC;MAClElW,IAAI,CAACT,KAAK,CAAC2L,OAAO,GAAG9T,OAAO,GAAG,EAAE,GAAG,MAAM;AAC1C,MAAA,IAAIA,OAAO,EAAE;AACXgf,QAAAA,YAAY,EAAE;AAChB,MAAA;AACF,IAAA;IAEA,IAAI,IAAI,CAACxB,UAAU,EAAE;AACnB,MAAA,IAAI,CAACA,UAAU,CAAC3iB,SAAS,CAAC6H,MAAM,CAAC,QAAQ,EAAEsc,YAAY,GAAG,CAAC,CAAC;AAC9D,IAAA;AACF,EAAA;EAEAD,cAAcA,CAACE,IAAI,EAAE;AACnB,IAAA,IAAI,IAAI,CAAC1gB,OAAO,CAAC4e,eAAe,EAAE;AAChC,MAAA,OAAO8B,IAAI,CAACC,SAAS,CAAC,KAAK,CAAC,CAACtqB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;AAC9D,IAAA;AAEA,IAAA,OAAOqqB,IAAI;AACb,EAAA;EAEAV,oBAAoBA,CAAC7rB,KAAK,EAAE;IAC1B,MAAM;AAAE/B,MAAAA;AAAI,KAAC,GAAG+B,KAAK;AAErB,IAAA,IAAI/B,GAAG,KAAKyhB,gBAAc,IAAIzhB,GAAG,KAAKwhB,cAAY,EAAE;MAClDzf,KAAK,CAACyO,cAAc,EAAE;AACtB,MAAA,IAAI,CAAC,IAAI,CAACiO,QAAQ,EAAE,EAAE;QACpB,IAAI,CAACE,IAAI,EAAE;AACb,MAAA;AAEA,MAAA,MAAMvI,KAAK,GAAG,IAAI,CAAC0X,gBAAgB,EAAE;AACrC,MAAA,IAAI1X,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;AACpB,QAAA,MAAMtC,MAAM,GAAG3C,GAAG,KAAKyhB,gBAAc,GAAGrL,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC2U,EAAE,CAAC,EAAE,CAAC;QAC/DpoB,MAAM,CAACqZ,KAAK,EAAE;AAChB,MAAA;AAEA,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAChc,GAAG,KAAK4hB,SAAS,IAAI5hB,GAAG,KAAK6hB,SAAS,KAAK,CAAC,IAAI,CAACpD,QAAQ,EAAE,EAAE;MAChE1c,KAAK,CAACyO,cAAc,EAAE;MACtB,IAAI,CAACmO,IAAI,EAAE;AACb,IAAA;AACF,EAAA;EAEAkP,kBAAkBA,CAAC9rB,KAAK,EAAE;IACxB,MAAM;MAAE/B,GAAG;AAAE2C,MAAAA;AAAO,KAAC,GAAGZ,KAAK;IAE7B,IAAI/B,GAAG,KAAKshB,YAAU,EAAE;MACtBvf,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MACvB,IAAI,CAACrJ,IAAI,EAAE;AACX,MAAA,IAAI,CAACgO,OAAO,CAAC1Q,KAAK,EAAE;AACpB,MAAA;AACF,IAAA;IAEA,IAAIhc,GAAG,KAAKuhB,OAAO,EAAE;MACnB,IAAI,CAAC7C,IAAI,EAAE;AACX,MAAA;AACF,IAAA;AAEA,IAAA,MAAM4M,OAAO,GAAG3oB,MAAM,CAAC0M,OAAO,CAAC,OAAO,CAAC;AAEvC,IAAA,IAAIrP,GAAG,KAAKyhB,gBAAc,IAAIzhB,GAAG,KAAKwhB,cAAY,EAAE;MAClDzf,KAAK,CAACyO,cAAc,EAAE;AACtB,MAAA,MAAM4F,KAAK,GAAG,IAAI,CAAC0X,gBAAgB,EAAE;AACrC,MAAA,IAAI1X,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;QACpB0G,oBAAoB,CAACyK,KAAK,EAAEzT,MAAM,EAAE3C,GAAG,KAAKyhB,gBAAc,EAAE,CAACrL,KAAK,CAACzR,QAAQ,CAAChC,MAAM,CAAC,CAAC,CAACqZ,KAAK,EAAE;AAC9F,MAAA;AAEA,MAAA;AACF,IAAA;AAEA,IAAA,IAAIhc,GAAG,KAAK0hB,UAAQ,IAAI1hB,GAAG,KAAK2hB,SAAO,EAAE;MACvC5f,KAAK,CAACyO,cAAc,EAAE;AACtB,MAAA,MAAM4F,KAAK,GAAG,IAAI,CAAC0X,gBAAgB,EAAE;AACrC,MAAA,IAAI1X,KAAK,CAACnR,MAAM,GAAG,CAAC,EAAE;AACpB,QAAA,MAAM6lB,UAAU,GAAG9qB,GAAG,KAAK0hB,UAAQ,GAAGtL,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC2U,EAAE,CAAC,EAAE,CAAC;QAC7DD,UAAU,CAAC9O,KAAK,EAAE;AACpB,MAAA;AAEA,MAAA;AACF,IAAA;IAEA,IAAI,CAAChc,GAAG,KAAK4hB,SAAS,IAAI5hB,GAAG,KAAK6hB,SAAS,KAAK,CAACyJ,OAAO,EAAE;MACxDvpB,KAAK,CAACyO,cAAc,EAAE;AACtB,MAAA,MAAMyH,IAAI,GAAGtV,MAAM,CAACkH,OAAO,CAACoiB,kBAAkB,CAAC;AAC/C,MAAA,IAAIhU,IAAI,IAAI,CAAClO,UAAU,CAACkO,IAAI,CAAC,EAAE;AAC7B,QAAA,IAAI,CAAC0V,WAAW,CAAC1V,IAAI,CAAC;AACxB,MAAA;AACF,IAAA;AACF,EAAA;;AAEA;EACA,OAAOuW,eAAeA,CAAC7hB,MAAM,EAAE;AAC7B,IAAA,OAAO,IAAI,CAAC8hB,IAAI,CAAC,YAAY;MAC3B,MAAM3d,IAAI,GAAG2b,QAAQ,CAACle,mBAAmB,CAAC,IAAI,EAAE5B,MAAM,CAAC;AAEvD,MAAA,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;AAC9B,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,OAAOmE,IAAI,CAACnE,MAAM,CAAC,KAAK,WAAW,EAAE;AACvC,QAAA,MAAM,IAAIY,SAAS,CAAC,CAAA,iBAAA,EAAoBZ,MAAM,GAAG,CAAC;AACpD,MAAA;AAEAmE,MAAAA,IAAI,CAACnE,MAAM,CAAC,EAAE;AAChB,IAAA,CAAC,CAAC;AACJ,EAAA;AACF;;AAEA;AACA;AACA;;AAEAxK,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;EACrFA,KAAK,CAACyO,cAAc,EAAE;EACtBic,QAAQ,CAACle,mBAAmB,CAAC,IAAI,CAAC,CAACwD,MAAM,EAAE;AAC7C,CAAC,CAAC;AAEF5P,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,kBAAkB,EAAE,MAAM;EAClD,KAAK,MAAMsJ,MAAM,IAAI/C,cAAc,CAAC7L,IAAI,CAACyO,sBAAoB,CAAC,EAAE;AAC9D6a,IAAAA,QAAQ,CAACle,mBAAmB,CAACwD,MAAM,CAAC;AACtC,EAAA;AACF,CAAC,CAAC;;ACrcF;AACA,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAAC,yBAAyB,CAAC,mBAAmB,CAAC,MAAM,CAAC,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,YAAY,CAAC,IAAE,CAAC,QAAQ,CAAC,IAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,IAAI,IAAI,CAAC,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,+DAA+D,CAAC,CAAC,OAAO,CAAC,8FAA8F,CAAC,SAAS,CAAC,wIAAwI,CAAC,aAAa,CAAC,yDAAyD,CAAC,oBAAoB,CAAC,qJAAqJ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,kBAAkB,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,IAAE,GAAG,CAAC,CAAC,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,GAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,qBAAqB,EAAE,CAAC,OAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,uBAAuB,EAAE,CAAC,OAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,uBAAuB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,uBAAuB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAE,CAAC,MAAM,CAAC,IAAE,CAAC,IAAI,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,4CAA4C,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC,CAAC,mBAAmB,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,EAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,8CAA8C,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,gDAAgD,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,gIAAgI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,4DAA4D,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,4IAA4I,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,8CAA8C,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,oGAAoG,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,gDAAgD,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,oFAAoF,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,uDAAuD,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,2CAA2C,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,kIAAkI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,wEAAwE,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,4MAA4M,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,8CAA8C,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,+CAA+C,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,+HAA+H,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,sCAAsC,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,mCAAmC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,mCAAmC,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,4CAA4C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iEAAiE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,gDAAgD,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,gCAAgC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,OAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,wCAAwC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,iCAAiC,EAAE,CAAC,CAAC,4BAA4B,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,kCAAkC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,qBAAqB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,gDAAgD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,oDAAoD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,iCAAiC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,6BAA6B,EAAE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,yBAAyB,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,8BAA8B,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,gCAAgC,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,GAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAE,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,sCAAsC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAE,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,gBAAgB,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAE,CAAC,EAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,KAAE,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAE,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAE,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,GAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,iCAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,iCAAiC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAE,CAAC,KAAI,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,GAAE,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,GAAE,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAM,CAAC,EAAE,EAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,oBAAoB,CAAC,GAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,KAAK,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,IAAE,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAE,CAAC,EAAE,EAAC,CAAC,CAAC,8BAA8B,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,CAAC,2CAA2C,CAAC,qBAAqB,CAAC,kCAAkC,CAAC,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,iBAAiB,GAAE,CAAC,EAAE,EAAE,EAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,wBAAwB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,8BAA8B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,0BAA0B,EAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,WAAW,CAAC,2CAA2C,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,YAAY,CAAC,gBAAgB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAC,CAAC,GAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAC,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,CAAC,iBAAiB,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,2BAA2B,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAE,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,IAAE,EAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,GAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,EAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,OAAO,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAE,CAAC,OAAM,MAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,aAAa,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,2CAA2C,CAAC,qCAAqC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC,kBAAkB,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,IAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,IAAI,CAAC,IAAE,CAAC,MAAM,CAAC,IAAE,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,IAAE,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,GAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAM,MAAE,CAAC,GAAG,QAAQ,CAAC,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,OAAM,MAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,KAAK,CAAC,IAAE,CAAC,IAAI,CAAC,IAAE,CAAC,MAAM,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,SAAS,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,KAAK,CAAC,uCAAuC,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,qCAAqC,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,4BAA4B,CAAC,KAAK,CAAC,4BAA4B,CAAC,aAAa,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,4BAA4B,CAAC,WAAW,CAAC,8BAA8B,CAAC,UAAU,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,oBAAoB,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,wBAAwB,CAAC,SAAS,CAAC,wBAAwB,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,kBAAkB,CAAC,0BAA0B,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,iBAAiB,CAAC,WAAW,CAAC,kBAAkB,CAAC,UAAU,CAAC,iBAAiB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,MAAM,eAAe,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,SAAS,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS;;ACDt05D;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMvF,MAAI,GAAG,YAAY;AACzB,MAAMuB,UAAQ,GAAG,eAAe;AAChC,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMoa,cAAY,GAAG,CAAA,MAAA,EAAS7d,WAAS,CAAA,CAAE;AACzC,MAAMkP,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAMoP,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAC/D,MAAMgd,sBAAsB,GAAG,CAAA,OAAA,EAAUzgB,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAEnE,MAAME,sBAAoB,GAAG,+BAA+B;AAE5D,MAAM+c,UAAU,GAAG,GAAG,CAAA;;AAEtB,MAAMriB,SAAO,GAAG;AACdsiB,EAAAA,eAAe,EAAE,IAAI;AAAE;AACvBC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,UAAU,EAAE,IAAI;AAAE;AAClBC,EAAAA,cAAc,EAAE,IAAI;AAAE;AACtBC,EAAAA,kBAAkB,EAAE,CAAC;AAAE;AACvBC,EAAAA,YAAY,EAAE,CAAC;AAAE;AACjBC,EAAAA,MAAM,EAAE,KAAK;AAAE;AACfC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,eAAe,EAAE,IAAI;AAAE;AACvBC,EAAAA,aAAa,EAAE,EAAE;AACjBC,EAAAA,aAAa,EAAE,QAAQ;AAAE;AACzB7O,EAAAA,SAAS,EAAE,MAAM;AAAE;EACnB8O,UAAU,EAAE,EAAE;AAChB,CAAC;AAED,MAAMjjB,aAAW,GAAG;AAClBqiB,EAAAA,eAAe,EAAE,eAAe;AAChCC,EAAAA,OAAO,EAAE,6BAA6B;AACtCC,EAAAA,OAAO,EAAE,6BAA6B;AACtCC,EAAAA,UAAU,EAAE,wBAAwB;AACpCC,EAAAA,cAAc,EAAE,+BAA+B;AAC/CC,EAAAA,kBAAkB,EAAE,QAAQ;AAC5BC,EAAAA,YAAY,EAAE,QAAQ;AACtBC,EAAAA,MAAM,EAAE,SAAS;AACjBC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,eAAe,EAAE,uBAAuB;AACxCC,EAAAA,aAAa,EAAE,OAAO;AACtBC,EAAAA,aAAa,EAAE,QAAQ;AACvB7O,EAAAA,SAAS,EAAE,QAAQ;AACnB8O,EAAAA,UAAU,EAAE;AACd,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,UAAU,SAAS/hB,aAAa,CAAC;AACrCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAAC+iB,SAAS,GAAG,IAAI;IACrB,IAAI,CAACjR,QAAQ,GAAG,KAAK;IAErB,IAAI,CAACkR,aAAa,EAAE;AACtB,EAAA;;AAEA;EACA,WAAWrjB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAACnE,OAAO,CAACuhB,MAAM,EAAE;AACvB,MAAA,OAAM;AACR,IAAA;AAEA,IAAA,OAAO,IAAI,CAAC1Q,QAAQ,GAAG,IAAI,CAACC,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI,EAAE;AAClD,EAAA;AAEAA,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,IAAI,CAAC/Q,OAAO,CAACuhB,MAAM,EAAE;AACvB,MAAA,OAAM;AACR,IAAA;AAEA,IAAA,IAAI,CAAC,IAAI,CAACO,SAAS,IAAI3lB,UAAU,CAAC,IAAI,CAAC4D,QAAQ,CAAC,IAAI,IAAI,CAAC8Q,QAAQ,EAAE;AACjE,MAAA;AACF,IAAA;IAEA,MAAMiG,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwP,YAAU,CAAC;IACjE,IAAIuH,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACke,SAAS,CAAC/Q,IAAI,EAAE;IACrB,IAAI,CAACF,QAAQ,GAAG,IAAI;IAEpBtc,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEyP,aAAW,CAAC;AAClD,EAAA;AAEAsB,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,IAAI,CAAC9Q,OAAO,CAACuhB,MAAM,EAAE;AACvB,MAAA,OAAM;AACR,IAAA;IAEA,IAAI,CAAC,IAAI,CAACO,SAAS,IAAI,CAAC,IAAI,CAACjR,QAAQ,EAAE;AACrC,MAAA;AACF,IAAA;IAEA,MAAM+G,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0P,YAAU,CAAC;IACjE,IAAImI,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACke,SAAS,CAAChR,IAAI,EAAE;IACrB,IAAI,CAACD,QAAQ,GAAG,KAAK;IAErBtc,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2P,cAAY,CAAC;AACnD,EAAA;AAEAtP,EAAAA,OAAOA,GAAG;IACR,IAAI,IAAI,CAAC4hB,cAAc,EAAE;AACvB,MAAA,IAAI,CAACA,cAAc,CAACvY,UAAU,EAAE;MAChC,IAAI,CAACuY,cAAc,GAAG,IAAI;AAC5B,IAAA;IAEA,IAAI,IAAI,CAACF,SAAS,EAAE;AAClB,MAAA,IAAI,CAACA,SAAS,CAACG,OAAO,EAAE;AAC1B,IAAA;IAEA,IAAI,CAACH,SAAS,GAAG,IAAI;IACrB,KAAK,CAAC1hB,OAAO,EAAE;AACjB,EAAA;AAEA8hB,EAAAA,gBAAgBA,GAAG;IACjB,MAAMC,KAAK,GAAG,IAAI,CAACL,SAAS,EAAEM,OAAO,EAAEV,aAAa;AACpD,IAAA,OAAOS,KAAK,GAAG,CAAC,GAAGA,KAAK,CAAC,GAAG,EAAE;AAChC,EAAA;EAEAE,gBAAgBA,CAACF,KAAK,EAAE;IACtB,IAAI,IAAI,CAACL,SAAS,EAAE;AAClB,MAAA,IAAI,CAACA,SAAS,CAAC5vB,GAAG,CAAC;AAAEwvB,QAAAA,aAAa,EAAES;AAAM,OAAC,CAAC;AAC9C,IAAA;AACF,EAAA;;AAEA;AACAJ,EAAAA,aAAaA,GAAG;IACd,IAAI,CAACO,QAAQ,GAAG,IAAI,CAACviB,QAAQ,CAAC4C,OAAO,KAAK,OAAO;AACjD,IAAA,IAAI,CAAC4f,SAAS,GAAG,IAAI,CAACviB,OAAO,CAACuhB,MAAM;;AAEpC;IACA,IAAI,IAAI,CAACgB,SAAS,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE;MACpC,IAAI,CAACE,WAAW,GAAG,IAAI,CAACziB,QAAQ,CAACpE,aAAa,CAAC,mCAAmC,CAAC;AACrF,IAAA;AAEA,IAAA,IAAI,CAAC8mB,gBAAgB,GAAG,IAAI,CAACC,uBAAuB,EAAE;AACtD,IAAA,IAAI,CAACC,eAAe,GAAG,IAAI,CAACC,sBAAsB,EAAE;AAEpD,IAAA,MAAMC,eAAe,GAAG,IAAI,CAACC,qBAAqB,EAAE;;AAEpD;AACA;IACA,IAAI,CAAChB,SAAS,GAAG,IAAIiB,QAAQ,CAAC,IAAI,CAACN,gBAAgB,EAAEI,eAAe,CAAC;AACrE,IAAA,IAAI,CAACf,SAAS,CAACkB,IAAI,EAAE;;AAErB;IACA,IAAI,CAACC,mBAAmB,EAAE;;AAE1B;IACA,IAAI,IAAI,CAACX,QAAQ,IAAI,IAAI,CAACviB,QAAQ,CAAC/M,KAAK,EAAE;MACxC,IAAI,CAACkwB,gBAAgB,EAAE;AACzB,IAAA;;AAEA;IACA,IAAI,CAACC,+BAA+B,EAAE;AACxC,EAAA;AAEAA,EAAAA,+BAA+BA,GAAG;IAChC,MAAM;AAAEzB,MAAAA;KAAe,GAAG,IAAI,CAAC1hB,OAAO;IACtC,IAAI,CAAC0hB,aAAa,IAAIA,aAAa,CAACrqB,MAAM,KAAK,CAAC,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAM+rB,aAAa,GAAG,IAAI,CAACC,mBAAmB,CAAC3B,aAAa,CAAC;IAE7D,IAAI,IAAI,CAACY,QAAQ,EAAE;AACjB,MAAA,IAAI,CAACviB,QAAQ,CAAC/M,KAAK,GAAGowB,aAAa;AACrC,IAAA;IAEA,IAAI,IAAI,CAACZ,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAACxvB,KAAK,GAAG0uB,aAAa,CAACvgB,IAAI,CAAC,GAAG,CAAC;AAClD,IAAA;IAEA,IAAI,IAAI,CAACwhB,eAAe,EAAE;AACxB,MAAA,IAAI,CAACA,eAAe,CAACtC,WAAW,GAAG+C,aAAa;AAClD,IAAA;AACF,EAAA;AAEAV,EAAAA,uBAAuBA,GAAG;IACxB,IAAI;AAAEjB,MAAAA;KAAiB,GAAG,IAAI,CAACzhB,OAAO;AAEtC,IAAA,IAAI,OAAOyhB,eAAe,KAAK,QAAQ,EAAE;AACvCA,MAAAA,eAAe,GAAG5mB,QAAQ,CAACc,aAAa,CAAC8lB,eAAe,CAAC;AAC3D,IAAA;;AAEA;IACA,IAAI,CAACA,eAAe,IAAI,IAAI,CAACa,QAAQ,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE;MACxD,MAAMpS,MAAM,GAAG,IAAI,CAACpQ,QAAQ,CAAC9D,OAAO,CAAC,aAAa,CAAC;AACnD,MAAA,IAAIkU,MAAM,EAAE;AACVsR,QAAAA,eAAe,GAAGtR,MAAM;AAC1B,MAAA;AACF,IAAA;AAEA,IAAA,OAAOsR,eAAe,IAAI,IAAI,CAAC1hB,QAAQ;AACzC,EAAA;AAEA6iB,EAAAA,sBAAsBA,GAAG;IACvB,MAAM;AAAExB,MAAAA;KAAgB,GAAG,IAAI,CAACphB,OAAO;AAEvC,IAAA,IAAI,OAAOohB,cAAc,KAAK,QAAQ,EAAE;AACtC,MAAA,OAAOvmB,QAAQ,CAACc,aAAa,CAACylB,cAAc,CAAC;AAC/C,IAAA;;AAEA;AACA,IAAA,IAAIA,cAAc,KAAK,IAAI,IAAKA,cAAc,KAAK,IAAI,IAAI,CAAC,IAAI,CAACkB,QAAQ,IAAI,CAAC,IAAI,CAACC,SAAU,EAAE;MAC7F,MAAMe,YAAY,GAAG,IAAI,CAACvjB,QAAQ,CAACpE,aAAa,CAAC,8BAA8B,CAAC;AAChF,MAAA,OAAO2nB,YAAY,IAAI,IAAI,CAACvjB,QAAQ;AACtC,IAAA;AAEA,IAAA,OAAOqhB,cAAc;AACvB,EAAA;AAEAmC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAO,IAAI,CAACxjB,QAAQ,CAAC9D,OAAO,CAAC,iBAAiB,CAAC;AACjD,EAAA;AAEAunB,EAAAA,kBAAkBA,GAAG;AACnB;IACA,MAAM;AAAExC,MAAAA;KAAiB,GAAG,IAAI,CAAChhB,OAAO;AACxC,IAAA,IAAIghB,eAAe,EAAE;AACnB,MAAA,OAAOA,eAAe;AACxB,IAAA;AAEA,IAAA,MAAMrf,QAAQ,GAAG,IAAI,CAAC4hB,iBAAiB,EAAE;AACzC,IAAA,OAAO5hB,QAAQ,EAAEjI,YAAY,CAAC,eAAe,CAAC,IAAI,IAAI;AACxD,EAAA;EAEA+pB,mBAAmBA,CAACtxB,OAAO,EAAE;IAC3B,IAAI,CAACA,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEA,IAAA,MAAMuxB,KAAK,GAAG,IAAI,CAACF,kBAAkB,EAAE;AAEvC,IAAA,IAAIE,KAAK,EAAE;AACT;AACAvxB,MAAAA,OAAO,CAAC4G,YAAY,CAAC,eAAe,EAAE2qB,KAAK,CAAC;AAC9C,IAAA,CAAC,MAAM;AACL;AACAvxB,MAAAA,OAAO,CAAC8G,eAAe,CAAC,eAAe,CAAC;AAC1C,IAAA;AACF,EAAA;AAEAgqB,EAAAA,mBAAmBA,GAAG;AACpB;AACA,IAAA,MAAMthB,QAAQ,GAAG,IAAI,CAAC4hB,iBAAiB,EAAE;IACzC,IAAI,CAAC5hB,QAAQ,IAAI,IAAI,CAAC3B,OAAO,CAACghB,eAAe,EAAE;AAC7C;AACA,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACgB,cAAc,GAAG,IAAI2B,gBAAgB,CAAC,MAAM;MAC/C,IAAI,CAACF,mBAAmB,CAAC,IAAI,CAAC3B,SAAS,EAAEM,OAAO,EAAEwB,WAAW,CAAC;AAChE,IAAA,CAAC,CAAC;AAEF,IAAA,IAAI,CAAC5B,cAAc,CAAC1X,OAAO,CAAC3I,QAAQ,EAAE;AACpCxI,MAAAA,UAAU,EAAE,IAAI;MAChB0qB,eAAe,EAAE,CAAC,eAAe;AACnC,KAAC,CAAC;AACJ,EAAA;AAEAf,EAAAA,qBAAqBA,GAAG;AACtB;AACA,IAAA,MAAMY,KAAK,GAAG,IAAI,CAACF,kBAAkB,EAAE;AACvC;IACA,MAAMM,QAAQ,GAAG,CAACJ,KAAK,IAAIA,KAAK,KAAK,MAAM,GAAG,QAAQ,GAAGA,KAAK;AAE9D,IAAA,MAAMb,eAAe,GAAG;AACtB,MAAA,GAAG,IAAI,CAAC7iB,OAAO,CAAC4hB,UAAU;AAC1BmC,MAAAA,SAAS,EAAE,CAAC,IAAI,CAACxB,SAAS;AAC1ByB,MAAAA,eAAe,EAAE,IAAI,CAAChkB,OAAO,CAAC8S,SAAS;AACvCwO,MAAAA,YAAY,EAAE,IAAI,CAACthB,OAAO,CAACshB,YAAY;AACvCE,MAAAA,MAAM,EAAE,IAAI,CAACxhB,OAAO,CAACwhB,MAAM;AAC3ByC,MAAAA,kBAAkB,EAAE,IAAI,CAACjkB,OAAO,CAAC2hB,aAAa;AAC9CD,MAAAA,aAAa,EAAE,IAAI,CAAC1hB,OAAO,CAAC0hB,aAAa;AACzCL,MAAAA,kBAAkB,EAAE,IAAI,CAACrhB,OAAO,CAACqhB,kBAAkB;MACnD5sB,IAAI,EAAE,IAAI,CAACuL,OAAO,CAACqhB,kBAAkB,GAAG,CAAC,GAAG,UAAU,GAAG,SAAS;AAClE6C,MAAAA,aAAa,EAAEJ,QAAQ;AACvBK,MAAAA,eAAe,EAAE,iBAAiB;AAClCC,MAAAA,WAAW,EAAEA,CAACC,IAAI,EAAElwB,KAAK,KAAK,IAAI,CAACmwB,gBAAgB,CAACD,IAAI,EAAElwB,KAAK,CAAC;MAChEowB,MAAM,EAAEF,IAAI,IAAI;QACd,IAAI,CAACZ,mBAAmB,CAACY,IAAI,CAACjC,OAAO,CAACwB,WAAW,CAAC;MACpD,CAAC;MACDY,MAAM,EAAEA,MAAM;QACZ,IAAI,CAAC3T,QAAQ,GAAG,IAAI;QACpB,IAAI,CAAC4S,mBAAmB,CAAC,IAAI,CAAC3B,SAAS,CAACM,OAAO,CAACwB,WAAW,CAAC;MAC9D,CAAC;MACDa,MAAM,EAAEA,MAAM;QACZ,IAAI,CAAC5T,QAAQ,GAAG,KAAK;AACvB,MAAA;KACD;;AAED;IACA,IAAI,IAAI,CAAC7Q,OAAO,CAAC0hB,aAAa,CAACrqB,MAAM,GAAG,CAAC,EAAE;AACzC,MAAA,MAAMqtB,SAAS,GAAG,IAAI,CAACC,UAAU,CAAC,IAAI,CAAC3kB,OAAO,CAAC0hB,aAAa,CAAC,CAAC,CAAC,CAAC;AAChEmB,MAAAA,eAAe,CAAC+B,aAAa,GAAGF,SAAS,CAACG,QAAQ,EAAE;AACpDhC,MAAAA,eAAe,CAACiC,YAAY,GAAGJ,SAAS,CAACK,WAAW,EAAE;AACxD,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC/kB,OAAO,CAACihB,OAAO,EAAE;AACxB4B,MAAAA,eAAe,CAAC5B,OAAO,GAAG,IAAI,CAACjhB,OAAO,CAACihB,OAAO;AAChD,IAAA;AAEA,IAAA,IAAI,IAAI,CAACjhB,OAAO,CAACkhB,OAAO,EAAE;AACxB2B,MAAAA,eAAe,CAAC3B,OAAO,GAAG,IAAI,CAAClhB,OAAO,CAACkhB,OAAO;AAChD,IAAA;AAEA,IAAA,OAAO2B,eAAe;AACxB,EAAA;AAEAyB,EAAAA,gBAAgBA,CAACD,IAAI,EAAElwB,KAAK,EAAE;IAC5B,MAAMutB,aAAa,GAAG,CAAC,GAAG2C,IAAI,CAACjC,OAAO,CAACV,aAAa,CAAC;AAErD,IAAA,IAAIA,aAAa,CAACrqB,MAAM,GAAG,CAAC,EAAE;AAC5B,MAAA,MAAM+rB,aAAa,GAAG,IAAI,CAACC,mBAAmB,CAAC3B,aAAa,CAAC;MAE7D,IAAI,IAAI,CAACY,QAAQ,EAAE;AACjB,QAAA,IAAI,CAACviB,QAAQ,CAAC/M,KAAK,GAAGowB,aAAa;AACrC,MAAA;MAEA,IAAI,IAAI,CAACZ,WAAW,EAAE;QACpB,IAAI,CAACA,WAAW,CAACxvB,KAAK,GAAG0uB,aAAa,CAACvgB,IAAI,CAAC,GAAG,CAAC;AAClD,MAAA;MAEA,IAAI,IAAI,CAACwhB,eAAe,EAAE;AACxB,QAAA,IAAI,CAACA,eAAe,CAACtC,WAAW,GAAG+C,aAAa;AAClD,MAAA;AACF,IAAA;IAEA7uB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEme,cAAY,EAAE;AAChDiE,MAAAA,KAAK,EAAET,aAAa;AACpBvtB,MAAAA;AACF,KAAC,CAAC;AAEF,IAAA,IAAI,CAAC6wB,wBAAwB,CAACtD,aAAa,CAAC;AAC9C,EAAA;EAEAsD,wBAAwBA,CAACtD,aAAa,EAAE;IACtC,IAAI,IAAI,CAACa,SAAS,EAAE;AAClB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM0C,UAAU,GACb,IAAI,CAACjlB,OAAO,CAAC2hB,aAAa,KAAK,QAAQ,IAAID,aAAa,CAACrqB,MAAM,GAAG,CAAC,IACnE,IAAI,CAAC2I,OAAO,CAAC2hB,aAAa,KAAK,iBAAiB,IAAID,aAAa,CAACrqB,MAAM,IAAI,CAAE;AAEjF,IAAA,IAAI4tB,UAAU,EAAE;MACdnnB,UAAU,CAAC,MAAM,IAAI,CAACgT,IAAI,EAAE,EAAEiQ,UAAU,CAAC;AAC3C,IAAA;AACF,EAAA;EAEA4D,UAAUA,CAACO,OAAO,EAAE;AAClB,IAAA,MAAM,CAACC,IAAI,EAAEC,KAAK,EAAEC,GAAG,CAAC,GAAGH,OAAO,CAAC5pB,KAAK,CAAC,GAAG,CAAC;IAC7C,OAAO,IAAIigB,IAAI,CAAC4J,IAAI,EAAEC,KAAK,GAAG,CAAC,EAAEC,GAAG,CAAC;AACvC,EAAA;EAEAC,WAAWA,CAACJ,OAAO,EAAE;AACnB,IAAA,MAAMK,IAAI,GAAG,IAAI,CAACZ,UAAU,CAACO,OAAO,CAAC;AACrC,IAAA,MAAM1D,MAAM,GAAG,IAAI,CAACxhB,OAAO,CAACwhB,MAAM,KAAK,SAAS,GAAGlnB,SAAS,GAAG,IAAI,CAAC0F,OAAO,CAACwhB,MAAM;IAClF,MAAM;AAAEL,MAAAA;KAAY,GAAG,IAAI,CAACnhB,OAAO;;AAEnC;AACA,IAAA,IAAI,OAAOmhB,UAAU,KAAK,UAAU,EAAE;AACpC,MAAA,OAAOA,UAAU,CAACoE,IAAI,EAAE/D,MAAM,CAAC;AACjC,IAAA;;AAEA;AACA,IAAA,IAAIL,UAAU,IAAI,OAAOA,UAAU,KAAK,QAAQ,EAAE;AAChD,MAAA,OAAO,IAAIqE,IAAI,CAACC,cAAc,CAACjE,MAAM,EAAEL,UAAU,CAAC,CAACuE,MAAM,CAACH,IAAI,CAAC;AACjE,IAAA;;AAEA;AACA,IAAA,OAAOA,IAAI,CAACI,kBAAkB,CAACnE,MAAM,CAAC;AACxC,EAAA;EAEA6B,mBAAmBA,CAAClB,KAAK,EAAE;AACzB,IAAA,IAAIA,KAAK,CAAC9qB,MAAM,KAAK,CAAC,EAAE;AACtB,MAAA,OAAO,EAAE;AACX,IAAA;AAEA,IAAA,IAAI8qB,KAAK,CAAC9qB,MAAM,KAAK,CAAC,EAAE;MACtB,OAAO,IAAI,CAACiuB,WAAW,CAACnD,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAA;;AAEA;AACA,IAAA,MAAMyD,SAAS,GAAG,IAAI,CAAC5lB,OAAO,CAAC2hB,aAAa,KAAK,iBAAiB,GAAG,KAAK,GAAG,IAAI;AACjF,IAAA,OAAOQ,KAAK,CAAClhB,GAAG,CAAC4kB,CAAC,IAAI,IAAI,CAACP,WAAW,CAACO,CAAC,CAAC,CAAC,CAAC1kB,IAAI,CAACykB,SAAS,CAAC;AAC5D,EAAA;AAEA1C,EAAAA,gBAAgBA,GAAG;AACjB;IACA,MAAMlwB,KAAK,GAAG,IAAI,CAAC+M,QAAQ,CAAC/M,KAAK,CAACgO,IAAI,EAAE;IACxC,IAAI,CAAChO,KAAK,EAAE;AACV,MAAA;AACF,IAAA;AAEA,IAAA,MAAMuyB,IAAI,GAAG,IAAIhK,IAAI,CAACvoB,KAAK,CAAC;IAC5B,IAAI,CAACqF,MAAM,CAACkW,KAAK,CAACgX,IAAI,CAACO,OAAO,EAAE,CAAC,EAAE;AACjC,MAAA,MAAMX,IAAI,GAAGI,IAAI,CAACR,WAAW,EAAE;AAC/B,MAAA,MAAMK,KAAK,GAAGW,MAAM,CAACR,IAAI,CAACV,QAAQ,EAAE,GAAG,CAAC,CAAC,CAACnY,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAC1D,MAAA,MAAM2Y,GAAG,GAAGU,MAAM,CAACR,IAAI,CAACS,OAAO,EAAE,CAAC,CAACtZ,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;MACnD,MAAMuZ,SAAS,GAAG,CAAA,EAAGd,IAAI,IAAIC,KAAK,CAAA,CAAA,EAAIC,GAAG,CAAA,CAAE;AAC3C,MAAA,IAAI,CAACvD,SAAS,CAAC5vB,GAAG,CAAC;QAAEwvB,aAAa,EAAE,CAACuE,SAAS;AAAE,OAAC,CAAC;AACpD,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEA1xB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF;AACA;AACA,EAAA,IAAI,IAAI,CAACwO,OAAO,KAAK,OAAO,IAAI,IAAI,CAACtJ,OAAO,CAAC6sB,QAAQ,KAAK,MAAM,EAAE;AAChE,IAAA;AACF,EAAA;EAEA/xB,KAAK,CAACyO,cAAc,EAAE;EACtBif,UAAU,CAAClhB,mBAAmB,CAAC,IAAI,CAAC,CAACwD,MAAM,EAAE;AAC/C,CAAC,CAAC;AAEF5P,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEimB,sBAAsB,EAAE9c,sBAAoB,EAAE,YAAY;AAClF;AACA,EAAA,IAAI,IAAI,CAACrB,OAAO,KAAK,OAAO,EAAE;AAC5B,IAAA;AACF,EAAA;EAEAkf,UAAU,CAAClhB,mBAAmB,CAAC,IAAI,CAAC,CAACoQ,IAAI,EAAE;AAC7C,CAAC,CAAC;;AAEF;AACAxc,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,CAAA,gBAAA,EAAmBwF,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE,EAAE,MAAM;EAC7E,KAAK,MAAM3R,OAAO,IAAI0I,QAAQ,CAAC/F,gBAAgB,CAAC,CAAA,EAAGkP,sBAAoB,CAAA,uBAAA,CAAyB,CAAC,EAAE;AACjG6d,IAAAA,UAAU,CAAClhB,mBAAmB,CAACxO,OAAO,CAAC;AACzC,EAAA;AACF,CAAC,CAAC;;AC/dF;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMg0B,eAAe,GAAG,aAAa;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMC,UAAU,SAAStmB,aAAa,CAAC;AACrCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACsR,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACgW,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACC,mBAAmB,EAAE;AAC5B,EAAA;;AAEA;EACA,WAAW1nB,IAAIA,GAAG;AAChB,IAAA,OAAO,YAAY;AACrB,EAAA;;AAEA;;EAEAuF,MAAMA,CAACnO,aAAa,EAAE;AACpB,IAAA,OAAO,IAAI,CAAC+J,QAAQ,CAACwmB,IAAI,GAAG,IAAI,CAACzV,IAAI,EAAE,GAAG,IAAI,CAACC,IAAI,CAAC/a,aAAa,CAAC;AACpE,EAAA;EAEA+a,IAAIA,CAAC/a,aAAa,EAAE;IAClB,IAAI,IAAI,CAAC+J,QAAQ,CAACwmB,IAAI,IAAI,IAAI,CAAClW,gBAAgB,EAAE;AAC/C,MAAA;AACF,IAAA;AAEA,IAAA,MAAMyG,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CACpC,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,MAAM,CAAC,EAClC;AAAE5K,MAAAA;AAAc,KAClB,CAAC;IAED,IAAI8gB,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACyM,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACmW,aAAa,EAAE;IAEpB,MAAM;MAAEC,KAAK;AAAEC,MAAAA;AAAkB,KAAC,GAAG,IAAI,CAACC,eAAe,EAAE;IAC3D,IAAI,CAACC,YAAY,CAAC;MAAEH,KAAK;AAAEC,MAAAA;AAAkB,KAAC,CAAC;IAE/C,IAAI,CAAClmB,cAAc,CAAC,MAAM;MACxB,IAAI,CAAC6P,gBAAgB,GAAG,KAAK;AAC7B9b,MAAAA,YAAY,CAACkD,OAAO,CAClB,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,OAAO,CAAC,EACnC;AAAE5K,QAAAA;AAAc,OAClB,CAAC;IACH,CAAC,EAAE,IAAI,CAAC+J,QAAQ,EAAE,IAAI,CAAC8mB,WAAW,EAAE,CAAC;AACvC,EAAA;AAEA/V,EAAAA,IAAIA,GAAG;IACL,IAAI,CAAC,IAAI,CAAC/Q,QAAQ,CAACwmB,IAAI,IAAI,IAAI,CAAClW,gBAAgB,EAAE;AAChD,MAAA;AACF,IAAA;AAEA,IAAA,MAAMuH,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CACpC,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,MAAM,CACnC,CAAC;IAED,IAAIgX,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACyM,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACyW,YAAY,EAAE;IAEnB,IAAI,CAACtmB,cAAc,CAAC,MAAM;AACxB;AACA;AACA;AACA,MAAA,IAAI,IAAI,CAACT,QAAQ,CAACwmB,IAAI,EAAE;QACtB,IAAI,CAACQ,gBAAgB,EAAE;AACzB,MAAA;MAEA,IAAI,CAAChnB,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC,QAAQ,CAAC;MACxC,IAAI,CAAC+zB,YAAY,EAAE;MACnB,IAAI,CAAC3W,gBAAgB,GAAG,KAAK;AAC7B9b,MAAAA,YAAY,CAACkD,OAAO,CAClB,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,QAAQ,CACrC,CAAC;IACH,CAAC,EAAE,IAAI,CAACb,QAAQ,EAAE,IAAI,CAAC8mB,WAAW,EAAE,CAAC;AACvC,EAAA;AAEAzmB,EAAAA,OAAOA,GAAG;AACR;AACA;AACA;AACA,IAAA,IAAI,IAAI,CAACL,QAAQ,CAACwmB,IAAI,EAAE;MACtB,IAAI,CAACQ,gBAAgB,EAAE;AACzB,IAAA;IAEA,KAAK,CAAC3mB,OAAO,EAAE;AACjB,EAAA;;AAEA;;AAEAumB,EAAAA,eAAeA,GAAG;IAChB,OAAO;AAAEF,MAAAA,KAAK,EAAE,IAAI;AAAEC,MAAAA,iBAAiB,EAAE;KAAM;AACjD,EAAA;AAEAF,EAAAA,aAAaA,GAAG;AACd;AAAA,EAAA;AAGFQ,EAAAA,YAAYA,GAAG;AACb;AAAA,EAAA;AAGFH,EAAAA,WAAWA,GAAG;AACZ,IAAA,OAAO,CAAC,IAAI,CAAC9mB,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAAC,IAAI,CAACgxB,oBAAoB,EAAE,CAAC;AACvE,EAAA;AAEAA,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,OAAO,gBAAgB;AACzB,EAAA;AAEAC,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,OAAO,eAAe;AACxB,EAAA;AAEAC,EAAAA,SAASA,GAAG;AACV;AAAA,EAAA;;AAGF;;AAEAP,EAAAA,YAAYA,CAAC;AAAEH,IAAAA,KAAK,GAAG,IAAI;AAAEC,IAAAA,iBAAiB,GAAG;GAAM,GAAG,EAAE,EAAE;IAC5D,IAAI,CAACL,cAAc,GAAGI,KAAK;AAE3B,IAAA,IAAIA,KAAK,EAAE;AACT,MAAA,IAAI,CAAC1mB,QAAQ,CAACqnB,SAAS,EAAE;AAC3B,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACrnB,QAAQ,CAACgR,IAAI,EAAE;AACtB,IAAA;AAEA,IAAA,IAAI2V,iBAAiB,EAAE;AACrB;AACA;AACA;AACA;MACA7rB,QAAQ,CAAC6B,eAAe,CAACJ,SAAS,CAACiM,GAAG,CAAC4d,eAAe,CAAC;AACzD,IAAA;AACF,EAAA;AAEAW,EAAAA,YAAYA,GAAG;IACb,IAAI,CAACO,oBAAoB,EAAE;;AAE3B;AACA;AACA;IACA,IAAI,CAACtnB,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC,QAAQ,CAAC;;AAErC;AACA;AACA;AACA;AACA;AACA,IAAA,IAAI,CAAC,IAAI,CAAC+e,iBAAiB,EAAE,EAAE;MAC7B,IAAI,CAACP,gBAAgB,EAAE;AACzB,IAAA;AACF,EAAA;;AAEA;AACA;AACAA,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,IAAI,CAAChnB,QAAQ,CAAC2D,KAAK,EAAE;IACrB,IAAI,CAAC2iB,cAAc,GAAG,KAAK;;AAE3B;AACA,IAAA,IAAI,CAACxrB,QAAQ,CAACc,aAAa,CAAC,oBAAoB,CAAC,EAAE;MACjDd,QAAQ,CAAC6B,eAAe,CAACJ,SAAS,CAACrJ,MAAM,CAACkzB,eAAe,CAAC;AAC5D,IAAA;AACF,EAAA;;AAEA;AACA;AACA;AACAmB,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAO,KAAK;AACd,EAAA;AAEAC,EAAAA,0BAA0BA,GAAG;AAC3B,IAAA,MAAMC,kBAAkB,GAAGjzB,YAAY,CAACkD,OAAO,CAC7C,IAAI,CAACsI,QAAQ,EACb,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC,eAAe,CAC5C,CAAC;IAED,IAAI4mB,kBAAkB,CAAC5jB,gBAAgB,EAAE;AACvC,MAAA;AACF,IAAA;AAEA,IAAA,MAAM6jB,WAAW,GAAG,IAAI,CAACP,mBAAmB,EAAE;IAC9C,IAAI,CAACnnB,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACkf,WAAW,CAAC;IACxC,IAAI,CAACjnB,cAAc,CAAC,MAAM;MACxB,IAAI,CAACT,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACw0B,WAAW,CAAC;AAC7C,IAAA,CAAC,EAAE,IAAI,CAAC1nB,QAAQ,CAAC;AACnB,EAAA;;AAEA;AACA;AACA;AACAsnB,EAAAA,oBAAoBA,GAAG;IACrB,MAAMzyB,QAAQ,GAAG,wDAAwD;AAEzE,IAAA,KAAK,MAAMuN,EAAE,IAAIf,cAAc,CAAC7L,IAAI,CAACX,QAAQ,EAAE,IAAI,CAACmL,QAAQ,CAAC,EAAE;AAC7D,MAAA,MAAM1N,QAAQ,GAAG6N,IAAI,CAACrN,MAAM,CAACsP,EAAE,CAAC;MAChC,IAAI9P,QAAQ,IAAI,OAAOA,QAAQ,CAACye,IAAI,KAAK,UAAU,EAAE;QACnDze,QAAQ,CAACye,IAAI,EAAE;AACjB,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,KAAK,MAAM3O,EAAE,IAAIf,cAAc,CAAC7L,IAAI,CAAC,aAAa,EAAE,IAAI,CAACwK,QAAQ,CAAC,EAAE;AAClE,MAAA,MAAM1N,QAAQ,GAAG6N,IAAI,CAACrN,MAAM,CAACsP,EAAE,CAAC;MAChC,IAAI9P,QAAQ,IAAI,OAAOA,QAAQ,CAACye,IAAI,KAAK,UAAU,EAAE;QACnDze,QAAQ,CAACye,IAAI,EAAE;AACjB,MAAA;AACF,IAAA;AACF,EAAA;;AAEA;;AAEAwV,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,MAAMoB,QAAQ,GAAG,IAAI,CAACtoB,WAAW,CAACiB,SAAS;;AAE3C;IACA9L,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,QAAQ,EAAE5L,KAAK,IAAI;MAChDA,KAAK,CAACyO,cAAc,EAAE;AAEtB,MAAA,IAAI,CAAC,IAAI,CAAC5C,OAAO,CAAC0G,QAAQ,EAAE;QAC1B,IAAI,CAAC6gB,0BAA0B,EAAE;AACjC,QAAA;AACF,MAAA;MAEA,IAAI,CAACJ,SAAS,EAAE;MAChB,IAAI,CAACrW,IAAI,EAAE;AACb,IAAA,CAAC,CAAC;;AAEF;AACAvc,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,CAAA,OAAA,EAAU2nB,QAAQ,CAAA,CAAE,EAAEvzB,KAAK,IAAI;MAC5D,IAAIA,KAAK,CAAC/B,GAAG,KAAK,QAAQ,IAAI,IAAI,CAACi0B,cAAc,EAAE;AACjD,QAAA;AACF,MAAA;MAEAlyB,KAAK,CAACyO,cAAc,EAAE;AAEtB,MAAA,IAAI,CAAC,IAAI,CAAC5C,OAAO,CAAC0G,QAAQ,EAAE;AAC1B,QAAA;AACF,MAAA;MAEA,IAAI,CAACygB,SAAS,EAAE;MAChB,IAAI,CAACrW,IAAI,EAAE;AACb,IAAA,CAAC,CAAC;;AAEF;AACAvc,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,CAAA,KAAA,EAAQ2nB,QAAQ,CAAA,CAAE,EAAEvzB,KAAK,IAAI;AAC1D,MAAA,IAAIA,KAAK,CAACY,MAAM,KAAK,IAAI,CAACgL,QAAQ,IAAI,CAAC,IAAI,CAACsmB,cAAc,EAAE;AAC1D,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,IAAI,CAACrmB,OAAO,CAAC2nB,QAAQ,KAAK,QAAQ,EAAE;QACtC,IAAI,CAACJ,0BAA0B,EAAE;AACjC,QAAA;AACF,MAAA;MAEA,IAAI,CAACzW,IAAI,EAAE;AACb,IAAA,CAAC,CAAC;AACJ,EAAA;AACF;;AChTA;AACA;AACA;AACA;AACA;AACA;;;AASA;AACA;AACA;;AAEA,MAAMlS,MAAI,GAAG,QAAQ;AACrB,MAAMuB,UAAQ,GAAG,WAAW;AAC5B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMyL,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAMunB,YAAY,GAAG,CAAA,MAAA,EAASvnB,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAM+jB,mBAAmB,GAAG,iBAAiB;AAC7C,MAAMC,kBAAkB,GAAG,gBAAgB;AAC3C,MAAMC,kBAAkB,GAAG,gBAAgB;AAE3C,MAAM/jB,sBAAoB,GAAG,2BAA2B;AAExD,MAAMtF,SAAO,GAAG;AACdipB,EAAAA,QAAQ,EAAE,IAAI;AACdjhB,EAAAA,QAAQ,EAAE,IAAI;AACd+f,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAM9nB,aAAW,GAAG;AAClBgpB,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BjhB,EAAAA,QAAQ,EAAE,SAAS;AACnB+f,EAAAA,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA;;AAEA,MAAMuB,MAAM,SAAS5B,UAAU,CAAC;AAC9B;EACA,WAAW1nB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAqpB,EAAAA,YAAYA,GAAG;AACb;AAAA,EAAA;;AAGF;;AAEAtB,EAAAA,eAAeA,GAAG;IAChB,OAAO;AACLF,MAAAA,KAAK,EAAE,IAAI,CAACzmB,OAAO,CAACymB,KAAK;AACzBC,MAAAA,iBAAiB,EAAE,IAAI,CAAC1mB,OAAO,CAACymB;KACjC;AACH,EAAA;AAEAD,EAAAA,aAAaA,GAAG;AACd,IAAA,IAAI,CAAC,IAAI,CAACxmB,OAAO,CAACymB,KAAK,EAAE;MACvB,IAAI,CAAC1mB,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACsf,mBAAmB,CAAC;AAClD,IAAA;AACF,EAAA;AAEAb,EAAAA,YAAYA,GAAG;IACb,IAAI,CAACjnB,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC40B,mBAAmB,CAAC;AACrD,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACAP,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAO,IAAI,CAACT,WAAW,EAAE;AAC3B,EAAA;AAEAM,EAAAA,SAASA,GAAG;IACV5yB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE6nB,YAAY,CAAC;AACnD,EAAA;AACF;;AAEA;AACA;AACA;;AAEArzB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF,EAAA,MAAMY,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC;AAE1D,EAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAACtL,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;IACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;EAEArO,YAAY,CAAC0C,GAAG,CAAClC,MAAM,EAAEwa,YAAU,EAAEuH,SAAS,IAAI;IAChD,IAAIA,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;AAEArP,IAAAA,YAAY,CAAC0C,GAAG,CAAClC,MAAM,EAAE2a,cAAY,EAAE,MAAM;AAC3C,MAAA,IAAI9T,SAAS,CAAC,IAAI,CAAC,EAAE;QACnB,IAAI,CAACwS,KAAK,CAAC;AAAEC,UAAAA,aAAa,EAAE;AAAK,SAAC,CAAC;AACrC,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA,CAAC,CAAC;;AAEF;AACA,EAAA,MAAMtP,MAAM,GAAGlG,WAAW,CAACK,iBAAiB,CAAC,IAAI,CAAC;;AAElD;AACA,EAAA,MAAMgvB,aAAa,GAAG,IAAI,CAACjsB,OAAO,CAAC,cAAc,CAAC;AAClD,EAAA,MAAMksB,UAAU,GAAGD,aAAa,IAAIA,aAAa,KAAKnzB,MAAM;AAE5D,EAAA,IAAIozB,UAAU,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACA,MAAMC,SAAS,GAAGJ,MAAM,CAACrnB,mBAAmB,CAAC5L,MAAM,EAAEgK,MAAM,CAAC;AAC5DhK,IAAAA,MAAM,CAACuH,SAAS,CAACiM,GAAG,CAACwf,kBAAkB,CAAC;AACxCK,IAAAA,SAAS,CAACrX,IAAI,CAAC,IAAI,CAAC;IACpBxc,YAAY,CAAC0C,GAAG,CAAClC,MAAM,EAAE,CAAA,KAAA,EAAQsL,WAAS,CAAA,CAAE,EAAE,MAAM;AAClDtL,MAAAA,MAAM,CAACuH,SAAS,CAACrJ,MAAM,CAAC80B,kBAAkB,CAAC;AAC7C,IAAA,CAAC,CAAC;AAEF,IAAA,MAAMM,eAAe,GAAGL,MAAM,CAACtnB,WAAW,CAACwnB,aAAa,CAAC;AACzD,IAAA,IAAIG,eAAe,EAAE;AACnB;AACA;AACA;AACA;AACAH,MAAAA,aAAa,CAAC5rB,SAAS,CAACiM,GAAG,CAACuf,kBAAkB,CAAC;AAC/CvzB,MAAAA,YAAY,CAAC0C,GAAG,CAACixB,aAAa,EAAExY,cAAY,EAAE,MAAM;AAClDwY,QAAAA,aAAa,CAAC5rB,SAAS,CAACrJ,MAAM,CAAC60B,kBAAkB,CAAC;AACpD,MAAA,CAAC,CAAC;MACFO,eAAe,CAACvX,IAAI,EAAE;AACxB,IAAA;AAEA,IAAA;AACF,EAAA;EAEA,MAAM5N,IAAI,GAAG8kB,MAAM,CAACrnB,mBAAmB,CAAC5L,MAAM,EAAEgK,MAAM,CAAC;AACvDmE,EAAAA,IAAI,CAACiB,MAAM,CAAC,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF5B,oBAAoB,CAACylB,MAAM,CAAC;;AC/K5B;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMppB,MAAI,GAAG,aAAa;AAC1B,MAAMuB,UAAQ,GAAG,gBAAgB;AACjC,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAEhC,MAAMmoB,YAAY,GAAG,CAAA,MAAA,EAASjoB,WAAS,CAAA,CAAE;AACzC,MAAMkoB,cAAc,GAAG,CAAA,QAAA,EAAWloB,WAAS,CAAA,CAAE;AAE7C,MAAMmoB,mBAAmB,GAAG,cAAc;AAC1C,MAAMC,wBAAwB,GAAG,mBAAmB;AACpD,MAAMC,iBAAiB,GAAG,QAAQ;AAElC,MAAMC,iBAAiB,GAAG,WAAW;AACrC,MAAMC,iBAAiB,GAAG,WAAW;AACrC,MAAMC,wBAAwB,GAAG,sBAAsB;AACvD,MAAMC,sBAAsB,GAAG,oBAAoB;AACnD,MAAMC,oBAAoB,GAAG,yBAAyB;AACtD,MAAMC,eAAe,GAAG,mBAAmB;AAE3C,MAAMtqB,SAAO,GAAG;AACduqB,EAAAA,aAAa,EAAE,CAAC;AAChBC,EAAAA,aAAa,EAAE,OAAO;AACtBC,EAAAA,aAAa,EAAE,YAAY;AAC3BC,EAAAA,QAAQ,EAAE,MAAM;AAChBC,EAAAA,QAAQ,EAAE,qPAAqP;EAC/Pjf,SAAS,EAAE,CAAC;AACd,CAAC;AAED,MAAMzL,aAAW,GAAG;AAClBsqB,EAAAA,aAAa,EAAE,iBAAiB;AAChCC,EAAAA,aAAa,EAAE,QAAQ;AACvBC,EAAAA,aAAa,EAAE,QAAQ;AACvBC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,QAAQ,EAAE,QAAQ;AAClBjf,EAAAA,SAAS,EAAE;AACb,CAAC;;AAED;AACA;AACA;;AAEA,MAAMkf,WAAW,SAASxpB,aAAa,CAAC;AACtCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACwqB,MAAM,GAAG,EAAE;IAChB,IAAI,CAACC,cAAc,GAAG,EAAE;IACxB,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,cAAc,GAAG,CAAC;IACvB,IAAI,CAACC,cAAc,GAAG,KAAK;IAE3B,IAAI,CAACC,KAAK,EAAE;AACd,EAAA;;AAEA;EACA,WAAWprB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA6Y,EAAAA,MAAMA,GAAG;IACP,IAAI,CAACsS,kBAAkB,EAAE;IACzBx1B,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEuoB,YAAY,CAAC;AACnD,EAAA;AAEAloB,EAAAA,OAAOA,GAAG;IACR,IAAI,IAAI,CAACupB,eAAe,EAAE;AACxB,MAAA,IAAI,CAACA,eAAe,CAAClgB,UAAU,EAAE;AACnC,IAAA;;AAEA;IACA,IAAI,CAACugB,aAAa,EAAE;;AAEpB;IACA,IAAI,IAAI,CAACN,eAAe,IAAI,IAAI,CAACA,eAAe,CAACO,aAAa,EAAE;AAC9D,MAAA,IAAI,CAACP,eAAe,CAACO,aAAa,CAACh3B,MAAM,EAAE;AAC7C,IAAA;IAEA,KAAK,CAACmN,OAAO,EAAE;AACjB,EAAA;;AAEA;AACA0pB,EAAAA,KAAKA,GAAG;AACN;IACA,IAAI,CAAC/pB,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACigB,mBAAmB,CAAC;;AAEhD;AACA,IAAA,IAAI,CAACe,MAAM,GAAG,CAAC,GAAGnoB,cAAc,CAAC7L,IAAI,CAACozB,iBAAiB,EAAE,IAAI,CAAC5oB,QAAQ,CAAC,CAAC;;AAExE;AACA,IAAA,KAAK,MAAM,CAAC1B,KAAK,EAAEgM,IAAI,CAAC,IAAI,IAAI,CAACkf,MAAM,CAACzyB,OAAO,EAAE,EAAE;AACjDuT,MAAAA,IAAI,CAAChR,OAAO,CAAC6wB,UAAU,GAAG7rB,KAAK;AACjC,IAAA;;AAEA;AACA,IAAA,IAAI,CAACurB,cAAc,GAAG,IAAI,CAACO,qBAAqB,EAAE;;AAElD;IACA,IAAI,CAACC,mBAAmB,EAAE;;AAE1B;IACA,IAAI,CAACC,oBAAoB,EAAE;;AAE3B;IACA,IAAI,CAACN,kBAAkB,EAAE;IAEzB,IAAI,CAACF,cAAc,GAAG,IAAI;AAC5B,EAAA;AAEAO,EAAAA,mBAAmBA,GAAG;AACpB;AACA,IAAA,IAAI,CAACV,eAAe,GAAGtoB,cAAc,CAACE,OAAO,CAACunB,wBAAwB,EAAE,IAAI,CAAC9oB,QAAQ,CAAC;IAEtF,IAAI,IAAI,CAAC2pB,eAAe,EAAE;AACxB,MAAA,IAAI,CAACD,aAAa,GAAGroB,cAAc,CAACE,OAAO,CAACwnB,sBAAsB,EAAE,IAAI,CAAC/oB,QAAQ,CAAC;AAClF,MAAA;AACF,IAAA;AAEA,IAAA,MAAMuqB,QAAQ,GAAG,IAAI,CAACC,YAAY,EAAE;AACpC,IAAA,MAAMC,QAAQ,GAAG,CAAA,gCAAA,EAAmCF,QAAQ,CAAA,OAAA,CAAS;IACrE,MAAMG,QAAQ,GAAG,CAAA,gCAAA,EAAmC,IAAI,CAACzqB,OAAO,CAACopB,QAAQ,CAAA,OAAA,CAAS;IAClF,MAAMsB,aAAa,GAAG,IAAI,CAAC1qB,OAAO,CAACkpB,aAAa,KAAK,KAAK,GACxD,GAAGuB,QAAQ,CAAA,EAAGD,QAAQ,CAAA,CAAE,GACxB,GAAGA,QAAQ,CAAA,EAAGC,QAAQ,CAAA,CAAE;AAE1B,IAAA,MAAME,YAAY,GAAG9vB,QAAQ,CAAC2kB,aAAa,CAAC,IAAI,CAAC;IACjDmL,YAAY,CAACC,SAAS,GAAG,4BAA4B;IACrDD,YAAY,CAACE,SAAS,GAAG;AAC7B,0GAAA,EAA4G,IAAI,CAAC7qB,OAAO,CAACmpB,aAAa,CAAA;AACtI,QAAA,EAAUuB,aAAa;AACvB;AACA,kBAAA,EAAoBjC,wBAAwB,CAAA;AAC5C,IAAA,CAAK;AAED,IAAA,IAAI,CAAC1oB,QAAQ,CAACsN,MAAM,CAACsd,YAAY,CAAC;IAClC,IAAI,CAACjB,eAAe,GAAGiB,YAAY,CAAChvB,aAAa,CAACktB,wBAAwB,CAAC;IAC3E,IAAI,CAACY,aAAa,GAAGkB,YAAY,CAAChvB,aAAa,CAACmtB,sBAAsB,CAAC;AACzE,EAAA;AAEAyB,EAAAA,YAAYA,GAAG;IACb,MAAMO,iBAAiB,GAAG1pB,cAAc,CAACE,OAAO,CAACynB,oBAAoB,EAAE,IAAI,CAAChpB,QAAQ,CAAC;IAErF,IAAI,CAAC+qB,iBAAiB,EAAE;AACtB,MAAA,OAAO,IAAI,CAAC9qB,OAAO,CAACqpB,QAAQ;AAC9B,IAAA;AAEA,IAAA,MAAM0B,SAAS,GAAGD,iBAAiB,CAAC5d,SAAS,CAAC,IAAI,CAAC;AACnD6d,IAAAA,SAAS,CAAC9xB,eAAe,CAAC,uBAAuB,CAAC;AAClD,IAAA,MAAMqxB,QAAQ,GAAGS,SAAS,CAACC,SAAS;IAEpCF,iBAAiB,CAAC73B,MAAM,EAAE;AAE1B,IAAA,OAAOq3B,QAAQ;AACjB,EAAA;AAEAH,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,MAAMn3B,KAAK,GAAG,IAAI,CAACgN,OAAO,CAACipB,aAAa;AAExC,IAAA,IAAI,OAAOj2B,KAAK,KAAK,QAAQ,EAAE;AAC7B,MAAA,OAAOA,KAAK;AACd,IAAA;IAEA,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,EAAE,EAAE;AAC7C,MAAA,MAAMi4B,QAAQ,GAAG/vB,gBAAgB,CAACL,QAAQ,CAAC6B,eAAe,CAAC,CACxDX,gBAAgB,CAAC,CAAA,gBAAA,EAAmB/I,KAAK,EAAE,CAAC;AAC/C,MAAA,OAAOqF,MAAM,CAAC+C,UAAU,CAAC6vB,QAAQ,CAAC,IAAI,CAAC;AACzC,IAAA;AAEA,IAAA,OAAO,CAAC;AACV,EAAA;AAEAZ,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,IAAI,OAAOa,cAAc,KAAK,WAAW,EAAE;AACzC;AACA32B,MAAAA,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAACgwB,kBAAkB,EAAE,CAAC;AAClE,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACJ,eAAe,GAAG,IAAIuB,cAAc,CAAC,MAAM;MAC9C,IAAI,CAACnB,kBAAkB,EAAE;AAC3B,IAAA,CAAC,CAAC;IAEF,IAAI,CAACJ,eAAe,CAACrf,OAAO,CAAC,IAAI,CAACvK,QAAQ,CAAC;AAC7C,EAAA;AAEAgqB,EAAAA,kBAAkBA,GAAG;AACnB;IACA,IAAI,CAACC,aAAa,EAAE;AAEpB,IAAA,MAAMmB,QAAQ,GAAG,IAAI,CAACprB,QAAQ,CAACqrB,WAAW;IAC1C,MAAMT,YAAY,GAAG,IAAI,CAACjB,eAAe,EAAEztB,OAAO,CAAC,WAAW,CAAC;;AAE/D;IACA,IAAI,IAAI,CAAC2tB,cAAc,GAAG,CAAC,IAAIuB,QAAQ,GAAG,IAAI,CAACvB,cAAc,EAAE;AAC7D,MAAA,MAAMyB,eAAe,GAAG,IAAI,CAAC9B,MAAM,CAACjwB,MAAM,CACxC+Q,IAAI,IAAI,CAACA,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAAC+yB,eAAe,CAClD,CAAC;AAED,MAAA,IAAI,CAACsC,eAAe,CAACD,eAAe,CAAC;AAErC,MAAA,IAAIV,YAAY,EAAE;AAChB,QAAA,IAAIU,eAAe,CAACh0B,MAAM,GAAG,CAAC,EAAE;AAC9BszB,UAAAA,YAAY,CAACruB,SAAS,CAACrJ,MAAM,CAACy1B,iBAAiB,CAAC;AAClD,QAAA,CAAC,MAAM;AACLiC,UAAAA,YAAY,CAACruB,SAAS,CAACiM,GAAG,CAACmgB,iBAAiB,CAAC;AAC/C,QAAA;AACF,MAAA;AAEA,MAAA,IAAI2C,eAAe,CAACh0B,MAAM,GAAG,CAAC,EAAE;QAC9B9C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwoB,cAAc,EAAE;UAClDgD,aAAa,EAAEF,eAAe,CAACh0B,MAAM;UACrCopB,YAAY,EAAE,IAAI,CAAC8I,MAAM,CAAClyB,MAAM,GAAGg0B,eAAe,CAACh0B;AACrD,SAAC,CAAC;AACJ,MAAA;AAEA,MAAA;AACF,IAAA;AAEA,IAAA,MAAMm0B,aAAa,GAAGb,YAAY,EAAES,WAAW,IAAI,CAAC;;AAEpD;AACA;AACA,IAAA,MAAMK,SAAS,GAAG,IAAI,CAAClC,MAAM,CAC1BjwB,MAAM,CAAC+Q,IAAI,IAAIA,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAAC+yB,eAAe,CAAC,CAAC,CACxD0C,MAAM,CAAC,CAACC,GAAG,EAAEthB,IAAI,KAAKshB,GAAG,GAAGthB,IAAI,CAAC+gB,WAAW,EAAE,CAAC,CAAC;IAEnD,IAAIQ,SAAS,GAAG,CAAC;IACjB,MAAMP,eAAe,GAAG,EAAE;IAC1B,MAAMQ,iBAAiB,GAAGV,QAAQ,GAAGK,aAAa,GAAGC,SAAS,GAAG,EAAE,CAAA;;AAEnE;AACA,IAAA,KAAK,MAAMphB,IAAI,IAAI,IAAI,CAACkf,MAAM,EAAE;AAC9B;MACA,IAAIlf,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAAC+yB,eAAe,CAAC,EAAE;AAC5C,QAAA;AACF,MAAA;MAEA4C,SAAS,IAAIvhB,IAAI,CAAC+gB,WAAW;MAE7B,IAAIQ,SAAS,GAAGC,iBAAiB,EAAE;AACjCR,QAAAA,eAAe,CAACzpB,IAAI,CAACyI,IAAI,CAAC;AAC5B,MAAA;AACF,IAAA;;AAEA;IACA,MAAMoW,YAAY,GAAG,IAAI,CAAC8I,MAAM,CAAClyB,MAAM,GAAGg0B,eAAe,CAACh0B,MAAM;AAChE,IAAA,IAAIopB,YAAY,GAAG,IAAI,CAACzgB,OAAO,CAACoK,SAAS,IAAI,IAAI,CAACmf,MAAM,CAAClyB,MAAM,GAAG,IAAI,CAAC2I,OAAO,CAACoK,SAAS,EAAE;AACxF;AACA,MAAA,MAAM0hB,MAAM,GAAG,IAAI,CAACvC,MAAM,CAAChyB,KAAK,CAAC,IAAI,CAACyI,OAAO,CAACoK,SAAS,CAAC,CAAC9Q,MAAM,CAAC+Q,IAAI,IAAI,CAACA,IAAI,CAAC/N,SAAS,CAACrG,QAAQ,CAAC+yB,eAAe,CAAC,CAAC;MAClHqC,eAAe,CAACh0B,MAAM,GAAG,CAAC;AAC1Bg0B,MAAAA,eAAe,CAACzpB,IAAI,CAAC,GAAGkqB,MAAM,CAAC;AACjC,IAAA;;AAEA;AACA,IAAA,IAAI,CAACR,eAAe,CAACD,eAAe,CAAC;;AAErC;AACA,IAAA,IAAIV,YAAY,EAAE;AAChB,MAAA,IAAIU,eAAe,CAACh0B,MAAM,GAAG,CAAC,EAAE;AAC9BszB,QAAAA,YAAY,CAACruB,SAAS,CAACrJ,MAAM,CAACy1B,iBAAiB,CAAC;AAClD,MAAA,CAAC,MAAM;AACLiC,QAAAA,YAAY,CAACruB,SAAS,CAACiM,GAAG,CAACmgB,iBAAiB,CAAC;AAC/C,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI2C,eAAe,CAACh0B,MAAM,GAAG,CAAC,EAAE;MAC9B9C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwoB,cAAc,EAAE;QAClDgD,aAAa,EAAEF,eAAe,CAACh0B,MAAM;QACrCopB,YAAY,EAAE,IAAI,CAAC8I,MAAM,CAAClyB,MAAM,GAAGg0B,eAAe,CAACh0B;AACrD,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;EAEAi0B,eAAeA,CAAC9iB,KAAK,EAAE;AACrB,IAAA,IAAI,CAAC,IAAI,CAACihB,aAAa,EAAE;AACvB,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAACA,aAAa,CAACoB,SAAS,GAAG,EAAE;IACjC,IAAI,CAACrB,cAAc,GAAG,EAAE;AAExB,IAAA,KAAK,MAAMnf,IAAI,IAAI7B,KAAK,EAAE;MACxB,MAAMujB,IAAI,GAAG3qB,cAAc,CAACE,OAAO,CAACsnB,iBAAiB,EAAEve,IAAI,CAAC;MAC5D,IAAI,CAAC0hB,IAAI,EAAE;AACT,QAAA;AACF,MAAA;AAEA,MAAA,MAAMC,UAAU,GAAGD,IAAI,CAAC7e,SAAS,CAAC,IAAI,CAAC;MACvC8e,UAAU,CAACpB,SAAS,GAAG,WAAW;MAElC,IAAImB,IAAI,CAACzvB,SAAS,CAACrG,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACrC+1B,QAAAA,UAAU,CAAC1vB,SAAS,CAACiM,GAAG,CAAC,QAAQ,CAAC;AACpC,MAAA;AAEA,MAAA,IAAIwjB,IAAI,CAACzvB,SAAS,CAACrG,QAAQ,CAAC,UAAU,CAAC,IAAI81B,IAAI,CAACvvB,YAAY,CAAC,UAAU,CAAC,EAAE;AACxEwvB,QAAAA,UAAU,CAAC1vB,SAAS,CAACiM,GAAG,CAAC,UAAU,CAAC;AACtC,MAAA;AAEA,MAAA,IAAI,CAACkhB,aAAa,CAACpc,MAAM,CAAC2e,UAAU,CAAC;;AAErC;AACA3hB,MAAAA,IAAI,CAAC/N,SAAS,CAACiM,GAAG,CAACmgB,iBAAiB,CAAC;AACrCre,MAAAA,IAAI,CAAChR,OAAO,CAAC4yB,aAAa,GAAG,MAAM;AAEnC,MAAA,IAAI,CAACzC,cAAc,CAAC5nB,IAAI,CAACyI,IAAI,CAAC;AAChC,IAAA;AACF,EAAA;AAEA2f,EAAAA,aAAaA,GAAG;AACd,IAAA,KAAK,MAAM3f,IAAI,IAAI,IAAI,CAACkf,MAAM,EAAE;AAC9Blf,MAAAA,IAAI,CAAC/N,SAAS,CAACrJ,MAAM,CAACy1B,iBAAiB,CAAC;AACxC,MAAA,OAAOre,IAAI,CAAChR,OAAO,CAAC4yB,aAAa;AACnC,IAAA;IAEA,IAAI,IAAI,CAACxC,aAAa,EAAE;AACtB,MAAA,IAAI,CAACA,aAAa,CAACoB,SAAS,GAAG,EAAE;AACnC,IAAA;IAEA,IAAI,CAACrB,cAAc,GAAG,EAAE;AAC1B,EAAA;AACF;;AAEA;AACA;AACA;;AAEAj1B,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,kBAAkB,EAAE,MAAM;EAClD,KAAK,MAAM1I,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAAC,iCAAiC,CAAC,EAAE;AAC5E+zB,IAAAA,WAAW,CAAC3oB,mBAAmB,CAACxO,OAAO,CAAC;AAC1C,EAAA;AACF,CAAC,CAAC;;ACpWF;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,OAAO;AACpB,MAAMyB,WAAS,GAAG,WAAW;AAC7B,MAAM6rB,gBAAgB,GAAG,CAAA,UAAA,EAAa7rB,WAAS,CAAA,CAAE;AACjD,MAAM8rB,eAAe,GAAG,CAAA,SAAA,EAAY9rB,WAAS,CAAA,CAAE;AAC/C,MAAM+rB,cAAc,GAAG,CAAA,QAAA,EAAW/rB,WAAS,CAAA,CAAE;AAC7C,MAAMyE,iBAAiB,GAAG,CAAA,WAAA,EAAczE,WAAS,CAAA,CAAE;AACnD,MAAMgsB,eAAe,GAAG,CAAA,SAAA,EAAYhsB,WAAS,CAAA,CAAE;AAC/C,MAAMisB,kBAAkB,GAAG,OAAO;AAClC,MAAMC,gBAAgB,GAAG,KAAK;AAC9B,MAAMC,wBAAwB,GAAG,eAAe;AAChD,MAAMC,eAAe,GAAG,EAAE;AAE1B,MAAM/tB,SAAO,GAAG;AACdguB,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,YAAY,EAAE,IAAI;AAClBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,YAAY,EAAE;AAChB,CAAC;AAED,MAAMnuB,aAAW,GAAG;AAClB+tB,EAAAA,WAAW,EAAE,iBAAiB;AAC9BC,EAAAA,YAAY,EAAE,iBAAiB;AAC/BC,EAAAA,aAAa,EAAE,iBAAiB;AAChCC,EAAAA,UAAU,EAAE,iBAAiB;AAC7BC,EAAAA,YAAY,EAAE;AAChB,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,KAAK,SAAStuB,MAAM,CAAC;AACzBW,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,EAAE;IACP,IAAI,CAACgB,QAAQ,GAAG5N,OAAO;IAEvB,IAAI,CAACA,OAAO,IAAI,CAAC46B,KAAK,CAACC,WAAW,EAAE,EAAE;AACpC,MAAA;AACF,IAAA;IAEA,IAAI,CAAChtB,OAAO,GAAG,IAAI,CAAClB,UAAU,CAACC,MAAM,CAAC;IACtC,IAAI,CAACkuB,OAAO,GAAG,CAAC;IAChB,IAAI,CAACC,OAAO,GAAG,CAAC;IAChB,IAAI,CAACC,qBAAqB,GAAG12B,OAAO,CAACsD,MAAM,CAACqzB,YAAY,CAAC;IACzD,IAAI,CAACC,WAAW,EAAE;AACpB,EAAA;;AAEA;EACA,WAAW3uB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAwB,EAAAA,OAAOA,GAAG;IACR7L,YAAY,CAACC,GAAG,CAAC,IAAI,CAACuL,QAAQ,EAAEM,WAAS,CAAC;AAC5C,EAAA;;AAEA;EACAitB,MAAMA,CAACn5B,KAAK,EAAE;AACZ,IAAA,IAAI,CAAC,IAAI,CAACg5B,qBAAqB,EAAE;MAC/B,IAAI,CAACF,OAAO,GAAG94B,KAAK,CAACo5B,OAAO,CAAC,CAAC,CAAC,CAACnS,OAAO;MACvC,IAAI,CAAC8R,OAAO,GAAG/4B,KAAK,CAACo5B,OAAO,CAAC,CAAC,CAAC,CAAClS,OAAO;AAEvC,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACmS,uBAAuB,CAACr5B,KAAK,CAAC,EAAE;AACvC,MAAA,IAAI,CAAC84B,OAAO,GAAG94B,KAAK,CAACinB,OAAO;AAC5B,MAAA,IAAI,CAAC8R,OAAO,GAAG/4B,KAAK,CAACknB,OAAO;AAC9B,IAAA;AACF,EAAA;EAEAoS,IAAIA,CAACt5B,KAAK,EAAE;AACV,IAAA,IAAI,IAAI,CAACq5B,uBAAuB,CAACr5B,KAAK,CAAC,EAAE;MACvC,IAAI,CAAC84B,OAAO,GAAG94B,KAAK,CAACinB,OAAO,GAAG,IAAI,CAAC6R,OAAO;MAC3C,IAAI,CAACC,OAAO,GAAG/4B,KAAK,CAACknB,OAAO,GAAG,IAAI,CAAC6R,OAAO;AAC7C,IAAA;IAEA,IAAI,CAACQ,YAAY,EAAE;AACnBtwB,IAAAA,OAAO,CAAC,IAAI,CAAC4C,OAAO,CAAC0sB,WAAW,CAAC;AACnC,EAAA;EAEAiB,KAAKA,CAACx5B,KAAK,EAAE;IACX,IAAIA,KAAK,CAACo5B,OAAO,IAAIp5B,KAAK,CAACo5B,OAAO,CAACl2B,MAAM,GAAG,CAAC,EAAE;MAC7C,IAAI,CAAC41B,OAAO,GAAG,CAAC;MAChB,IAAI,CAACC,OAAO,GAAG,CAAC;AAChB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACD,OAAO,GAAG94B,KAAK,CAACo5B,OAAO,CAAC,CAAC,CAAC,CAACnS,OAAO,GAAG,IAAI,CAAC6R,OAAO;AACtD,IAAA,IAAI,CAACC,OAAO,GAAG/4B,KAAK,CAACo5B,OAAO,CAAC,CAAC,CAAC,CAAClS,OAAO,GAAG,IAAI,CAAC6R,OAAO;AACxD,EAAA;AAEAQ,EAAAA,YAAYA,GAAG;IACb,MAAME,SAAS,GAAGlzB,IAAI,CAAC6Q,GAAG,CAAC,IAAI,CAAC0hB,OAAO,CAAC;IACxC,MAAMY,SAAS,GAAGnzB,IAAI,CAAC6Q,GAAG,CAAC,IAAI,CAAC2hB,OAAO,CAAC;;AAExC;AACA,IAAA,IAAIW,SAAS,GAAGD,SAAS,IAAIC,SAAS,GAAGpB,eAAe,EAAE;AACxD;MACA,MAAMtjB,SAAS,GAAG,IAAI,CAAC+jB,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI;MAClD,IAAI,CAACD,OAAO,GAAG,CAAC;MAChB,IAAI,CAACC,OAAO,GAAG,CAAC;AAChB9vB,MAAAA,OAAO,CAAC+L,SAAS,KAAK,MAAM,GAAG,IAAI,CAACnJ,OAAO,CAAC8sB,YAAY,GAAG,IAAI,CAAC9sB,OAAO,CAAC6sB,UAAU,CAAC;AACnF,MAAA;AACF,IAAA;IAEA,IAAIe,SAAS,GAAGnB,eAAe,EAAE;AAC/B;AACA,MAAA,MAAMtjB,SAAS,GAAGykB,SAAS,GAAG,IAAI,CAACX,OAAO;MAC1C,IAAI,CAACA,OAAO,GAAG,CAAC;MAChB,IAAI,CAACC,OAAO,GAAG,CAAC;MAEhB,IAAI,CAAC/jB,SAAS,EAAE;AACd,QAAA;AACF,MAAA;AAEA/L,MAAAA,OAAO,CAAC+L,SAAS,GAAG,CAAC,GAAG,IAAI,CAACnJ,OAAO,CAAC4sB,aAAa,GAAG,IAAI,CAAC5sB,OAAO,CAAC2sB,YAAY,CAAC;AAC/E,MAAA;AACF,IAAA;IAEA,IAAI,CAACM,OAAO,GAAG,CAAC;IAChB,IAAI,CAACC,OAAO,GAAG,CAAC;AAClB,EAAA;AAEAG,EAAAA,WAAWA,GAAG;IACZ,IAAI,IAAI,CAACF,qBAAqB,EAAE;AAC9B54B,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE+E,iBAAiB,EAAE3Q,KAAK,IAAI,IAAI,CAACm5B,MAAM,CAACn5B,KAAK,CAAC,CAAC;AAC9EI,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEssB,eAAe,EAAEl4B,KAAK,IAAI,IAAI,CAACs5B,IAAI,CAACt5B,KAAK,CAAC,CAAC;MAE1E,IAAI,CAAC4L,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACikB,wBAAwB,CAAC;AACvD,IAAA,CAAC,MAAM;AACLj4B,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEmsB,gBAAgB,EAAE/3B,KAAK,IAAI,IAAI,CAACm5B,MAAM,CAACn5B,KAAK,CAAC,CAAC;AAC7EI,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEosB,eAAe,EAAEh4B,KAAK,IAAI,IAAI,CAACw5B,KAAK,CAACx5B,KAAK,CAAC,CAAC;AAC3EI,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEqsB,cAAc,EAAEj4B,KAAK,IAAI,IAAI,CAACs5B,IAAI,CAACt5B,KAAK,CAAC,CAAC;AAC3E,IAAA;AACF,EAAA;EAEAq5B,uBAAuBA,CAACr5B,KAAK,EAAE;AAC7B,IAAA,OAAO,IAAI,CAACg5B,qBAAqB,KAAKh5B,KAAK,CAAC25B,WAAW,KAAKvB,gBAAgB,IAAIp4B,KAAK,CAAC25B,WAAW,KAAKxB,kBAAkB,CAAC;AAC3H,EAAA;;AAEA;EACA,OAAOU,WAAWA,GAAG;IACnB,OAAO,cAAc,IAAInyB,QAAQ,CAAC6B,eAAe,IAAIqxB,SAAS,CAACC,cAAc,GAAG,CAAC;AACnF,EAAA;AACF;;AC1KA;AACA;AACA;AACA;AACA;AACA;;;AAaA;AACA;AACA;;AAEA,MAAMpvB,MAAI,GAAG,QAAQ;AACrB,MAAMuB,UAAQ,GAAG,WAAW;AAC5B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAChC,MAAMiB,qBAAmB,GAAG,CAAA,IAAA,EAAO1E,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE7D,MAAM4L,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAM4tB,cAAY,GAAG,CAAA,MAAA,EAAS5tB,WAAS,CAAA,CAAE;AACzC,MAAM4D,sBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE/D,MAAME,sBAAoB,GAAG,2BAA2B;AAExD,MAAMtF,SAAO,GAAG;AACdipB,EAAAA,QAAQ,EAAE,IAAI;AACdjhB,EAAAA,QAAQ,EAAE,IAAI;AACdwnB,EAAAA,MAAM,EAAE;AACV,CAAC;AAED,MAAMvvB,aAAW,GAAG;AAClBgpB,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BjhB,EAAAA,QAAQ,EAAE,SAAS;AACnBwnB,EAAAA,MAAM,EAAE;AACV,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,MAAM,SAAS/H,UAAU,CAAC;AAC9BhnB,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IACtB,IAAI,CAACqvB,YAAY,GAAG,IAAI;AAC1B,EAAA;;AAEA;EACA,WAAW1vB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAwB,EAAAA,OAAOA,GAAG;IACR,IAAI,IAAI,CAACguB,YAAY,EAAE;AACrB,MAAA,IAAI,CAACA,YAAY,CAAChuB,OAAO,EAAE;AAC7B,IAAA;IAEA,KAAK,CAACA,OAAO,EAAE;AACjB,EAAA;;AAEA;;AAEAumB,EAAAA,eAAeA,GAAG;AAChB,IAAA,MAAM0H,QAAQ,GAAG53B,OAAO,CAAC,IAAI,CAACuJ,OAAO,CAAC2nB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC3nB,OAAO,CAACkuB,MAAM;IACvE,OAAO;AACLzH,MAAAA,KAAK,EAAE4H,QAAQ;AACf3H,MAAAA,iBAAiB,EAAE,CAAC,IAAI,CAAC1mB,OAAO,CAACkuB;KAClC;AACH,EAAA;AAEA1H,EAAAA,aAAaA,GAAG;IACd,IAAI,CAAC8H,UAAU,EAAE;AACnB,EAAA;AAEArH,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,OAAO,gBAAgB;AACzB,EAAA;AAEAC,EAAAA,mBAAmBA,GAAG;AACpB,IAAA,OAAO,eAAe;AACxB,EAAA;;AAEA;;AAEAoH,EAAAA,UAAUA,GAAG;IACX,IAAI,IAAI,CAACF,YAAY,IAAI,CAACrB,KAAK,CAACC,WAAW,EAAE,EAAE;AAC7C,MAAA;AACF,IAAA;;AAEA;IACA,MAAMuB,WAAW,GAAG,EAAE;AACtB,IAAA,MAAMp8B,OAAO,GAAG,IAAI,CAAC4N,QAAQ;IAE7B,IAAI5N,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAAC,eAAe,CAAC,EAAE;MAC/Cs4B,WAAW,CAACzB,YAAY,GAAG,MAAM,IAAI,CAAChc,IAAI,EAAE;IAC9C,CAAC,MAAM,IAAI3e,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAAC,YAAY,CAAC,EAAE;MACnDs4B,WAAW,CAAC1B,UAAU,GAAG,MAAM,IAAI,CAAC/b,IAAI,EAAE;IAC5C,CAAC,MAAM,IAAI3e,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAAC,YAAY,CAAC,EAAE;AACnD;MACA,IAAIiH,OAAK,EAAE,EAAE;QACXqxB,WAAW,CAAC5B,YAAY,GAAG,MAAM,IAAI,CAAC7b,IAAI,EAAE;AAC9C,MAAA,CAAC,MAAM;QACLyd,WAAW,CAAC3B,aAAa,GAAG,MAAM,IAAI,CAAC9b,IAAI,EAAE;AAC/C,MAAA;AACF,IAAA,CAAC,MAAM,IAAI5T,OAAK,EAAE,EAAE;AAClB;MACAqxB,WAAW,CAAC3B,aAAa,GAAG,MAAM,IAAI,CAAC9b,IAAI,EAAE;AAC/C,IAAA,CAAC,MAAM;AACL;MACAyd,WAAW,CAAC5B,YAAY,GAAG,MAAM,IAAI,CAAC7b,IAAI,EAAE;AAC9C,IAAA;IAEA,IAAI,CAACsd,YAAY,GAAG,IAAIrB,KAAK,CAAC56B,OAAO,EAAEo8B,WAAW,CAAC;AACrD,EAAA;AACF;;AAEA;AACA;AACA;;AAEAh6B,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,sBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF,EAAA,MAAMY,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAAC,IAAI,CAAC;AAE1D,EAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAACtL,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;IACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;AAEA,EAAA,IAAIzG,UAAU,CAAC,IAAI,CAAC,EAAE;AACpB,IAAA;AACF,EAAA;AAEA5H,EAAAA,YAAY,CAAC0C,GAAG,CAAClC,MAAM,EAAE2a,cAAY,EAAE,MAAM;AAC3C,IAAA,IAAI9T,SAAS,CAAC,IAAI,CAAC,EAAE;MACnB,IAAI,CAACwS,KAAK,CAAC;AAAEC,QAAAA,aAAa,EAAE;AAAK,OAAC,CAAC;AACrC,IAAA;AACF,EAAA,CAAC,CAAC;;AAEF;AACA,EAAA,MAAMmgB,WAAW,GAAGptB,cAAc,CAACE,OAAO,CAAC,qBAAqB,CAAC;AACjE,EAAA,IAAIktB,WAAW,IAAIA,WAAW,KAAKz5B,MAAM,EAAE;IACzCo5B,MAAM,CAACztB,WAAW,CAAC8tB,WAAW,CAAC,CAAC1d,IAAI,EAAE;AACxC,EAAA;AAEA,EAAA,MAAM5N,IAAI,GAAGirB,MAAM,CAACxtB,mBAAmB,CAAC5L,MAAM,CAAC;AAC/CmO,EAAAA,IAAI,CAACiB,MAAM,CAAC,IAAI,CAAC;AACnB,CAAC,CAAC;AAEF5P,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEgL,qBAAmB,EAAE,MAAM;EACjD,KAAK,MAAMnQ,QAAQ,IAAIwM,cAAc,CAAC7L,IAAI,CAAC,qBAAqB,CAAC,EAAE;IACjE44B,MAAM,CAACxtB,mBAAmB,CAAC/L,QAAQ,CAAC,CAACmc,IAAI,EAAE;AAC7C,EAAA;AACF,CAAC,CAAC;AAEFxc,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEk0B,cAAY,EAAE,MAAM;EAC1C,KAAK,MAAM97B,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAAC,kCAAkC,CAAC,EAAE;IAC7E,IAAI2F,gBAAgB,CAAC/I,OAAO,CAAC,CAACmnB,QAAQ,KAAK,OAAO,EAAE;MAClD6U,MAAM,CAACxtB,mBAAmB,CAACxO,OAAO,CAAC,CAAC2e,IAAI,EAAE;AAC5C,IAAA;AACF,EAAA;AACF,CAAC,CAAC;AAEFvO,oBAAoB,CAAC4rB,MAAM,CAAC;;ACnL5B;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMvvB,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAM2qB,qBAAqB,GAAG,CAAA,cAAA,EAAiBpuB,WAAS,CAAA,CAAE;AAE1D,MAAMquB,sBAAsB,GAAG,oBAAoB;AAEnD,MAAMC,eAAe,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;AAE1D,MAAMjwB,SAAO,GAAG;AACdkwB,EAAAA,KAAK,EAAE,IAAI;AAAE;AACbC,EAAAA,SAAS,EAAE,CAAC;AACZC,EAAAA,QAAQ,EAAE;AACRC,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,IAAI,EAAE,MAAM;AACZC,IAAAA,MAAM,EAAE;GACT;AACDC,EAAAA,OAAO,EAAE;AACPN,IAAAA,SAAS,EAAE,CAAC;AACZO,IAAAA,WAAW,EAAE,CAAC;AACdC,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,SAAS,EAAE,CAAC;AACZC,IAAAA,OAAO,EAAE,CAAC;AACVC,IAAAA,OAAO,EAAE,CAAC;AACVC,IAAAA,eAAe,EAAE,CAAC;AAClBC,IAAAA,YAAY,EAAE;GACf;AACDC,EAAAA,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAAE;EACvBC,MAAM,EAAE,IAAI;AACd,CAAC;AAED,MAAMjxB,aAAW,GAAG;AAClBiwB,EAAAA,KAAK,EAAE,uBAAuB;AAC9BC,EAAAA,SAAS,EAAE,QAAQ;AACnBC,EAAAA,QAAQ,EAAE,QAAQ;AAClBK,EAAAA,OAAO,EAAE,QAAQ;AACjBQ,EAAAA,UAAU,EAAE,OAAO;AACnBC,EAAAA,MAAM,EAAE;AACV,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,QAAQ,SAAS/vB,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;AAEtB,IAAA,IAAI,CAAC+wB,MAAM,GAAG,IAAI,CAACC,SAAS,EAAE;AAC9B,IAAA,IAAI,CAACC,SAAS,GAAG5uB,cAAc,CAAC7L,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAACwK,QAAQ,CAAC;AACxE,IAAA,IAAI,CAACkwB,YAAY,GAAG7uB,cAAc,CAACE,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAACvB,QAAQ,CAACkqB,aAAa,CAAC;IACzF,IAAI,CAACiG,gBAAgB,GAAG,IAAI;IAE5B,IAAI,IAAI,CAACJ,MAAM,EAAE;MACf,IAAI,CAACloB,kBAAkB,EAAE;AACzB;MACA,IAAI,CAACuoB,SAAS,EAAE;AAClB,IAAA;AACF,EAAA;;AAEA;EACA,WAAWzxB,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAwxB,EAAAA,WAAWA,GAAG;IACZ,OAAO,IAAI,CAACF,gBAAgB;AAC9B,EAAA;AAEAG,EAAAA,QAAQA,GAAG;IACT,IAAI,CAACF,SAAS,EAAE;AAClB,EAAA;;AAEA;AACAJ,EAAAA,SAASA,GAAG;AACV,IAAA,IAAI,IAAI,CAAC/vB,OAAO,CAAC4uB,KAAK,EAAE;MACtB,OAAO,OAAO,IAAI,CAAC5uB,OAAO,CAAC4uB,KAAK,KAAK,QAAQ,GAC3CxtB,cAAc,CAACE,OAAO,CAAC,IAAI,CAACtB,OAAO,CAAC4uB,KAAK,CAAC,GAC1C,IAAI,CAAC5uB,OAAO,CAAC4uB,KAAK;AACtB,IAAA;;AAEA;AACA,IAAA,MAAMze,MAAM,GAAG,IAAI,CAACpQ,QAAQ,CAACkqB,aAAa;AAC1C,IAAA,OAAO7oB,cAAc,CAACE,OAAO,CAAC,wBAAwB,EAAE6O,MAAM,CAAC;AACjE,EAAA;AAEAvI,EAAAA,kBAAkBA,GAAG;AACnBrT,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,CAACK,SAAS,EAAE,CAAC;AAC7D57B,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,CAACK,SAAS,EAAE,CAAC;AAChE,EAAA;AAEAA,EAAAA,SAASA,GAAG;AACV,IAAA,MAAMG,QAAQ,GAAG,IAAI,CAACR,MAAM,CAAC98B,KAAK;AAClC,IAAA,MAAMu9B,KAAK,GAAG,IAAI,CAACC,eAAe,CAACF,QAAQ,CAAC;AAC5C,IAAA,MAAMG,QAAQ,GAAG,IAAI,CAACC,gBAAgB,CAACH,KAAK,CAAC;AAE7C,IAAA,IAAIE,QAAQ,KAAK,IAAI,CAACP,gBAAgB,EAAE;MACtC,IAAI,CAACA,gBAAgB,GAAGO,QAAQ;AAChC,MAAA,IAAI,CAACE,SAAS,CAACF,QAAQ,EAAEF,KAAK,CAAC;MAE/Bh8B,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0uB,qBAAqB,EAAE;QACzDgC,QAAQ;QACRF,KAAK;QACLD,QAAQ,EAAEA,QAAQ,CAACj5B,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE;AAC5C,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;EAEAm5B,eAAeA,CAACF,QAAQ,EAAE;IACxB,IAAI,CAACA,QAAQ,EAAE;AACb,MAAA,OAAO,CAAC;AACV,IAAA;;AAEA;IACA,IAAI,OAAO,IAAI,CAACtwB,OAAO,CAAC4vB,MAAM,KAAK,UAAU,EAAE;AAC7C,MAAA,OAAO,IAAI,CAAC5vB,OAAO,CAAC4vB,MAAM,CAACU,QAAQ,CAAC;AACtC,IAAA;IAEA,MAAM;AAAEnB,MAAAA;KAAS,GAAG,IAAI,CAACnvB,OAAO;IAChC,IAAIuwB,KAAK,GAAG,CAAC;;AAEb;IACA,IAAID,QAAQ,CAACj5B,MAAM,IAAI,IAAI,CAAC2I,OAAO,CAAC6uB,SAAS,EAAE;MAC7C0B,KAAK,IAAIpB,OAAO,CAACN,SAAS;AAC5B,IAAA;IAEA,IAAIyB,QAAQ,CAACj5B,MAAM,IAAI,IAAI,CAAC2I,OAAO,CAAC6uB,SAAS,GAAG,CAAC,EAAE;MACjD0B,KAAK,IAAIpB,OAAO,CAACC,WAAW;AAC9B,IAAA;;AAEA;AACA,IAAA,IAAI,OAAO,CAAC1vB,IAAI,CAAC4wB,QAAQ,CAAC,EAAE;MAC1BC,KAAK,IAAIpB,OAAO,CAACE,SAAS;AAC5B,IAAA;AAEA,IAAA,IAAI,OAAO,CAAC3vB,IAAI,CAAC4wB,QAAQ,CAAC,EAAE;MAC1BC,KAAK,IAAIpB,OAAO,CAACG,SAAS;AAC5B,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC5vB,IAAI,CAAC4wB,QAAQ,CAAC,EAAE;MACvBC,KAAK,IAAIpB,OAAO,CAACI,OAAO;AAC1B,IAAA;;AAEA;AACA,IAAA,IAAI,wBAAwB,CAAC7vB,IAAI,CAAC4wB,QAAQ,CAAC,EAAE;MAC3CC,KAAK,IAAIpB,OAAO,CAACK,OAAO;AAC1B,IAAA;;AAEA;AACA,IAAA,IAAI,gDAAgD,CAAC9vB,IAAI,CAAC4wB,QAAQ,CAAC,EAAE;MACnEC,KAAK,IAAIpB,OAAO,CAACM,eAAe;AAClC,IAAA;AAEA,IAAA,IAAIa,QAAQ,CAACj5B,MAAM,IAAI,EAAE,EAAE;MACzBk5B,KAAK,IAAIpB,OAAO,CAACO,YAAY;AAC/B,IAAA;AAEA,IAAA,OAAOa,KAAK;AACd,EAAA;EAEAG,gBAAgBA,CAACH,KAAK,EAAE;IACtB,IAAIA,KAAK,KAAK,CAAC,EAAE;AACf,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,MAAM,CAACxB,IAAI,EAAEC,IAAI,EAAEC,IAAI,CAAC,GAAG,IAAI,CAACjvB,OAAO,CAAC2vB,UAAU;IAElD,IAAIY,KAAK,IAAIxB,IAAI,EAAE;AACjB,MAAA,OAAO,MAAM;AACf,IAAA;IAEA,IAAIwB,KAAK,IAAIvB,IAAI,EAAE;AACjB,MAAA,OAAO,MAAM;AACf,IAAA;IAEA,IAAIuB,KAAK,IAAItB,IAAI,EAAE;AACjB,MAAA,OAAO,MAAM;AACf,IAAA;AAEA,IAAA,OAAO,QAAQ;AACjB,EAAA;EAEA0B,SAASA,CAACF,QAAQ,EAAE;AAClB;AACA,IAAA,IAAIA,QAAQ,EAAE;AACZ,MAAA,IAAI,CAAC1wB,QAAQ,CAAC1G,OAAO,CAACu3B,UAAU,GAAGH,QAAQ;AAC7C,IAAA,CAAC,MAAM;AACL,MAAA,OAAO,IAAI,CAAC1wB,QAAQ,CAAC1G,OAAO,CAACu3B,UAAU;AACzC,IAAA;;AAEA;AACA,IAAA,MAAMC,aAAa,GAAGJ,QAAQ,GAAG9B,eAAe,CAACrwB,OAAO,CAACmyB,QAAQ,CAAC,GAAG,EAAE;AAEvE,IAAA,KAAK,MAAM,CAACpyB,KAAK,EAAEyyB,OAAO,CAAC,IAAI,IAAI,CAACd,SAAS,CAACl5B,OAAO,EAAE,EAAE;MACvD,IAAIuH,KAAK,IAAIwyB,aAAa,EAAE;AAC1BC,QAAAA,OAAO,CAACx0B,SAAS,CAACiM,GAAG,CAAC,QAAQ,CAAC;AACjC,MAAA,CAAC,MAAM;AACLuoB,QAAAA,OAAO,CAACx0B,SAAS,CAACrJ,MAAM,CAAC,QAAQ,CAAC;AACpC,MAAA;AACF,IAAA;;AAEA;IACA,IAAI,IAAI,CAACg9B,YAAY,EAAE;MACrB,IAAIQ,QAAQ,IAAI,IAAI,CAACzwB,OAAO,CAAC8uB,QAAQ,CAAC2B,QAAQ,CAAC,EAAE;AAC/C,QAAA,IAAI,CAACR,YAAY,CAAC5P,WAAW,GAAG,IAAI,CAACrgB,OAAO,CAAC8uB,QAAQ,CAAC2B,QAAQ,CAAC;AAC/D,QAAA,IAAI,CAACR,YAAY,CAAC52B,OAAO,CAACu3B,UAAU,GAAGH,QAAQ;;AAE/C;AACA,QAAA,MAAMM,QAAQ,GAAG;AACfhC,UAAAA,IAAI,EAAE,QAAQ;AACdC,UAAAA,IAAI,EAAE,SAAS;AACfC,UAAAA,IAAI,EAAE,MAAM;AACZC,UAAAA,MAAM,EAAE;SACT;AACD,QAAA,IAAI,CAACe,YAAY,CAACrmB,KAAK,CAACgF,WAAW,CAAC,kBAAkB,EAAE,SAASmiB,QAAQ,CAACN,QAAQ,CAAC,QAAQ,CAAC;AAC9F,MAAA,CAAC,MAAM;AACL,QAAA,IAAI,CAACR,YAAY,CAAC5P,WAAW,GAAG,EAAE;AAClC,QAAA,OAAO,IAAI,CAAC4P,YAAY,CAAC52B,OAAO,CAACu3B,UAAU;AAC7C,MAAA;AACF,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAr8B,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,CAAA,gBAAA,EAAmBwF,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE,EAAE,MAAM;EAC7E,KAAK,MAAM3R,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAACm5B,sBAAsB,CAAC,EAAE;AACjEmB,IAAAA,QAAQ,CAAClvB,mBAAmB,CAACxO,OAAO,CAAC;AACvC,EAAA;AACF,CAAC,CAAC;;AClQF;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,UAAU;AACvB,MAAMuB,UAAQ,GAAG,aAAa;AAC9B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMktB,cAAc,GAAG,CAAA,QAAA,EAAW3wB,WAAS,CAAA,CAAE;AAC7C,MAAM4wB,aAAW,GAAG,CAAA,KAAA,EAAQ5wB,WAAS,CAAA,CAAE;AACvC,MAAM6wB,uBAAuB,GAAG,CAAA,gBAAA,EAAmB7wB,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;AAE7E,MAAMqtB,iBAAiB,GAAG,eAAe;AACzC,MAAMC,gBAAc,GAAG,OAAO;;AAE9B;AACA,MAAMC,WAAW,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;AAExD,MAAMC,gBAAgB,GAAG,WAAW;AACpC,MAAMC,mBAAmB,GAAG,cAAc;AAC1C,MAAMC,gBAAgB,GAAG,WAAW;AACpC,MAAMC,eAAe,GAAG,UAAU;AAClC,MAAMC,sBAAsB,GAAG,iBAAiB;AAChD,MAAMC,sBAAsB,GAAG,iBAAiB;AAChD,MAAMC,oBAAoB,GAAG,eAAe;AAE5C,MAAMC,cAAc,GAAG,GAAG;;AAE1B;AACA,MAAMC,KAAK,GAAG;AACZC,EAAAA,OAAO,EAAE;AAAEC,IAAAA,SAAS,EAAE,SAAS;AAAEC,IAAAA,OAAO,EAAE,QAAQ;AAAE34B,IAAAA,MAAM,EAAE;GAAW;AACvE44B,EAAAA,YAAY,EAAE;AAAEF,IAAAA,SAAS,EAAE,MAAM;AAAEC,IAAAA,OAAO,EAAE,cAAc;AAAE34B,IAAAA,MAAM,EAAE;GAAiB;AACrF64B,EAAAA,KAAK,EAAE;AAAEH,IAAAA,SAAS,EAAE,MAAM;AAAEC,IAAAA,OAAO,EAAE,WAAW;AAAE34B,IAAAA,MAAM,EAAE;AAAa;AACzE,CAAC;AAED,MAAMoF,SAAO,GAAG;AACd0zB,EAAAA,MAAM,EAAE,IAAI;AACZ/6B,EAAAA,MAAM,EAAE,IAAI;AACZg7B,EAAAA,IAAI,EAAE,KAAK;AACXzM,EAAAA,SAAS,EAAE,GAAG;AACdnxB,EAAAA,IAAI,EAAE;AACR,CAAC;AAED,MAAMkK,aAAW,GAAG;AAClByzB,EAAAA,MAAM,EAAE,cAAc;AACtB/6B,EAAAA,MAAM,EAAE,eAAe;AACvBg7B,EAAAA,IAAI,EAAE,SAAS;AACfzM,EAAAA,SAAS,EAAE,QAAQ;AACnBnxB,EAAAA,IAAI,EAAE;AACR,CAAC;;AAED;AACA;AACA;;AAEA,MAAM69B,QAAQ,SAASxyB,aAAa,CAAC;AACnCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;AAEtB,IAAA,IAAI,CAAC+wB,MAAM,GAAG1uB,cAAc,CAACE,OAAO,CAAC8vB,gBAAc,EAAE,IAAI,CAACrxB,QAAQ,CAAC;AACnE,IAAA,IAAI,CAAC,IAAI,CAAC+vB,MAAM,EAAE;AAChB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACyC,KAAK,GAAGT,KAAK,CAAC,IAAI,CAAC9xB,OAAO,CAACvL,IAAI,CAAC,IAAIq9B,KAAK,CAACC,OAAO;AACtD,IAAA,IAAI,CAACS,OAAO,GAAG,IAAI,CAACC,cAAc,EAAE;IACpC,IAAI,CAACC,MAAM,GAAG,EAAE;IAEhB,IAAI,CAACC,WAAW,EAAE;IAClB,IAAI,CAACC,YAAY,EAAE;IACnB,IAAI,CAAChrB,kBAAkB,EAAE;IACzB,IAAI,CAACirB,OAAO,EAAE;AAChB,EAAA;;AAEA;EACA,WAAWn0B,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAk0B,EAAAA,QAAQA,GAAG;AACT,IAAA,OAAO,IAAI,CAAChD,MAAM,CAAC98B,KAAK;AAC1B,EAAA;EAEA+/B,QAAQA,CAAC//B,KAAK,EAAE;AACd,IAAA,IAAI,CAAC88B,MAAM,CAAC98B,KAAK,GAAG,IAAI,CAACggC,SAAS,CAACjN,MAAM,CAAC/yB,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC6/B,OAAO,EAAE;IACd,IAAI,CAACI,cAAc,EAAE;AACvB,EAAA;AAEA9X,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAAC2U,MAAM,CAAC98B,KAAK,GAAG,EAAE;IACtB,IAAI,CAAC6/B,OAAO,EAAE;AACd,IAAA,IAAI,CAAC/C,MAAM,CAAC1hB,KAAK,EAAE;AACrB,EAAA;AAEAA,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAAC0hB,MAAM,CAAC1hB,KAAK,EAAE;AACnB;IACA,MAAM8kB,GAAG,GAAG,IAAI,CAACpD,MAAM,CAAC98B,KAAK,CAACqE,MAAM;IACpC,IAAI,CAACy4B,MAAM,CAACqD,iBAAiB,CAACD,GAAG,EAAEA,GAAG,CAAC;IACvC,IAAI,CAACL,OAAO,EAAE;AAChB,EAAA;AAEAzyB,EAAAA,OAAOA,GAAG;AACR7L,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACs7B,MAAM,EAAE,OAAO,EAAE,IAAI,CAACsD,QAAQ,CAAC;AACrD7+B,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACs7B,MAAM,EAAE,OAAO,EAAE,IAAI,CAACuD,QAAQ,CAAC;AACrD,IAAA,KAAK,MAAM5+B,IAAI,IAAI48B,WAAW,EAAE;AAC9B98B,MAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACs7B,MAAM,EAAEr7B,IAAI,EAAE,IAAI,CAAC6+B,OAAO,CAAC;AACnD,IAAA;AAEA,IAAA,IAAI,CAACC,eAAe,EAAEtgC,MAAM,EAAE;IAC9B,IAAI,CAAC8M,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACs+B,mBAAmB,CAAC;IACnD,KAAK,CAACnxB,OAAO,EAAE;AACjB,EAAA;;AAEA;AACAqyB,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAI,IAAI,CAACzyB,OAAO,CAAC3I,MAAM,EAAE;AACvB,MAAA,OAAO,IAAI,CAAC2I,OAAO,CAAC3I,MAAM;AAC5B,IAAA;AAEA,IAAA,MAAMm8B,SAAS,GAAGn7B,MAAM,CAACsQ,QAAQ,CAAC,IAAI,CAACmnB,MAAM,CAACp2B,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;AAC5E,IAAA,OAAOrB,MAAM,CAACkW,KAAK,CAACilB,SAAS,CAAC,IAAIA,SAAS,GAAG,CAAC,GAAG,CAAC,GAAGA,SAAS;AACjE,EAAA;AAEAb,EAAAA,WAAWA,GAAG;AACZ,IAAA,MAAM/D,KAAK,GAAG,IAAI,CAACkB,MAAM;;AAEzB;AACA;IACA,IAAIlB,KAAK,CAACn6B,IAAI,KAAK,QAAQ,IAAIm6B,KAAK,CAACn6B,IAAI,KAAK,UAAU,EAAE;MACxDm6B,KAAK,CAACn6B,IAAI,GAAG,MAAM;AACrB,IAAA;AAEAm6B,IAAAA,KAAK,CAACtyB,SAAS,CAACiM,GAAG,CAAC+oB,gBAAgB,CAAC;IACrC1C,KAAK,CAAC71B,YAAY,CAAC,WAAW,EAAEgtB,MAAM,CAAC,IAAI,CAACyM,OAAO,CAAC,CAAC;IACrD5D,KAAK,CAAC71B,YAAY,CAAC,WAAW,EAAE,IAAI,CAACw5B,KAAK,CAACP,SAAS,CAAC;IACrDpD,KAAK,CAAC71B,YAAY,CAAC,SAAS,EAAE,IAAI,CAACw5B,KAAK,CAACN,OAAO,CAAC;AAEjD,IAAA,IAAI,CAACrD,KAAK,CAACl1B,YAAY,CAAC,cAAc,CAAC,EAAE;AACvCk1B,MAAAA,KAAK,CAAC71B,YAAY,CAAC,cAAc,EAAE,eAAe,CAAC;AACrD,IAAA;;AAEA;IACA,IAAI61B,KAAK,CAAC57B,KAAK,EAAE;MACf47B,KAAK,CAAC57B,KAAK,GAAG,IAAI,CAACggC,SAAS,CAACpE,KAAK,CAAC57B,KAAK,CAAC;AAC3C,IAAA;AACF,EAAA;AAEA4/B,EAAAA,YAAYA,GAAG;AACb,IAAA,MAAMtd,SAAS,GAAGza,QAAQ,CAAC2kB,aAAa,CAAC,KAAK,CAAC;IAC/ClK,SAAS,CAACsV,SAAS,GAAG4G,gBAAgB;AACtClc,IAAAA,SAAS,CAACvc,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IAE7C,MAAM;AAAEq5B,MAAAA;KAAQ,GAAG,IAAI,CAACpyB,OAAO;IAC/B,IAAIyzB,UAAU,GAAG,CAAC;IAClB,IAAIC,OAAO,GAAG,CAAC;AAEf,IAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAACnB,OAAO,EAAEmB,CAAC,EAAE,EAAE;AACrC,MAAA,MAAMC,IAAI,GAAG/4B,QAAQ,CAAC2kB,aAAa,CAAC,KAAK,CAAC;MAC1CoU,IAAI,CAAChJ,SAAS,GAAG6G,eAAe;AAChCnc,MAAAA,SAAS,CAACjI,MAAM,CAACumB,IAAI,CAAC;AACtB,MAAA,IAAI,CAAClB,MAAM,CAAC9wB,IAAI,CAACgyB,IAAI,CAAC;;AAEtB;AACA,MAAA,IAAIC,KAAK,CAACC,OAAO,CAAC1B,MAAM,CAAC,IAAIA,MAAM,CAAC/6B,MAAM,GAAG,CAAC,EAAE;AAC9Cq8B,QAAAA,OAAO,EAAE;AACT,QAAA,IAAIA,OAAO,KAAKtB,MAAM,CAACqB,UAAU,CAAC,IAAIE,CAAC,GAAG,IAAI,CAACnB,OAAO,GAAG,CAAC,EAAE;AAC1D,UAAA,MAAM5M,SAAS,GAAG/qB,QAAQ,CAAC2kB,aAAa,CAAC,KAAK,CAAC;UAC/CoG,SAAS,CAACgF,SAAS,GAAGgH,oBAAoB;AAC1ChM,UAAAA,SAAS,CAACvF,WAAW,GAAG,IAAI,CAACrgB,OAAO,CAAC4lB,SAAS;AAC9CtQ,UAAAA,SAAS,CAACjI,MAAM,CAACuY,SAAS,CAAC;AAC3B6N,UAAAA,UAAU,GAAG/4B,IAAI,CAAC8D,GAAG,CAACi1B,UAAU,GAAG,CAAC,EAAErB,MAAM,CAAC/6B,MAAM,GAAG,CAAC,CAAC;AACxDq8B,UAAAA,OAAO,GAAG,CAAC;AACb,QAAA;AACF,MAAA;AACF,IAAA;IAEA,IAAI,CAACH,eAAe,GAAGje,SAAS;AAChC,IAAA,IAAI,CAACvV,QAAQ,CAACsN,MAAM,CAACiI,SAAS,CAAC;IAC/B,IAAI,CAACvV,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACgpB,mBAAmB,CAAC;AAClD,EAAA;AAEA3pB,EAAAA,kBAAkBA,GAAG;AACnB;AACA;AACA;IACA,IAAI,CAACwrB,QAAQ,GAAG,MAAM,IAAI,CAACW,YAAY,EAAE;IACzC,IAAI,CAACV,QAAQ,GAAG,MAAM,IAAI,CAACjlB,KAAK,EAAE;IAClC,IAAI,CAACklB,OAAO,GAAG,MAAM,IAAI,CAACT,OAAO,EAAE;AAEnCt+B,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE,OAAO,EAAE,IAAI,CAACsD,QAAQ,CAAC;AACpD7+B,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE,OAAO,EAAE,IAAI,CAACuD,QAAQ,CAAC;;AAEpD;AACA,IAAA,KAAK,MAAM5+B,IAAI,IAAI48B,WAAW,EAAE;AAC9B98B,MAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAEr7B,IAAI,EAAE,IAAI,CAAC6+B,OAAO,CAAC;AAClD,IAAA;AACF,EAAA;AAEAS,EAAAA,YAAYA,GAAG;IACb,MAAMC,SAAS,GAAG,IAAI,CAAChB,SAAS,CAAC,IAAI,CAAClD,MAAM,CAAC98B,KAAK,CAAC;AACnD,IAAA,IAAIghC,SAAS,KAAK,IAAI,CAAClE,MAAM,CAAC98B,KAAK,EAAE;AACnC,MAAA,IAAI,CAAC88B,MAAM,CAAC98B,KAAK,GAAGghC,SAAS;AAC/B,IAAA;IAEA,IAAI,CAACnB,OAAO,EAAE;IAEdt+B,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEkxB,aAAW,EAAE;AAAEj+B,MAAAA,KAAK,EAAE,IAAI,CAAC88B,MAAM,CAAC98B;AAAM,KAAC,CAAC;IAE9E,IAAI,CAACigC,cAAc,EAAE;AACvB,EAAA;EAEAD,SAASA,CAAChgC,KAAK,EAAE;IACf,OAAOA,KAAK,CAACqD,OAAO,CAAC,IAAI,CAACk8B,KAAK,CAACj5B,MAAM,EAAE,EAAE,CAAC,CAAC/B,KAAK,CAAC,CAAC,EAAE,IAAI,CAACi7B,OAAO,CAAC;AACpE,EAAA;AAEAK,EAAAA,OAAOA,GAAG;IACR,MAAM;AAAE7/B,MAAAA;KAAO,GAAG,IAAI,CAAC88B,MAAM;IAC7B,MAAMmE,SAAS,GAAGp5B,QAAQ,CAACoD,aAAa,KAAK,IAAI,CAAC6xB,MAAM;AACxD;IACA,MAAMoE,KAAK,GAAGx5B,IAAI,CAAC8D,GAAG,CAAC,IAAI,CAACsxB,MAAM,CAACqE,cAAc,IAAInhC,KAAK,CAACqE,MAAM,EAAE,IAAI,CAACm7B,OAAO,GAAG,CAAC,CAAC;AAEpF,IAAA,KAAK,MAAM,CAACn0B,KAAK,EAAEu1B,IAAI,CAAC,IAAI,IAAI,CAAClB,MAAM,CAAC57B,OAAO,EAAE,EAAE;AACjD,MAAA,MAAMs9B,IAAI,GAAGphC,KAAK,CAACqL,KAAK,CAAC,IAAI,EAAE;AAC/Bu1B,MAAAA,IAAI,CAACvT,WAAW,GAAG+T,IAAI,IAAI,IAAI,CAACp0B,OAAO,CAACqyB,IAAI,GAAGR,cAAc,GAAGuC,IAAI;MACpER,IAAI,CAACt3B,SAAS,CAAC6H,MAAM,CAACutB,sBAAsB,EAAEj7B,OAAO,CAAC29B,IAAI,CAAC,CAAC;AAC5DR,MAAAA,IAAI,CAACt3B,SAAS,CAAC6H,MAAM,CAACwtB,sBAAsB,EAAEsC,SAAS,IAAI51B,KAAK,KAAK61B,KAAK,CAAC;AAC7E,IAAA;AACF,EAAA;AAEAjB,EAAAA,cAAcA,GAAG;IACf,MAAM;AAAEjgC,MAAAA;KAAO,GAAG,IAAI,CAAC88B,MAAM;AAC7B,IAAA,IAAI98B,KAAK,CAACqE,MAAM,KAAK,IAAI,CAACm7B,OAAO,EAAE;MACjCj+B,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEixB,cAAc,EAAE;AAAEh+B,QAAAA;AAAM,OAAC,CAAC;AAChE,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAuB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEq2B,uBAAuB,EAAE,MAAM;EACvD,KAAK,MAAM/+B,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAAC47B,iBAAiB,CAAC,EAAE;AAC5DmB,IAAAA,QAAQ,CAAC3xB,mBAAmB,CAACxO,OAAO,CAAC;AACvC,EAAA;AACF,CAAC,CAAC;;AC5QF;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,OAAO;AACpB,MAAMuB,UAAQ,GAAG,UAAU;AAC3B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMuwB,SAAS,GAAG,CAAA,GAAA,EAAMh0B,WAAS,CAAA,CAAE;AACnC,MAAMi0B,YAAY,GAAG,CAAA,MAAA,EAASj0B,WAAS,CAAA,CAAE;AACzC,MAAM6d,cAAY,GAAG,CAAA,MAAA,EAAS7d,WAAS,CAAA,CAAE;AACzC,MAAMk0B,YAAY,GAAG,CAAA,MAAA,EAASl0B,WAAS,CAAA,CAAE;AAEzC,MAAMm0B,mBAAmB,GAAG,iBAAiB;AAC7C,MAAMC,oBAAoB,GAAG,aAAa;AAC1C,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,qBAAqB,GAAG,eAAe;AAE7C,MAAMC,eAAe,GAAG,MAAM;AAC9B,MAAMC,uBAAuB,GAAG,cAAc;AAC9C,MAAM9wB,mBAAiB,GAAG,QAAQ;AAElC,MAAM+wB,oBAAoB,GAAG,+OAA+O;AAE5Q,MAAMp2B,SAAO,GAAG;AACdknB,EAAAA,SAAS,EAAE,GAAG;AACdmP,EAAAA,eAAe,EAAE,KAAK;AACtBC,EAAAA,QAAQ,EAAE,IAAI;AACdtW,EAAAA,WAAW,EAAE,EAAE;AACfuW,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,WAAW,EAAEJ,oBAAoB;AACjCK,EAAAA,YAAY,EAAE;AAChB,CAAC;AAED,MAAMx2B,aAAW,GAAG;AAClBinB,EAAAA,SAAS,EAAE,eAAe;AAC1BmP,EAAAA,eAAe,EAAE,SAAS;AAC1BC,EAAAA,QAAQ,EAAE,eAAe;AACzBtW,EAAAA,WAAW,EAAE,QAAQ;AACrBuW,EAAAA,WAAW,EAAE,SAAS;AACtBC,EAAAA,WAAW,EAAE,QAAQ;AACrBC,EAAAA,YAAY,EAAE;AAChB,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,KAAK,SAASt1B,aAAa,CAAC;AAChCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;AAEtB,IAAA,IAAI,CAAC+wB,MAAM,GAAG1uB,cAAc,CAACE,OAAO,CAACmzB,oBAAoB,EAAE,IAAI,CAAC10B,QAAQ,CAAC;IACzE,IAAI,CAACs1B,MAAM,GAAG,EAAE;AAChB,IAAA,IAAI,CAACC,cAAc,GAAG,IAAI1hC,GAAG,EAAE;AAC/B,IAAA,IAAI,CAAC2hC,WAAW,GAAG,IAAI,CAAA;;AAEvB,IAAA,IAAI,CAAC,IAAI,CAACzF,MAAM,EAAE;MAChB,IAAI,CAAC0F,YAAY,EAAE;AACrB,IAAA;IAEA,IAAI,CAACC,wBAAwB,EAAE;IAC/B,IAAI,CAAC7tB,kBAAkB,EAAE;AAC3B,EAAA;;AAEA;EACA,WAAWlJ,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;EACA2J,GAAGA,CAACvV,KAAK,EAAE;IACT,MAAM0iC,YAAY,GAAG3P,MAAM,CAAC/yB,KAAK,CAAC,CAACgO,IAAI,EAAE;IAEzC,IAAI,CAAC00B,YAAY,EAAE;AACjB,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACA,IAAA,IAAI,CAAC,IAAI,CAAC11B,OAAO,CAAC+0B,eAAe,IAAI,IAAI,CAACM,MAAM,CAACt+B,QAAQ,CAAC2+B,YAAY,CAAC,EAAE;AACvE,MAAA,OAAO,IAAI;AACb,IAAA;;AAEA;AACA,IAAA,IAAI,IAAI,CAAC11B,OAAO,CAACg1B,QAAQ,KAAK,IAAI,IAAI,IAAI,CAACK,MAAM,CAACh+B,MAAM,IAAI,IAAI,CAAC2I,OAAO,CAACg1B,QAAQ,EAAE;AACjF,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,MAAMW,QAAQ,GAAGphC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEs0B,SAAS,EAAE;AAC9DrhC,MAAAA,KAAK,EAAE0iC,YAAY;MACnB1/B,aAAa,EAAE,IAAI,CAAC85B;AACtB,KAAC,CAAC;IAEF,IAAI6F,QAAQ,CAAC/xB,gBAAgB,EAAE;AAC7B,MAAA,OAAO,IAAI;AACb,IAAA;AAEA,IAAA,MAAMgyB,IAAI,GAAG,IAAI,CAACC,WAAW,CAACH,YAAY,CAAC;IAC3C,IAAI,CAAC31B,QAAQ,CAAC0f,YAAY,CAACmW,IAAI,EAAE,IAAI,CAAC9F,MAAM,CAAC;AAC7C,IAAA,IAAI,CAACuF,MAAM,CAACzzB,IAAI,CAAC8zB,YAAY,CAAC;IAE9BnhC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEme,cAAY,EAAE;AAChDprB,MAAAA,MAAM,EAAE,IAAI,CAACgjC,SAAS;AACxB,KAAC,CAAC;AAEF,IAAA,OAAOF,IAAI;AACb,EAAA;EAEA3iC,MAAMA,CAAC8iC,WAAW,EAAE;AAClB,IAAA,IAAIH,IAAI;AACR,IAAA,IAAI5iC,KAAK;AAET,IAAA,IAAI,OAAO+iC,WAAW,KAAK,QAAQ,EAAE;AACnC/iC,MAAAA,KAAK,GAAG+iC,WAAW;AACnBH,MAAAA,IAAI,GAAG,IAAI,CAACI,gBAAgB,CAAChjC,KAAK,CAAC;AACrC,IAAA,CAAC,MAAM;AACL4iC,MAAAA,IAAI,GAAGG,WAAW;AAClB/iC,MAAAA,KAAK,GAAG,IAAI,CAACijC,aAAa,CAACL,IAAI,CAAC;AAClC,IAAA;AAEA,IAAA,IAAI,CAACA,IAAI,IAAI,CAAC5iC,KAAK,EAAE;AACnB,MAAA,OAAO,KAAK;AACd,IAAA;IAEA,MAAMkjC,WAAW,GAAG3hC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEu0B,YAAY,EAAE;MACpEthC,KAAK;MACL4iC,IAAI;MACJ5/B,aAAa,EAAE,IAAI,CAAC85B;AACtB,KAAC,CAAC;IAEF,IAAIoG,WAAW,CAACtyB,gBAAgB,EAAE;AAChC,MAAA,OAAO,KAAK;AACd,IAAA;;AAEA;AACA,IAAA,IAAI,CAAC0xB,cAAc,CAACpiC,MAAM,CAAC0iC,IAAI,CAAC;AAChC,IAAA,IAAI,IAAI,CAACL,WAAW,KAAKK,IAAI,EAAE;MAC7B,IAAI,CAACL,WAAW,GAAG,IAAI;AACzB,IAAA;;AAEA;IACAK,IAAI,CAAC3iC,MAAM,EAAE;AACb,IAAA,IAAI,CAACoiC,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC/7B,MAAM,CAAC68B,CAAC,IAAIA,CAAC,KAAKnjC,KAAK,CAAC;IAElDuB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEme,cAAY,EAAE;AAChDprB,MAAAA,MAAM,EAAE,IAAI,CAACgjC,SAAS;AACxB,KAAC,CAAC;AAEF,IAAA,OAAO,IAAI;AACb,EAAA;AAEAM,EAAAA,cAAcA,GAAG;AACf,IAAA,MAAMC,aAAa,GAAG,CAAC,GAAG,IAAI,CAACf,cAAc,CAAC;AAC9C,IAAA,KAAK,MAAMM,IAAI,IAAIS,aAAa,EAAE;AAChC,MAAA,IAAI,CAACpjC,MAAM,CAAC2iC,IAAI,CAAC;AACnB,IAAA;AAEA,IAAA,IAAI,CAAC9F,MAAM,EAAE1hB,KAAK,EAAE;AACtB,EAAA;AAEA0nB,EAAAA,SAASA,GAAG;AACV,IAAA,OAAO,CAAC,GAAG,IAAI,CAACT,MAAM,CAAC;AACzB,EAAA;AAEAiB,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAO,CAAC,GAAG,IAAI,CAAChB,cAAc,CAAC,CAACr0B,GAAG,CAAC20B,IAAI,IAAI,IAAI,CAACK,aAAa,CAACL,IAAI,CAAC,CAAC;AACvE,EAAA;AAEAza,EAAAA,KAAKA,GAAG;IACN,MAAMob,KAAK,GAAGn1B,cAAc,CAAC7L,IAAI,CAACm/B,aAAa,EAAE,IAAI,CAAC30B,QAAQ,CAAC;AAC/D,IAAA,KAAK,MAAM61B,IAAI,IAAIW,KAAK,EAAE;MACxBX,IAAI,CAAC3iC,MAAM,EAAE;AACf,IAAA;IAEA,IAAI,CAACoiC,MAAM,GAAG,EAAE;AAChB,IAAA,IAAI,CAACC,cAAc,CAACna,KAAK,EAAE;IAC3B,IAAI,CAACoa,WAAW,GAAG,IAAI;IAEvBhhC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEme,cAAY,EAAE;AAChDprB,MAAAA,MAAM,EAAE;AACV,KAAC,CAAC;AACJ,EAAA;AAEA0jC,EAAAA,cAAcA,GAAG;AACf,IAAA,KAAK,MAAMZ,IAAI,IAAI,IAAI,CAACN,cAAc,EAAE;AACtCM,MAAAA,IAAI,CAACt5B,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAC1C,IAAA;AAEA,IAAA,IAAI,CAACuxB,cAAc,CAACna,KAAK,EAAE;IAC3B,IAAI,CAACoa,WAAW,GAAG,IAAI;IAEvBhhC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEw0B,YAAY,EAAE;AAChD9iB,MAAAA,QAAQ,EAAE;AACZ,KAAC,CAAC;AACJ,EAAA;AAEAglB,EAAAA,UAAUA,CAACb,IAAI,EAAEc,OAAO,GAAG,EAAE,EAAE;IAC7B,MAAM;AAAEC,MAAAA,cAAc,GAAG,KAAK;AAAEC,MAAAA,WAAW,GAAG;AAAM,KAAC,GAAGF,OAAO;AAC/D,IAAA,MAAMG,YAAY,GAAG,IAAI,CAACC,gBAAgB,EAAE;AAE5C,IAAA,IAAI,CAACD,YAAY,CAAC9/B,QAAQ,CAAC6+B,IAAI,CAAC,EAAE;AAChC,MAAA;AACF,IAAA;AAEA,IAAA,IAAIgB,WAAW,IAAI,IAAI,CAACrB,WAAW,EAAE;AACnC;MACA,MAAMwB,WAAW,GAAGF,YAAY,CAACv4B,OAAO,CAAC,IAAI,CAACi3B,WAAW,CAAC;AAC1D,MAAA,MAAMyB,SAAS,GAAGH,YAAY,CAACv4B,OAAO,CAACs3B,IAAI,CAAC;MAC5C,MAAMqB,KAAK,GAAGv8B,IAAI,CAAC8D,GAAG,CAACu4B,WAAW,EAAEC,SAAS,CAAC;MAC9C,MAAM9D,GAAG,GAAGx4B,IAAI,CAAC6D,GAAG,CAACw4B,WAAW,EAAEC,SAAS,CAAC;MAE5C,IAAI,CAACL,cAAc,EAAE;QACnB,IAAI,CAACH,cAAc,EAAE;AACvB,MAAA;MAEA,KAAK,IAAI7C,CAAC,GAAGsD,KAAK,EAAEtD,CAAC,IAAIT,GAAG,EAAES,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC2B,cAAc,CAAC/sB,GAAG,CAACsuB,YAAY,CAAClD,CAAC,CAAC,CAAC;QACxCkD,YAAY,CAAClD,CAAC,CAAC,CAACr3B,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AAClD,MAAA;IACF,CAAC,MAAM,IAAI4yB,cAAc,EAAE;AACzB;MACA,IAAI,IAAI,CAACrB,cAAc,CAAChjC,GAAG,CAACsjC,IAAI,CAAC,EAAE;AACjC,QAAA,IAAI,CAACN,cAAc,CAACpiC,MAAM,CAAC0iC,IAAI,CAAC;AAChCA,QAAAA,IAAI,CAACt5B,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAC1C,MAAA,CAAC,MAAM;AACL,QAAA,IAAI,CAACuxB,cAAc,CAAC/sB,GAAG,CAACqtB,IAAI,CAAC;AAC7BA,QAAAA,IAAI,CAACt5B,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;QACrC,IAAI,CAACwxB,WAAW,GAAGK,IAAI;AACzB,MAAA;AACF,IAAA,CAAC,MAAM;AACL;MACA,IAAI,CAACY,cAAc,EAAE;AACrB,MAAA,IAAI,CAAClB,cAAc,CAAC/sB,GAAG,CAACqtB,IAAI,CAAC;AAC7BA,MAAAA,IAAI,CAACt5B,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;MACrC,IAAI,CAACwxB,WAAW,GAAGK,IAAI;AACzB,IAAA;IAEArhC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEw0B,YAAY,EAAE;AAChD9iB,MAAAA,QAAQ,EAAE,IAAI,CAAC6kB,iBAAiB;AAClC,KAAC,CAAC;AACJ,EAAA;AAEAloB,EAAAA,KAAKA,GAAG;AACN,IAAA,IAAI,CAAC0hB,MAAM,EAAE1hB,KAAK,EAAE;AACtB,EAAA;;AAEA;AACA0oB,EAAAA,gBAAgBA,GAAG;IACjB,OAAO11B,cAAc,CAAC7L,IAAI,CAACm/B,aAAa,EAAE,IAAI,CAAC30B,QAAQ,CAAC;AAC1D,EAAA;AAEAy1B,EAAAA,YAAYA,GAAG;AACb,IAAA,MAAM5G,KAAK,GAAG/zB,QAAQ,CAAC2kB,aAAa,CAAC,OAAO,CAAC;IAC7CoP,KAAK,CAACn6B,IAAI,GAAG,MAAM;IACnBm6B,KAAK,CAAChE,SAAS,GAAG,YAAY;AAC9B,IAAA,IAAI,IAAI,CAAC5qB,OAAO,CAAC0e,WAAW,EAAE;AAC5BkQ,MAAAA,KAAK,CAAClQ,WAAW,GAAG,IAAI,CAAC1e,OAAO,CAAC0e,WAAW;AAC9C,IAAA;AAEA,IAAA,IAAI,CAAC3e,QAAQ,CAACsN,MAAM,CAACuhB,KAAK,CAAC;IAC3B,IAAI,CAACkB,MAAM,GAAGlB,KAAK;AACrB,EAAA;AAEA6G,EAAAA,wBAAwBA,GAAG;IACzB,MAAMyB,aAAa,GAAG91B,cAAc,CAAC7L,IAAI,CAACm/B,aAAa,EAAE,IAAI,CAAC30B,QAAQ,CAAC;AACvE,IAAA,KAAK,MAAM61B,IAAI,IAAIsB,aAAa,EAAE;AAChC,MAAA,MAAMlkC,KAAK,GAAG,IAAI,CAACijC,aAAa,CAACL,IAAI,CAAC;AACtC,MAAA,IAAI5iC,KAAK,EAAE;AACT,QAAA,IAAI,CAACqiC,MAAM,CAACzzB,IAAI,CAAC5O,KAAK,CAAC;AACvB,QAAA,IAAI,CAACmkC,UAAU,CAACvB,IAAI,CAAC;AACvB,MAAA;AACF,IAAA;AACF,EAAA;EAEAuB,UAAUA,CAACvB,IAAI,EAAE;AACf;AACAA,IAAAA,IAAI,CAAC78B,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC;;AAElC;AACA,IAAA,IAAI,IAAI,CAACiH,OAAO,CAACi1B,WAAW,IAAI,CAAC7zB,cAAc,CAACE,OAAO,CAACqzB,qBAAqB,EAAEiB,IAAI,CAAC,EAAE;MACpFA,IAAI,CAACvoB,MAAM,CAAC,IAAI,CAAC+pB,oBAAoB,EAAE,CAAC;AAC1C,IAAA;AACF,EAAA;EAEAvB,WAAWA,CAAC7iC,KAAK,EAAE;AACjB,IAAA,MAAM4iC,IAAI,GAAG/6B,QAAQ,CAAC2kB,aAAa,CAAC,MAAM,CAAC;IAC3CoW,IAAI,CAAChL,SAAS,GAAGgK,eAAe;AAChCgB,IAAAA,IAAI,CAACv8B,OAAO,CAACg+B,WAAW,GAAGrkC,KAAK;;AAEhC;IACA4iC,IAAI,CAACvoB,MAAM,CAACxS,QAAQ,CAACy8B,cAAc,CAACtkC,KAAK,CAAC,CAAC;;AAE3C;AACA,IAAA,IAAI,CAACmkC,UAAU,CAACvB,IAAI,CAAC;AAErB,IAAA,OAAOA,IAAI;AACb,EAAA;AAEAwB,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,MAAMhzB,MAAM,GAAGvJ,QAAQ,CAAC2kB,aAAa,CAAC,QAAQ,CAAC;IAC/Cpb,MAAM,CAAC3P,IAAI,GAAG,QAAQ;IACtB2P,MAAM,CAACwmB,SAAS,GAAGiK,uBAAuB;AAC1CzwB,IAAAA,MAAM,CAACrL,YAAY,CAAC,YAAY,EAAE,QAAQ,CAAC;AAC3CqL,IAAAA,MAAM,CAACrL,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACrCqL,IAAAA,MAAM,CAACymB,SAAS,GAAG,IAAI,CAAC7qB,OAAO,CAACk1B,WAAW;AAC3C,IAAA,OAAO9wB,MAAM;AACf,EAAA;EAEA4xB,gBAAgBA,CAAChjC,KAAK,EAAE;AACtB,IAAA,MAAMujC,KAAK,GAAG,IAAI,CAACO,gBAAgB,EAAE;AACrC,IAAA,OAAOP,KAAK,CAAChhC,IAAI,CAACqgC,IAAI,IAAI,IAAI,CAACK,aAAa,CAACL,IAAI,CAAC,KAAK5iC,KAAK,CAAC;AAC/D,EAAA;EAEAijC,aAAaA,CAACL,IAAI,EAAE;AAClB,IAAA,IAAIA,IAAI,CAACv8B,OAAO,CAACg+B,WAAW,EAAE;AAC5B,MAAA,OAAOzB,IAAI,CAACv8B,OAAO,CAACg+B,WAAW;AACjC,IAAA;AAEA,IAAA,MAAM1tB,KAAK,GAAGisB,IAAI,CAAC1oB,SAAS,CAAC,IAAI,CAAC;IAClC,MAAMqqB,OAAO,GAAGn2B,cAAc,CAACE,OAAO,CAACqzB,qBAAqB,EAAEhrB,KAAK,CAAC;AACpE,IAAA,IAAI4tB,OAAO,EAAE;MACXA,OAAO,CAACtkC,MAAM,EAAE;AAClB,IAAA;IAEA,OAAO0W,KAAK,CAAC0W,WAAW,EAAErf,IAAI,EAAE,IAAI,EAAE;AACxC,EAAA;AAEA4G,EAAAA,kBAAkBA,GAAG;AACnB;AACArT,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE,SAAS,EAAE37B,KAAK,IAAI,IAAI,CAACqjC,mBAAmB,CAACrjC,KAAK,CAAC,CAAC;AACjFI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE,OAAO,EAAE37B,KAAK,IAAI,IAAI,CAAC4/B,YAAY,CAAC5/B,KAAK,CAAC,CAAC;AACxEI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE,OAAO,EAAE37B,KAAK,IAAI,IAAI,CAACsjC,YAAY,CAACtjC,KAAK,CAAC,CAAC;AACxEI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC0G,cAAc,EAAE,CAAC;AAElE,IAAA,IAAI,IAAI,CAACx2B,OAAO,CAACm1B,YAAY,EAAE;MAC7B5gC,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE,MAAM,EAAE37B,KAAK,IAAI;AAC5C;QACA,IAAI,CAACA,KAAK,CAAC6B,aAAa,EAAEiG,OAAO,CAACy4B,aAAa,CAAC,EAAE;UAChD,IAAI,CAACgD,oBAAoB,EAAE;AAC7B,QAAA;AACF,MAAA,CAAC,CAAC;AACJ,IAAA;;AAEA;AACAnjC,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,OAAO,EAAE20B,aAAa,EAAEvgC,KAAK,IAAI;AAC9D;MACA,IAAIA,KAAK,CAACY,MAAM,CAACkH,OAAO,CAAC04B,qBAAqB,CAAC,EAAE;AAC/C,QAAA;AACF,MAAA;MAEA,MAAMiB,IAAI,GAAGzhC,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACy4B,aAAa,CAAC;AAChD,MAAA,IAAIkB,IAAI,EAAE;QACRzhC,KAAK,CAACyO,cAAc,EAAE;AACtB,QAAA,IAAI,CAAC6zB,UAAU,CAACb,IAAI,EAAE;AACpBe,UAAAA,cAAc,EAAExiC,KAAK,CAACwjC,OAAO,IAAIxjC,KAAK,CAACyjC,OAAO;UAC9ChB,WAAW,EAAEziC,KAAK,CAAC0jC;AACrB,SAAC,CAAC;QACFjC,IAAI,CAACxnB,KAAK,EAAE;AACd,MAAA;AACF,IAAA,CAAC,CAAC;;AAEF;AACA7Z,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,OAAO,EAAE40B,qBAAqB,EAAExgC,KAAK,IAAI;MACtEA,KAAK,CAACgmB,eAAe,EAAE;MACvB,MAAMyb,IAAI,GAAGzhC,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACy4B,aAAa,CAAC;AAChD,MAAA,IAAIkB,IAAI,EAAE;AACR,QAAA,IAAI,CAAC3iC,MAAM,CAAC2iC,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC9F,MAAM,EAAE1hB,KAAK,EAAE;AACtB,MAAA;AACF,IAAA,CAAC,CAAC;;AAEF;AACA7Z,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,SAAS,EAAE20B,aAAa,EAAEvgC,KAAK,IAAI;AAChE,MAAA,IAAI,CAAC2jC,kBAAkB,CAAC3jC,KAAK,CAAC;AAChC,IAAA,CAAC,CAAC;;AAEF;IACAI,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,OAAO,EAAE5L,KAAK,IAAI;AAC/C,MAAA,IAAIA,KAAK,CAACY,MAAM,KAAK,IAAI,CAACgL,QAAQ,EAAE;QAClC,IAAI,CAACy2B,cAAc,EAAE;AACrB,QAAA,IAAI,CAAC1G,MAAM,EAAE1hB,KAAK,EAAE;AACtB,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;EAEAopB,mBAAmBA,CAACrjC,KAAK,EAAE;IACzB,MAAM;AAAE/B,MAAAA;AAAI,KAAC,GAAG+B,KAAK;AAErB,IAAA,QAAQ/B,GAAG;AACT,MAAA,KAAK,OAAO;AAAE,QAAA;UACZ+B,KAAK,CAACyO,cAAc,EAAE;UACtB,IAAI,CAAC80B,oBAAoB,EAAE;AAC3B,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,WAAW;AAChB,MAAA,KAAK,QAAQ;AAAE,QAAA;AACb,UAAA,IAAI,IAAI,CAAC5H,MAAM,CAAC98B,KAAK,KAAK,EAAE,EAAE;YAC5BmB,KAAK,CAACyO,cAAc,EAAE;AACtB,YAAA,MAAM2zB,KAAK,GAAG,IAAI,CAACO,gBAAgB,EAAE;AAErC,YAAA,IAAIP,KAAK,CAACl/B,MAAM,GAAG,CAAC,EAAE;AACpB;cACA,MAAM0gC,QAAQ,GAAGxB,KAAK,CAACpZ,EAAE,CAAC,EAAE,CAAC;AAC7B,cAAA,IAAI,CAACsZ,UAAU,CAACsB,QAAQ,CAAC;cACzBA,QAAQ,CAAC3pB,KAAK,EAAE;AAClB,YAAA;AACF,UAAA;AAEA,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,WAAW;AAAE,QAAA;AAChB,UAAA,IAAI,IAAI,CAAC0hB,MAAM,CAACqE,cAAc,KAAK,CAAC,IAAI,IAAI,CAACrE,MAAM,CAACkI,YAAY,KAAK,CAAC,EAAE;YACtE7jC,KAAK,CAACyO,cAAc,EAAE;AACtB,YAAA,MAAM2zB,KAAK,GAAG,IAAI,CAACO,gBAAgB,EAAE;AACrC,YAAA,IAAIP,KAAK,CAACl/B,MAAM,GAAG,CAAC,EAAE;cACpB,MAAM0gC,QAAQ,GAAGxB,KAAK,CAACpZ,EAAE,CAAC,EAAE,CAAC;cAC7B,IAAIhpB,KAAK,CAAC0jC,QAAQ,EAAE;AAClB,gBAAA,IAAI,CAACpB,UAAU,CAACsB,QAAQ,EAAE;AAAEpB,kBAAAA,cAAc,EAAE;AAAK,iBAAC,CAAC;AACrD,cAAA,CAAC,MAAM;AACL,gBAAA,IAAI,CAACF,UAAU,CAACsB,QAAQ,CAAC;AAC3B,cAAA;cAEAA,QAAQ,CAAC3pB,KAAK,EAAE;AAClB,YAAA;AACF,UAAA;AAEA,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,QAAQ;AAAE,QAAA;AACb,UAAA,IAAI,CAAC0hB,MAAM,CAAC98B,KAAK,GAAG,EAAE;UACtB,IAAI,CAACwjC,cAAc,EAAE;AACrB,UAAA,IAAI,CAAC1G,MAAM,CAACmI,IAAI,EAAE;AAClB,UAAA;AACF,QAAA;;AAEA;AACF;AACF,EAAA;EAEAH,kBAAkBA,CAAC3jC,KAAK,EAAE;IACxB,MAAM;AAAE/B,MAAAA;AAAI,KAAC,GAAG+B,KAAK;IACrB,MAAMyhC,IAAI,GAAGzhC,KAAK,CAACY,MAAM,CAACkH,OAAO,CAACy4B,aAAa,CAAC;IAChD,IAAI,CAACkB,IAAI,EAAE;AACT,MAAA;AACF,IAAA;AAEA,IAAA,MAAMW,KAAK,GAAG,IAAI,CAACO,gBAAgB,EAAE;AACrC,IAAA,MAAM7tB,YAAY,GAAGstB,KAAK,CAACj4B,OAAO,CAACs3B,IAAI,CAAC;AAExC,IAAA,QAAQxjC,GAAG;AACT,MAAA,KAAK,WAAW;AAChB,MAAA,KAAK,QAAQ;AAAE,QAAA;UACb+B,KAAK,CAACyO,cAAc,EAAE;AACtB,UAAA,IAAI,CAACs1B,iBAAiB,CAACjvB,YAAY,EAAEstB,KAAK,CAAC;AAC3C,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,WAAW;AAAE,QAAA;UAChBpiC,KAAK,CAACyO,cAAc,EAAE;AACtB,UAAA,IAAI,CAACu1B,aAAa,CAAC5B,KAAK,EAAEttB,YAAY,EAAE,EAAE,EAAE9U,KAAK,CAAC0jC,QAAQ,CAAC;AAC3D,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,YAAY;AAAE,QAAA;UACjB1jC,KAAK,CAACyO,cAAc,EAAE;AACtB,UAAA,IAAI,CAACu1B,aAAa,CAAC5B,KAAK,EAAEttB,YAAY,EAAE,CAAC,EAAE9U,KAAK,CAAC0jC,QAAQ,CAAC;AAC1D,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,MAAM;AAAE,QAAA;UACX1jC,KAAK,CAACyO,cAAc,EAAE;UACtB,IAAI,CAACw1B,eAAe,CAAC7B,KAAK,EAAE,CAAC,EAAEpiC,KAAK,CAAC0jC,QAAQ,CAAC;AAC9C,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,KAAK;AAAE,QAAA;UACV1jC,KAAK,CAACyO,cAAc,EAAE;UACtB,IAAI,CAAC4zB,cAAc,EAAE;AACrB,UAAA,IAAI,CAAC1G,MAAM,EAAE1hB,KAAK,EAAE;AACpB,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,GAAG;AAAE,QAAA;AACR,UAAA,IAAI,CAACiqB,gBAAgB,CAAClkC,KAAK,EAAEoiC,KAAK,CAAC;AACnC,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,QAAQ;AAAE,QAAA;UACbpiC,KAAK,CAACyO,cAAc,EAAE;UACtB,IAAI,CAAC4zB,cAAc,EAAE;AACrB,UAAA,IAAI,CAAC1G,MAAM,EAAE1hB,KAAK,EAAE;AACpB,UAAA;AACF,QAAA;;AAEA;AACF;AACF,EAAA;AAEA8pB,EAAAA,iBAAiBA,CAACjvB,YAAY,EAAEstB,KAAK,EAAE;AACrC,IAAA,IAAI,IAAI,CAACjB,cAAc,CAAC7iC,IAAI,KAAK,CAAC,EAAE;AAClC,MAAA;AACF,IAAA;AAEA,IAAA,MAAM6lC,SAAS,GAAG59B,IAAI,CAAC8D,GAAG,CAACyK,YAAY,EAAEstB,KAAK,CAACl/B,MAAM,GAAG,IAAI,CAACi+B,cAAc,CAAC7iC,IAAI,GAAG,CAAC,CAAC;IACrF,IAAI,CAAC2jC,cAAc,EAAE;AAErB,IAAA,MAAMmC,cAAc,GAAG,IAAI,CAACzB,gBAAgB,EAAE;AAC9C,IAAA,IAAIyB,cAAc,CAAClhC,MAAM,GAAG,CAAC,EAAE;MAC7B,MAAMmhC,UAAU,GAAG99B,IAAI,CAAC6D,GAAG,CAAC,CAAC,EAAE7D,IAAI,CAAC8D,GAAG,CAAC85B,SAAS,EAAEC,cAAc,CAAClhC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC9EkhC,MAAAA,cAAc,CAACC,UAAU,CAAC,CAACpqB,KAAK,EAAE;AAClC,MAAA,IAAI,CAACqoB,UAAU,CAAC8B,cAAc,CAACC,UAAU,CAAC,CAAC;AAC7C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAAC1I,MAAM,EAAE1hB,KAAK,EAAE;AACtB,IAAA;AACF,EAAA;EAEA+pB,aAAaA,CAAC5B,KAAK,EAAEttB,YAAY,EAAEE,SAAS,EAAE0uB,QAAQ,EAAE;AACtD,IAAA,MAAM9uB,WAAW,GAAGE,YAAY,GAAGE,SAAS;AAE5C,IAAA,IAAIA,SAAS,GAAG,CAAC,IAAIJ,WAAW,IAAI,CAAC,EAAE;AACrC,MAAA,MAAM0vB,UAAU,GAAGlC,KAAK,CAACxtB,WAAW,CAAC;AACrC,MAAA,IAAI,CAAC0tB,UAAU,CAACgC,UAAU,EAAEZ,QAAQ,GAAG;AAAElB,QAAAA,cAAc,EAAE,IAAI;AAAEC,QAAAA,WAAW,EAAE;OAAM,GAAG,EAAE,CAAC;MACxF6B,UAAU,CAACrqB,KAAK,EAAE;IACpB,CAAC,MAAM,IAAIjF,SAAS,GAAG,CAAC,IAAIJ,WAAW,GAAGwtB,KAAK,CAACl/B,MAAM,EAAE;AACtD,MAAA,MAAMohC,UAAU,GAAGlC,KAAK,CAACxtB,WAAW,CAAC;AACrC,MAAA,IAAI,CAAC0tB,UAAU,CAACgC,UAAU,EAAEZ,QAAQ,GAAG;AAAElB,QAAAA,cAAc,EAAE,IAAI;AAAEC,QAAAA,WAAW,EAAE;OAAM,GAAG,EAAE,CAAC;MACxF6B,UAAU,CAACrqB,KAAK,EAAE;AACpB,IAAA,CAAC,MAAM,IAAIjF,SAAS,GAAG,CAAC,EAAE;MACxB,IAAI,CAACqtB,cAAc,EAAE;AACrB,MAAA,IAAI,CAAC1G,MAAM,EAAE1hB,KAAK,EAAE;AACtB,IAAA;AACF,EAAA;AAEAgqB,EAAAA,eAAeA,CAAC7B,KAAK,EAAExtB,WAAW,EAAE8uB,QAAQ,EAAE;AAC5C,IAAA,IAAItB,KAAK,CAACl/B,MAAM,KAAK,CAAC,EAAE;AACtB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMohC,UAAU,GAAGlC,KAAK,CAACxtB,WAAW,CAAC;AACrC,IAAA,IAAI,CAAC0tB,UAAU,CAACgC,UAAU,EAAEZ,QAAQ,GAAG;AAAEjB,MAAAA,WAAW,EAAE;KAAM,GAAG,EAAE,CAAC;IAClE6B,UAAU,CAACrqB,KAAK,EAAE;AACpB,EAAA;AAEAiqB,EAAAA,gBAAgBA,CAAClkC,KAAK,EAAEoiC,KAAK,EAAE;IAC7B,IAAI,EAAEpiC,KAAK,CAACwjC,OAAO,IAAIxjC,KAAK,CAACyjC,OAAO,CAAC,EAAE;AACrC,MAAA;AACF,IAAA;IAEAzjC,KAAK,CAACyO,cAAc,EAAE;AACtB,IAAA,KAAK,MAAM81B,CAAC,IAAInC,KAAK,EAAE;AACrB,MAAA,IAAI,CAACjB,cAAc,CAAC/sB,GAAG,CAACmwB,CAAC,CAAC;AAC1BA,MAAAA,CAAC,CAACp8B,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AACpC,IAAA;IAEAxP,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEw0B,YAAY,EAAE;AAChD9iB,MAAAA,QAAQ,EAAE,IAAI,CAAC6kB,iBAAiB;AAClC,KAAC,CAAC;AACJ,EAAA;EAEAvC,YAAYA,CAAC5/B,KAAK,EAAE;IAClB,MAAM;AAAEnB,MAAAA;KAAO,GAAGmB,KAAK,CAACY,MAAM;IAC9B,MAAM;AAAE6wB,MAAAA;KAAW,GAAG,IAAI,CAAC5lB,OAAO;IAElC,IAAI4lB,SAAS,IAAI5yB,KAAK,CAAC+D,QAAQ,CAAC6uB,SAAS,CAAC,EAAE;AAC1C,MAAA,MAAMnT,KAAK,GAAGzf,KAAK,CAACsI,KAAK,CAACsqB,SAAS,CAAC;AACpC,MAAA,KAAK,MAAMhT,IAAI,IAAIH,KAAK,CAAClb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QACrC,IAAI,CAACgR,GAAG,CAACqK,IAAI,CAAC5R,IAAI,EAAE,CAAC;AACvB,MAAA;MAEA,IAAI,CAAC8uB,MAAM,CAAC98B,KAAK,GAAGyf,KAAK,CAAC0K,EAAE,CAAC,EAAE,CAAC;AAClC,IAAA;AACF,EAAA;EAEAsa,YAAYA,CAACtjC,KAAK,EAAE;IAClB,MAAM;AAAEyxB,MAAAA;KAAW,GAAG,IAAI,CAAC5lB,OAAO;IAClC,IAAI,CAAC4lB,SAAS,EAAE;AACd,MAAA;AACF,IAAA;AAEA,IAAA,MAAM+S,UAAU,GAAG,CAACxkC,KAAK,CAACykC,aAAa,IAAI7+B,MAAM,CAAC6+B,aAAa,EAAEC,OAAO,CAAC,MAAM,CAAC;AAChF,IAAA,IAAIF,UAAU,CAAC5hC,QAAQ,CAAC6uB,SAAS,CAAC,EAAE;MAClCzxB,KAAK,CAACyO,cAAc,EAAE;AAEtB,MAAA,MAAM6P,KAAK,GAAGkmB,UAAU,CAACr9B,KAAK,CAACsqB,SAAS,CAAC;AACzC,MAAA,KAAK,MAAMhT,IAAI,IAAIH,KAAK,EAAE;QACxB,IAAI,CAAClK,GAAG,CAACqK,IAAI,CAAC5R,IAAI,EAAE,CAAC;AACvB,MAAA;AACF,IAAA;AACF,EAAA;AAEA02B,EAAAA,oBAAoBA,GAAG;IACrB,MAAM1kC,KAAK,GAAG,IAAI,CAAC88B,MAAM,CAAC98B,KAAK,CAACgO,IAAI,EAAE;AACtC,IAAA,IAAIhO,KAAK,EAAE;AACT,MAAA,IAAI,CAACuV,GAAG,CAACvV,KAAK,CAAC;AACf,MAAA,IAAI,CAAC88B,MAAM,CAAC98B,KAAK,GAAG,EAAE;AACxB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEAuB,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE,CAAA,gBAAA,EAAmBwF,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE,EAAE,MAAM;EAC7E,KAAK,MAAM3R,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAACi/B,mBAAmB,CAAC,EAAE;AAC9DY,IAAAA,KAAK,CAACz0B,mBAAmB,CAACxO,OAAO,CAAC;AACpC,EAAA;AACF,CAAC,CAAC;;ACtnBF;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM2mC,sBAAsB,GAAG,gBAAgB;AAExC,MAAMC,gBAAgB,GAAG;AAC9B;AACA,EAAA,GAAG,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAED,sBAAsB,CAAC;EACnEE,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;AACrCC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNtG,EAAAA,CAAC,EAAE,EAAE;AACLuG,EAAAA,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;AACzDC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,EAAE,EAAE,EAAE;AACNC,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,KAAK,EAAE,EAAE;AACTC,EAAAA,IAAI,EAAE,EAAE;AACRC,EAAAA,GAAG,EAAE,EAAE;AACPC,EAAAA,GAAG,EAAE,EAAE;AACPzL,EAAAA,MAAM,EAAE,EAAE;AACV0L,EAAAA,CAAC,EAAE,EAAE;AACLC,EAAAA,EAAE,EAAE;AACN,CAAC;AACD;;AAEA,MAAMC,aAAa,GAAG,IAAIlnC,GAAG,CAAC,CAC5B,YAAY,EACZ,MAAM,EACN,MAAM,EACN,UAAU,EACV,UAAU,EACV,QAAQ,EACR,KAAK,EACL,YAAY,CACb,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA,MAAMmnC,gBAAgB,GAAG,2EAA2E;;AAEpG;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,mIAAmI;AAE5J,MAAMC,gBAAgB,GAAGA,CAACC,SAAS,EAAEC,oBAAoB,KAAK;EAC5D,MAAMC,aAAa,GAAGF,SAAS,CAACG,QAAQ,CAACziC,WAAW,EAAE;AAEtD,EAAA,IAAIuiC,oBAAoB,CAACpkC,QAAQ,CAACqkC,aAAa,CAAC,EAAE;AAChD,IAAA,IAAIN,aAAa,CAACxoC,GAAG,CAAC8oC,aAAa,CAAC,EAAE;AACpC,MAAA,OAAO3kC,OAAO,CAACskC,gBAAgB,CAACr7B,IAAI,CAACw7B,SAAS,CAACI,SAAS,CAAC,IAAIN,gBAAgB,CAACt7B,IAAI,CAACw7B,SAAS,CAACI,SAAS,CAAC,CAAC;AAC1G,IAAA;AAEA,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;EACA,OAAOH,oBAAoB,CAAC7hC,MAAM,CAACiiC,cAAc,IAAIA,cAAc,YAAY97B,MAAM,CAAC,CACnF+7B,IAAI,CAACC,KAAK,IAAIA,KAAK,CAAC/7B,IAAI,CAAC07B,aAAa,CAAC,CAAC;AAC7C,CAAC;AAEM,SAASM,YAAYA,CAACC,UAAU,EAAEC,SAAS,EAAEC,gBAAgB,EAAE;AACpE,EAAA,IAAI,CAACF,UAAU,CAACtkC,MAAM,EAAE;AACtB,IAAA,OAAOskC,UAAU;AACnB,EAAA;AAEA,EAAA,IAAIE,gBAAgB,IAAI,OAAOA,gBAAgB,KAAK,UAAU,EAAE;IAC9D,OAAOA,gBAAgB,CAACF,UAAU,CAAC;AACrC,EAAA;AAEA,EAAA,MAAMG,SAAS,GAAG,IAAI/hC,MAAM,CAACgiC,SAAS,EAAE;EACxC,MAAMC,eAAe,GAAGF,SAAS,CAACG,eAAe,CAACN,UAAU,EAAE,WAAW,CAAC;AAC1E,EAAA,MAAMO,QAAQ,GAAG,CAAC,GAAGF,eAAe,CAAC/kB,IAAI,CAACniB,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAEhE,EAAA,KAAK,MAAM3C,OAAO,IAAI+pC,QAAQ,EAAE;IAC9B,MAAMC,WAAW,GAAGhqC,OAAO,CAACkpC,QAAQ,CAACziC,WAAW,EAAE;AAElD,IAAA,IAAI,CAACtD,MAAM,CAAC1C,IAAI,CAACgpC,SAAS,CAAC,CAAC7kC,QAAQ,CAAColC,WAAW,CAAC,EAAE;MACjDhqC,OAAO,CAACc,MAAM,EAAE;AAChB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMmpC,aAAa,GAAG,CAAC,GAAGjqC,OAAO,CAACgH,UAAU,CAAC;IAC7C,MAAMkjC,iBAAiB,GAAG,CAAC,IAAIT,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,IAAIA,SAAS,CAACO,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;AAExF,IAAA,KAAK,MAAMjB,SAAS,IAAIkB,aAAa,EAAE;AACrC,MAAA,IAAI,CAACnB,gBAAgB,CAACC,SAAS,EAAEmB,iBAAiB,CAAC,EAAE;AACnDlqC,QAAAA,OAAO,CAAC8G,eAAe,CAACiiC,SAAS,CAACG,QAAQ,CAAC;AAC7C,MAAA;AACF,IAAA;AACF,EAAA;AAEA,EAAA,OAAOW,eAAe,CAAC/kB,IAAI,CAAC4T,SAAS;AACvC;;AC3HA;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMjsB,MAAI,GAAG,iBAAiB;AAE9B,MAAMF,SAAO,GAAG;AACdk9B,EAAAA,SAAS,EAAE7C,gBAAgB;EAC3BuD,OAAO,EAAE,EAAE;AAAE;AACbC,EAAAA,UAAU,EAAE,EAAE;AACdC,EAAAA,IAAI,EAAE,KAAK;AACXC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMh+B,aAAW,GAAG;AAClBi9B,EAAAA,SAAS,EAAE,QAAQ;AACnBU,EAAAA,OAAO,EAAE,QAAQ;AACjBC,EAAAA,UAAU,EAAE,mBAAmB;AAC/BC,EAAAA,IAAI,EAAE,SAAS;AACfC,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,UAAU,EAAE,iBAAiB;AAC7BC,EAAAA,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,kBAAkB,GAAG;AACzBryB,EAAAA,KAAK,EAAE,gCAAgC;AACvC3V,EAAAA,QAAQ,EAAE;AACZ,CAAC;;AAED;AACA;AACA;;AAEA,MAAMioC,eAAe,SAASp+B,MAAM,CAAC;EACnCW,WAAWA,CAACL,MAAM,EAAE;AAClB,IAAA,KAAK,EAAE;IACP,IAAI,CAACiB,OAAO,GAAG,IAAI,CAAClB,UAAU,CAACC,MAAM,CAAC;AACxC,EAAA;;AAEA;EACA,WAAWL,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAk+B,EAAAA,UAAUA,GAAG;IACX,OAAOxnC,MAAM,CAACxC,MAAM,CAAC,IAAI,CAACkN,OAAO,CAACs8B,OAAO,CAAC,CACvCr7B,GAAG,CAAClC,MAAM,IAAI,IAAI,CAACg+B,wBAAwB,CAACh+B,MAAM,CAAC,CAAC,CACpDzF,MAAM,CAAC7C,OAAO,CAAC;AACpB,EAAA;AAEAumC,EAAAA,UAAUA,GAAG;IACX,OAAO,IAAI,CAACF,UAAU,EAAE,CAACzlC,MAAM,GAAG,CAAC;AACrC,EAAA;EAEA4lC,aAAaA,CAACX,OAAO,EAAE;AACrB,IAAA,IAAI,CAACY,aAAa,CAACZ,OAAO,CAAC;AAC3B,IAAA,IAAI,CAACt8B,OAAO,CAACs8B,OAAO,GAAG;AAAE,MAAA,GAAG,IAAI,CAACt8B,OAAO,CAACs8B,OAAO;MAAE,GAAGA;KAAS;AAC9D,IAAA,OAAO,IAAI;AACb,EAAA;AAEAa,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAMC,eAAe,GAAGviC,QAAQ,CAAC2kB,aAAa,CAAC,KAAK,CAAC;AACrD4d,IAAAA,eAAe,CAACvS,SAAS,GAAG,IAAI,CAACwS,cAAc,CAAC,IAAI,CAACr9B,OAAO,CAAC28B,QAAQ,CAAC;AAEtE,IAAA,KAAK,MAAM,CAAC/nC,QAAQ,EAAE8rB,IAAI,CAAC,IAAIprB,MAAM,CAACwB,OAAO,CAAC,IAAI,CAACkJ,OAAO,CAACs8B,OAAO,CAAC,EAAE;MACnE,IAAI,CAACgB,WAAW,CAACF,eAAe,EAAE1c,IAAI,EAAE9rB,QAAQ,CAAC;AACnD,IAAA;AAEA,IAAA,MAAM+nC,QAAQ,GAAGS,eAAe,CAAC77B,QAAQ,CAAC,CAAC,CAAC;IAC5C,MAAMg7B,UAAU,GAAG,IAAI,CAACQ,wBAAwB,CAAC,IAAI,CAAC/8B,OAAO,CAACu8B,UAAU,CAAC;AAEzE,IAAA,IAAIA,UAAU,EAAE;AACdI,MAAAA,QAAQ,CAACrgC,SAAS,CAACiM,GAAG,CAAC,GAAGg0B,UAAU,CAACjhC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClD,IAAA;AAEA,IAAA,OAAOqhC,QAAQ;AACjB,EAAA;;AAEA;EACAz9B,gBAAgBA,CAACH,MAAM,EAAE;AACvB,IAAA,KAAK,CAACG,gBAAgB,CAACH,MAAM,CAAC;AAC9B,IAAA,IAAI,CAACm+B,aAAa,CAACn+B,MAAM,CAACu9B,OAAO,CAAC;AACpC,EAAA;EAEAY,aAAaA,CAACK,GAAG,EAAE;AACjB,IAAA,KAAK,MAAM,CAAC3oC,QAAQ,EAAE0nC,OAAO,CAAC,IAAIhnC,MAAM,CAACwB,OAAO,CAACymC,GAAG,CAAC,EAAE;MACrD,KAAK,CAACr+B,gBAAgB,CAAC;QAAEtK,QAAQ;AAAE2V,QAAAA,KAAK,EAAE+xB;OAAS,EAAEM,kBAAkB,CAAC;AAC1E,IAAA;AACF,EAAA;AAEAU,EAAAA,WAAWA,CAACX,QAAQ,EAAEL,OAAO,EAAE1nC,QAAQ,EAAE;IACvC,MAAM4oC,eAAe,GAAGp8B,cAAc,CAACE,OAAO,CAAC1M,QAAQ,EAAE+nC,QAAQ,CAAC;IAElE,IAAI,CAACa,eAAe,EAAE;AACpB,MAAA;AACF,IAAA;AAEAlB,IAAAA,OAAO,GAAG,IAAI,CAACS,wBAAwB,CAACT,OAAO,CAAC;IAEhD,IAAI,CAACA,OAAO,EAAE;MACZkB,eAAe,CAACvqC,MAAM,EAAE;AACxB,MAAA;AACF,IAAA;AAEA,IAAA,IAAIuI,WAAS,CAAC8gC,OAAO,CAAC,EAAE;MACtB,IAAI,CAACmB,qBAAqB,CAAC/hC,UAAU,CAAC4gC,OAAO,CAAC,EAAEkB,eAAe,CAAC;AAChE,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACx9B,OAAO,CAACw8B,IAAI,EAAE;MACrBgB,eAAe,CAAC3S,SAAS,GAAG,IAAI,CAACwS,cAAc,CAACf,OAAO,CAAC;AACxD,MAAA;AACF,IAAA;IAEAkB,eAAe,CAACnd,WAAW,GAAGic,OAAO;AACvC,EAAA;EAEAe,cAAcA,CAACE,GAAG,EAAE;IAClB,OAAO,IAAI,CAACv9B,OAAO,CAACy8B,QAAQ,GAAGf,YAAY,CAAC6B,GAAG,EAAE,IAAI,CAACv9B,OAAO,CAAC47B,SAAS,EAAE,IAAI,CAAC57B,OAAO,CAAC08B,UAAU,CAAC,GAAGa,GAAG;AACzG,EAAA;EAEAR,wBAAwBA,CAACQ,GAAG,EAAE;IAC5B,OAAOngC,OAAO,CAACmgC,GAAG,EAAE,CAACjjC,SAAS,EAAE,IAAI,CAAC,CAAC;AACxC,EAAA;AAEAmjC,EAAAA,qBAAqBA,CAACtrC,OAAO,EAAEqrC,eAAe,EAAE;AAC9C,IAAA,IAAI,IAAI,CAACx9B,OAAO,CAACw8B,IAAI,EAAE;MACrBgB,eAAe,CAAC3S,SAAS,GAAG,EAAE;AAC9B2S,MAAAA,eAAe,CAACnwB,MAAM,CAAClb,OAAO,CAAC;AAC/B,MAAA;AACF,IAAA;AAEAqrC,IAAAA,eAAe,CAACnd,WAAW,GAAGluB,OAAO,CAACkuB,WAAW;AACnD,EAAA;AACF;;AC7JA;AACA;AACA;AACA;AACA;AACA;;;AAyBA;AACA;AACA;;AAEA,MAAMzhB,MAAI,GAAG,SAAS;AACtB,MAAM8+B,qBAAqB,GAAG,IAAI9pC,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAE9E,MAAM8f,UAAU,GAAG,QAAQ;AAE3B,MAAMnQ,iBAAe,GAAG,MAAM;AAC9B,MAAMo6B,gBAAgB,GAAG,OAAO;AAChC,MAAMn6B,iBAAe,GAAG,MAAM;AAE9B,MAAMo6B,sBAAsB,GAAG,gBAAgB;AAC/C,MAAMC,cAAc,GAAG,CAAA,CAAA,EAAIF,gBAAgB,CAAA,CAAE;AAC7C,MAAM35B,sBAAoB,GAAG,4BAA4B;AAEzD,MAAM85B,gBAAgB,GAAG,eAAe;AAExC,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,aAAa,GAAG,OAAO;AAC7B,MAAMC,cAAc,GAAG,QAAQ;AAE/B,MAAMzuB,YAAU,GAAG,MAAM;AACzB,MAAMC,cAAY,GAAG,QAAQ;AAC7B,MAAMH,YAAU,GAAG,MAAM;AACzB,MAAMC,aAAW,GAAG,OAAO;AAC3B,MAAM2uB,cAAc,GAAG,UAAU;AACjC,MAAMC,aAAW,GAAG,OAAO;AAC3B,MAAMC,eAAa,GAAG,SAAS;AAC/B,MAAMC,gBAAc,GAAG,UAAU;AACjC,MAAM15B,kBAAgB,GAAG,YAAY;AACrC,MAAMC,gBAAgB,GAAG,YAAY;AACrC,MAAMF,eAAa,GAAG,SAAS;AAE/B,MAAM45B,aAAa,GAAG;AACpBC,EAAAA,IAAI,EAAE,MAAM;AACZC,EAAAA,GAAG,EAAE,KAAK;AACVC,EAAAA,KAAK,EAAExhC,OAAK,EAAE,GAAG,MAAM,GAAG,OAAO;AACjCyhC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,IAAI,EAAE1hC,OAAK,EAAE,GAAG,OAAO,GAAG;AAC5B,CAAC;AAED,MAAMwB,SAAO,GAAG;AACdk9B,EAAAA,SAAS,EAAE7C,gBAAgB;AAC3B8F,EAAAA,SAAS,EAAE,IAAI;AACfxpB,EAAAA,QAAQ,EAAE,iBAAiB;AAC3BC,EAAAA,SAAS,EAAE,KAAK;AAChBwpB,EAAAA,WAAW,EAAE,EAAE;AACfC,EAAAA,KAAK,EAAE,CAAC;EACRlmB,kBAAkB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AACtD2jB,EAAAA,IAAI,EAAE,KAAK;AACXzqB,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACde,EAAAA,SAAS,EAAE,KAAK;AAChB0C,EAAAA,cAAc,EAAE,IAAI;AACpBinB,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,UAAU,EAAE,IAAI;AAChB9nC,EAAAA,QAAQ,EAAE,KAAK;AACf+nC,EAAAA,QAAQ,EAAE,sCAAsC,GACtC,mCAAmC,GACnC,mCAAmC,GACnC,QAAQ;AAClBqC,EAAAA,KAAK,EAAE,EAAE;AACTvnC,EAAAA,OAAO,EAAE;AACX,CAAC;AAED,MAAMkH,aAAW,GAAG;AAClBi9B,EAAAA,SAAS,EAAE,QAAQ;AACnBiD,EAAAA,SAAS,EAAE,SAAS;AACpBxpB,EAAAA,QAAQ,EAAE,kBAAkB;AAC5BC,EAAAA,SAAS,EAAE,0BAA0B;AACrCwpB,EAAAA,WAAW,EAAE,mBAAmB;AAChCC,EAAAA,KAAK,EAAE,iBAAiB;AACxBlmB,EAAAA,kBAAkB,EAAE,OAAO;AAC3B2jB,EAAAA,IAAI,EAAE,SAAS;AACfzqB,EAAAA,MAAM,EAAE,yBAAyB;AACjCe,EAAAA,SAAS,EAAE,mBAAmB;AAC9B0C,EAAAA,cAAc,EAAE,wBAAwB;AACxCinB,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,UAAU,EAAE,iBAAiB;AAC7B9nC,EAAAA,QAAQ,EAAE,kBAAkB;AAC5B+nC,EAAAA,QAAQ,EAAE,QAAQ;AAClBqC,EAAAA,KAAK,EAAE,2BAA2B;AAClCvnC,EAAAA,OAAO,EAAE;AACX,CAAC;;AAED;AACA;AACA;;AAEA,MAAMwnC,OAAO,SAASn/B,aAAa,CAAC;AAClCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,IAAI,OAAO6S,eAAe,KAAK,WAAW,EAAE;AAC1C,MAAA,MAAM,IAAIjS,SAAS,CAAC,qEAAqE,CAAC;AAC5F,IAAA;AAEA,IAAA,KAAK,CAACxN,OAAO,EAAE4M,MAAM,CAAC;;AAEtB;IACA,IAAI,CAACmgC,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,UAAU,GAAG,IAAI;AACtB,IAAA,IAAI,CAACC,cAAc,GAAG,EAAE;IACxB,IAAI,CAACrpB,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACspB,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,gBAAgB,GAAG,IAAI;IAC5B,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACvpB,oBAAoB,GAAG,EAAE;IAC9B,IAAI,CAACC,qBAAqB,GAAG,IAAI;;AAEjC;IACA,IAAI,CAACupB,GAAG,GAAG,IAAI;IAEf,IAAI,CAAC7oB,0BAA0B,EAAE;IACjC,IAAI,CAAC8oB,aAAa,EAAE;AAEpB,IAAA,IAAI,CAAC,IAAI,CAAC1/B,OAAO,CAACpL,QAAQ,EAAE;MAC1B,IAAI,CAAC+qC,SAAS,EAAE;AAClB,IAAA;AACF,EAAA;;AAEA;EACA,WAAWjhC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAghC,EAAAA,MAAMA,GAAG;IACP,IAAI,CAACV,UAAU,GAAG,IAAI;AACxB,EAAA;AAEAW,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACX,UAAU,GAAG,KAAK;AACzB,EAAA;AAEAY,EAAAA,aAAaA,GAAG;AACd,IAAA,IAAI,CAACZ,UAAU,GAAG,CAAC,IAAI,CAACA,UAAU;AACpC,EAAA;AAEA/6B,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,CAAC,IAAI,CAAC+6B,UAAU,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACruB,QAAQ,EAAE,EAAE;MACnB,IAAI,CAACkvB,MAAM,EAAE;AACb,MAAA;AACF,IAAA;IAEA,IAAI,CAACC,MAAM,EAAE;AACf,EAAA;AAEA5/B,EAAAA,OAAOA,GAAG;AACR+O,IAAAA,YAAY,CAAC,IAAI,CAACgwB,QAAQ,CAAC;IAE3B,IAAI,CAACc,qBAAqB,EAAE;AAE5B1rC,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACuL,QAAQ,CAAC9D,OAAO,CAAC4hC,cAAc,CAAC,EAAEC,gBAAgB,EAAE,IAAI,CAACoC,iBAAiB,CAAC;IAEjG,IAAI,IAAI,CAACngC,QAAQ,CAACrG,YAAY,CAAC,wBAAwB,CAAC,EAAE;AACxD,MAAA,IAAI,CAACqG,QAAQ,CAAChH,YAAY,CAAC,OAAO,EAAE,IAAI,CAACgH,QAAQ,CAACrG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAC3F,IAAA;IAEA,IAAI,CAAC0d,gBAAgB,EAAE;IACvB,IAAI,CAACE,2BAA2B,EAAE;IAClC,KAAK,CAAClX,OAAO,EAAE;AACjB,EAAA;EAEA,MAAM2Q,IAAIA,GAAG;IACX,IAAI,IAAI,CAAChR,QAAQ,CAAC6J,KAAK,CAAC2L,OAAO,KAAK,MAAM,EAAE;AAC1C,MAAA,MAAM,IAAI1W,KAAK,CAAC,qCAAqC,CAAC;AACxD,IAAA;IAEA,IAAI,EAAE,IAAI,CAACshC,cAAc,EAAE,IAAI,IAAI,CAACjB,UAAU,CAAC,EAAE;AAC/C,MAAA;AACF,IAAA;AAEA,IAAA,MAAMpoB,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC2O,YAAU,CAAC,CAAC;AAC7F,IAAA,MAAM6wB,UAAU,GAAG3jC,cAAc,CAAC,IAAI,CAACsD,QAAQ,CAAC;AAChD,IAAA,MAAMsgC,UAAU,GAAG,CAACD,UAAU,IAAI,IAAI,CAACrgC,QAAQ,CAACugC,aAAa,CAAC5jC,eAAe,EAAEzG,QAAQ,CAAC,IAAI,CAAC8J,QAAQ,CAAC;AAEtG,IAAA,IAAI+W,SAAS,CAAClT,gBAAgB,IAAI,CAACy8B,UAAU,EAAE;AAC7C;AACA;AACA;AACA;MACA,IAAI,CAACjB,UAAU,GAAG,KAAK;AACvB,MAAA;AACF,IAAA;IAEA,IAAI,CAAChoB,gBAAgB,EAAE;AAEvB,IAAA,MAAMqoB,GAAG,GAAG,IAAI,CAACc,cAAc,EAAE;AAEjC,IAAA,IAAI,CAACxgC,QAAQ,CAAChH,YAAY,CAAC,kBAAkB,EAAE0mC,GAAG,CAAC/lC,YAAY,CAAC,IAAI,CAAC,CAAC;IAEtE,IAAI;AAAE4b,MAAAA;KAAW,GAAG,IAAI,CAACtV,OAAO;IAChC,MAAMwgC,aAAa,GAAG,IAAI,CAACzgC,QAAQ,CAAC9D,OAAO,CAAC,cAAc,CAAC;AAC3D,IAAA,IAAIukC,aAAa,IAAIlrB,SAAS,KAAKza,QAAQ,CAACoc,IAAI,EAAE;AAChD3B,MAAAA,SAAS,GAAGkrB,aAAa;AAC3B,IAAA;AAEA,IAAA,IAAI,CAAC,IAAI,CAACzgC,QAAQ,CAACugC,aAAa,CAAC5jC,eAAe,CAACzG,QAAQ,CAAC,IAAI,CAACwpC,GAAG,CAAC,EAAE;AACnEnqB,MAAAA,SAAS,CAACjI,MAAM,CAACoyB,GAAG,CAAC;AACrBlrC,MAAAA,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAACu9B,cAAc,CAAC,CAAC;AACjF,IAAA;AAEA,IAAA,MAAM,IAAI,CAACnnB,eAAe,CAACyoB,GAAG,CAAC;AAE/BA,IAAAA,GAAG,CAACnjC,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;;AAElC;IACA,IAAI,CAACi9B,kBAAkB,EAAE;;AAEzB;AACA;AACA;AACA;AACA,IAAA,IAAI,cAAc,IAAI5lC,QAAQ,CAAC6B,eAAe,EAAE;MAC9C,KAAK,MAAMvK,OAAO,IAAI0I,QAAQ,CAACoc,IAAI,CAAC1V,QAAQ,EAAE;QAC5ChN,YAAY,CAACyC,EAAE,CAAC7E,OAAO,EAAE,WAAW,EAAE4K,IAAI,CAAC;AAC7C,MAAA;AACF,IAAA;IAEA,MAAMuU,QAAQ,GAAGA,MAAM;AACrB/c,MAAAA,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC4O,aAAW,CAAC,CAAC;AAE5E,MAAA,IAAI,IAAI,CAAC4vB,UAAU,KAAK,KAAK,EAAE;QAC7B,IAAI,CAACW,MAAM,EAAE;AACf,MAAA;MAEA,IAAI,CAACX,UAAU,GAAG,KAAK;IACzB,CAAC;AAED,IAAA,IAAI,CAAC5+B,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACmuB,GAAG,EAAE,IAAI,CAAC5Y,WAAW,EAAE,CAAC;AAC7D,EAAA;AAEA/V,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,CAAC,IAAI,CAACD,QAAQ,EAAE,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAM+G,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC6O,YAAU,CAAC,CAAC;IAC7F,IAAImI,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACq8B,qBAAqB,EAAE;AAE5B,IAAA,MAAMR,GAAG,GAAG,IAAI,CAACc,cAAc,EAAE;AACjCd,IAAAA,GAAG,CAACnjC,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;;AAErC;AACA;AACA,IAAA,IAAI,cAAc,IAAI3I,QAAQ,CAAC6B,eAAe,EAAE;MAC9C,KAAK,MAAMvK,OAAO,IAAI0I,QAAQ,CAACoc,IAAI,CAAC1V,QAAQ,EAAE;QAC5ChN,YAAY,CAACC,GAAG,CAACrC,OAAO,EAAE,WAAW,EAAE4K,IAAI,CAAC;AAC9C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACsiC,cAAc,CAACpB,aAAa,CAAC,GAAG,KAAK;AAC1C,IAAA,IAAI,CAACoB,cAAc,CAACrB,aAAa,CAAC,GAAG,KAAK;AAC1C,IAAA,IAAI,CAACqB,cAAc,CAACtB,aAAa,CAAC,GAAG,KAAK;AAC1C,IAAA,IAAI,CAACqB,UAAU,GAAG,IAAI,CAAA;;IAEtB,MAAM9tB,QAAQ,GAAGA,MAAM;AACrB,MAAA,IAAI,IAAI,CAACovB,oBAAoB,EAAE,EAAE;AAC/B,QAAA;AACF,MAAA;AAEA,MAAA,IAAI,CAAC,IAAI,CAACtB,UAAU,EAAE;QACpB,IAAI,CAAChoB,gBAAgB,EAAE;AACzB,MAAA;AAEA,MAAA,IAAI,CAACrX,QAAQ,CAAC9G,eAAe,CAAC,kBAAkB,CAAC;AACjD1E,MAAAA,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAAC8O,cAAY,CAAC,CAAC;IAC/E,CAAC;AAED,IAAA,IAAI,CAAClP,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACmuB,GAAG,EAAE,IAAI,CAAC5Y,WAAW,EAAE,CAAC;AAC7D,EAAA;AAEApP,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAACzB,gBAAgB,IAAI,IAAI,CAACypB,GAAG,EAAE;MACrC,IAAI,CAAC/nB,uBAAuB,EAAE;AAChC,IAAA;AACF,EAAA;;AAEA;AACAyoB,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO1pC,OAAO,CAAC,IAAI,CAACkqC,SAAS,EAAE,CAAC,IAAI,IAAI,CAACC,cAAc,EAAE;AAC3D,EAAA;;AAEA;AACA;AACA;AACA;AACAA,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAOnqC,OAAO,CAAC,IAAI,CAAC+oC,WAAW,CAAC,IAAIlqC,MAAM,CAACxC,MAAM,CAAC,IAAI,CAAC0sC,WAAW,CAAC,CAAChE,IAAI,CAAC/kC,OAAO,CAAC;AACnF,EAAA;AAEA8pC,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAI,CAAC,IAAI,CAACd,GAAG,EAAE;AACb,MAAA,IAAI,CAACA,GAAG,GAAG,IAAI,CAACoB,iBAAiB,CAAC,IAAI,CAACrB,WAAW,IAAI,IAAI,CAACsB,sBAAsB,EAAE,CAAC;AACtF,IAAA;IAEA,OAAO,IAAI,CAACrB,GAAG;AACjB,EAAA;EAEAoB,iBAAiBA,CAACvE,OAAO,EAAE;IACzB,MAAMmD,GAAG,GAAG,IAAI,CAACsB,mBAAmB,CAACzE,OAAO,CAAC,CAACa,MAAM,EAAE;IAEtDsC,GAAG,CAACnjC,SAAS,CAACrJ,MAAM,CAACsQ,iBAAe,EAAEC,iBAAe,CAAC;AACtDi8B,IAAAA,GAAG,CAACnjC,SAAS,CAACiM,GAAG,CAAC,CAAA,GAAA,EAAM,IAAI,CAACnJ,WAAW,CAACR,IAAI,CAAA,KAAA,CAAO,CAAC;AAErD,IAAA,MAAMoiC,KAAK,GAAGxmC,MAAM,CAAC,IAAI,CAAC4E,WAAW,CAACR,IAAI,CAAC,CAACtG,QAAQ,EAAE;AAEtDmnC,IAAAA,GAAG,CAAC1mC,YAAY,CAAC,IAAI,EAAEioC,KAAK,CAAC;AAE7B,IAAA,IAAI,IAAI,CAACna,WAAW,EAAE,EAAE;AACtB4Y,MAAAA,GAAG,CAACnjC,SAAS,CAACiM,GAAG,CAAChF,iBAAe,CAAC;AACpC,IAAA;AAEA,IAAA,OAAOk8B,GAAG;AACZ,EAAA;EAEAwB,UAAUA,CAAC3E,OAAO,EAAE;IAClB,IAAI,CAACkD,WAAW,GAAGlD,OAAO;AAC1B,IAAA,IAAI,IAAI,CAACzrB,QAAQ,EAAE,EAAE;MACnB,IAAI,CAACuG,gBAAgB,EAAE;MACvB,IAAI,CAACrG,IAAI,EAAE;AACb,IAAA;AACF,EAAA;EAEAgwB,mBAAmBA,CAACzE,OAAO,EAAE;IAC3B,IAAI,IAAI,CAACiD,gBAAgB,EAAE;AACzB,MAAA,IAAI,CAACA,gBAAgB,CAACtC,aAAa,CAACX,OAAO,CAAC;AAC9C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACiD,gBAAgB,GAAG,IAAI1C,eAAe,CAAC;QAC1C,GAAG,IAAI,CAAC78B,OAAO;AACf;AACA;QACAs8B,OAAO;QACPC,UAAU,EAAE,IAAI,CAACQ,wBAAwB,CAAC,IAAI,CAAC/8B,OAAO,CAAC8+B,WAAW;AACpE,OAAC,CAAC;AACJ,IAAA;IAEA,OAAO,IAAI,CAACS,gBAAgB;AAC9B,EAAA;AAEAuB,EAAAA,sBAAsBA,GAAG;IACvB,OAAO;AACL,MAAA,CAAClD,sBAAsB,GAAG,IAAI,CAAC+C,SAAS;KACzC;AACH,EAAA;AAEAA,EAAAA,SAASA,GAAG;AACV,IAAA,OAAO,IAAI,CAAC5D,wBAAwB,CAAC,IAAI,CAAC/8B,OAAO,CAACg/B,KAAK,CAAC,IAAI,IAAI,CAACj/B,QAAQ,CAACrG,YAAY,CAAC,wBAAwB,CAAC;AAClH,EAAA;;AAEA;EACAwnC,4BAA4BA,CAAC/sC,KAAK,EAAE;AAClC,IAAA,OAAO,IAAI,CAACiL,WAAW,CAACuB,mBAAmB,CAACxM,KAAK,CAACE,cAAc,EAAE,IAAI,CAAC8sC,kBAAkB,EAAE,CAAC;AAC9F,EAAA;AAEAta,EAAAA,WAAWA,GAAG;AACZ,IAAA,OAAO,IAAI,CAAC7mB,OAAO,CAAC6+B,SAAS,IAAK,IAAI,CAACY,GAAG,IAAI,IAAI,CAACA,GAAG,CAACnjC,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAE;AAC7F,EAAA;AAEAsN,EAAAA,QAAQA,GAAG;AACT,IAAA,OAAO,IAAI,CAAC4uB,GAAG,IAAI,IAAI,CAACA,GAAG,CAACnjC,SAAS,CAACrG,QAAQ,CAACuN,iBAAe,CAAC;AACjE,EAAA;EAEAuU,aAAaA,CAAC0nB,GAAG,EAAE;AACjB;IACA,IAAI,IAAI,CAACvpB,qBAAqB,EAAE;MAC9B,MAAMpD,SAAS,GAAGC,sBAAsB,CAAC,IAAI,CAACmD,qBAAqB,EAAE,KAAK,CAAC;MAC3E,OAAOqoB,aAAa,CAACzrB,SAAS,CAAClT,WAAW,EAAE,CAAC,IAAIkT,SAAS;AAC5D,IAAA;;AAEA;AACA,IAAA,MAAMA,SAAS,GAAG1V,OAAO,CAAC,IAAI,CAAC4C,OAAO,CAAC8S,SAAS,EAAE,CAAC,IAAI,EAAE2sB,GAAG,EAAE,IAAI,CAAC1/B,QAAQ,CAAC,CAAC;IAC7E,OAAOw+B,aAAa,CAACzrB,SAAS,CAAClT,WAAW,EAAE,CAAC,IAAIkT,SAAS;AAC5D,EAAA;AAEA8D,EAAAA,0BAA0BA,GAAG;AAC3B;IACA,IAAI,OAAO,IAAI,CAAC5W,OAAO,CAAC8S,SAAS,KAAK,QAAQ,EAAE;MAC9C,IAAI,CAACoD,qBAAqB,GAAG,IAAI;AACjC,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACA,qBAAqB,GAAG5D,wBAAwB,CAAC,IAAI,CAACtS,OAAO,CAAC8S,SAAS,EAAE,KAAK,CAAC;IAEpF,IAAI,IAAI,CAACoD,qBAAqB,EAAE;MAC9B,IAAI,CAACkC,yBAAyB,EAAE;AAClC,IAAA;AACF,EAAA;AAEAA,EAAAA,yBAAyBA,GAAG;IAC1B,IAAI,CAACd,2BAA2B,EAAE;AAClC,IAAA,IAAI,CAACrB,oBAAoB,GAAG3C,yBAAyB,CAAC,MAAM;AAC1D,MAAA,IAAI,IAAI,CAACzC,QAAQ,EAAE,EAAE;QACnB,IAAI,CAAC6G,uBAAuB,EAAE;AAChC,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;AAEAJ,EAAAA,2BAA2BA,GAAG;AAC5B7D,IAAAA,0BAA0B,CAAC,IAAI,CAACwC,oBAAoB,CAAC;IACrD,IAAI,CAACA,oBAAoB,GAAG,EAAE;AAChC,EAAA;EAEA,MAAMe,eAAeA,CAACyoB,GAAG,EAAE;AACzB,IAAA,MAAM3sB,SAAS,GAAG,IAAI,CAACiF,aAAa,CAAC0nB,GAAG,CAAC;AACzC,IAAA,MAAM2B,YAAY,GAAG3B,GAAG,CAAC9jC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAACyD,WAAW,CAACR,IAAI,QAAQ,CAAC;;AAEzE;IACA,MAAM,IAAI,CAAC8Y,uBAAuB,CAAC+nB,GAAG,EAAE3sB,SAAS,EAAEsuB,YAAY,CAAC;;AAEhE;IACA,IAAI,CAACprB,gBAAgB,GAAG8B,UAAU,CAChC,IAAI,CAAC/X,QAAQ,EACb0/B,GAAG,EACH,MAAM,IAAI,CAAC/nB,uBAAuB,CAAC+nB,GAAG,EAAE,IAAI,EAAE2B,YAAY,CAC5D,CAAC;AACH,EAAA;AAEA,EAAA,MAAM1pB,uBAAuBA,CAAC+nB,GAAG,GAAG,IAAI,CAACA,GAAG,EAAE3sB,SAAS,GAAG,IAAI,EAAEsuB,YAAY,GAAG,IAAI,EAAE;IACnF,IAAI,CAAC3B,GAAG,EAAE;AACR,MAAA;AACF,IAAA;IAEA,IAAI,CAAC3sB,SAAS,EAAE;AACdA,MAAAA,SAAS,GAAG,IAAI,CAACiF,aAAa,CAAC0nB,GAAG,CAAC;AACrC,IAAA;IAEA,IAAI,CAAC2B,YAAY,EAAE;AACjBA,MAAAA,YAAY,GAAG3B,GAAG,CAAC9jC,aAAa,CAAC,CAAA,CAAA,EAAI,IAAI,CAACyD,WAAW,CAACR,IAAI,CAAA,MAAA,CAAQ,CAAC;AACrE,IAAA;AAEA,IAAA,MAAMoZ,UAAU,GAAG,IAAI,CAACC,sBAAsB,CAACmpB,YAAY,CAAC;IAC5D,MAAM5rB,cAAc,GAAG,IAAI,CAAC0C,kBAAkB,CAACpF,SAAS,EAAEkF,UAAU,CAAC;IAErE,MAAM;MAAE9C,CAAC;MAAEC,CAAC;AAAErC,MAAAA,SAAS,EAAEsG,cAAc;AAAEioB,MAAAA;KAAgB,GAAG,MAAMzvB,eAAe,CAC/E,IAAI,CAAC7R,QAAQ,EACb0/B,GAAG,EACHjqB,cACF,CAAC;;AAED;AACAlgB,IAAAA,MAAM,CAAC+jB,MAAM,CAAComB,GAAG,CAAC71B,KAAK,EAAE;AACvB0P,MAAAA,QAAQ,EAAE,UAAU;MACpB7N,IAAI,EAAE,CAAA,EAAGyJ,CAAC,CAAA,EAAA,CAAI;MACdzH,GAAG,EAAE,GAAG0H,CAAC,CAAA,EAAA;AACX,KAAC,CAAC;;AAEF;AACA,IAAA,IAAIisB,YAAY,EAAE;AAChBA,MAAAA,YAAY,CAACx3B,KAAK,CAAC0P,QAAQ,GAAG,UAAU;AAC1C,IAAA;;AAEA;IACAzgB,WAAW,CAACC,gBAAgB,CAAC2mC,GAAG,EAAE,WAAW,EAAErmB,cAAc,CAAC;;AAE9D;AACA;AACA,IAAA,IAAIgoB,YAAY,IAAIC,cAAc,CAACxvB,KAAK,EAAE;MACxC,MAAM;AAAEqD,QAAAA,CAAC,EAAEosB,MAAM;AAAEnsB,QAAAA,CAAC,EAAEosB;OAAQ,GAAGF,cAAc,CAACxvB,KAAK;AACrD,MAAA,MAAM2vB,UAAU,GAAGpoB,cAAc,CAAChiB,UAAU,CAAC,KAAK,CAAC,IAAIgiB,cAAc,CAAChiB,UAAU,CAAC,QAAQ,CAAC;;AAE1F;AACA;AACA9B,MAAAA,MAAM,CAAC+jB,MAAM,CAAC+nB,YAAY,CAACx3B,KAAK,EAAE;QAChC6B,IAAI,EAAE+1B,UAAU,IAAIF,MAAM,KAAK,IAAI,GAAG,CAAA,EAAGA,MAAM,CAAA,EAAA,CAAI,GAAG,EAAE;AACxD7zB,QAAAA,GAAG,EAAE,CAAC+zB,UAAU,IAAID,MAAM,KAAK,IAAI,GAAG,CAAA,EAAGA,MAAM,CAAA,EAAA,CAAI,GAAG,EAAE;AACxD;AACA30B,QAAAA,KAAK,EAAE,EAAE;AACToM,QAAAA,MAAM,EAAE;AACV,OAAC,CAAC;AACJ,IAAA;AACF,EAAA;AAEAX,EAAAA,UAAUA,GAAG;IACX,MAAM;AAAEtG,MAAAA;KAAQ,GAAG,IAAI,CAAC/R,OAAO;AAE/B,IAAA,IAAI,OAAO+R,MAAM,KAAK,QAAQ,EAAE;AAC9B,MAAA,OAAOA,MAAM,CAACzW,KAAK,CAAC,GAAG,CAAC,CAAC2F,GAAG,CAACjO,KAAK,IAAIqF,MAAM,CAACsQ,QAAQ,CAAC3V,KAAK,EAAE,EAAE,CAAC,CAAC;AACnE,IAAA;AAEA,IAAA,IAAI,OAAO+e,MAAM,KAAK,UAAU,EAAE;AAChC;AACA,MAAA,OAAO,CAAC;QAAEe,SAAS;AAAEyF,QAAAA;AAAM,OAAC,KAAK;QAC/B,MAAMC,MAAM,GAAGzG,MAAM,CAAC;UAAEe,SAAS;UAAE4C,SAAS,EAAE6C,KAAK,CAAC7C,SAAS;UAAE+C,QAAQ,EAAEF,KAAK,CAACE;AAAS,SAAC,EAAE,IAAI,CAAC1Y,QAAQ,CAAC;AACzG,QAAA,OAAOyY,MAAM;MACf,CAAC;AACH,IAAA;AAEA,IAAA,OAAOzG,MAAM;AACf,EAAA;EAEAgrB,wBAAwBA,CAACQ,GAAG,EAAE;AAC5B,IAAA,OAAOngC,OAAO,CAACmgC,GAAG,EAAE,CAAC,IAAI,CAACx9B,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC,CAAC;AACrD,EAAA;EAEAkY,sBAAsBA,CAACmpB,YAAY,EAAE;AACnC,IAAA,MAAM1oB,WAAW,GAAG,IAAI,CAACL,UAAU,EAAE;AAErC,IAAA,MAAML,UAAU,GAAG;AACjB;AACAjG,IAAAA,MAAM,CACJ,OAAO2G,WAAW,KAAK,UAAU,GAC/BA,WAAW,GACX;AAAEC,MAAAA,QAAQ,EAAED,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAAEE,MAAAA,SAAS,EAAEF,WAAW,CAAC,CAAC,CAAC,IAAI;AAAE,KACpE,CAAC;AACD;AACA5G,IAAAA,IAAI,CAAC;AACH+G,MAAAA,kBAAkB,EAAE,IAAI,CAAC7Y,OAAO,CAAC6Y;AACnC,KAAC,CAAC;AACF;AACA7G,IAAAA,KAAK,CAAC;AACJqD,MAAAA,QAAQ,EAAE,IAAI,CAACrV,OAAO,CAACqV,QAAQ,KAAK,iBAAiB,GAAG,mBAAmB,GAAG,IAAI,CAACrV,OAAO,CAACqV;AAC7F,KAAC,CAAC,CACH;;AAED;AACA,IAAA,IAAI+rB,YAAY,EAAE;AAChBppB,MAAAA,UAAU,CAACpW,IAAI,CAACiQ,KAAK,CAAC;AAAE1f,QAAAA,OAAO,EAAEivC;AAAa,OAAC,CAAC,CAAC;AACnD,IAAA;AAEA,IAAA,OAAOppB,UAAU;AACnB,EAAA;AAEAE,EAAAA,kBAAkBA,CAACpF,SAAS,EAAEkF,UAAU,EAAE;AACxC,IAAA,MAAMiB,aAAa,GAAG;MACpBnG,SAAS;AACTkF,MAAAA;KACD;IAED,OAAO;AACL,MAAA,GAAGiB,aAAa;AAChB,MAAA,GAAG7b,OAAO,CAAC,IAAI,CAAC4C,OAAO,CAACwV,cAAc,EAAE,CAAClb,SAAS,EAAE2e,aAAa,CAAC;KACnE;AACH,EAAA;AAEAymB,EAAAA,aAAaA,GAAG;IACd,MAAM+B,QAAQ,GAAG,IAAI,CAACzhC,OAAO,CAACvI,OAAO,CAAC6D,KAAK,CAAC,GAAG,CAAC;AAEhD,IAAA,KAAK,MAAM7D,OAAO,IAAIgqC,QAAQ,EAAE;MAC9B,IAAIhqC,OAAO,KAAK,OAAO,EAAE;QACvBlD,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE,IAAI,CAACX,WAAW,CAACwB,SAAS,CAACw9B,aAAW,CAAC,EAAE,IAAI,CAACp+B,OAAO,CAACpL,QAAQ,EAAET,KAAK,IAAI;AACtG,UAAA,MAAMiuB,OAAO,GAAG,IAAI,CAAC8e,4BAA4B,CAAC/sC,KAAK,CAAC;AACxDiuB,UAAAA,OAAO,CAACid,cAAc,CAACpB,aAAa,CAAC,GAAG,EAAE7b,OAAO,CAACvR,QAAQ,EAAE,IAAIuR,OAAO,CAACid,cAAc,CAACpB,aAAa,CAAC,CAAC;UACtG7b,OAAO,CAACje,MAAM,EAAE;AAClB,QAAA,CAAC,CAAC;AACJ,MAAA,CAAC,MAAM,IAAI1M,OAAO,KAAKymC,cAAc,EAAE;QACrC,MAAMwD,OAAO,GAAGjqC,OAAO,KAAKsmC,aAAa,GACvC,IAAI,CAAC3+B,WAAW,CAACwB,SAAS,CAACgE,kBAAgB,CAAC,GAC5C,IAAI,CAACxF,WAAW,CAACwB,SAAS,CAACy9B,eAAa,CAAC;QAC3C,MAAMsD,QAAQ,GAAGlqC,OAAO,KAAKsmC,aAAa,GACxC,IAAI,CAAC3+B,WAAW,CAACwB,SAAS,CAACiE,gBAAgB,CAAC,GAC5C,IAAI,CAACzF,WAAW,CAACwB,SAAS,CAAC09B,gBAAc,CAAC;AAE5C/pC,QAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE2hC,OAAO,EAAE,IAAI,CAAC1hC,OAAO,CAACpL,QAAQ,EAAET,KAAK,IAAI;AACtE,UAAA,MAAMiuB,OAAO,GAAG,IAAI,CAAC8e,4BAA4B,CAAC/sC,KAAK,CAAC;AACxDiuB,UAAAA,OAAO,CAACid,cAAc,CAAClrC,KAAK,CAACM,IAAI,KAAK,SAAS,GAAGupC,aAAa,GAAGD,aAAa,CAAC,GAAG,IAAI;UACvF3b,OAAO,CAAC4d,MAAM,EAAE;AAClB,QAAA,CAAC,CAAC;AACFzrC,QAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE4hC,QAAQ,EAAE,IAAI,CAAC3hC,OAAO,CAACpL,QAAQ,EAAET,KAAK,IAAI;AACvE,UAAA,MAAMiuB,OAAO,GAAG,IAAI,CAAC8e,4BAA4B,CAAC/sC,KAAK,CAAC;UACxDiuB,OAAO,CAACid,cAAc,CAAClrC,KAAK,CAACM,IAAI,KAAK,UAAU,GAAGupC,aAAa,GAAGD,aAAa,CAAC,GAC/E3b,OAAO,CAACriB,QAAQ,CAAC9J,QAAQ,CAAC9B,KAAK,CAAC6B,aAAa,CAAC;UAEhDosB,OAAO,CAAC2d,MAAM,EAAE;AAClB,QAAA,CAAC,CAAC;AACJ,MAAA;AACF,IAAA;IAEA,IAAI,CAACG,iBAAiB,GAAG,MAAM;MAC7B,IAAI,IAAI,CAACngC,QAAQ,EAAE;QACjB,IAAI,CAAC+Q,IAAI,EAAE;AACb,MAAA;IACF,CAAC;AAEDvc,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,CAAC9D,OAAO,CAAC4hC,cAAc,CAAC,EAAEC,gBAAgB,EAAE,IAAI,CAACoC,iBAAiB,CAAC;AAClG,EAAA;AAEAO,EAAAA,kBAAkBA,GAAG;IACnB,IAAI,IAAI,CAACnB,eAAe,EAAE;AACxB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACA,eAAe,GAAGnrC,KAAK,IAAI;AAC9B,MAAA,IAAIA,KAAK,CAAC/B,GAAG,KAAKshB,UAAU,IAAI,CAAC,IAAI,CAAC7C,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC4uB,GAAG,CAACtmB,WAAW,EAAE;AACzE,QAAA;AACF,MAAA;;AAEA;AACA;AACA;AACA;MACAhlB,KAAK,CAACyO,cAAc,EAAE;MACtBzO,KAAK,CAACgmB,eAAe,EAAE;MACvB,IAAI,CAACrJ,IAAI,EAAE;IACb,CAAC;;AAED;AACA;AACA;AACA;AACA,IAAA,IAAI,CAAC/Q,QAAQ,CAACugC,aAAa,CAAChqC,gBAAgB,CAACqO,eAAa,EAAE,IAAI,CAAC26B,eAAe,EAAE,IAAI,CAAC;AACzF,EAAA;AAEAW,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,IAAI,CAAC,IAAI,CAACX,eAAe,EAAE;AACzB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACv/B,QAAQ,CAACugC,aAAa,CAAC9pC,mBAAmB,CAACmO,eAAa,EAAE,IAAI,CAAC26B,eAAe,EAAE,IAAI,CAAC;IAC1F,IAAI,CAACA,eAAe,GAAG,IAAI;AAC7B,EAAA;AAEAK,EAAAA,SAASA,GAAG;IACV,MAAMX,KAAK,GAAG,IAAI,CAACj/B,QAAQ,CAACrG,YAAY,CAAC,OAAO,CAAC;IAEjD,IAAI,CAACslC,KAAK,EAAE;AACV,MAAA;AACF,IAAA;IAEA,IAAI,CAAC,IAAI,CAACj/B,QAAQ,CAACrG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAACqG,QAAQ,CAACsgB,WAAW,CAACrf,IAAI,EAAE,EAAE;MAClF,IAAI,CAACjB,QAAQ,CAAChH,YAAY,CAAC,YAAY,EAAEimC,KAAK,CAAC;AACjD,IAAA;IAEA,IAAI,CAACj/B,QAAQ,CAAChH,YAAY,CAAC,wBAAwB,EAAEimC,KAAK,CAAC,CAAA;AAC3D,IAAA,IAAI,CAACj/B,QAAQ,CAAC9G,eAAe,CAAC,OAAO,CAAC;AACxC,EAAA;AAEA+mC,EAAAA,MAAMA,GAAG;IACP,IAAI,IAAI,CAACnvB,QAAQ,EAAE,IAAI,IAAI,CAACuuB,UAAU,EAAE;MACtC,IAAI,CAACA,UAAU,GAAG,IAAI;AACtB,MAAA;AACF,IAAA;IAEA,IAAI,CAACA,UAAU,GAAG,IAAI;IAEtB,IAAI,CAACwC,WAAW,CAAC,MAAM;MACrB,IAAI,IAAI,CAACxC,UAAU,EAAE;QACnB,IAAI,CAACruB,IAAI,EAAE;AACb,MAAA;IACF,CAAC,EAAE,IAAI,CAAC/Q,OAAO,CAAC++B,KAAK,CAAChuB,IAAI,CAAC;AAC7B,EAAA;AAEAgvB,EAAAA,MAAMA,GAAG;AACP,IAAA,IAAI,IAAI,CAACW,oBAAoB,EAAE,EAAE;AAC/B,MAAA;AACF,IAAA;IAEA,IAAI,CAACtB,UAAU,GAAG,KAAK;IAEvB,IAAI,CAACwC,WAAW,CAAC,MAAM;AACrB,MAAA,IAAI,CAAC,IAAI,CAACxC,UAAU,EAAE;QACpB,IAAI,CAACtuB,IAAI,EAAE;AACb,MAAA;IACF,CAAC,EAAE,IAAI,CAAC9Q,OAAO,CAAC++B,KAAK,CAACjuB,IAAI,CAAC;AAC7B,EAAA;AAEA8wB,EAAAA,WAAWA,CAAC1tC,OAAO,EAAE2tC,OAAO,EAAE;AAC5B1yB,IAAAA,YAAY,CAAC,IAAI,CAACgwB,QAAQ,CAAC;IAC3B,IAAI,CAACA,QAAQ,GAAGrhC,UAAU,CAAC5J,OAAO,EAAE2tC,OAAO,CAAC;AAC9C,EAAA;AAEAnB,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,OAAOprC,MAAM,CAACxC,MAAM,CAAC,IAAI,CAACusC,cAAc,CAAC,CAACtoC,QAAQ,CAAC,IAAI,CAAC;AAC1D,EAAA;EAEA+H,UAAUA,CAACC,MAAM,EAAE;IACjB,MAAM+iC,cAAc,GAAGjpC,WAAW,CAACK,iBAAiB,CAAC,IAAI,CAAC6G,QAAQ,CAAC;IAEnE,KAAK,MAAMgiC,aAAa,IAAIzsC,MAAM,CAAC1C,IAAI,CAACkvC,cAAc,CAAC,EAAE;AACvD,MAAA,IAAIpE,qBAAqB,CAACprC,GAAG,CAACyvC,aAAa,CAAC,EAAE;QAC5C,OAAOD,cAAc,CAACC,aAAa,CAAC;AACtC,MAAA;AACF,IAAA;AAEAhjC,IAAAA,MAAM,GAAG;AACP,MAAA,GAAG+iC,cAAc;MACjB,IAAI,OAAO/iC,MAAM,KAAK,QAAQ,IAAIA,MAAM,GAAGA,MAAM,GAAG,EAAE;KACvD;AACDA,IAAAA,MAAM,GAAG,IAAI,CAACC,eAAe,CAACD,MAAM,CAAC;AACrCA,IAAAA,MAAM,GAAG,IAAI,CAACE,iBAAiB,CAACF,MAAM,CAAC;AACvC,IAAA,IAAI,CAACG,gBAAgB,CAACH,MAAM,CAAC;AAC7B,IAAA,OAAOA,MAAM;AACf,EAAA;EAEAE,iBAAiBA,CAACF,MAAM,EAAE;AACxBA,IAAAA,MAAM,CAACuW,SAAS,GAAGvW,MAAM,CAACuW,SAAS,KAAK,KAAK,GAAGza,QAAQ,CAACoc,IAAI,GAAGvb,UAAU,CAACqD,MAAM,CAACuW,SAAS,CAAC;AAE5F,IAAA,IAAI,OAAOvW,MAAM,CAACggC,KAAK,KAAK,QAAQ,EAAE;MACpChgC,MAAM,CAACggC,KAAK,GAAG;QACbhuB,IAAI,EAAEhS,MAAM,CAACggC,KAAK;QAClBjuB,IAAI,EAAE/R,MAAM,CAACggC;OACd;AACH,IAAA;;AAEA;AACA;AACA;AACA,IAAA,IAAI,OAAOhgC,MAAM,CAACigC,KAAK,KAAK,QAAQ,IAAI,OAAOjgC,MAAM,CAACigC,KAAK,KAAK,SAAS,EAAE;MACzEjgC,MAAM,CAACigC,KAAK,GAAGjgC,MAAM,CAACigC,KAAK,CAAC1mC,QAAQ,EAAE;AACxC,IAAA;AAEA,IAAA,IAAI,OAAOyG,MAAM,CAACu9B,OAAO,KAAK,QAAQ,IAAI,OAAOv9B,MAAM,CAACu9B,OAAO,KAAK,SAAS,EAAE;MAC7Ev9B,MAAM,CAACu9B,OAAO,GAAGv9B,MAAM,CAACu9B,OAAO,CAAChkC,QAAQ,EAAE;AAC5C,IAAA;AAEA,IAAA,OAAOyG,MAAM;AACf,EAAA;AAEAoiC,EAAAA,kBAAkBA,GAAG;IACnB,MAAMpiC,MAAM,GAAG,EAAE;AAEjB,IAAA,KAAK,MAAM,CAAC3M,GAAG,EAAEY,KAAK,CAAC,IAAIsC,MAAM,CAACwB,OAAO,CAAC,IAAI,CAACkJ,OAAO,CAAC,EAAE;MACvD,IAAI,IAAI,CAACZ,WAAW,CAACV,OAAO,CAACtM,GAAG,CAAC,KAAKY,KAAK,EAAE;AAC3C+L,QAAAA,MAAM,CAAC3M,GAAG,CAAC,GAAGY,KAAK;AACrB,MAAA;AACF,IAAA;IAEA+L,MAAM,CAACnK,QAAQ,GAAG,KAAK;IACvBmK,MAAM,CAACtH,OAAO,GAAG,QAAQ;;AAEzB;AACA;AACA;AACA,IAAA,OAAOsH,MAAM;AACf,EAAA;AAEAqY,EAAAA,gBAAgBA,GAAG;IACjB,IAAI,IAAI,CAACpB,gBAAgB,EAAE;MACzB,IAAI,CAACA,gBAAgB,EAAE;MACvB,IAAI,CAACA,gBAAgB,GAAG,IAAI;AAC9B,IAAA;IAEA,IAAI,IAAI,CAACypB,GAAG,EAAE;AACZ,MAAA,IAAI,CAACA,GAAG,CAACxsC,MAAM,EAAE;MACjB,IAAI,CAACwsC,GAAG,GAAG,IAAI;AACjB,IAAA;AACF,EAAA;AACF;;AAEA;AACA;AACA;;AAEA,MAAMuC,WAAW,GAAG7tC,KAAK,IAAI;EAC3B,MAAMY,MAAM,GAAGZ,KAAK,CAACY,MAAM,CAACkH,OAAO,CAAC+H,sBAAoB,CAAC;EACzD,IAAI,CAACjP,MAAM,EAAE;AACX,IAAA;AACF,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACAkqC,EAAAA,OAAO,CAACt+B,mBAAmB,CAAC5L,MAAM,CAAC;AACrC,CAAC;;AAED;AACAR,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEwjC,eAAa,EAAEr6B,sBAAoB,EAAEg+B,WAAW,CAAC;AAC3EztC,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE+J,kBAAgB,EAAEZ,sBAAoB,EAAEg+B,WAAW,CAAC;;ACzyB9E;AACA;AACA;AACA;AACA;AACA;;;AAKA;AACA;AACA;;AAEA,MAAMpjC,MAAI,GAAG,SAAS;AAEtB,MAAMqjC,cAAc,GAAG,iBAAiB;AACxC,MAAMC,gBAAgB,GAAG,eAAe;AACxC,MAAMl+B,sBAAoB,GAAG,4BAA4B;AAEzD,MAAMo6B,aAAW,GAAG,OAAO;AAC3B,MAAMC,eAAa,GAAG,SAAS;AAC/B,MAAMz5B,gBAAgB,GAAG,YAAY;AAErC,MAAMlG,SAAO,GAAG;EACd,GAAGugC,OAAO,CAACvgC,OAAO;AAClB49B,EAAAA,OAAO,EAAE,EAAE;AACXvqB,EAAAA,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;AACde,EAAAA,SAAS,EAAE,OAAO;EAClB6pB,QAAQ,EAAE,sCAAsC,GAC9C,mCAAmC,GACnC,kCAAkC,GAClC,kCAAkC,GAClC,QAAQ;AACVllC,EAAAA,OAAO,EAAE;AACX,CAAC;AAED,MAAMkH,aAAW,GAAG;EAClB,GAAGsgC,OAAO,CAACtgC,WAAW;AACtB29B,EAAAA,OAAO,EAAE;AACX,CAAC;;AAED;AACA;AACA;;AAEA,MAAM6F,OAAO,SAASlD,OAAO,CAAC;AAC5B;EACA,WAAWvgC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAuhC,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO1pC,OAAO,CAAC,IAAI,CAACkqC,SAAS,EAAE,IAAI,IAAI,CAACyB,WAAW,EAAE,CAAC,IAAI,IAAI,CAACxB,cAAc,EAAE;AACjF,EAAA;;AAEA;AACAE,EAAAA,sBAAsBA,GAAG;IACvB,OAAO;AACL,MAAA,CAACmB,cAAc,GAAG,IAAI,CAACtB,SAAS,EAAE;AAClC,MAAA,CAACuB,gBAAgB,GAAG,IAAI,CAACE,WAAW;KACrC;AACH,EAAA;AAEAA,EAAAA,WAAWA,GAAG;IACZ,OAAO,IAAI,CAACrF,wBAAwB,CAAC,IAAI,CAAC/8B,OAAO,CAACs8B,OAAO,CAAC;AAC5D,EAAA;AACF;;AAEA;AACA;AACA;;AAEA,MAAM+F,WAAW,GAAGluC,KAAK,IAAI;EAC3B,MAAMY,MAAM,GAAGZ,KAAK,CAACY,MAAM,CAACkH,OAAO,CAAC+H,sBAAoB,CAAC;EACzD,IAAI,CAACjP,MAAM,EAAE;AACX,IAAA;AACF,EAAA;;AAEA;AACA,EAAA,IAAIZ,KAAK,CAACM,IAAI,KAAK,OAAO,EAAE;IAC1BN,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;;AAEA;AACA;AACA;AACA;AACAu/B,EAAAA,OAAO,CAACxhC,mBAAmB,CAAC5L,MAAM,CAAC;AACrC,CAAC;;AAED;AACAR,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEujC,aAAW,EAAEp6B,sBAAoB,EAAEq+B,WAAW,CAAC;AACzE9tC,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEwjC,eAAa,EAAEr6B,sBAAoB,EAAEq+B,WAAW,CAAC;AAC3E9tC,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE+J,gBAAgB,EAAEZ,sBAAoB,EAAEq+B,WAAW,CAAC;;ACvG9E;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMzjC,MAAI,GAAG,OAAO;AACpB,MAAMuB,UAAQ,GAAG,UAAU;AAC3B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,cAAY,GAAG,WAAW;AAEhC,MAAMw+B,aAAa,GAAG,CAAA,OAAA,EAAUjiC,WAAS,CAAA,CAAE;AAC3C,MAAMkiC,wBAAwB,GAAG,CAAA,gBAAA,EAAmBliC,WAAS,CAAA,EAAGyD,cAAY,CAAA,CAAE;;AAE9E;AACA,MAAMmtB,WAAW,GAAG,OAAO;AAC3B,MAAM/S,YAAY,GAAG,QAAQ;AAE7B,MAAMskB,cAAc,GAAG,aAAa;AACpC,MAAMpR,cAAc,GAAG,mBAAmB;AAE1C,MAAMqR,iBAAiB,GAAG,mBAAmB;AAC7C,MAAMC,gBAAgB,GAAG,kBAAkB;AAC3C,MAAMC,eAAe,GAAG,iBAAiB;AACzC,MAAMC,qBAAqB,GAAG,uBAAuB;;AAErD;AACA;AACA,MAAMC,aAAa,GAAG,iBAAiB;AAEvC,MAAMnkC,SAAO,GAAG;AACdokC,EAAAA,MAAM,EAAE,KAAK;AAAE;EACfC,SAAS,EAAE,IAAI;AACjB,CAAC;AAED,MAAMpkC,aAAW,GAAG;AAClBmkC,EAAAA,MAAM,EAAE,gBAAgB;AACxBC,EAAAA,SAAS,EAAE;AACb,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,KAAK,SAASljC,aAAa,CAAC;AAChCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;;AAEtB;AACA,IAAA,IAAI,CAAC,IAAI,CAACgB,QAAQ,EAAE;AAClB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC+vB,MAAM,GAAG1uB,cAAc,CAACE,OAAO,CAAC8vB,cAAc,EAAE,IAAI,CAACrxB,QAAQ,CAAC;AAEnE,IAAA,IAAI,CAAC,IAAI,CAAC+vB,MAAM,EAAE;AAChB,MAAA;AACF,IAAA;IAEA,IAAI,CAACmT,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,cAAc,GAAG,MAAM,IAAI,CAACC,OAAO,EAAE;AAE1C,IAAA,IAAI,IAAI,CAACrjC,OAAO,CAAC8iC,MAAM,EAAE;MACvB,IAAI,CAACQ,aAAa,EAAE;AACtB,IAAA;IAEA,IAAI,CAACC,YAAY,EAAE;IACnB,IAAI,CAAC37B,kBAAkB,EAAE;IACzB,IAAI,CAACy7B,OAAO,EAAE;AAChB,EAAA;;AAEA;EACA,WAAW3kC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA6Y,EAAAA,MAAMA,GAAG;IACP,IAAI,CAAC4rB,OAAO,EAAE;AAChB,EAAA;AAEAjjC,EAAAA,OAAOA,GAAG;AACR7L,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACs7B,MAAM,EAAEmB,WAAW,EAAE,IAAI,CAACmS,cAAc,CAAC;AAC/D7uC,IAAAA,YAAY,CAACC,GAAG,CAAC,IAAI,CAACs7B,MAAM,EAAE5R,YAAY,EAAE,IAAI,CAACklB,cAAc,CAAC;AAEhE,IAAA,IAAI,CAACH,OAAO,EAAEhwC,MAAM,EAAE;AACtB,IAAA,IAAI,CAACkwC,MAAM,EAAElwC,MAAM,EAAE;IAErB,KAAK,CAACmN,OAAO,EAAE;AACjB,EAAA;;AAEA;EACAnB,iBAAiBA,CAACF,MAAM,EAAE;AACxB;AACA,IAAA,IAAIA,MAAM,CAAC+jC,MAAM,KAAK,IAAI,EAAE;MAC1B/jC,MAAM,CAAC+jC,MAAM,GAAG,IAAI;AACtB,IAAA;AAEA,IAAA,OAAO/jC,MAAM;AACf,EAAA;AAEA6I,EAAAA,kBAAkBA,GAAG;AACnBrT,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAEmB,WAAW,EAAE,IAAI,CAACmS,cAAc,CAAC;AAC9D7uC,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC84B,MAAM,EAAE5R,YAAY,EAAE,IAAI,CAACklB,cAAc,CAAC;AACjE,EAAA;AAEAI,EAAAA,IAAIA,GAAG;AACL,IAAA,OAAO,IAAI,CAAC1T,MAAM,CAACtxB,GAAG,KAAK,EAAE,GAAG,CAAC,GAAGnG,MAAM,CAAC+C,UAAU,CAAC,IAAI,CAAC00B,MAAM,CAACtxB,GAAG,CAAC;AACxE,EAAA;AAEAilC,EAAAA,IAAIA,GAAG;AACL,IAAA,OAAO,IAAI,CAAC3T,MAAM,CAACvxB,GAAG,KAAK,EAAE,GAAG,GAAG,GAAGlG,MAAM,CAAC+C,UAAU,CAAC,IAAI,CAAC00B,MAAM,CAACvxB,GAAG,CAAC;AAC1E,EAAA;AAEAmlC,EAAAA,MAAMA,GAAG;IACP,OAAOrrC,MAAM,CAAC+C,UAAU,CAAC,IAAI,CAAC00B,MAAM,CAAC98B,KAAK,CAAC;AAC7C,EAAA;AAEA2wC,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAMlJ,IAAI,GAAG,IAAI,CAACgJ,IAAI,EAAE,GAAG,IAAI,CAACD,IAAI,EAAE;AACtC,IAAA,OAAO/I,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAACiJ,MAAM,EAAE,GAAG,IAAI,CAACF,IAAI,EAAE,IAAI/I,IAAI,GAAG,CAAC;AAC5D,EAAA;AAEA4I,EAAAA,OAAOA,GAAG;AACR;AACA,IAAA,IAAI,CAACtjC,QAAQ,CAAC6J,KAAK,CAACgF,WAAW,CAACi0B,aAAa,EAAE,CAAA,EAAG,IAAI,CAACc,MAAM,EAAE,EAAE,CAAC;IAElE,IAAI,IAAI,CAACT,WAAW,EAAE;AACpB,MAAA,IAAI,CAACA,WAAW,CAAC7iB,WAAW,GAAG,IAAI,CAACujB,OAAO,CAAC,IAAI,CAACF,MAAM,EAAE,CAAC;AAC5D,IAAA;IAEAnvC,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACq4B,MAAM,EAAEwS,aAAa,EAAE;AAAEtvC,MAAAA,KAAK,EAAE,IAAI,CAAC0wC,MAAM;AAAG,KAAC,CAAC;AAC5E,EAAA;EAEAE,OAAOA,CAAC5wC,KAAK,EAAE;IACb,OAAO,OAAO,IAAI,CAACgN,OAAO,CAAC+iC,SAAS,KAAK,UAAU,GAAG,IAAI,CAAC/iC,OAAO,CAAC+iC,SAAS,CAAC/vC,KAAK,CAAC,GAAG+yB,MAAM,CAAC/yB,KAAK,CAAC;AACrG,EAAA;AAEAswC,EAAAA,aAAaA,GAAG;AACd;IACA,IAAI,CAACL,OAAO,GAAGpoC,QAAQ,CAAC2kB,aAAa,CAAC,QAAQ,CAAC;AAC/C,IAAA,IAAI,CAACyjB,OAAO,CAACrY,SAAS,GAAG,CAAA,EAAG6X,iBAAiB,CAAA,4BAAA,CAA8B;IAC3E,IAAI,CAACQ,OAAO,CAAClqC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;;AAEhD;AACA;AACA,IAAA,MAAM8Y,KAAK,GAAGhX,QAAQ,CAAC2kB,aAAa,CAAC,KAAK,CAAC;IAC3C3N,KAAK,CAAC+Y,SAAS,GAAG,eAAe;IACjC,IAAI,CAACsY,WAAW,GAAGroC,QAAQ,CAAC2kB,aAAa,CAAC,KAAK,CAAC;AAChD,IAAA,IAAI,CAAC0jB,WAAW,CAACtY,SAAS,GAAG,eAAe;IAC5C,IAAI,CAACqY,OAAO,CAAC51B,MAAM,CAACwE,KAAK,EAAE,IAAI,CAACqxB,WAAW,CAAC;IAE5C,IAAI,CAACpT,MAAM,CAAC+T,qBAAqB,CAAC,UAAU,EAAE,IAAI,CAACZ,OAAO,CAAC;AAC7D,EAAA;AAEAM,EAAAA,YAAYA,GAAG;IACb,MAAMO,MAAM,GAAG,IAAI,CAAChU,MAAM,CAACp2B,YAAY,CAAC,MAAM,CAAC;IAC/C,MAAMqqC,QAAQ,GAAGD,MAAM,GAAGjpC,QAAQ,CAACC,cAAc,CAACgpC,MAAM,CAAC,GAAG,IAAI;IAEhE,IAAI,CAACC,QAAQ,EAAE;AACb,MAAA;AACF,IAAA;AAEA,IAAA,MAAMvlC,GAAG,GAAG,IAAI,CAACglC,IAAI,EAAE;IACvB,MAAM/I,IAAI,GAAG,IAAI,CAACgJ,IAAI,EAAE,GAAGjlC,GAAG,IAAI,CAAC;IAEnC,MAAMwlC,MAAM,GAAG,EAAE;IACjB,KAAK,MAAMC,MAAM,IAAI7iC,cAAc,CAAC7L,IAAI,CAAC,QAAQ,EAAEwuC,QAAQ,CAAC,EAAE;MAC5D,MAAM/wC,KAAK,GAAGqF,MAAM,CAAC+C,UAAU,CAAC6oC,MAAM,CAACjxC,KAAK,CAAC;AAE7C,MAAA,IAAI,CAACqF,MAAM,CAACkW,KAAK,CAACvb,KAAK,CAAC,EAAE;AACxB;QACA,MAAM8X,KAAK,GAAGpQ,IAAI,CAAC8D,GAAG,CAAC9D,IAAI,CAAC6D,GAAG,CAAC,CAACvL,KAAK,GAAGwL,GAAG,IAAIi8B,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5DuJ,MAAM,CAACpiC,IAAI,CAAC;UAAEkJ,KAAK;UAAEmE,KAAK,EAAEg1B,MAAM,CAACh1B;AAAM,SAAC,CAAC;AAC7C,MAAA;AACF,IAAA;AAEA,IAAA,IAAI+0B,MAAM,CAAC3sC,MAAM,KAAK,CAAC,EAAE;AACvB,MAAA;AACF,IAAA;AAEA2sC,IAAAA,MAAM,CAACE,IAAI,CAAC,CAAClL,CAAC,EAAEE,CAAC,KAAKF,CAAC,CAACluB,KAAK,GAAGouB,CAAC,CAACpuB,KAAK,CAAC;IAExC,IAAI,CAACq4B,MAAM,GAAGtoC,QAAQ,CAAC2kB,aAAa,CAAC,KAAK,CAAC;AAC3C,IAAA,IAAI,CAAC2jB,MAAM,CAACvY,SAAS,GAAG8X,gBAAgB;IACxC,IAAI,CAACS,MAAM,CAACpqC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;;AAE/C;AACA,IAAA,MAAMorC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAGH,MAAM,CAAC/iC,GAAG,CAAC+a,KAAK,IAAIA,KAAK,CAAClR,KAAK,CAAC,EAAE,CAAC,CAAC;AACzD,IAAA,IAAI,CAACq4B,MAAM,CAACv5B,KAAK,CAACw6B,mBAAmB,GAAGD,KAAK,CAAC5sC,KAAK,CAAC,CAAC,CAAC,CAAC0J,GAAG,CAAC,CAACojC,IAAI,EAAEhmC,KAAK,KAAK,CAAA,EAAGgmC,IAAI,GAAGF,KAAK,CAAC9lC,KAAK,CAAC,IAAI,CAAC,CAAC8C,IAAI,CAAC,GAAG,CAAC;AAEjH,IAAA,KAAK,MAAM,CAAC9C,KAAK,EAAE2d,KAAK,CAAC,IAAIgoB,MAAM,CAACltC,OAAO,EAAE,EAAE;AAC7C,MAAA,MAAMwtC,IAAI,GAAGzpC,QAAQ,CAAC2kB,aAAa,CAAC,MAAM,CAAC;MAC3C8kB,IAAI,CAAC1Z,SAAS,GAAG+X,eAAe;MAChC2B,IAAI,CAAC16B,KAAK,CAAC26B,eAAe,GAAG,CAAA,EAAGlmC,KAAK,GAAG,CAAC,CAAA,CAAE;MAE3C,IAAI2d,KAAK,CAAC/M,KAAK,EAAE;AACf,QAAA,MAAMA,KAAK,GAAGpU,QAAQ,CAAC2kB,aAAa,CAAC,MAAM,CAAC;QAC5CvQ,KAAK,CAAC2b,SAAS,GAAGgY,qBAAqB;AACvC3zB,QAAAA,KAAK,CAACoR,WAAW,GAAGrE,KAAK,CAAC/M,KAAK;AAC/Bq1B,QAAAA,IAAI,CAACj3B,MAAM,CAAC4B,KAAK,CAAC;AACpB,MAAA;AAEA,MAAA,IAAI,CAACk0B,MAAM,CAAC91B,MAAM,CAACi3B,IAAI,CAAC;AAC1B,IAAA;IAEA,IAAI,CAACvkC,QAAQ,CAACsN,MAAM,CAAC,IAAI,CAAC81B,MAAM,CAAC;AACnC,EAAA;AACF;;AAEA;AACA;AACA;;AAEA5uC,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAE0nC,wBAAwB,EAAE,MAAM;EACxD,KAAK,MAAMpwC,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAACitC,cAAc,CAAC,EAAE;AACzDQ,IAAAA,KAAK,CAACriC,mBAAmB,CAACxO,OAAO,CAAC;AACpC,EAAA;AACF,CAAC,CAAC;;AC7OF;AACA;AACA;AACA;AACA;AACA;;;AASA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,WAAW;AACxB,MAAMuB,UAAQ,GAAG,cAAc;AAC/B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAChC,MAAM2D,YAAY,GAAG,WAAW;AAEhC,MAAM0gC,cAAc,GAAG,CAAA,QAAA,EAAWnkC,WAAS,CAAA,CAAE;AAC7C,MAAM+9B,aAAW,GAAG,CAAA,KAAA,EAAQ/9B,WAAS,CAAA,CAAE;AACvC,MAAMokC,YAAY,GAAG,CAAA,MAAA,EAASpkC,WAAS,CAAA,CAAE;AACzC,MAAMqkC,eAAe,GAAG,CAAA,SAAA,EAAYrkC,WAAS,CAAA,CAAE;AAC/C,MAAM4tB,YAAY,GAAG,CAAA,MAAA,EAAS5tB,WAAS,CAAA,CAAE;AACzC,MAAM0E,qBAAmB,GAAG,CAAA,IAAA,EAAO1E,WAAS,CAAA,EAAGyD,YAAY,CAAA,CAAE;AAE7D,MAAM6gC,oBAAoB,GAAG,WAAW;AACxC,MAAM5gC,mBAAiB,GAAG,QAAQ;AAElC,MAAM6gC,iBAAiB,GAAG,wBAAwB;AAClD,MAAMC,qBAAqB,GAAG,QAAQ;AACtC,MAAMC,uBAAuB,GAAG,mBAAmB;AACnD,MAAMC,kBAAkB,GAAG,WAAW;AACtC,MAAMC,kBAAkB,GAAG,WAAW;AACtC,MAAMC,mBAAmB,GAAG,kBAAkB;AAC9C,MAAMC,mBAAmB,GAAG,CAAA,EAAGH,kBAAkB,CAAA,EAAA,EAAKC,kBAAkB,CAAA,GAAA,EAAMD,kBAAkB,CAAA,EAAA,EAAKE,mBAAmB,CAAA,CAAE;AAC1H,MAAME,sBAAoB,GAAG,yBAAyB;;AAEtD;AACA;AACA,MAAMC,mBAAmB,GAAG,GAAG;AAC/B;AACA,MAAMC,eAAe,GAAG,GAAG;AAE3B,MAAM3mC,SAAO,GAAG;AACd;AACA;AACA;AACA4mC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,YAAY,EAAE,KAAK;AACnBxwC,EAAAA,MAAM,EAAE,IAAI;EACZqV,SAAS,EAAE,CAAC,CAAC,CAAC;AACd;AACA;AACA;AACAo7B,EAAAA,SAAS,EAAE;AACb,CAAC;AAED,MAAM7mC,aAAW,GAAG;AAClB2mC,EAAAA,UAAU,EAAE,eAAe;AAC3BC,EAAAA,YAAY,EAAE,SAAS;AACvBxwC,EAAAA,MAAM,EAAE,SAAS;AACjBqV,EAAAA,SAAS,EAAE,OAAO;AAClBo7B,EAAAA,SAAS,EAAE;AACb,CAAC;;AAED;AACA;AACA;;AAEA,MAAMC,SAAS,SAAS3lC,aAAa,CAAC;AACpCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;;AAEtB;AACA,IAAA,IAAI,CAAC2mC,SAAS,GAAG,EAAE,CAAA;AACnB,IAAA,IAAI,CAACC,cAAc,GAAG,IAAI1zC,GAAG,EAAE,CAAA;AAC/B,IAAA,IAAI,CAAC2zC,cAAc,GAAG,IAAI3zC,GAAG,EAAE,CAAA;AAC/B,IAAA,IAAI,CAAC4zC,aAAa,GAAG,IAAIjyC,GAAG,EAAE,CAAA;IAC9B,IAAI,CAACkyC,aAAa,GAAG,IAAI;AACzB,IAAA,IAAI,CAACC,WAAW,GAAG,IAAI,CAAA;IACvB,IAAI,CAACC,SAAS,GAAG,KAAK;AACtB,IAAA,IAAI,CAACC,YAAY,GAAG/qC,gBAAgB,CAAC,IAAI,CAAC6E,QAAQ,CAAC,CAACmmC,SAAS,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,CAACnmC,QAAQ;IAElG,IAAI,CAACsH,SAAS,GAAG,IAAI;IACrB,IAAI,CAAC8+B,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,iBAAiB,GAAG,IAAI;IAE7B,IAAI,CAACC,kBAAkB,GAAG,IAAI;IAC9B,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,kBAAkB,GAAG,IAAI;IAE9B,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,cAAc,GAAG,IAAI;AAE1B,IAAA,IAAI,CAACC,OAAO,EAAE,CAAA;AAChB,EAAA;;AAEA;EACA,WAAWjoC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACA+nC,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACC,gCAAgC,EAAE;IACvC,IAAI,CAACC,wBAAwB,EAAE;;AAE/B;AACA,IAAA,IAAI,CAACx/B,SAAS,EAAEoC,UAAU,EAAE;AAC5B,IAAA,IAAI,CAACo8B,aAAa,CAAC1qB,KAAK,EAAE;AAC1B,IAAA,IAAI,CAAC9T,SAAS,GAAG,IAAI,CAACy/B,eAAe,EAAE;AACvC,IAAA,KAAK,MAAMC,OAAO,IAAI,IAAI,CAACrB,SAAS,EAAE;AACpC,MAAA,IAAI,CAACr+B,SAAS,CAACiD,OAAO,CAACy8B,OAAO,CAAC;AACjC,IAAA;;AAEA;AACA;IACA,IAAI,CAACC,cAAc,EAAE;;AAErB;AACA;IACA,IAAI,CAACC,uBAAuB,EAAE;AAChC,EAAA;AAEA7mC,EAAAA,OAAOA,GAAG;AACR,IAAA,IAAI,CAACiH,SAAS,EAAEoC,UAAU,EAAE;IAC5B,IAAI,CAACy9B,iBAAiB,EAAE;IACxB,IAAI,CAACC,aAAa,EAAE;IACpB,IAAI,CAACC,qBAAqB,EAAE;IAC5B7yC,YAAY,CAACC,GAAG,CAAC,IAAI,CAACwL,OAAO,CAACjL,MAAM,EAAEqpC,aAAW,CAAC;IAClD,KAAK,CAACh+B,OAAO,EAAE;AACjB,EAAA;;AAEA;EACAnB,iBAAiBA,CAACF,MAAM,EAAE;AACxBA,IAAAA,MAAM,CAAChK,MAAM,GAAG2G,UAAU,CAACqD,MAAM,CAAChK,MAAM,CAAC,IAAI8F,QAAQ,CAACoc,IAAI;AAE1D,IAAA,IAAI,OAAOlY,MAAM,CAACqL,SAAS,KAAK,QAAQ,EAAE;MACxCrL,MAAM,CAACqL,SAAS,GAAGrL,MAAM,CAACqL,SAAS,CAAC9O,KAAK,CAAC,GAAG,CAAC,CAAC2F,GAAG,CAACjO,KAAK,IAAIqF,MAAM,CAAC+C,UAAU,CAACpI,KAAK,CAAC,CAAC;AACvF,IAAA;AAEA,IAAA,OAAO+L,MAAM;AACf,EAAA;;AAEA;;AAEA+nC,EAAAA,eAAeA,GAAG;AAChB,IAAA,MAAMpQ,OAAO,GAAG;MACd75B,IAAI,EAAE,IAAI,CAACopC,YAAY;AACvB77B,MAAAA,SAAS,EAAE,IAAI,CAACpK,OAAO,CAACoK,SAAS;MACjCk7B,UAAU,EAAE,IAAI,CAACtlC,OAAO,CAACslC,UAAU,IAAI,IAAI,CAAC+B,qBAAqB;KAClE;AAED,IAAA,OAAO,IAAIn9B,oBAAoB,CAACpT,OAAO,IAAI,IAAI,CAACwwC,YAAY,CAACxwC,OAAO,CAAC,EAAE4/B,OAAO,CAAC;AACjF,EAAA;EAEA4Q,YAAYA,CAACxwC,OAAO,EAAE;AACpB,IAAA,KAAK,MAAMyT,KAAK,IAAIzT,OAAO,EAAE;MAC3B,IAAIyT,KAAK,CAACC,cAAc,EAAE;QACxB,IAAI,CAACq7B,aAAa,CAACt9B,GAAG,CAACgC,KAAK,CAACxV,MAAM,CAAC;AACtC,MAAA,CAAC,MAAM;QACL,IAAI,CAAC8wC,aAAa,CAAC3yC,MAAM,CAACqX,KAAK,CAACxV,MAAM,CAAC;AACzC,MAAA;AACF,IAAA;IAEA,IAAI,CAACwyC,cAAc,EAAE;AACvB,EAAA;;AAEA;AACA;AACA;AACA;AACA;AACAA,EAAAA,cAAcA,GAAG;AACf;AACA,IAAA,IAAI,CAAC,IAAI,CAACxnC,QAAQ,EAAEoZ,WAAW,IAAI,IAAI,CAACusB,SAAS,CAACruC,MAAM,KAAK,CAAC,EAAE;AAC9D,MAAA;AACF,IAAA;IAEA,IAAIyS,MAAM,GAAG,IAAI;IAEjB,IAAI,IAAI,CAACk8B,SAAS,EAAE;MAClBl8B,MAAM,GAAG,IAAI,CAAC47B,SAAS,CAACvoB,EAAE,CAAC,EAAE,CAAC;AAChC,IAAA,CAAC,MAAM;AACL,MAAA,KAAK,MAAM4pB,OAAO,IAAI,IAAI,CAACrB,SAAS,EAAE;QACpC,IAAI,IAAI,CAACG,aAAa,CAACvzC,GAAG,CAACy0C,OAAO,CAAC,EAAE;AACnCj9B,UAAAA,MAAM,GAAGi9B,OAAO;AAClB,QAAA;AACF,MAAA;;AAEA;AACA;AACAj9B,MAAAA,MAAM,KAAK,IAAI,CAACi8B,WAAW,IAAI,IAAI,CAACL,SAAS,CAACvoB,EAAE,CAAC,CAAC,CAAC;AACrD,IAAA;IAEA,IAAI,CAACrT,MAAM,EAAE;AACX,MAAA;AACF,IAAA;IAEA,IAAI,CAACi8B,WAAW,GAAGj8B,MAAM;IACzB,MAAMiiB,IAAI,GAAG,IAAI,CAAC4Z,cAAc,CAACnzC,GAAG,CAACsX,MAAM,CAAC;AAC5C,IAAA,IAAIiiB,IAAI,EAAE;AACR,MAAA,IAAI,CAACyb,QAAQ,CAACzb,IAAI,CAAC;AACrB,IAAA;AACF,EAAA;;AAEA;AACA;AACA0b,EAAAA,eAAeA,GAAG;IAChB,MAAMz0C,KAAK,GAAG+yB,MAAM,CAAC,IAAI,CAAC/lB,OAAO,CAACwlC,SAAS,CAAC;IAC5C,OAAO;MACLxyC,KAAK,EAAEqF,MAAM,CAAC+C,UAAU,CAACpI,KAAK,CAAC,IAAI,CAAC;MACpC00C,IAAI,EAAE10C,KAAK,CAAC20C,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG;KACnC;AACH,EAAA;;AAEA;AACA;AACAN,EAAAA,qBAAqBA,GAAG;IACtB,MAAM;MAAEr0C,KAAK;AAAE00C,MAAAA;AAAK,KAAC,GAAG,IAAI,CAACD,eAAe,EAAE;IAC9C,IAAIG,OAAO,GAAG50C,KAAK;;AAEnB;IACA,IAAI00C,IAAI,KAAK,IAAI,EAAE;MACjB,MAAMG,UAAU,GAAG,IAAI,CAAC5B,YAAY,GAClC,IAAI,CAACA,YAAY,CAAC6B,YAAY,GAC7BjtC,QAAQ,CAAC6B,eAAe,CAACorC,YAAY,IAAI/tC,MAAM,CAACguC,WAAY;MAC/DH,OAAO,GAAGC,UAAU,GAAI70C,KAAK,GAAG60C,UAAU,GAAI,GAAG,GAAG,EAAE;AACxD,IAAA;;AAEA;AACA;AACA,IAAA,MAAM7uB,MAAM,GAAGte,IAAI,CAAC8D,GAAG,CAAC9D,IAAI,CAAC6D,GAAG,CAAC,GAAG,GAAGqpC,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;IACxD,OAAO,CAAA,SAAA,EAAY5uB,MAAM,CAAA,KAAA,CAAO;AAClC,EAAA;;AAEA;AACA;AACA;AACAgvB,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,OAAO,CAAC,IAAI,CAAChoC,OAAO,CAACslC,UAAU,IAAI,IAAI,CAACmC,eAAe,EAAE,CAACC,IAAI,KAAK,IAAI;AACzE,EAAA;;AAEA;;AAEAV,EAAAA,cAAcA,GAAG;IACf,IAAI,CAACE,iBAAiB,EAAE;AAExB,IAAA,IAAI,IAAI,CAACxB,SAAS,CAACruC,MAAM,KAAK,CAAC,EAAE;AAC/B,MAAA;AACF,IAAA;AAEA,IAAA,MAAM4wC,QAAQ,GAAGptC,QAAQ,CAAC2kB,aAAa,CAAC,KAAK,CAAC;AAC9CyoB,IAAAA,QAAQ,CAAClvC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;AAC5CkvC,IAAAA,QAAQ,CAACr+B,KAAK,CAACs+B,OAAO,GAAG,mFAAmF;AAC5G,IAAA,IAAI,CAACnoC,QAAQ,CAACsN,MAAM,CAAC46B,QAAQ,CAAC;IAC9B,IAAI,CAAC9B,SAAS,GAAG8B,QAAQ;AAEzB,IAAA,IAAI,CAAC7B,iBAAiB,GAAG,IAAIl8B,oBAAoB,CAACpT,OAAO,IAAI,IAAI,CAACqxC,WAAW,CAACrxC,OAAO,CAAC,EAAE;MACtF+F,IAAI,EAAE,IAAI,CAACopC,YAAY;MACvB77B,SAAS,EAAE,CAAC,CAAC;AACf,KAAC,CAAC;AACF,IAAA,IAAI,CAACg8B,iBAAiB,CAAC97B,OAAO,CAAC29B,QAAQ,CAAC;AAC1C,EAAA;EAEAE,WAAWA,CAACrxC,OAAO,EAAE;IACnB,MAAMyT,KAAK,GAAGzT,OAAO,CAACqmB,EAAE,CAAC,EAAE,CAAC;AAC5B;AACA;AACA,IAAA,IAAI,CAAC6oB,SAAS,GAAGvvC,OAAO,CAAC8T,KAAK,EAAEC,cAAc,CAAC,IAAI,IAAI,CAAC49B,cAAc,EAAE;IACxE,IAAI,CAACb,cAAc,EAAE;AACvB,EAAA;AAEAa,EAAAA,cAAcA,GAAG;AACf,IAAA,MAAMC,QAAQ,GAAG,IAAI,CAACpC,YAAY,IAAIprC,QAAQ,CAACytC,gBAAgB,IAAIztC,QAAQ,CAAC6B,eAAe;AAC3F,IAAA,OAAO2rC,QAAQ,CAACE,YAAY,GAAGF,QAAQ,CAACP,YAAY;AACtD,EAAA;AAEAZ,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,IAAI,CAACd,iBAAiB,EAAE38B,UAAU,EAAE;IACpC,IAAI,CAAC28B,iBAAiB,GAAG,IAAI;AAC7B,IAAA,IAAI,CAACD,SAAS,EAAElzC,MAAM,EAAE;IACxB,IAAI,CAACkzC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACH,SAAS,GAAG,KAAK;AACxB,EAAA;;AAEA;;AAEAiB,EAAAA,uBAAuBA,GAAG;IACxB,IAAI,CAACG,qBAAqB,EAAE;AAE5B,IAAA,IAAI,CAAC,IAAI,CAACY,gBAAgB,EAAE,EAAE;AAC5B,MAAA;AACF,IAAA;IAEA,IAAI,CAACvB,cAAc,GAAG,MAAM;AAC1Bt3B,MAAAA,YAAY,CAAC,IAAI,CAACu3B,cAAc,CAAC;AACjC,MAAA,IAAI,CAACA,cAAc,GAAG5oC,UAAU,CAAC,MAAM,IAAI,CAAC0qC,gBAAgB,EAAE,EAAEnD,eAAe,CAAC;IAClF,CAAC;IAED9wC,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEk0B,YAAY,EAAE,IAAI,CAACwY,cAAc,CAAC;AAC5D,EAAA;AAEAW,EAAAA,qBAAqBA,GAAG;AACtBj4B,IAAAA,YAAY,CAAC,IAAI,CAACu3B,cAAc,CAAC;IACjC,IAAI,CAACA,cAAc,GAAG,IAAI;IAE1B,IAAI,IAAI,CAACD,cAAc,EAAE;MACvBlyC,YAAY,CAACC,GAAG,CAACuF,MAAM,EAAEk0B,YAAY,EAAE,IAAI,CAACwY,cAAc,CAAC;MAC3D,IAAI,CAACA,cAAc,GAAG,IAAI;AAC5B,IAAA;AACF,EAAA;AAEA+B,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,IAAI,CAAC,IAAI,CAACnhC,SAAS,EAAE;AACnB,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACA,SAAS,CAACoC,UAAU,EAAE;AAC3B,IAAA,IAAI,CAACo8B,aAAa,CAAC1qB,KAAK,EAAE;AAC1B,IAAA,IAAI,CAAC9T,SAAS,GAAG,IAAI,CAACy/B,eAAe,EAAE;AACvC,IAAA,KAAK,MAAMC,OAAO,IAAI,IAAI,CAACrB,SAAS,EAAE;AACpC,MAAA,IAAI,CAACr+B,SAAS,CAACiD,OAAO,CAACy8B,OAAO,CAAC;AACjC,IAAA;AACF,EAAA;;AAEA;;AAEAF,EAAAA,wBAAwBA,GAAG;AACzB,IAAA,IAAI,CAAC,IAAI,CAAC7mC,OAAO,CAACulC,YAAY,EAAE;AAC9B,MAAA;AACF,IAAA;;AAEA;IACAhxC,YAAY,CAACC,GAAG,CAAC,IAAI,CAACwL,OAAO,CAACjL,MAAM,EAAEqpC,aAAW,CAAC;AAElD7pC,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAACgJ,OAAO,CAACjL,MAAM,EAAEqpC,aAAW,EAAEyG,qBAAqB,EAAE1wC,KAAK,IAAI;MAChF,MAAM43B,IAAI,GAAG53B,KAAK,CAACY,MAAM,CAACkH,OAAO,CAAC4oC,qBAAqB,CAAC;MACxD,MAAMkC,OAAO,GAAGhb,IAAI,IAAI,IAAI,CAAC6Z,cAAc,CAACpzC,GAAG,CAACu5B,IAAI,CAAC;AACrD,MAAA,IAAI,CAACgb,OAAO,IAAI,CAAC,IAAI,CAAChnC,QAAQ,EAAE;AAC9B,QAAA;AACF,MAAA;MAEA5L,KAAK,CAACyO,cAAc,EAAE;AAEtB,MAAA,MAAM/F,IAAI,GAAG,IAAI,CAACopC,YAAY,IAAIlsC,MAAM;MACxC,MAAM0uC,MAAM,GAAG1B,OAAO,CAAC2B,SAAS,GAAG,IAAI,CAAC3oC,QAAQ,CAAC2oC,SAAS;AAC1D,MAAA,MAAMC,UAAU,GAAG,IAAI,CAAC1C,YAAY,GAClC,IAAI,CAACA,YAAY,CAAC2C,SAAS,GAC1B7uC,MAAM,CAAC8uC,OAAO,IAAI9uC,MAAM,CAAC+uC,WAAY;AACxC,MAAA,MAAMC,YAAY,GAAG75B,UAAU,CAAC,kCAAkC,CAAC,CAACzN,OAAO;;AAE3E;AACA;AACA;AACA,MAAA,IAAIsnC,YAAY,IAAIruC,IAAI,CAAC6Q,GAAG,CAACo9B,UAAU,GAAGF,MAAM,CAAC,IAAI,CAAC,EAAE;QACtD,IAAI5rC,IAAI,CAACoP,QAAQ,EAAE;UACjBpP,IAAI,CAACoP,QAAQ,CAAC;AAAEwB,YAAAA,GAAG,EAAEg7B,MAAM;AAAEv8B,YAAAA,QAAQ,EAAE;AAAO,WAAC,CAAC;AAClD,QAAA,CAAC,MAAM;UACLrP,IAAI,CAAC+rC,SAAS,GAAGH,MAAM;AACzB,QAAA;QAEA,IAAI,CAACO,iBAAiB,CAACjd,IAAI,CAACkd,IAAI,EAAElC,OAAO,CAAC;AAC1C,QAAA;AACF,MAAA;;AAEA;AACA;AACA;MACA,IAAI,CAACV,kBAAkB,GAAG;QAAE4C,IAAI,EAAEld,IAAI,CAACkd,IAAI;AAAElC,QAAAA;OAAS;MACtD,IAAI,CAACmC,UAAU,EAAE;MAEjB,IAAIrsC,IAAI,CAACoP,QAAQ,EAAE;QACjBpP,IAAI,CAACoP,QAAQ,CAAC;AAAEwB,UAAAA,GAAG,EAAEg7B,MAAM;AAAEv8B,UAAAA,QAAQ,EAAE;AAAS,SAAC,CAAC;AACpD,MAAA,CAAC,MAAM;QACLrP,IAAI,CAAC+rC,SAAS,GAAGH,MAAM;AACzB,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA;;AAEA;AACA;AACA;AACAS,EAAAA,UAAUA,GAAG;IACX,IAAI,CAAC/B,aAAa,EAAE;AAEpB,IAAA,MAAMpyC,MAAM,GAAG,IAAI,CAACo0C,gBAAgB,EAAE;IAEtC,IAAI,CAAC5C,cAAc,GAAG,MAAM,IAAI,CAAC6C,SAAS,EAAE;IAC5C,IAAI,CAAC5C,kBAAkB,GAAG,MAAM;AAC9Br3B,MAAAA,YAAY,CAAC,IAAI,CAACm3B,cAAc,CAAC;AACjC,MAAA,IAAI,CAACA,cAAc,GAAGxoC,UAAU,CAAC,MAAM,IAAI,CAACsrC,SAAS,EAAE,EAAEhE,mBAAmB,CAAC;IAC/E,CAAC;IAED7wC,YAAY,CAACyC,EAAE,CAACjC,MAAM,EAAE2vC,eAAe,EAAE,IAAI,CAAC6B,cAAc,CAAC;IAC7DhyC,YAAY,CAACyC,EAAE,CAACjC,MAAM,EAAE0vC,YAAY,EAAE,IAAI,CAAC+B,kBAAkB,CAAC;AAChE,EAAA;AAEAW,EAAAA,aAAaA,GAAG;AACdh4B,IAAAA,YAAY,CAAC,IAAI,CAACm3B,cAAc,CAAC;IACjC,IAAI,CAACA,cAAc,GAAG,IAAI;AAE1B,IAAA,MAAMvxC,MAAM,GAAG,IAAI,CAACo0C,gBAAgB,EAAE;IACtC,IAAI,IAAI,CAAC5C,cAAc,EAAE;MACvBhyC,YAAY,CAACC,GAAG,CAACO,MAAM,EAAE2vC,eAAe,EAAE,IAAI,CAAC6B,cAAc,CAAC;MAC9D,IAAI,CAACA,cAAc,GAAG,IAAI;AAC5B,IAAA;IAEA,IAAI,IAAI,CAACC,kBAAkB,EAAE;MAC3BjyC,YAAY,CAACC,GAAG,CAACO,MAAM,EAAE0vC,YAAY,EAAE,IAAI,CAAC+B,kBAAkB,CAAC;MAC/D,IAAI,CAACA,kBAAkB,GAAG,IAAI;AAChC,IAAA;AACF,EAAA;AAEA2C,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,OAAO,IAAI,CAAClD,YAAY,IAAIprC,QAAQ;AACtC,EAAA;AAEAuuC,EAAAA,SAASA,GAAG;IACV,IAAI,CAACjC,aAAa,EAAE;AAEpB,IAAA,IAAI,CAAC,IAAI,CAACd,kBAAkB,EAAE;AAC5B,MAAA;AACF,IAAA;IAEA,MAAM;MAAE4C,IAAI;AAAElC,MAAAA;KAAS,GAAG,IAAI,CAACV,kBAAkB;AACjD,IAAA,IAAI,CAAC2C,iBAAiB,CAACC,IAAI,EAAElC,OAAO,CAAC;AACvC,EAAA;AAEAiC,EAAAA,iBAAiBA,CAACC,IAAI,EAAElC,OAAO,EAAE;IAC/B,IAAI,CAACV,kBAAkB,GAAG,IAAI;;AAE9B;AACA;AACA,IAAA,IAAItsC,MAAM,CAACsvC,OAAO,EAAEC,YAAY,EAAE;MAChCvvC,MAAM,CAACsvC,OAAO,CAACC,YAAY,CAAC,IAAI,EAAE,EAAE,EAAEL,IAAI,CAAC;AAC7C,IAAA;AAEA,IAAA,IAAI,CAAClC,OAAO,CAACvqC,YAAY,CAAC,UAAU,CAAC,EAAE;AACrCuqC,MAAAA,OAAO,CAAChuC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;AACxC,IAAA;IAEAguC,OAAO,CAAC34B,KAAK,CAAC;AAAEC,MAAAA,aAAa,EAAE;AAAK,KAAC,CAAC;AACxC,EAAA;;AAEA;;AAEAu4B,EAAAA,gCAAgCA,GAAG;IACjC,IAAI,CAAClB,SAAS,GAAG,EAAE;AACnB,IAAA,IAAI,CAACC,cAAc,GAAG,IAAI1zC,GAAG,EAAE;AAC/B,IAAA,IAAI,CAAC2zC,cAAc,GAAG,IAAI3zC,GAAG,EAAE;AAE/B,IAAA,MAAMs3C,WAAW,GAAGnoC,cAAc,CAAC7L,IAAI,CAACsvC,qBAAqB,EAAE,IAAI,CAAC7kC,OAAO,CAACjL,MAAM,CAAC;AACnF,IAAA,MAAMy0C,IAAI,GAAG,IAAI51C,GAAG,EAAE;AAEtB,IAAA,KAAK,MAAM61C,MAAM,IAAIF,WAAW,EAAE;MAChC,IAAI,CAACE,MAAM,CAACR,IAAI,IAAI9sC,UAAU,CAACstC,MAAM,CAAC,EAAE;AACtC,QAAA;AACF,MAAA;;AAEA;AACA;AACA;AACA,MAAA,MAAMtvC,EAAE,GAAGuvC,cAAc,CAACD,MAAM,CAACR,IAAI,CAAC1xC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/C,IAAI,CAAC4C,EAAE,EAAE;AACP,QAAA;AACF,MAAA;AAEA,MAAA,MAAM4sC,OAAO,GAAGlsC,QAAQ,CAACC,cAAc,CAACX,EAAE,CAAC;AAC3C;AACA,MAAA,IAAI,CAAC4sC,OAAO,IAAI,CAAC,IAAI,CAAChnC,QAAQ,CAAC9J,QAAQ,CAAC8wC,OAAO,CAAC,IAAI,CAACnrC,SAAS,CAACmrC,OAAO,CAAC,EAAE;AACvE,QAAA;AACF,MAAA;MAEA,IAAI,CAACnB,cAAc,CAAC1zC,GAAG,CAACu3C,MAAM,EAAE1C,OAAO,CAAC;MACxC,IAAI,CAACpB,cAAc,CAACzzC,GAAG,CAAC60C,OAAO,EAAE0C,MAAM,CAAC,CAAA;;AAExC,MAAA,IAAI,CAACD,IAAI,CAACl3C,GAAG,CAACy0C,OAAO,CAAC,EAAE;AACtByC,QAAAA,IAAI,CAACjhC,GAAG,CAACw+B,OAAO,CAAC;AACjB,QAAA,IAAI,CAACrB,SAAS,CAAC9jC,IAAI,CAACmlC,OAAO,CAAC;AAC9B,MAAA;AACF,IAAA;;AAEA;AACA;IACA,IAAI,CAACrB,SAAS,CAACxB,IAAI,CAAC,CAAClL,CAAC,EAAEE,CAAC,KAAKF,CAAC,CAACzsB,qBAAqB,EAAE,CAACkB,GAAG,GAAGyrB,CAAC,CAAC3sB,qBAAqB,EAAE,CAACkB,GAAG,CAAC;AAC9F,EAAA;EAEA+5B,QAAQA,CAACzyC,MAAM,EAAE;AACf,IAAA,IAAI,IAAI,CAAC+wC,aAAa,KAAK/wC,MAAM,EAAE;AACjC,MAAA;AACF,IAAA;IAEA,IAAI,CAAC40C,iBAAiB,CAAC,IAAI,CAAC3pC,OAAO,CAACjL,MAAM,CAAC;IAC3C,IAAI,CAAC+wC,aAAa,GAAG/wC,MAAM;AAC3BA,IAAAA,MAAM,CAACuH,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AACvC,IAAA,IAAI,CAAC6lC,gBAAgB,CAAC70C,MAAM,CAAC;IAE7BR,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEykC,cAAc,EAAE;AAAExuC,MAAAA,aAAa,EAAEjB;AAAO,KAAC,CAAC;AAChF,EAAA;EAEA60C,gBAAgBA,CAAC70C,MAAM,EAAE;AACvB;IACA,IAAIA,MAAM,CAACuH,SAAS,CAACrG,QAAQ,CAAC0uC,oBAAoB,CAAC,EAAE;MACnD,MAAMkF,UAAU,GAAG90C,MAAM,CAACkH,OAAO,CAAC,OAAO,CAAC,EAAE8F,sBAAsB;AAClE,MAAA,IAAI8nC,UAAU,EAAEpoC,OAAO,CAAC0jC,sBAAoB,CAAC,EAAE;AAC7C0E,QAAAA,UAAU,CAACvtC,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AAC7C,MAAA;AAEA,MAAA;AACF,IAAA;IAEA,KAAK,MAAM+lC,SAAS,IAAI1oC,cAAc,CAACM,OAAO,CAAC3M,MAAM,EAAE+vC,uBAAuB,CAAC,EAAE;AAC/E;AACA;MACA,KAAK,MAAMz6B,IAAI,IAAIjJ,cAAc,CAACS,IAAI,CAACioC,SAAS,EAAE5E,mBAAmB,CAAC,EAAE;AACtE76B,QAAAA,IAAI,CAAC/N,SAAS,CAACiM,GAAG,CAACxE,mBAAiB,CAAC;AACvC,MAAA;AACF,IAAA;AACF,EAAA;EAEA4lC,iBAAiBA,CAACx5B,MAAM,EAAE;AACxBA,IAAAA,MAAM,CAAC7T,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAE1C,IAAA,MAAMgmC,WAAW,GAAG3oC,cAAc,CAAC7L,IAAI,CAAC,CAAA,EAAGsvC,qBAAqB,CAAA,CAAA,EAAI9gC,mBAAiB,CAAA,CAAE,EAAEoM,MAAM,CAAC;AAChG,IAAA,KAAK,MAAMhD,IAAI,IAAI48B,WAAW,EAAE;AAC9B58B,MAAAA,IAAI,CAAC7Q,SAAS,CAACrJ,MAAM,CAAC8Q,mBAAiB,CAAC;AAC1C,IAAA;AACF,EAAA;AACF;;AAEA;AACA,SAAS2lC,cAAcA,CAACT,IAAI,EAAE;EAC5B,IAAI;IACF,OAAOxwC,kBAAkB,CAACwwC,IAAI,CAAC;AACjC,EAAA,CAAC,CAAC,MAAM;AACN,IAAA,OAAOA,IAAI;AACb,EAAA;AACF;;AAEA;AACA;AACA;;AAEA10C,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEgL,qBAAmB,EAAE,MAAM;EACjD,KAAK,MAAMilC,GAAG,IAAI5oC,cAAc,CAAC7L,IAAI,CAACqvC,iBAAiB,CAAC,EAAE;AACxDa,IAAAA,SAAS,CAAC9kC,mBAAmB,CAACqpC,GAAG,CAAC;AACpC,EAAA;AACF,CAAC,CAAC;;ACljBF;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMprC,MAAI,GAAG,KAAK;AAClB,MAAMuB,UAAQ,GAAG,QAAQ;AACzB,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAEhC,MAAMsP,YAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,cAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAMkP,YAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,aAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AACvC,MAAM4D,oBAAoB,GAAG,CAAA,KAAA,EAAQ5D,WAAS,CAAA,CAAE;AAChD,MAAMsE,aAAa,GAAG,CAAA,OAAA,EAAUtE,WAAS,CAAA,CAAE;AAC3C,MAAM0E,mBAAmB,GAAG,CAAA,IAAA,EAAO1E,WAAS,CAAA,CAAE;AAE9C,MAAMgE,cAAc,GAAG,WAAW;AAClC,MAAMC,eAAe,GAAG,YAAY;AACpC,MAAMsP,YAAY,GAAG,SAAS;AAC9B,MAAMC,cAAc,GAAG,WAAW;AAClC,MAAMC,QAAQ,GAAG,MAAM;AACvB,MAAMC,OAAO,GAAG,KAAK;AAErB,MAAMhQ,iBAAiB,GAAG,QAAQ;AAClC,MAAMR,iBAAe,GAAG,MAAM;AAC9B,MAAMC,iBAAe,GAAG,MAAM;AAC9B,MAAM2hC,oBAAoB,GAAG,yBAAyB;AACtD,MAAM7wB,aAAa,GAAG,OAAO;AAC7B,MAAM21B,wBAAwB,GAAG,CAAA,KAAA,EAAQ9E,oBAAoB,CAAA,CAAA,CAAG;AAEhE,MAAM+E,kBAAkB,GAAG,qCAAqC;AAChE,MAAMC,cAAc,GAAG,6BAA6B;AACpD,MAAMvkC,cAAc,GAAG,CAAA,SAAA,EAAYqkC,wBAAwB,qBAAqBA,wBAAwB,CAAA,cAAA,EAAiBA,wBAAwB,CAAA,CAAE;AACnJ,MAAMjmC,sBAAoB,GAAG,wBAAwB;AACrD,MAAMomC,mBAAmB,GAAG,CAAA,EAAGxkC,cAAc,CAAA,EAAA,EAAK5B,sBAAoB,CAAA,CAAE;AAExE,MAAMqmC,2BAA2B,GAAG,CAAA,CAAA,EAAItmC,iBAAiB,CAAA,sBAAA,CAAwB;;AAEjF;AACA;AACA;;AAEA,MAAMumC,GAAG,SAASxqC,aAAa,CAAC;EAC9BV,WAAWA,CAACjN,OAAO,EAAE;IACnB,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACgkB,OAAO,GAAG,IAAI,CAACpW,QAAQ,CAAC9D,OAAO,CAACiuC,kBAAkB,CAAC;AAExD,IAAA,IAAI,CAAC,IAAI,CAAC/zB,OAAO,EAAE;AACjB,MAAA;AACA;AACA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,CAACo0B,qBAAqB,CAAC,IAAI,CAACp0B,OAAO,EAAE,IAAI,CAACq0B,YAAY,EAAE,CAAC;AAE7Dj2C,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE4E,aAAa,EAAExQ,KAAK,IAAI,IAAI,CAAC4V,QAAQ,CAAC5V,KAAK,CAAC,CAAC;AAC9E,EAAA;;AAEA;EACA,WAAWyK,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAmS,EAAAA,IAAIA,GAAG;AAAE;AACP,IAAA,MAAM05B,SAAS,GAAG,IAAI,CAAC1qC,QAAQ;AAC/B,IAAA,IAAI,IAAI,CAAC2qC,aAAa,CAACD,SAAS,CAAC,EAAE;AACjC,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,MAAM3gC,MAAM,GAAG,IAAI,CAAC6gC,cAAc,EAAE;IAEpC,MAAM/yB,SAAS,GAAG9N,MAAM,GACtBvV,YAAY,CAACkD,OAAO,CAACqS,MAAM,EAAE2F,YAAU,EAAE;AAAEzZ,MAAAA,aAAa,EAAEy0C;KAAW,CAAC,GACtE,IAAI;IAEN,MAAM3zB,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAACgzC,SAAS,EAAEl7B,YAAU,EAAE;AAAEvZ,MAAAA,aAAa,EAAE8T;AAAO,KAAC,CAAC;IAExF,IAAIgN,SAAS,CAAClT,gBAAgB,IAAKgU,SAAS,IAAIA,SAAS,CAAChU,gBAAiB,EAAE;AAC3E,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAACgnC,WAAW,CAAC9gC,MAAM,EAAE2gC,SAAS,CAAC;AACnC,IAAA,IAAI,CAACI,SAAS,CAACJ,SAAS,EAAE3gC,MAAM,CAAC;AACnC,EAAA;;AAEA;AACA+gC,EAAAA,SAASA,CAAC14C,OAAO,EAAE24C,WAAW,EAAE;IAC9B,IAAI,CAAC34C,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEAA,IAAAA,OAAO,CAACmK,SAAS,CAACiM,GAAG,CAACxE,iBAAiB,CAAC;IAExC,IAAI,CAAC8mC,SAAS,CAACzpC,cAAc,CAACiB,sBAAsB,CAAClQ,OAAO,CAAC,CAAC,CAAA;;IAE9D,MAAMmf,QAAQ,GAAGA,MAAM;MACrB,IAAInf,OAAO,CAACuH,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC1CvH,QAAAA,OAAO,CAACmK,SAAS,CAACiM,GAAG,CAAC/E,iBAAe,CAAC;AACtC,QAAA;AACF,MAAA;AAEArR,MAAAA,OAAO,CAAC8G,eAAe,CAAC,UAAU,CAAC;AACnC9G,MAAAA,OAAO,CAAC4G,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC;AAC3C,MAAA,IAAI,CAACgyC,WAAW,CAAC54C,OAAO,EAAE,IAAI,CAAC;AAC/BoC,MAAAA,YAAY,CAACkD,OAAO,CAACtF,OAAO,EAAEqd,aAAW,EAAE;AACzCxZ,QAAAA,aAAa,EAAE80C;AACjB,OAAC,CAAC;IACJ,CAAC;AAED,IAAA,IAAI,CAACtqC,cAAc,CAAC8Q,QAAQ,EAAEnf,OAAO,EAAEA,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAC,CAAC;AACrF,EAAA;AAEAqnC,EAAAA,WAAWA,CAACz4C,OAAO,EAAE24C,WAAW,EAAE;IAChC,IAAI,CAAC34C,OAAO,EAAE;AACZ,MAAA;AACF,IAAA;AAEAA,IAAAA,OAAO,CAACmK,SAAS,CAACrJ,MAAM,CAAC8Q,iBAAiB,CAAC;IAC3C5R,OAAO,CAAC8lC,IAAI,EAAE;IAEd,IAAI,CAAC2S,WAAW,CAACxpC,cAAc,CAACiB,sBAAsB,CAAClQ,OAAO,CAAC,CAAC,CAAA;;IAEhE,MAAMmf,QAAQ,GAAGA,MAAM;MACrB,IAAInf,OAAO,CAACuH,YAAY,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE;AAC1CvH,QAAAA,OAAO,CAACmK,SAAS,CAACrJ,MAAM,CAACuQ,iBAAe,CAAC;AACzC,QAAA;AACF,MAAA;AAEArR,MAAAA,OAAO,CAAC4G,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC;AAC5C5G,MAAAA,OAAO,CAAC4G,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;AACtC,MAAA,IAAI,CAACgyC,WAAW,CAAC54C,OAAO,EAAE,KAAK,CAAC;AAChCoC,MAAAA,YAAY,CAACkD,OAAO,CAACtF,OAAO,EAAEud,cAAY,EAAE;AAAE1Z,QAAAA,aAAa,EAAE80C;AAAY,OAAC,CAAC;IAC7E,CAAC;AAED,IAAA,IAAI,CAACtqC,cAAc,CAAC8Q,QAAQ,EAAEnf,OAAO,EAAEA,OAAO,CAACmK,SAAS,CAACrG,QAAQ,CAACsN,iBAAe,CAAC,CAAC;AACrF,EAAA;EAEAwG,QAAQA,CAAC5V,KAAK,EAAE;IACd,IAAI,CAAE,CAACkQ,cAAc,EAAEC,eAAe,EAAEsP,YAAY,EAAEC,cAAc,EAAEC,QAAQ,EAAEC,OAAO,CAAC,CAAChd,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAE,EAAE;AAC7G,MAAA;AACF,IAAA;;AAEA;AACA;IACA,IAAI+B,KAAK,CAAC62C,MAAM,IAAI72C,KAAK,CAACyjC,OAAO,IAAIzjC,KAAK,CAACwjC,OAAO,EAAE;AAClD,MAAA;AACF,IAAA;IAEAxjC,KAAK,CAACgmB,eAAe,EAAE,CAAA;IACvBhmB,KAAK,CAACyO,cAAc,EAAE;AAEtB,IAAA,MAAMrB,QAAQ,GAAG,IAAI,CAACipC,YAAY,EAAE,CAAClxC,MAAM,CAACnH,OAAO,IAAI,CAACgK,UAAU,CAAChK,OAAO,CAAC,CAAC;AAC5E,IAAA,IAAI84C,iBAAiB;AAErB,IAAA,IAAI,CAACn3B,QAAQ,EAAEC,OAAO,CAAC,CAAChd,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC,EAAE;AAC3C64C,MAAAA,iBAAiB,GAAG92C,KAAK,CAAC/B,GAAG,KAAK0hB,QAAQ,GAAGvS,QAAQ,CAAC,CAAC,CAAC,GAAGA,QAAQ,CAAC4b,EAAE,CAAC,EAAE,CAAC;AAC5E,IAAA,CAAC,MAAM;AACL,MAAA,MAAMtQ,MAAM,GAAG,CAACvI,eAAe,EAAEuP,cAAc,CAAC,CAAC9c,QAAQ,CAAC5C,KAAK,CAAC/B,GAAG,CAAC;AACpE64C,MAAAA,iBAAiB,GAAGltC,oBAAoB,CAACwD,QAAQ,EAAEpN,KAAK,CAACY,MAAM,EAAE8X,MAAM,EAAE,IAAI,CAAC;AAChF,IAAA;AAEA,IAAA,IAAIo+B,iBAAiB,EAAE;MACrBA,iBAAiB,CAAC78B,KAAK,CAAC;AAAEC,QAAAA,aAAa,EAAE;AAAK,OAAC,CAAC;MAChDi8B,GAAG,CAAC3pC,mBAAmB,CAACsqC,iBAAiB,CAAC,CAACl6B,IAAI,EAAE;AACnD,IAAA;AACF,EAAA;AAEAy5B,EAAAA,YAAYA,GAAG;AAAE;IACf,OAAOppC,cAAc,CAAC7L,IAAI,CAAC60C,mBAAmB,EAAE,IAAI,CAACj0B,OAAO,CAAC;AAC/D,EAAA;AAEAw0B,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAACH,YAAY,EAAE,CAACj1C,IAAI,CAACiM,KAAK,IAAI,IAAI,CAACkpC,aAAa,CAAClpC,KAAK,CAAC,CAAC,IAAI,IAAI;AAC7E,EAAA;AAEA+oC,EAAAA,qBAAqBA,CAACp6B,MAAM,EAAE5O,QAAQ,EAAE;IACtC,IAAI,CAAC2pC,wBAAwB,CAAC/6B,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;AAExD,IAAA,KAAK,MAAM3O,KAAK,IAAID,QAAQ,EAAE;AAC5B,MAAA,IAAI,CAAC4pC,4BAA4B,CAAC3pC,KAAK,CAAC;AAC1C,IAAA;AACF,EAAA;EAEA2pC,4BAA4BA,CAAC3pC,KAAK,EAAE;AAClCA,IAAAA,KAAK,GAAG,IAAI,CAAC4pC,gBAAgB,CAAC5pC,KAAK,CAAC;AACpC,IAAA,MAAM6pC,QAAQ,GAAG,IAAI,CAACX,aAAa,CAAClpC,KAAK,CAAC;AAC1C,IAAA,MAAM8pC,SAAS,GAAG,IAAI,CAACC,gBAAgB,CAAC/pC,KAAK,CAAC;AAC9CA,IAAAA,KAAK,CAACzI,YAAY,CAAC,eAAe,EAAEsyC,QAAQ,CAAC;IAE7C,IAAIC,SAAS,KAAK9pC,KAAK,EAAE;MACvB,IAAI,CAAC0pC,wBAAwB,CAACI,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC;AAClE,IAAA;IAEA,IAAI,CAACD,QAAQ,EAAE;AACb7pC,MAAAA,KAAK,CAACzI,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;AACtC,IAAA;IAEA,IAAI,CAACmyC,wBAAwB,CAAC1pC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;;AAEnD;AACA,IAAA,IAAI,CAACgqC,kCAAkC,CAAChqC,KAAK,CAAC;AAChD,EAAA;EAEAgqC,kCAAkCA,CAAChqC,KAAK,EAAE;AACxC,IAAA,MAAMzM,MAAM,GAAGqM,cAAc,CAACiB,sBAAsB,CAACb,KAAK,CAAC;IAE3D,IAAI,CAACzM,MAAM,EAAE;AACX,MAAA;AACF,IAAA;IAEA,IAAI,CAACm2C,wBAAwB,CAACn2C,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;IAEzD,IAAIyM,KAAK,CAACrH,EAAE,EAAE;AACZ,MAAA,IAAI,CAAC+wC,wBAAwB,CAACn2C,MAAM,EAAE,iBAAiB,EAAE,CAAA,EAAGyM,KAAK,CAACrH,EAAE,CAAA,CAAE,CAAC;AACzE,IAAA;AACF,EAAA;AAEA4wC,EAAAA,WAAWA,CAAC54C,OAAO,EAAEo0B,IAAI,EAAE;AACzB,IAAA,MAAM+kB,SAAS,GAAG,IAAI,CAACC,gBAAgB,CAACp5C,OAAO,CAAC;IAChD,MAAM03C,UAAU,GAAGzoC,cAAc,CAACE,OAAO,CAAC6jC,oBAAoB,EAAEmG,SAAS,CAAC;IAC1E,IAAI,CAACzB,UAAU,EAAE;AACf,MAAA;AACF,IAAA;IAEA,MAAMp0B,IAAI,GAAGrU,cAAc,CAACE,OAAO,CAACgT,aAAa,EAAEg3B,SAAS,CAAC;IAE7DzB,UAAU,CAACvtC,SAAS,CAAC6H,MAAM,CAACJ,iBAAiB,EAAEwiB,IAAI,CAAC;AACpD,IAAA,IAAI9Q,IAAI,EAAE;MACRA,IAAI,CAACnZ,SAAS,CAAC6H,MAAM,CAACX,iBAAe,EAAE+iB,IAAI,CAAC;AAC9C,IAAA;AAEAsjB,IAAAA,UAAU,CAAC9wC,YAAY,CAAC,eAAe,EAAEwtB,IAAI,CAAC;AAChD,EAAA;AAEA2kB,EAAAA,wBAAwBA,CAAC/4C,OAAO,EAAE+oC,SAAS,EAAEloC,KAAK,EAAE;AAClD,IAAA,IAAI,CAACb,OAAO,CAACqK,YAAY,CAAC0+B,SAAS,CAAC,EAAE;AACpC/oC,MAAAA,OAAO,CAAC4G,YAAY,CAACmiC,SAAS,EAAEloC,KAAK,CAAC;AACxC,IAAA;AACF,EAAA;EAEA03C,aAAaA,CAACl6B,IAAI,EAAE;AAClB,IAAA,OAAOA,IAAI,CAAClU,SAAS,CAACrG,QAAQ,CAAC8N,iBAAiB,CAAC;AACnD,EAAA;;AAEA;EACAqnC,gBAAgBA,CAAC56B,IAAI,EAAE;AACrB,IAAA,OAAOA,IAAI,CAAC/O,OAAO,CAAC2oC,mBAAmB,CAAC,GAAG55B,IAAI,GAAGpP,cAAc,CAACE,OAAO,CAAC8oC,mBAAmB,EAAE55B,IAAI,CAAC;AACrG,EAAA;;AAEA;EACA+6B,gBAAgBA,CAAC/6B,IAAI,EAAE;AACrB,IAAA,OAAOA,IAAI,CAACvU,OAAO,CAACkuC,cAAc,CAAC,IAAI35B,IAAI;AAC7C,EAAA;AACF;;AAEA;AACA;AACA;;AAEAjc,YAAY,CAACyC,EAAE,CAAC6D,QAAQ,EAAEoJ,oBAAoB,EAAED,sBAAoB,EAAE,UAAU7P,KAAK,EAAE;AACrF,EAAA,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC4C,QAAQ,CAAC,IAAI,CAAC4L,OAAO,CAAC,EAAE;IACxCxO,KAAK,CAACyO,cAAc,EAAE;AACxB,EAAA;AAEA,EAAA,IAAIzG,UAAU,CAAC,IAAI,CAAC,EAAE;AACpB,IAAA;AACF,EAAA;EAEAmuC,GAAG,CAAC3pC,mBAAmB,CAAC,IAAI,CAAC,CAACoQ,IAAI,EAAE;AACtC,CAAC,CAAC;;AAEF;AACA;AACA;AACAxc,YAAY,CAACyC,EAAE,CAAC+C,MAAM,EAAEgL,mBAAmB,EAAE,MAAM;EACjD,KAAK,MAAM5S,OAAO,IAAIiP,cAAc,CAAC7L,IAAI,CAAC80C,2BAA2B,CAAC,EAAE;AACtEC,IAAAA,GAAG,CAAC3pC,mBAAmB,CAACxO,OAAO,CAAC;AAClC,EAAA;AACF,CAAC,CAAC;;ACrSF;AACA;AACA;AACA;AACA;AACA;;;AAOA;AACA;AACA;;AAEA,MAAMyM,MAAI,GAAG,OAAO;AACpB,MAAMuB,UAAQ,GAAG,UAAU;AAC3B,MAAME,WAAS,GAAG,CAAA,CAAA,EAAIF,UAAQ,CAAA,CAAE;AAEhC,MAAMsrC,eAAe,GAAG,CAAA,SAAA,EAAYprC,WAAS,CAAA,CAAE;AAC/C,MAAMqrC,cAAc,GAAG,CAAA,QAAA,EAAWrrC,WAAS,CAAA,CAAE;AAC7C,MAAMg+B,aAAa,GAAG,CAAA,OAAA,EAAUh+B,WAAS,CAAA,CAAE;AAC3C,MAAMi+B,cAAc,GAAG,CAAA,QAAA,EAAWj+B,WAAS,CAAA,CAAE;AAC7C,MAAMoP,UAAU,GAAG,CAAA,IAAA,EAAOpP,WAAS,CAAA,CAAE;AACrC,MAAMqP,YAAY,GAAG,CAAA,MAAA,EAASrP,WAAS,CAAA,CAAE;AACzC,MAAMkP,UAAU,GAAG,CAAA,IAAA,EAAOlP,WAAS,CAAA,CAAE;AACrC,MAAMmP,WAAW,GAAG,CAAA,KAAA,EAAQnP,WAAS,CAAA,CAAE;AAEvC,MAAMkD,eAAe,GAAG,MAAM;AAC9B,MAAMooC,eAAe,GAAG,MAAM,CAAA;AAC9B,MAAMnoC,eAAe,GAAG,MAAM;AAC9B,MAAMooC,kBAAkB,GAAG,SAAS;AAEpC,MAAMjtC,aAAW,GAAG;AAClBkgC,EAAAA,SAAS,EAAE,SAAS;AACpBgN,EAAAA,QAAQ,EAAE,SAAS;AACnB9M,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAMrgC,SAAO,GAAG;AACdmgC,EAAAA,SAAS,EAAE,IAAI;AACfgN,EAAAA,QAAQ,EAAE,IAAI;AACd9M,EAAAA,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA;;AAEA,MAAM+M,KAAK,SAAShsC,aAAa,CAAC;AAChCV,EAAAA,WAAWA,CAACjN,OAAO,EAAE4M,MAAM,EAAE;AAC3B,IAAA,KAAK,CAAC5M,OAAO,EAAE4M,MAAM,CAAC;IAEtB,IAAI,CAACogC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAAC4M,oBAAoB,GAAG,KAAK;IACjC,IAAI,CAACC,uBAAuB,GAAG,KAAK;IACpC,IAAI,CAACtM,aAAa,EAAE;AACtB,EAAA;;AAEA;EACA,WAAWhhC,OAAOA,GAAG;AACnB,IAAA,OAAOA,SAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,aAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,MAAI;AACb,EAAA;;AAEA;AACAmS,EAAAA,IAAIA,GAAG;IACL,MAAM+F,SAAS,GAAGviB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwP,UAAU,CAAC;IAEjE,IAAIuH,SAAS,CAAClT,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,IAAI,CAACqoC,aAAa,EAAE;AAEpB,IAAA,IAAI,IAAI,CAACjsC,OAAO,CAAC6+B,SAAS,EAAE;MAC1B,IAAI,CAAC9+B,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAChF,eAAe,CAAC;AAC9C,IAAA;IAEA,MAAM+N,QAAQ,GAAGA,MAAM;MACrB,IAAI,CAACvR,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC24C,kBAAkB,CAAC;MAClDr3C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEyP,WAAW,CAAC;MAEhD,IAAI,CAAC08B,kBAAkB,EAAE;IAC3B,CAAC;IAED,IAAI,CAACnsC,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC04C,eAAe,CAAC,CAAA;AAC/C3uC,IAAAA,MAAM,CAAC,IAAI,CAAC+C,QAAQ,CAAC;IACrB,IAAI,CAACA,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAAC/E,eAAe,EAAEooC,kBAAkB,CAAC;AAEhE,IAAA,IAAI,CAACprC,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACvR,QAAQ,EAAE,IAAI,CAACC,OAAO,CAAC6+B,SAAS,CAAC;AACtE,EAAA;AAEA/tB,EAAAA,IAAIA,GAAG;AACL,IAAA,IAAI,CAAC,IAAI,CAACq7B,OAAO,EAAE,EAAE;AACnB,MAAA;AACF,IAAA;IAEA,MAAMv0B,SAAS,GAAGrjB,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE0P,UAAU,CAAC;IAEjE,IAAImI,SAAS,CAAChU,gBAAgB,EAAE;AAC9B,MAAA;AACF,IAAA;IAEA,MAAM0N,QAAQ,GAAGA,MAAM;MACrB,IAAI,CAACvR,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACojC,eAAe,CAAC,CAAA;MAC5C,IAAI,CAAC5rC,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAAC24C,kBAAkB,EAAEpoC,eAAe,CAAC;MACnEjP,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAE2P,YAAY,CAAC;IACnD,CAAC;IAED,IAAI,CAAC3P,QAAQ,CAACzD,SAAS,CAACiM,GAAG,CAACqjC,kBAAkB,CAAC;AAC/C,IAAA,IAAI,CAACprC,cAAc,CAAC8Q,QAAQ,EAAE,IAAI,CAACvR,QAAQ,EAAE,IAAI,CAACC,OAAO,CAAC6+B,SAAS,CAAC;AACtE,EAAA;AAEAz+B,EAAAA,OAAOA,GAAG;IACR,IAAI,CAAC6rC,aAAa,EAAE;AAEpB,IAAA,IAAI,IAAI,CAACE,OAAO,EAAE,EAAE;MAClB,IAAI,CAACpsC,QAAQ,CAACzD,SAAS,CAACrJ,MAAM,CAACuQ,eAAe,CAAC;AACjD,IAAA;IAEA,KAAK,CAACpD,OAAO,EAAE;AACjB,EAAA;AAEA+rC,EAAAA,OAAOA,GAAG;IACR,OAAO,IAAI,CAACpsC,QAAQ,CAACzD,SAAS,CAACrG,QAAQ,CAACuN,eAAe,CAAC;AAC1D,EAAA;;AAEA;AACA0oC,EAAAA,kBAAkBA,GAAG;AACnB,IAAA,IAAI,CAAC,IAAI,CAAClsC,OAAO,CAAC6rC,QAAQ,EAAE;AAC1B,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,IAAI,CAACE,oBAAoB,IAAI,IAAI,CAACC,uBAAuB,EAAE;AAC7D,MAAA;AACF,IAAA;AAEA,IAAA,IAAI,CAAC7M,QAAQ,GAAGrhC,UAAU,CAAC,MAAM;MAC/B,IAAI,CAACgT,IAAI,EAAE;AACb,IAAA,CAAC,EAAE,IAAI,CAAC9Q,OAAO,CAAC++B,KAAK,CAAC;AACxB,EAAA;AAEAqN,EAAAA,cAAcA,CAACj4C,KAAK,EAAEk4C,aAAa,EAAE;IACnC,QAAQl4C,KAAK,CAACM,IAAI;AAChB,MAAA,KAAK,WAAW;AAChB,MAAA,KAAK,UAAU;AAAE,QAAA;UACf,IAAI,CAACs3C,oBAAoB,GAAGM,aAAa;AACzC,UAAA;AACF,QAAA;AAEA,MAAA,KAAK,SAAS;AACd,MAAA,KAAK,UAAU;AAAE,QAAA;UACf,IAAI,CAACL,uBAAuB,GAAGK,aAAa;AAC5C,UAAA;AACF,QAAA;AAKF;AAEA,IAAA,IAAIA,aAAa,EAAE;MACjB,IAAI,CAACJ,aAAa,EAAE;AACpB,MAAA;AACF,IAAA;AAEA,IAAA,MAAMK,WAAW,GAAGn4C,KAAK,CAAC6B,aAAa;AACvC,IAAA,IAAI,IAAI,CAAC+J,QAAQ,KAAKusC,WAAW,IAAI,IAAI,CAACvsC,QAAQ,CAAC9J,QAAQ,CAACq2C,WAAW,CAAC,EAAE;AACxE,MAAA;AACF,IAAA;IAEA,IAAI,CAACJ,kBAAkB,EAAE;AAC3B,EAAA;AAEAxM,EAAAA,aAAaA,GAAG;AACdnrC,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE0rC,eAAe,EAAEt3C,KAAK,IAAI,IAAI,CAACi4C,cAAc,CAACj4C,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1FI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAE2rC,cAAc,EAAEv3C,KAAK,IAAI,IAAI,CAACi4C,cAAc,CAACj4C,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1FI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEs+B,aAAa,EAAElqC,KAAK,IAAI,IAAI,CAACi4C,cAAc,CAACj4C,KAAK,EAAE,IAAI,CAAC,CAAC;AACxFI,IAAAA,YAAY,CAACyC,EAAE,CAAC,IAAI,CAAC+I,QAAQ,EAAEu+B,cAAc,EAAEnqC,KAAK,IAAI,IAAI,CAACi4C,cAAc,CAACj4C,KAAK,EAAE,KAAK,CAAC,CAAC;AAC5F,EAAA;AAEA83C,EAAAA,aAAaA,GAAG;AACd98B,IAAAA,YAAY,CAAC,IAAI,CAACgwB,QAAQ,CAAC;IAC3B,IAAI,CAACA,QAAQ,GAAG,IAAI;AACtB,EAAA;AACF;;AAEA;AACA;AACA;;AAEA58B,oBAAoB,CAACupC,KAAK,CAAC;;ACxM3B;AACA;AACA;AACA;AACA;AACA;;;AAMA;AACA;AACA;;AAEA,MAAMltC,IAAI,GAAG,SAAS;AACtB,MAAMuB,QAAQ,GAAG,YAAY;AAC7B,MAAME,SAAS,GAAG,CAAA,CAAA,EAAIF,QAAQ,CAAA,CAAE;AAEhC,MAAMosC,YAAY,GAAG,CAAA,MAAA,EAASlsC,SAAS,CAAA,CAAE;AACzC,MAAMmsC,aAAa,GAAG,CAAA,OAAA,EAAUnsC,SAAS,CAAA,CAAE;AAC3C,MAAM+9B,WAAW,GAAG,OAAO;AAE3B,MAAMp6B,oBAAoB,GAAG,4BAA4B;AAEzD,MAAMrF,WAAW,GAAG;AAClBu8B,EAAAA,SAAS,EAAE,QAAQ;AACnBloC,EAAAA,KAAK,EAAE;AACT,CAAC;AAED,MAAM0L,OAAO,GAAG;AACdw8B,EAAAA,SAAS,EAAE,OAAO;AAClBloC,EAAAA,KAAK,EAAE;AACT,CAAC;;AAED;AACA;AACA;;AAEA,MAAMy5C,OAAO,SAAS3sC,aAAa,CAAC;AAClC;EACA,WAAWpB,OAAOA,GAAG;AACnB,IAAA,OAAOA,OAAO;AAChB,EAAA;EAEA,WAAWC,WAAWA,GAAG;AACvB,IAAA,OAAOA,WAAW;AACpB,EAAA;EAEA,WAAWC,IAAIA,GAAG;AAChB,IAAA,OAAOA,IAAI;AACb,EAAA;;AAEA;AACAuF,EAAAA,MAAMA,GAAG;IACP,MAAMuoC,WAAW,GAAGn4C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEwsC,YAAY,CAAC;IAErE,IAAIG,WAAW,CAAC9oC,gBAAgB,EAAE;AAChC,MAAA;AACF,IAAA;IAEA,IAAI,CAAC+oC,QAAQ,EAAE;IAEfp4C,YAAY,CAACkD,OAAO,CAAC,IAAI,CAACsI,QAAQ,EAAEysC,aAAa,CAAC;AACpD,EAAA;;AAEA;AACAG,EAAAA,QAAQA,GAAG;IACT,MAAM;MAAEzR,SAAS;AAAEloC,MAAAA;KAAO,GAAG,IAAI,CAACgN,OAAO;IAEzC,IAAIk7B,SAAS,KAAK,IAAI,EAAE;AACtB,MAAA,OAAM;AACR,IAAA;IAEA,IAAIA,SAAS,KAAK,OAAO,EAAE;MACzB,IAAI,CAACn7B,QAAQ,CAACzD,SAAS,CAAC6H,MAAM,CAACnR,KAAK,CAAC;AACrC,MAAA;AACF,IAAA;;AAEA;AACA,IAAA,IAAI,IAAI,CAAC+M,QAAQ,CAACrG,YAAY,CAACwhC,SAAS,CAAC,KAAKnV,MAAM,CAAC/yB,KAAK,CAAC,EAAE;AAC3D,MAAA,IAAI,CAAC+M,QAAQ,CAAC9G,eAAe,CAACiiC,SAAS,CAAC;AACxC,MAAA;AACF,IAAA;IAEA,IAAI,CAACn7B,QAAQ,CAAChH,YAAY,CAACmiC,SAAS,EAAEloC,KAAK,CAAC;AAC9C,EAAA;AACF;;AAEA;AACA;AACA;;AAEA6P,mBAAmB,CAAC4pC,OAAO,EAAErO,WAAW,EAAEp6B,oBAAoB,EAAE,QAAQ,CAAC;;;;","x_google_ignoreList":[12,13,14,15,19]}
\ No newline at end of file
+{"version":3,"file":"bootstrap.bundle.js","sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../node_modules/vanilla-calendar-pro/index.mjs","../../js/src/datepicker.js","../../js/src/dialog-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...instanceMap.keys()][0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll',\n  'scrollend'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsely appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [...Element.prototype.querySelectorAll.call(element, selector)]\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [...element.children].filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { isRTL, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\n\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects,\n        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        platform\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    if (floating) {\n      resizeObserver.observe(floating);\n    }\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // menu wrapper\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Don't auto-close when interacting with a form inside the menu — clicks\n      // on a form's labels, buttons, etc. (not just inputs) should keep it open.\n      const formAncestor = event.target.closest?.('form')\n      const isInsideMenuForm = Boolean(formAncestor) && instance._menu.contains(formAncestor)\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName) || isInsideMenuForm)) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // Treat contenteditable hosts (e.g. rich-text editors) like inputs so the\n    // menu doesn't hijack their arrow keys.\n    const isInput = /input|textarea/i.test(event.target.tagName) || event.target.isContentEditable\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items.at(-1)\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */\nvar __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,\"symbol\"!=typeof t?t+\"\":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the \"init()\" method first.',notLocale:\"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».\",incorrectTime:\"The value of the time property can be: false, 12 or 24.\",incorrectMonthsCount:\"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1.\"},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,\"inputElement\",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,\"mainElement\",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR=\"data-vc-prev-tabindex\",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(\"tabindex\");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:\"\")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);\"\"===t||null===t?e.removeAttribute(\"tabindex\"):e.setAttribute(\"tabindex\",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden=\"\",setContext(e,\"isShowInInputMode\",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,\"cleanupHandlers\",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){(\"function\"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()}e.onHide&&e.onHide(e)}};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return{top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return[{condition:i<h,position:\"top\"},{condition:i>h,position:\"bottom\"},{condition:r<p,position:\"left\"},{condition:r>p,position:\"right\"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date=\"${t}\"]`),s=null==l?void 0:l.querySelector(\"[data-vc-date-btn]\");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(\" \")),!(null==n?void 0:n.html))return;const i=document.createElement(\"div\");i.className=e.styles.datePopup,i.dataset.vcDatePopup=\"\",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded=\"true\",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\\s+|\\s+(?=\\s)|\\s+$/g,\"\").replace(/&nbsp;/g,\" \")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`})}))},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,\"0\")}-${String(e.getDate()).padStart(2,\"0\")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||\"number\"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\\d{4}-\\d{2}-\\d{2})$/g)?e.push(t):t.replace(/(\\d{4}-\\d{2}-\\d{2}).*?(\\d{4}-\\d{2}-\\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a=\"\")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n)},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&\"current\"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,\"data-vc-date-disabled\"),a&&updateAttribute(a,u,\"aria-disabled\",\"true\"),a&&updateAttribute(a,u,\"tabindex\",\"-1\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"data-vc-date-today\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"aria-current\",\"date\"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),\"data-vc-date-weekend\");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),\"data-vc-date-holiday\"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute(\"data-vc-date-selected\",\"\"),a&&a.setAttribute(\"aria-selected\",\"true\"),e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute(\"data-vc-date-selected\",\"first-and-last\"):e.context.selectedDates[0]===l?n.setAttribute(\"data-vc-date-selected\",\"first\"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute(\"data-vc-date-selected\",\"last\"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute(\"data-vc-date-selected\",\"middle\"))):n.hasAttribute(\"data-vc-date-selected\")&&(n.removeAttribute(\"data-vc-date-selected\"),a&&a.removeAttribute(\"aria-selected\")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,\"data-vc-date-selected\",\"middle\")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week))},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))))},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i=\"string\"==typeof e.locale&&e.locale.length?e.locale:\"en\",r=document.createElement(\"div\");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role=\"gridcell\",(\"current\"===l||e.displayDatesOutside)&&(c=document.createElement(\"button\"),c.className=e.styles.dateBtn,c.type=\"button\",c.ariaLabel=getLocaleString(o,i,{dateStyle:\"long\",timeZone:\"UTC\"}),c.dataset.vcDateBtn=\"\",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),\"current\")}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?\"01\":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,\"next\")}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,\"prev\")}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent=\"\";const l=document.createElement(\"b\");l.className=e.styles.weekNumbersTitle,l.innerText=\"#\",l.dataset.vcWeekNumbers=\"title\",a.appendChild(l);const s=document.createElement(\"div\");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers=\"content\",a.appendChild(s);const i=document.createElement(\"button\");i.type=\"button\",i.className=e.styles.weekNumber;const r=o.querySelectorAll(\"[data-vc-date]\"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(!0);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role=\"rowheader\",o.ariaLabel=`${a.week}`,s.appendChild(o)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc=\"dates\"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week=\"numbers\"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=\"\"),n.textContent=\"\";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement(\"div\");t.className=e.styles.datesRow,t.setAttribute(\"data-vc-dates\",\"row\"),t.setAttribute(\"role\",\"row\"),p.push(t)}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0)}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n)}))},layoutDefault=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <#WeekNumbers />\\n    <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n      <#Week />\\n      <#Dates />\\n      <#DateRangeTooltip />\\n    </div>\\n  </div>\\n  <#ControlTime />\\n`,layoutMonths=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Months />\\n    </div>\\n  </div>\\n`,layoutMultiple=e=>`\\n  <div class=\"${e.styles.controls}\" data-vc=\"controls\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.grid}\" data-vc=\"grid\">\\n    <#Multiple>\\n      <div class=\"${e.styles.column}\" data-vc=\"column\" role=\"region\">\\n        <div class=\"${e.styles.header}\" data-vc=\"header\">\\n          <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n            <#Month />\\n            <#Year />\\n          </div>\\n        </div>\\n        <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n          <#WeekNumbers />\\n          <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n            <#Week />\\n            <#Dates />\\n          </div>\\n        </div>\\n      </div>\\n    <#/Multiple>\\n    <#DateRangeTooltip />\\n  </div>\\n  <#ControlTime />\\n`,layoutYears=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [year] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [year] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Years />\\n    </div>\\n  </div>\\n`,ArrowNext=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowNext}\" data-vc-arrow=\"next\" aria-label=\"${e.labels.arrowNext[t]}\"></button>`,ArrowPrev=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowPrev}\" data-vc-arrow=\"prev\" aria-label=\"${e.labels.arrowPrev[t]}\"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class=\"${e.styles.time}\" data-vc=\"time\" role=\"group\" aria-label=\"${e.labels.selectingTime}\"></div>`:\"\",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class=\"${e.styles.dateRangeTooltip}\" data-vc-date-range-tooltip=\"hidden\"></div>`:\"\",Dates=e=>`<div class=\"${e.styles.dates}\" data-vc=\"dates\" aria-live=\"assertive\" aria-label=\"${e.labels.dates}\" ${\"multiple\"===e.type?\"aria-multiselectable\":\"\"}></div>`,Month=e=>`<button type=\"button\" class=\"${e.styles.month}\" data-vc=\"month\"></button>`,Months=e=>`<div class=\"${e.styles.months}\" data-vc=\"months\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.months}\"></div>`,Week=e=>`<div class=\"${e.styles.week}\" data-vc=\"week\" role=\"row\" aria-label=\"${e.labels.week}\"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class=\"${e.styles.weekNumbers}\" data-vc-week=\"numbers\" role=\"row\" aria-label=\"${e.labels.weekNumber}\"></div>`:\"\",Year=e=>`<button type=\"button\" class=\"${e.styles.year}\" data-vc=\"year\"></button>`,Years=e=>`<div class=\"${e.styles.years}\" data-vc=\"years\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.years}\"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\\n\\t]/g,\"\").replace(/<#(?!\\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\\[(.*?)\\]/)||[])[1],o=n.replace(/[/\\s\\n\\t]|\\[(.*?)\\]/g,\"\"),l=getComponent(o),s=l?l(e,null!=a?a:null):\"\";return e.sanitizerHTML(s)})).replace(/[\\n\\t]/g,\"\"),parseMultipleLayout=(e,t)=>t.replace(new RegExp(\"<#Multiple>(.*?)<#\\\\/Multiple>\",\"gs\"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join(\"\");return e.sanitizerHTML(a)})).replace(/[\\n\\t]/g,\"\"),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e))})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc=\"calendar\",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role=\"application\",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,\"multiple\"!==e.context.currentType){if(\"multiple\"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc=\"controls\"]'),a=e.context.mainElement.querySelector('[data-vc=\"grid\"]'),o=t.closest('[data-vc=\"column\"]');return n&&n.remove(),a&&(a.dataset.vcGrid=\"hidden\"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?\"hidden\":\"\",t.style.visibility=a?\"hidden\":\"\"},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s)},visibilityArrows=e=>{if(\"month\"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow=\"prev\"]'),n=e.context.mainElement.querySelector('[data-vc-arrow=\"next\"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})[\"multiple\"===e.context.currentType?\"default\":e.context.currentType]()},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc=\"column\"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[o]||\"only-arrows\"===d[o];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc=\"month\"]'),n=e.context.mainElement.querySelectorAll('[data-vc=\"year\"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))))},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:\"[data-vc-months-month]\",year:\"[data-vc-years-year]\"},i={month:{selected:\"data-vc-months-month-selected\",aria:\"aria-selected\",value:\"vcMonthsMonth\",selectedProperty:\"selectedMonth\"},year:{selected:\"data-vc-years-year-selected\",aria:\"aria-selected\",value:\"vcYearsYear\",selectedProperty:\"selectedYear\"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria)})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),\"year\"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,\"\"),t.setAttribute(i[n].aria,\"true\"))},getColumnID=(e,t)=>{var n;if(\"multiple\"!==e.type)return{currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc=\"column\"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column=\"${t}\"]`)));return{currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc=\"${t}\"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(!1);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role=\"gridcell\",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled=\"true\"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,\"month\",n===s,!1),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc=\"header\"]'))?void 0:n.querySelector('[data-vc=\"year\"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,\"currentType\",\"month\"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc=\"months\"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement(\"button\");c.type=\"button\";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,\"month\"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m)}null==(a=e.context.mainElement.querySelector(\"[data-vc-months-month]:not([disabled])\"))||a.focus()},TimeInput=(e,t,n,a,o)=>`\\n  <label class=\"${t}\" data-vc-time-input=\"${e}\">\\n    <input type=\"text\" name=\"${e}\" maxlength=\"2\" aria-label=\"${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${a}\" ${o?\"disabled\":\"\"}>\\n  </label>\\n`,TimeRange=(e,t,n,a,o,l,s)=>`\\n  <label class=\"${t}\" data-vc-time-range=\"${e}\">\\n    <input type=\"range\" name=\"${e}\" min=\"${a}\" max=\"${o}\" step=\"${l}\" aria-label=\"${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${s}\">\\n  </label>\\n`,handleActions=(e,t,n,a)=>{({hour:()=>setContext(e,\"selectedHours\",n),minute:()=>setContext(e,\"selectedMinutes\",n)})[a](),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:\"\"}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:\"00\",PM:\"12\"},1:{AM:\"01\",PM:\"13\"},2:{AM:\"02\",PM:\"14\"},3:{AM:\"03\",PM:\"15\"},4:{AM:\"04\",PM:\"16\"},5:{AM:\"05\",PM:\"17\"},6:{AM:\"06\",PM:\"18\"},7:{AM:\"07\",PM:\"19\"},8:{AM:\"08\",PM:\"20\"},9:{AM:\"09\",PM:\"21\"},10:{AM:\"10\",PM:\"22\"},11:{AM:\"11\",PM:\"23\"},12:{AM:\"00\",PM:\"12\"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s=\"AM\"===e.context.selectedKeeping?\"PM\":\"AM\",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,\"selectedKeeping\",s),n.value=i,handleActions(e,l,e.context.selectedHours,\"hour\"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,!0)};return t.addEventListener(\"click\",l),()=>{t.removeEventListener(\"click\",l)}},transformTime12=e=>({0:\"12\",13:\"01\",14:\"02\",15:\"03\",16:\"04\",17:\"05\",18:\"06\",19:\"07\",20:\"08\",21:\"09\",22:\"10\",23:\"11\"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,\"PM\"),handleActions(e,c,transformTime12(r),o)},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o)}})[e.selectionTimeMode]()},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=i,t.value=i,handleActions(e,r,i,o)}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,\"0\");i[o]&&i[o](t,a,e)};return n.addEventListener(\"change\",r),()=>{n.removeEventListener(\"change\",r)}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,\"0\"),r=\"hour\"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?\"AM\":\"PM\"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value))};return t.addEventListener(\"input\",l),()=>{t.removeEventListener(\"input\",l)}},handleMouseOver=e=>e.setAttribute(\"data-vc-input-focus\",\"\"),handleMouseOut=e=>e.removeAttribute(\"data-vc-input-focus\"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range=\"hour\"] input[name=\"hour\"]'),a=t.querySelector('[data-vc-time-range=\"minute\"] input[name=\"minute\"]'),o=t.querySelector('[data-vc-time-input=\"hour\"] input[name=\"hour\"]'),l=t.querySelector('[data-vc-time-input=\"minute\"] input[name=\"minute\"]'),s=t.querySelector('[data-vc-time=\"keeping\"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l)},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l)};return t.addEventListener(\"mouseover\",i),t.addEventListener(\"mouseout\",r),handleInput$1(e,n,o,s,\"hour\",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,\"minute\",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,\"hour\"),handleRange(e,a,l,s,\"minute\"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener(\"mouseover\",i),t.removeEventListener(\"mouseout\",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc=\"time\"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i=\"range\"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\\n    <div class=\"${e.styles.timeContent}\" data-vc-time=\"content\">\\n      ${TimeInput(\"hour\",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\\n      ${TimeInput(\"minute\",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type=\"button\" class=\"${e.styles.timeKeeping}\" aria-label=\"${e.labels.btnKeeping} ${r}\" data-vc-time=\"keeping\" ${i?\"disabled\":\"\"}>${r}</button>`):\"\"}\\n    </div>\\n    <div class=\"${e.styles.timeRanges}\" data-vc-time=\"ranges\">\\n      ${TimeRange(\"hour\",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\\n      ${TimeRange(\"minute\",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\\n    </div>\\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc=\"week\"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement(\"button\"):document.createElement(\"b\");e.onClickWeekDay&&(n.type=\"button\"),a.forEach((a=>{const o=n.cloneNode(!0);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role=\"columnheader\",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=\"\"),t.appendChild(o)}))}))},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(!1);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role=\"gridcell\",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled=\"true\"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,\"year\",n===o,!1),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,\"currentType\",\"year\"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc=\"years\"]');if(!e.selectionYearsMode||!o)return;const l=\"multiple\"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement(\"button\");s.type=\"button\";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i)}null==(n=e.context.mainElement.querySelector(\"[data-vc-years-year]:not([disabled])\"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?\"dark\":\"light\"),\"system\"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc=\"calendar\"]');null==t||t.forEach((t=>setTheme(t,e.matches?\"dark\":\"light\")))};t.addEventListener?t.addEventListener(\"change\",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\\[(.+)\\]/g,((e,t)=>t));if(!n||\"system\"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t)}))):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{\"not all\"!==window.matchMedia(\"(prefers-color-scheme)\").media?\"system\"===e.selectedTheme?detectTheme(e,window.matchMedia(\"(prefers-color-scheme: dark)\")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,\"light\")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\\./,\"\"),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{weekday:\"long\",timeZone:\"UTC\"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l))},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,\"0\")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{month:\"long\",timeZone:\"UTC\"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l))},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if(\"string\"==typeof e.locale){if(\"string\"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,\"locale\",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(![\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key)||\"button\"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc=\"calendar\"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute(\"data-vc-date-btn\")?7:i.hasAttribute(\"data-vc-months-month\")?4:i.hasAttribute(\"data-vc-years-year\")?5:1;var i;const r=(0,{ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus()};return e.context.mainElement.addEventListener(\"keydown\",t),()=>e.context.mainElement.removeEventListener(\"keydown\",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,\"selectedMonth\",n.getMonth()),setContext(e,\"selectedYear\",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest(\"[data-vc-arrow]\");if(n){if([\"default\",\"multiple\"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if(\"year\"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,\"displayYear\",e.context.displayYear+a),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||(\"function\"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest(\"[data-vc-date][data-vc-date-selected]\"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,\"selectedDates\",s)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip=\"hidden\",void(t.textContent=\"\");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+\"px\",t.style.top=o.bottom-a.top-o.height+\"px\",t.dataset.vcDateRangeTooltip=\"visible\",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${s}\"]`).forEach((e=>e.dataset.vcDateHover=\"\")),t.forEach((e=>e.dataset.vcDateHover=\"first\")),n.forEach((e=>{\"first\"===e.dataset.vcDateHover?e.dataset.vcDateHover=\"first-and-last\":e.dataset.vcDateHover=\"last\"})))},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll(\"[data-vc-date-hover]\").forEach((e=>e.removeAttribute(\"data-vc-date-hover\")))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc=\"dates\"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest(\"[data-vc-date]\");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${state.self.context.selectedDates[0]}\"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${o}\"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest(\"[data-vc-date-selected]\");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame((()=>{e(n),state.isHovering=!1})))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&\"Escape\"===e.key&&(state.lastDateEl=null,setContext(state.self,\"selectedDates\",[]),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()}),50)},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,\"displayDateMin\",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,\"displayDateMax\",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,\"displayDateMin\",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector(\"[data-vc-date-range-tooltip]\"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,\"selectedDates\",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.addEventListener(\"keydown\",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates)}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,\"selectedDates\",s),e.disableDatesGaps&&(setContext(e,\"displayDateMin\",state.rangeMin),setContext(e,\"displayDateMax\",state.rangeMax)),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave)}}})[1===e.context.selectedDates.length?\"set\":\"reset\"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll(\"[data-vc-date]\").forEach((t=>{const n=t.querySelector(\"[data-vc-date-btn]\"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,\"current\")}))},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest(\"[data-vc-date-btn]\");if(!e.selectionDatesMode||![\"single\",\"multiple\",\"multiple-ranged\"].includes(e.selectionDatesMode)||!o)return;const l=o.closest(\"[data-vc-date]\");({single:()=>handleSelectDate(e,l,!1),multiple:()=>handleSelectDate(e,l,!0),\"multiple-ranged\":()=>handleSelectDateRange(e,l)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month=\"prev\"]'),i=a.closest('[data-vc-date-month=\"next\"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"prev\"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"next\"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?\"prev\":i?\"next\":\"current\"]()},typeClick=[\"month\",\"year\"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return\"month\"===e.context.currentType&&o>=0?n-o:\"year\"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,\"year\",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,\"year\"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,\"selectedYear\",u),setContext(e,\"selectedMonth\",m)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column=\"month\"]').querySelector('[data-vc=\"year\"]'),a=getValue(e,\"month\",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,\"selectedYear\",o),setContext(e,\"selectedMonth\",i?l.getMonth():r?s.getMonth():a)},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if(\"multiple\"===e.type)return handleMultipleYearSelection(e,a);setContext(e,\"selectedYear\",Number(a.dataset.vcYearsYear))},month:()=>{if(\"multiple\"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,\"selectedMonth\",Number(a.dataset.vcMonthsMonth))}})[n]();({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}})[n](),e.context.currentType!==e.type?(setContext(e,\"currentType\",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||o.focus()):setYearModifier(e,a,n,!0,!0)},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc=\"${n}\"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc=\"grid\"]'),c=o.closest('[data-vc=\"column\"]');(e.context.currentType===n&&l||\"multiple\"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,\"currentType\",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||a.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a)}))},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest(\"[data-vc-week-number]\"),a=e.context.mainElement.querySelectorAll(\"[data-vc-date-week-number]\");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest(\"[data-vc-week-day]\"),a=t.target.closest('[data-vc=\"column\"]'),o=a?a.querySelectorAll(\"[data-vc-date-week-day]\"):e.context.mainElement.querySelectorAll(\"[data-vc-date-week-day]\");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener(\"click\",t),()=>e.context.mainElement.removeEventListener(\"click\",t)},initMonthsCount=e=>{if(\"multiple\"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if(\"multiple\"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,\"displayMonthsCount\",e.displayMonthsCount?e.displayMonthsCount:\"multiple\"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>\"today\"===e?getLocalDate():e instanceof Date||\"number\"==typeof e||\"string\"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,\"dateToday\",resolveDate(e.dateToday,e.dateToday)),setContext(e,\"displayDateMin\",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,\"displayDateMax\",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,\"displayDateMin\",r||e.disableAllDates?e.context.dateToday:s),setContext(e,\"displayDateMax\",e.disableAllDates?e.context.dateToday:i),setContext(e,\"disableDates\",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,\"enableDates\",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,\"disableDates\",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,\"displayDateMin\",e.context.enableDates[0]),setContext(e,\"displayDateMax\",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,\"dateMin\",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,\"dateMax\",e.displayDisabledDates?l:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,\"selectedDates\",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&\"today\"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,a;if(e.displayDateMax&&\"today\"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,\"selectedMonth\",t),setContext(e,\"selectedYear\",n),setContext(e,\"displayYear\",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r=\"AM\"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?\"PM\":\"AM\":null),setContext(e,\"selectedHours\",s.padStart(2,\"0\")),setContext(e,\"selectedMinutes\",i.padStart(2,\"0\")),setContext(e,\"selectedKeeping\",r),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:\"\"}`)},initAllVariables=e=>{setContext(e,\"currentType\",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=!0)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates=\"only-first\"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:!0===a?r.dates:e.context.selectedDates,l){setContext(e,\"locale\",{months:{short:[],long:[]},weekdays:{short:[],long:[]}})}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,\"multiple-ranged\"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement(\"div\");return t.className=e.styles.calendar,t.dataset.vc=\"calendar\",t.dataset.vcInput=\"\",t.dataset.vcCalendarHidden=\"\",setContext(e,\"inputModeInit\",!0),setContext(e,\"isShowInInputMode\",!1),setContext(e,\"mainElement\",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,\"inputElement\",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e)};e.context.inputElement.addEventListener(\"click\",t);const n=\"function\"==typeof e.openOnFocus||!0===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener(\"focus\",a);const o=t=>{const n=\"Tab\"===t.key&&!t.shiftKey,a=[\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const a=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus())})(t)};return e.context.inputElement.addEventListener(\"keydown\",o),()=>{e.context.inputElement.removeEventListener(\"click\",t),n&&e.context.inputElement.removeEventListener(\"focus\",a),e.context.inputElement.removeEventListener(\"keydown\",o)}},init=e=>(setContext(e,\"originalElement\",e.context.mainElement.cloneNode(!0)),setContext(e,\"isInit\",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];\"object\"!=typeof e[o]||\"object\"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n=\"left\";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return(l&&a.bottom?\"center\":l&&a.top?[\"top\",\"center\"]:Array.isArray(o)?[\"bottom\"===o[0]?\"top\":\"bottom\",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a=\"auto\"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:\"bottom\",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,\"cleanupHandlers\",[]),setContext(e,\"isShowInInputMode\",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute(\"data-vc-calendar-hidden\");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener(\"resize\",t),e.context.cleanupHandlers.push((()=>window.removeEventListener(\"resize\",t)));const n=t=>{\"Escape\"===t.key&&hide(e)};document.addEventListener(\"keydown\",n),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"keydown\",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener(\"click\",a,{capture:!0}),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"click\",a,{capture:!0}))),e.onShow&&e.onShow(e)},labels={application:\"Calendar\",navigation:\"Calendar Navigation\",arrowNext:{month:\"Next month\",year:\"Next list of years\"},arrowPrev:{month:\"Previous month\",year:\"Previous list of years\"},month:\"Select month, current selected month:\",months:\"List of months\",year:\"Select year, current selected year:\",years:\"List of years\",week:\"Days of the week\",weekNumber:\"Numbers of weeks in a year\",dates:\"Dates in the current month\",selectingTime:\"Selecting a time \",inputHour:\"Hours\",inputMinute:\"Minutes\",rangeHour:\"Slider for selecting hours\",rangeMinute:\"Slider for selecting minutes\",btnKeeping:\"Switch AM/PM, current position:\"},styles={calendar:\"vc\",controls:\"vc-controls\",grid:\"vc-grid\",column:\"vc-column\",header:\"vc-header\",headerContent:\"vc-header__content\",month:\"vc-month\",year:\"vc-year\",arrowPrev:\"vc-arrow vc-arrow_prev\",arrowNext:\"vc-arrow vc-arrow_next\",wrapper:\"vc-wrapper\",content:\"vc-content\",months:\"vc-months\",monthsMonth:\"vc-months__month\",years:\"vc-years\",yearsYear:\"vc-years__year\",week:\"vc-week\",weekDay:\"vc-week__day\",weekNumbers:\"vc-week-numbers\",weekNumbersTitle:\"vc-week-numbers__title\",weekNumbersContent:\"vc-week-numbers__content\",weekNumber:\"vc-week-number\",dates:\"vc-dates\",datesRow:\"vc-dates__row\",date:\"vc-date\",dateBtn:\"vc-date__btn\",datePopup:\"vc-date__popup\",dateRangeTooltip:\"vc-date-range-tooltip\",time:\"vc-time\",timeContent:\"vc-time__content\",timeHour:\"vc-time__hour\",timeMinute:\"vc-time__minute\",timeKeeping:\"vc-time__keeping\",timeRanges:\"vc-time__ranges\",timeRange:\"vc-time__range\"};class OptionsCalendar{constructor(){__publicField(this,\"type\",\"default\"),__publicField(this,\"inputMode\",!1),__publicField(this,\"openOnFocus\",!0),__publicField(this,\"positionToInput\",\"left\"),__publicField(this,\"firstWeekday\",1),__publicField(this,\"monthsToSwitch\",1),__publicField(this,\"themeAttrDetect\",\"html[data-theme]\"),__publicField(this,\"locale\",\"en\"),__publicField(this,\"dateToday\",\"today\"),__publicField(this,\"dateMin\",\"1970-01-01\"),__publicField(this,\"dateMax\",\"2470-12-31\"),__publicField(this,\"displayDateMin\"),__publicField(this,\"displayDateMax\"),__publicField(this,\"displayDatesOutside\",!0),__publicField(this,\"displayDisabledDates\",!1),__publicField(this,\"displayMonthsCount\"),__publicField(this,\"disableDates\",[]),__publicField(this,\"disableAllDates\",!1),__publicField(this,\"disableDatesPast\",!1),__publicField(this,\"disableDatesGaps\",!1),__publicField(this,\"disableWeekdays\",[]),__publicField(this,\"disableToday\",!1),__publicField(this,\"enableDates\",[]),__publicField(this,\"enableEdgeDatesOnly\",!0),__publicField(this,\"enableDateToggle\",!0),__publicField(this,\"enableWeekNumbers\",!1),__publicField(this,\"enableMonthChangeOnDayClick\",!0),__publicField(this,\"enableJumpToSelectedDate\",!1),__publicField(this,\"selectionDatesMode\",\"single\"),__publicField(this,\"selectionMonthsMode\",!0),__publicField(this,\"selectionYearsMode\",!0),__publicField(this,\"selectionTimeMode\",!1),__publicField(this,\"selectedDates\",[]),__publicField(this,\"selectedMonth\"),__publicField(this,\"selectedYear\"),__publicField(this,\"selectedHolidays\",[]),__publicField(this,\"selectedWeekends\",[0,6]),__publicField(this,\"selectedTime\"),__publicField(this,\"selectedTheme\",\"system\"),__publicField(this,\"timeMinHour\",0),__publicField(this,\"timeMaxHour\",23),__publicField(this,\"timeMinMinute\",0),__publicField(this,\"timeMaxMinute\",59),__publicField(this,\"timeControls\",\"all\"),__publicField(this,\"timeStepHour\",1),__publicField(this,\"timeStepMinute\",1),__publicField(this,\"sanitizerHTML\",(e=>e)),__publicField(this,\"onClickDate\"),__publicField(this,\"onClickWeekDay\"),__publicField(this,\"onClickWeekNumber\"),__publicField(this,\"onClickTitle\"),__publicField(this,\"onClickMonth\"),__publicField(this,\"onClickYear\"),__publicField(this,\"onClickArrow\"),__publicField(this,\"onChangeTime\"),__publicField(this,\"onChangeToInput\"),__publicField(this,\"onCreateDateRangeTooltip\"),__publicField(this,\"onCreateDateEls\"),__publicField(this,\"onCreateMonthEls\"),__publicField(this,\"onCreateYearEls\"),__publicField(this,\"onInit\"),__publicField(this,\"onUpdate\"),__publicField(this,\"onDestroy\"),__publicField(this,\"onShow\"),__publicField(this,\"onHide\"),__publicField(this,\"popups\",{}),__publicField(this,\"labels\",__spreadValues({},labels)),__publicField(this,\"layouts\",{default:\"\",multiple:\"\",month:\"\",year:\"\"}),__publicField(this,\"styles\",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,\"init\",(()=>init(this))),__publicField(this,\"update\",(e=>update(this,e))),__publicField(this,\"destroy\",(()=>destroy(this))),__publicField(this,\"show\",(()=>show(this))),__publicField(this,\"hide\",(()=>hide(this))),__publicField(this,\"set\",((e,t)=>set(this,e,t))),__publicField(this,\"context\"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,\"mainElement\",\"string\"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,\"memoizedElements\",new Map);let Calendar=_Calendar;export{Calendar};","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('shown'),\n        { relatedTarget }\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  dispose() {\n    // If disposed while still open, close the native <dialog> and restore body\n    // scroll. Otherwise `dialog-open` (overflow: hidden) would stay stuck on the\n    // body — e.g. when an SPA tears the component down mid-navigation.\n    if (this._element.open) {\n      this._closeAndCleanup()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      // Lock scroll on the root element (not <body>) so it lands on the same\n      // element that carries `scrollbar-gutter: stable`. Co-locating them keeps\n      // the gutter reserved while the scrollbar is hidden, so the page doesn't\n      // shift (and the ::backdrop covers the gutter instead of leaving a strip).\n      document.documentElement.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.documentElement.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, `keydown${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends DialogBase {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus({ preventScroll: true })\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._collapseBelow = 0\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\n      if (overflowItem) {\n        if (itemsToOverflow.length > 0) {\n          overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n        } else {\n          overflowItem.classList.add(CLASS_NAME_HIDDEN)\n        }\n      }\n\n      if (itemsToOverflow.length > 0) {\n        EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n          overflowCount: itemsToOverflow.length,\n          visibleCount: this._items.length - itemsToOverflow.length\n        })\n      }\n\n      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null,\n  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._deltaY = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    if (isVisible(this)) {\n      this.focus({ preventScroll: true })\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n    // Tracks whether focus was triggered by a click so we can respect the\n    // clicked slot instead of jumping to the first empty one\n    this._pointerActive = false\n    // Slot index from the most recent tap, applied once focus settles\n    this._pointerIndex = 0\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Select the first empty slot (or the last one when the value is full)\n    this._selectSlot(this._firstEmptyIndex())\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    EventHandler.off(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.off(document, 'selectionchange', this._onSelectionChange)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input`, `beforeinput`, and `selectionchange` are not in EventHandler's\n    // native-events list; we keep references so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onBeforeInput = event => this._handleBeforeInput(event)\n    this._onPointerDown = event => this._handlePointerDown(event)\n    this._onFocus = () => {\n      if (this._pointerActive) {\n        // A tap focused the input natively; position the caret on the clicked\n        // slot now that focus has settled (doing this before native focus would\n        // make iOS/iPadOS raise then immediately dismiss the keyboard)\n        this._pointerActive = false\n        this._selectSlot(this._pointerIndex)\n        this._render()\n        return\n      }\n\n      // Keyboard (Tab) focus lands on the first empty slot\n      this._selectSlot(this._firstEmptyIndex())\n      this._render()\n    }\n\n    this._onSync = () => this._render()\n    this._onSelectionChange = () => {\n      if (document.activeElement === this._input) {\n        this._render()\n      }\n    }\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n    EventHandler.on(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.on(document, 'selectionchange', this._onSelectionChange)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  // Bulk path: paste, SMS autofill, or a programmatic value change land here as\n  // a single multi-character `input` event. Single keystrokes are handled by\n  // `_handleBeforeInput` (overwrite semantics) and never reach this method.\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    // Place the caret on the first empty slot after a paste/autofill\n    if (document.activeElement === this._input) {\n      this._selectSlot(this._firstEmptyIndex())\n    }\n\n    this._afterValueChange()\n  }\n\n  // Intercept single-character typing and backspace so each slot is overwritten\n  // in place rather than inserting and shifting the rest of the value. Anything\n  // else (paste, autofill, IME composition) falls through to `_handleInput`.\n  _handleBeforeInput(event) {\n    const { inputType, data } = event\n\n    if (inputType === 'insertText' && data && data.length === 1) {\n      event.preventDefault()\n\n      const char = this._sanitize(data)\n      if (!char) {\n        return\n      }\n\n      const index = Math.min(this._input.selectionStart ?? 0, this._length - 1)\n      const chars = [...this._input.value]\n      chars[index] = char\n      this._input.value = chars.join('').slice(0, this._length)\n\n      this._selectSlot(index + 1)\n      this._afterValueChange()\n      return\n    }\n\n    if (inputType === 'deleteContentBackward') {\n      event.preventDefault()\n\n      const start = this._input.selectionStart ?? 0\n      const end = this._input.selectionEnd ?? start\n      const chars = [...this._input.value]\n\n      if (end > start) {\n        // A filled slot is selected: clear it and keep the caret in place\n        chars.splice(start, end - start)\n        this._input.value = chars.join('')\n        this._selectSlot(start)\n      } else if (start > 0) {\n        // Collapsed caret: remove the previous character and step back\n        chars.splice(start - 1, 1)\n        this._input.value = chars.join('')\n        this._selectSlot(start - 1)\n      }\n\n      this._afterValueChange()\n    }\n  }\n\n  _handlePointerDown(event) {\n    const index = this._slotIndexFromPoint(event.clientX)\n    if (index === null) {\n      return\n    }\n\n    // Don't let the caret land past the first empty slot\n    const target = Math.min(index, this._firstEmptyIndex())\n\n    if (document.activeElement === this._input) {\n      // Already focused (keyboard is up): take over caret placement from the\n      // browser. Safe to preventDefault here — it won't dismiss the keyboard.\n      event.preventDefault()\n      this._selectSlot(target)\n      this._render()\n      return\n    }\n\n    // Not yet focused: let the browser focus the input natively so the\n    // on-screen keyboard is raised by the user's tap. Position the caret in the\n    // focus handler once focus settles.\n    this._pointerActive = true\n    this._pointerIndex = target\n  }\n\n  // Map a viewport x-coordinate to the slot under it, clamped to the last slot\n  _slotIndexFromPoint(x) {\n    for (const [index, slot] of this._slots.entries()) {\n      if (x <= slot.getBoundingClientRect().right || index === this._slots.length - 1) {\n        return index\n      }\n    }\n\n    return null\n  }\n\n  _afterValueChange() {\n    this._render()\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n    this._checkComplete()\n  }\n\n  _firstEmptyIndex() {\n    return Math.min(this._input.value.length, this._length - 1)\n  }\n\n  // Represent the active slot as a selection: a filled slot is selected so the\n  // next keystroke overwrites it; an empty slot gets a collapsed caret.\n  _selectSlot(index) {\n    const clamped = Math.max(0, Math.min(index, this._length - 1))\n    const end = clamped < this._input.value.length ? clamped + 1 : clamped\n    this._input.setSelectionRange(clamped, end)\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.value = ''\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio\n * types — notably NOT `data:text/html`, which is an XSS vector.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L49\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z=]+$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [...createdDocument.body.querySelectorAll('*')]\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [...element.attributes]\n    const allowedAttributes = [...(allowList['*'] || []), ...(allowList[elementName] || [])]\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\nconst EVENT_KEYDOWN = 'keydown'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._keydownHandler = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    this._removeEscapeListener()\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      // Reset the transient hover/active state so a prevented (or not-in-DOM)\n      // show doesn't leave `_isHovered` stuck true — otherwise a click-triggered\n      // tip would hit the `_enter()` early-return on every later click and never\n      // reopen.\n      this._isHovered = false\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._removeEscapeListener()\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle()) || this._hasNewContent()\n  }\n\n  // Content supplied via setContent() (a `{ selector: content }` map) overrides\n  // the configured title/content when rendering, so it should also satisfy the\n  // show() gate — otherwise a tip whose content is only set via setContent()\n  // can never be shown.\n  _hasNewContent() {\n    return Boolean(this._newContent) && Object.values(this._newContent).some(Boolean)\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    // Coerce number/boolean title and content to strings. `data-bs-title=\"true\"`\n    // / `data-bs-content=\"false\"` are auto-converted to booleans by the data-API,\n    // which would otherwise fail the (null|string|element|function) type check.\n    if (typeof config.title === 'number' || typeof config.title === 'boolean') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number' || typeof config.content === 'boolean') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return Boolean(this._getTitle() || this._getContent()) || this._hasNewContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap range.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_SCROLLEND = `scrollend${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\n// How long (ms) to wait after the last scroll event before settling a pending\n// smooth-scroll navigation, when the native `scrollend` event is unavailable.\nconst SCROLL_IDLE_TIMEOUT = 100\n// Debounce (ms) for rebuilding the observer on resize (px activation lines only).\nconst RESIZE_DEBOUNCE = 100\n\nconst Default = {\n  // `rootMargin` is the raw IntersectionObserver root-box override. When set it\n  // takes precedence over `topMargin` and is passed straight to the observer.\n  // Leave it null and use `topMargin` for everyday use.\n  rootMargin: null,\n  smoothScroll: false,\n  target: null,\n  threshold: [0],\n  // Position of the activation line, measured from the top of the scroll root.\n  // The active section is the deepest one whose top has scrolled to/above it.\n  // Accepts a percentage (`12%`) or pixels (`96px`, e.g. below a sticky navbar).\n  topMargin: '12%'\n}\n\nconst DefaultType = {\n  rootMargin: '(string|null)',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array',\n  topMargin: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._sections = [] // observable section elements, in DOM order\n    this._linkBySection = new Map() // section element -> nav link\n    this._sectionByLink = new Map() // nav link -> section element (for smooth scroll)\n    this._intersecting = new Set() // sections currently crossing the activation line\n    this._activeTarget = null\n    this._lastActive = null // last activated section (keep-last across gaps)\n    this._atBottom = false\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n\n    this._observer = null\n    this._sentinel = null\n    this._sentinelObserver = null\n\n    this._pendingNavigation = null\n    this._settleTimeout = null\n    this._settleHandler = null\n    this._scrollIdleHandler = null\n\n    this._resizeHandler = null\n    this._resizeTimeout = null\n\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    // (Re)build the activation observer.\n    this._observer?.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n\n    // Detect the bottom-of-page case (a short last section whose top never\n    // reaches the activation line) natively, via a dedicated sentinel observer.\n    this._setUpSentinel()\n\n    // A px activation line doesn't track viewport height the way `%` does, so\n    // rebuild the observer (debounced) on resize when px units are in play.\n    this._maybeAddResizeListener()\n  }\n\n  dispose() {\n    this._observer?.disconnect()\n    this._teardownSentinel()\n    this._disarmSettle()\n    this._removeResizeListener()\n    EventHandler.off(this._config.target, EVENT_CLICK)\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  // --- Detection (IntersectionObserver-driven) -----------------------------\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin ?? this._getDerivedRootMargin()\n    }\n\n    return new IntersectionObserver(entries => this._onIntersect(entries), options)\n  }\n\n  _onIntersect(entries) {\n    for (const entry of entries) {\n      if (entry.isIntersecting) {\n        this._intersecting.add(entry.target)\n      } else {\n        this._intersecting.delete(entry.target)\n      }\n    }\n\n    this._computeActive()\n  }\n\n  // Single source of truth for active selection, derived only from IO state —\n  // no per-frame layout reads. The active section is the deepest (DOM-order)\n  // one currently crossing the activation line; in a gap we keep the last one;\n  // above the first section the first stays active; at the very bottom the last\n  // section wins.\n  _computeActive() {\n    // Guard against observer callbacks that outlive a disposed/detached instance.\n    if (!this._element?.isConnected || this._sections.length === 0) {\n      return\n    }\n\n    let active = null\n\n    if (this._atBottom) {\n      active = this._sections.at(-1)\n    } else {\n      for (const section of this._sections) {\n        if (this._intersecting.has(section)) {\n          active = section\n        }\n      }\n\n      // No section crosses the line: keep the last active (content gap), or fall\n      // back to the first section at the top of the page.\n      active ||= this._lastActive ?? this._sections.at(0)\n    }\n\n    if (!active) {\n      return\n    }\n\n    this._lastActive = active\n    const link = this._linkBySection.get(active)\n    if (link) {\n      this._process(link)\n    }\n  }\n\n  // Single source of truth for the `topMargin` option: its numeric value and\n  // whether it's expressed as a percentage of the root height or in pixels.\n  _parseTopMargin() {\n    const value = String(this._config.topMargin)\n    return {\n      value: Number.parseFloat(value) || 0,\n      unit: value.endsWith('%') ? '%' : 'px'\n    }\n  }\n\n  // Collapse the observer root to a strip from the top down to the activation\n  // line, so a section is \"intersecting\" exactly while it crosses that line.\n  _getDerivedRootMargin() {\n    const { value, unit } = this._parseTopMargin()\n    let percent = value\n\n    // Express a pixel activation line as a percentage of the root height.\n    if (unit === 'px') {\n      const rootHeight = this._rootElement ?\n        this._rootElement.clientHeight :\n        (document.documentElement.clientHeight || window.innerHeight)\n      percent = rootHeight ? (value / rootHeight) * 100 : 12\n    }\n\n    // Clamp so the bottom inset stays a valid (non-negative) rootMargin even if\n    // the line sits outside the root box.\n    const bottom = Math.min(Math.max(100 - percent, 0), 100)\n    return `0px 0px -${bottom}% 0px`\n  }\n\n  // Whether the activation line is derived from a pixel `topMargin` (in which\n  // case it must be recomputed on resize). An explicit `rootMargin` is owned by\n  // the caller, and a `%` topMargin is recomputed by the browser automatically.\n  _usesPixelMargin() {\n    return !this._config.rootMargin && this._parseTopMargin().unit === 'px'\n  }\n\n  // --- Bottom sentinel -----------------------------------------------------\n\n  _setUpSentinel() {\n    this._teardownSentinel()\n\n    if (this._sections.length === 0) {\n      return\n    }\n\n    const sentinel = document.createElement('div')\n    sentinel.setAttribute('aria-hidden', 'true')\n    sentinel.style.cssText = 'position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;'\n    this._element.append(sentinel)\n    this._sentinel = sentinel\n\n    this._sentinelObserver = new IntersectionObserver(entries => this._onSentinel(entries), {\n      root: this._rootElement,\n      threshold: [0]\n    })\n    this._sentinelObserver.observe(sentinel)\n  }\n\n  _onSentinel(entries) {\n    const entry = entries.at(-1)\n    // Only treat the sentinel as \"bottom reached\" when content actually\n    // overflows; otherwise everything is visible and there's nothing to spy.\n    this._atBottom = Boolean(entry?.isIntersecting) && this._isOverflowing()\n    this._computeActive()\n  }\n\n  _isOverflowing() {\n    const scroller = this._rootElement || document.scrollingElement || document.documentElement\n    return scroller.scrollHeight > scroller.clientHeight\n  }\n\n  _teardownSentinel() {\n    this._sentinelObserver?.disconnect()\n    this._sentinelObserver = null\n    this._sentinel?.remove()\n    this._sentinel = null\n    this._atBottom = false\n  }\n\n  // --- Resize (px activation lines only) -----------------------------------\n\n  _maybeAddResizeListener() {\n    this._removeResizeListener()\n\n    if (!this._usesPixelMargin()) {\n      return\n    }\n\n    this._resizeHandler = () => {\n      clearTimeout(this._resizeTimeout)\n      this._resizeTimeout = setTimeout(() => this._rebuildObserver(), RESIZE_DEBOUNCE)\n    }\n\n    EventHandler.on(window, EVENT_RESIZE, this._resizeHandler)\n  }\n\n  _removeResizeListener() {\n    clearTimeout(this._resizeTimeout)\n    this._resizeTimeout = null\n\n    if (this._resizeHandler) {\n      EventHandler.off(window, EVENT_RESIZE, this._resizeHandler)\n      this._resizeHandler = null\n    }\n  }\n\n  _rebuildObserver() {\n    if (!this._observer) {\n      return\n    }\n\n    this._observer.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n  }\n\n  // --- Smooth-scroll settle (hash + focus) ---------------------------------\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // Unregister any previous listener so refresh() doesn't stack them.\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const link = event.target.closest(SELECTOR_TARGET_LINKS)\n      const section = link && this._sectionByLink.get(link)\n      if (!section || !this._element) {\n        return\n      }\n\n      event.preventDefault()\n\n      const root = this._rootElement || window\n      const height = section.offsetTop - this._element.offsetTop\n      const currentTop = this._rootElement ?\n        this._rootElement.scrollTop :\n        (window.scrollY ?? window.pageYOffset)\n      const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)').matches\n\n      // If we're already there (or motion is reduced), there will be no scroll\n      // — and thus no `scrollend` — to wait for, so settle immediately. This\n      // avoids a stuck pending navigation that never restores hash/focus.\n      if (reduceMotion || Math.abs(currentTop - height) <= 2) {\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'auto' })\n        } else {\n          root.scrollTop = height\n        }\n\n        this._settleNavigation(link.hash, section)\n        return\n      }\n\n      // Defer the URL-hash and focus updates until the scroll settles, so we\n      // don't thrash the address bar mid-animation (and so the native hash\n      // navigation we just prevented is restored once we arrive).\n      this._pendingNavigation = { hash: link.hash, section }\n      this._armSettle()\n\n      if (root.scrollTo) {\n        root.scrollTo({ top: height, behavior: 'smooth' })\n      } else {\n        root.scrollTop = height\n      }\n    })\n  }\n\n  // Arm a one-shot settle for the in-flight smooth scroll. `scrollend` is the\n  // primary signal; a transient scroll-idle timer covers engines without it.\n  // Both are removed on settle, so a later unrelated scroll can't replay it.\n  _armSettle() {\n    this._disarmSettle()\n\n    const target = this._getSettleTarget()\n\n    this._settleHandler = () => this._onSettle()\n    this._scrollIdleHandler = () => {\n      clearTimeout(this._settleTimeout)\n      this._settleTimeout = setTimeout(() => this._onSettle(), SCROLL_IDLE_TIMEOUT)\n    }\n\n    EventHandler.on(target, EVENT_SCROLLEND, this._settleHandler)\n    EventHandler.on(target, EVENT_SCROLL, this._scrollIdleHandler)\n  }\n\n  _disarmSettle() {\n    clearTimeout(this._settleTimeout)\n    this._settleTimeout = null\n\n    const target = this._getSettleTarget()\n    if (this._settleHandler) {\n      EventHandler.off(target, EVENT_SCROLLEND, this._settleHandler)\n      this._settleHandler = null\n    }\n\n    if (this._scrollIdleHandler) {\n      EventHandler.off(target, EVENT_SCROLL, this._scrollIdleHandler)\n      this._scrollIdleHandler = null\n    }\n  }\n\n  _getSettleTarget() {\n    return this._rootElement || document\n  }\n\n  _onSettle() {\n    this._disarmSettle()\n\n    if (!this._pendingNavigation) {\n      return\n    }\n\n    const { hash, section } = this._pendingNavigation\n    this._settleNavigation(hash, section)\n  }\n\n  _settleNavigation(hash, section) {\n    this._pendingNavigation = null\n\n    // Restore the URL hash (without adding a history entry) now that we've\n    // arrived, and move focus to the section for keyboard/AT users.\n    if (window.history?.replaceState) {\n      window.history.replaceState(null, '', hash)\n    }\n\n    if (!section.hasAttribute('tabindex')) {\n      section.setAttribute('tabindex', '-1')\n    }\n\n    section.focus({ preventScroll: true })\n  }\n\n  // --- Targets / observables ----------------------------------------------\n\n  _initializeTargetsAndObservables() {\n    this._sections = []\n    this._linkBySection = new Map()\n    this._sectionByLink = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n    const seen = new Set()\n\n    for (const anchor of targetLinks) {\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      // Resolve by id (decoded) rather than building a CSS selector, so any\n      // literal id works — dots, slashes, colons, and percent-encoded chars —\n      // without escaping.\n      const id = decodeFragment(anchor.hash.slice(1))\n      if (!id) {\n        continue\n      }\n\n      const section = document.getElementById(id)\n      // ensure the section exists, is scoped to this element, and is visible\n      if (!section || !this._element.contains(section) || !isVisible(section)) {\n        continue\n      }\n\n      this._sectionByLink.set(anchor, section)\n      this._linkBySection.set(section, anchor) // last link wins for a section\n\n      if (!seen.has(section)) {\n        seen.add(section)\n        this._sections.push(section)\n      }\n    }\n\n    // Keep sections in top-to-bottom order so \"deepest\" selection is\n    // well-defined. Read once here (refresh/resize), never on the hot path.\n    this._sections.sort((a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top)\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n// Decode a URL fragment id, tolerating malformed escapes (returns it as-is).\nfunction decodeFragment(hash) {\n  try {\n    return decodeURIComponent(hash)\n  } catch {\n    return hash\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    // Don't hijack modifier+arrow shortcuts (e.g. Alt+Left/Right for browser\n    // history navigation); only the bare keys drive tablist navigation.\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = event.key === HOME_KEY ? children[0] : children.at(-1)\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","length","elementEvent","slice","keyHandlers","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","undefined","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","_element","_config","existingInstance","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","startEvent","activeInstance","dimension","_getDimension","complete","capitalizedDimension","scrollSize","selected","triggerArray","isOpen","computePosition","arrow","flip","offset","shift","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","minWidth","createBreakpointListeners","listeners","mql","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","Menu","_openInstances","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","showEvent","_moveMenuToContainer","_createFloating","body","focusVisible","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","wrapper","hideEvent","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","fallbackPlacements","_getFallbackPlacements","fallbackMap","bottom","defaultConfig","_getContainer","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","timeoutId","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","at","clearMenus","composedPath","isMenuTarget","formAncestor","isInsideMenuForm","dataApiKeydownHandler","isInput","isContentEditable","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","selectedItems","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","displayChild","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","shouldHide","dateStr","year","month","day","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","getTime","String","getDate","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","hidePreventedEvent","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","currentDialog","shouldSwap","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconHtml","_resolveIcon","iconSpan","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","overflowWidth","keepWidth","reduce","sum","usedWidth","overflowThreshold","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","useModal","_initSwipe","swipeConfig","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_pointerActive","_pointerIndex","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","_selectSlot","_firstEmptyIndex","_onInput","_onBeforeInput","_onFocus","_onPointerDown","_onSelectionChange","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","_handleBeforeInput","_handlePointerDown","sanitized","_afterValueChange","inputType","char","selectionStart","chars","start","end","selectionEnd","splice","_slotIndexFromPoint","clamped","setSelectionRange","isFocused","caret","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","addEvent","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeEvent","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","domParser","DOMParser","createdDocument","parseFromString","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_hasNewContent","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","sort","stops","gridTemplateColumns","stop","tick","gridColumnStart","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_SCROLLEND","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","SCROLL_IDLE_TIMEOUT","RESIZE_DEBOUNCE","rootMargin","smoothScroll","topMargin","ScrollSpy","_sections","_linkBySection","_sectionByLink","_intersecting","_activeTarget","_lastActive","_atBottom","_rootElement","overflowY","_sentinel","_sentinelObserver","_pendingNavigation","_settleTimeout","_settleHandler","_scrollIdleHandler","_resizeHandler","_resizeTimeout","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","_setUpSentinel","_maybeAddResizeListener","_teardownSentinel","_disarmSettle","_removeResizeListener","_getDerivedRootMargin","_onIntersect","_computeActive","_process","_parseTopMargin","unit","endsWith","percent","rootHeight","clientHeight","innerHeight","_usesPixelMargin","sentinel","cssText","_onSentinel","_isOverflowing","scroller","scrollingElement","scrollHeight","_rebuildObserver","height","offsetTop","currentTop","scrollTop","scrollY","pageYOffset","reduceMotion","_settleNavigation","hash","_armSettle","_getSettleTarget","_onSettle","history","replaceState","targetLinks","seen","anchor","decodeFragment","_clearActiveClass","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","altKey","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":"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","x_google_ignoreList":[12,13,14,15,19]}
\ No newline at end of file
index a04ca7e875511a65e21e6e7230371bef2b4e9ff8..6ce69caaa3fb7d6f754d96612b627bc4c3abb879 100644 (file)
@@ -3,7 +3,7 @@
   * Copyright 2011-2026 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */
-const elementMap=new Map,Data={set(e,t,n){elementMap.has(e)||elementMap.set(e,new Map);const s=elementMap.get(e);s.has(t)||0===s.size?s.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...s.keys()][0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,getAny:e=>elementMap.has(e)&&elementMap.get(e).values().next().value||null,remove(e,t){if(!elementMap.has(e))return;const n=elementMap.get(e);n.delete(t),0===n.size&&elementMap.delete(e)}},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll","scrollend"]);function makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(s){return hydrateObj(s,{delegateTarget:e}),n.oneOff&&EventHandler.off(e,s.type,t),t.apply(e,[s])}}function bootstrapDelegationHandler(e,t,n){return function s(i){const o=e.querySelectorAll(t);for(let{target:a}=i;a&&a!==this;a=a.parentNode)for(const l of o)if(l===a)return hydrateObj(i,{delegateTarget:a}),s.oneOff&&EventHandler.off(e,i.type,t,n),n.apply(a,[i])}}function findHandler(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function normalizeParameters(e,t,n){const s="string"==typeof t,i=s?n:t||n;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[s,i,o]}function addHandler(e,t,n,s,i){if("string"!=typeof t||!e)return;let[o,a,l]=normalizeParameters(t,n,s);if(t in customEvents){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};a=e(a)}const r=getElementEvents(e),c=r[l]||(r[l]={}),d=findHandler(c,a,o?n:null);if(d)return void(d.oneOff=d.oneOff&&i);const u=makeEventUid(a,t.replace(namespaceRegex,"")),h=o?bootstrapDelegationHandler(e,n,a):bootstrapHandler(e,a);h.delegationSelector=o?n:null,h.callable=a,h.oneOff=i,h.uidEvent=u,c[u]=h,e.addEventListener(l,h,o)}function removeHandler(e,t,n,s,i){const o=findHandler(t[n],s,i);o&&(e.removeEventListener(n,o,Boolean(i)),delete t[n][o.uidEvent])}function removeNamespacedHandlers(e,t,n,s){const i=t[n]||{};for(const[o,a]of Object.entries(i))o.includes(s)&&removeHandler(e,t,n,a.callable,a.delegationSelector)}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,n,s){addHandler(e,t,n,s,!1)},one(e,t,n,s){addHandler(e,t,n,s,!0)},off(e,t,n,s){if("string"!=typeof t||!e)return;const[i,o,a]=normalizeParameters(t,n,s),l=a!==t,r=getElementEvents(e),c=r[a]||{},d=t.startsWith(".");if(void 0===o){if(d)for(const n of Object.keys(r))removeNamespacedHandlers(e,r,n,t.slice(1));for(const[n,s]of Object.entries(c)){const i=n.replace(stripUidRegex,"");l&&!t.includes(i)||removeHandler(e,r,a,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,r,a,o,i?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const s=hydrateObj(new Event(t,{bubbles:!0,cancelable:!0}),n);return e.dispatchEvent(s),s}};function hydrateObj(e,t={}){for(const[n,s]of Object.entries(t))try{e[n]=s}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>s})}return e}function normalizeData(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const Manipulator={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${normalizeDataKey(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const s of n){let n=s.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=normalizeData(e.dataset[s])}return t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`))},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const s=Number.parseFloat(t),i=Number.parseFloat(n);return s||i?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement$1=e=>!(!e||"object"!=typeof e)&&void 0!==e.nodeType,getElement=e=>isElement$1(e)?e:"string"==typeof e&&e.length>0?document.querySelector(parseSelector(e)):null,isVisible=e=>{if(!isElement$1(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},isRTL$1=()=>"rtl"===document.documentElement.dir,execute=(e,t=[],n=e)=>"function"==typeof e?e.call(...t):n,executeAfterTransition=(e,t,n=!0)=>{if(!n)return void execute(e);const s=getTransitionDurationFromElement(t)+5;let i=!1;const o=({target:n})=>{n===t&&(i=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{i||triggerTransitionEnd(t)},s)},getNextActiveElement=(e,t,n,s)=>{const i=e.length;let o=e.indexOf(t);return-1===o?!n&&s?e[i-1]:e[0]:(o+=n?1:-1,s&&(o=(o+i)%i),e[Math.max(0,Math.min(o,i-1))])};class Config{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=isElement$1(t)?Manipulator.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...isElement$1(t)?Manipulator.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[n,s]of Object.entries(t)){const t=e[n],i=isElement$1(t)?"element":toType(t);if(!new RegExp(s).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${s}".`)}}}const VERSION="6.0.0-alpha1";class BaseComponent extends Config{constructor(e,t){if(super(),!(e=getElement(e)))return;this._element=e,this._config=this._getConfig(t);const n=Data.get(this._element,this.constructor.DATA_KEY);n&&n.dispose(),Data.set(this._element,this.constructor.DATA_KEY,this)}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){executeAfterTransition(()=>{this._element&&e()},t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>parseSelector(e)).join(","):null},SelectorEngine={find:(e,t=document.documentElement)=>[...Element.prototype.querySelectorAll.call(t,e)],findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[...e.children].filter(e=>e.matches(t)),parents(e,t){const n=[];let s=e.parentNode.closest(t);for(;s;)n.push(s),s=s.parentNode.closest(t);return n},closest:(e,t)=>Element.prototype.closest.call(e,t),prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(e){const t=getSelector(e);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(e){const t=getSelector(e);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(e){const t=getSelector(e);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,s=e.NAME;EventHandler.on(document,n,`[data-bs-dismiss="${s}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;const i=SelectorEngine.getElementFromSelector(this)||this.closest(`.${s}`);e.getOrCreateInstance(i)[t]()})},eventActionOnPlugin=(e,t,n,s,i=null)=>{eventAction(`${t}.${e.NAME}`,n,t=>{const n=t.targets.filter(Boolean).map(t=>e.getOrCreateInstance(t));"function"==typeof i&&i({...t,instances:n});for(const e of n)e[s]()})},eventAction=(e,t,n)=>{const s=`${t}:not(.disabled):not(:disabled)`;EventHandler.on(document,e,s,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault();const t=SelectorEngine.getSelectorFromElement(this),s=t?SelectorEngine.find(t):[this];n({targets:s,event:e})})},NAME$l="alert",DATA_KEY$h="bs.alert",EVENT_KEY$i=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$6="show";class Alert extends BaseComponent{static get NAME(){return NAME$l}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}}enableDismissTrigger(Alert,"close");const NAME$k="button",DATA_KEY$g="bs.button",EVENT_KEY$h=`.${DATA_KEY$g}`,DATA_API_KEY$c=".data-api",CLASS_NAME_ACTIVE$4="active",SELECTOR_DATA_TOGGLE$a='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$8=`click${EVENT_KEY$h}.data-api`;class Button extends BaseComponent{static get NAME(){return NAME$k}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}EventHandler.on(document,EVENT_CLICK_DATA_API$8,SELECTOR_DATA_TOGGLE$a,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$a);Button.getOrCreateInstance(t).toggle()});const NAME$j="carousel",DATA_KEY$f="bs.carousel",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$b=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$g}`,EVENT_SLID=`slid${EVENT_KEY$g}`,EVENT_KEYDOWN$2=`keydown${EVENT_KEY$g}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$g}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$g}`,EVENT_POINTERDOWN$1=`pointerdown${EVENT_KEY$g}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$g}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$g}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$3="active",CLASS_NAME_FADE$3="carousel-fade",CLASS_NAME_CENTER="carousel-center",CLASS_NAME_AUTO="carousel-auto",CLASS_NAME_CLONE="carousel-item-clone",CLASS_NAME_PAUSED="paused",CLASS_NAME_PLAYING="carousel-playing",PROPERTY_INTERVAL="--bs-carousel-interval",SCROLL_DURATION=300,ACTIVE_RATIO_TOLERANCE=.05,SELECTOR_ACTIVE=".active",SELECTOR_ITEM=`.carousel-item:not(.${CLASS_NAME_CLONE})`,SELECTOR_ACTIVE_ITEM=".active"+SELECTOR_ITEM,SELECTOR_INNER$1=".carousel-inner",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_PLAY_PAUSE=".carousel-control-play-pause",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_SLIDE_PREV='[data-bs-slide="prev"]',SELECTOR_DATA_SLIDE_NEXT='[data-bs-slide="next"]',SELECTOR_DATA_AUTOPLAY='[data-bs-autoplay="true"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},ENDS_STOP="stop",ENDS_WRAP="wrap",ENDS_LOOP="loop",Default$i={autoplay:!1,ends:ENDS_LOOP,interval:5e3,keyboard:!0,pause:"hover"},DefaultType$i={autoplay:"boolean",ends:"string",interval:"number",keyboard:"boolean",pause:"(string|boolean)"},easeInOutCubic=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2;class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._viewport=SelectorEngine.findOne(SELECTOR_INNER$1,this._element)||this._element,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._playPauseElement=SelectorEngine.findOne(SELECTOR_PLAY_PAUSE,this._element),this._prevControls=SelectorEngine.find('[data-bs-slide="prev"]',this._element),this._nextControls=SelectorEngine.find('[data-bs-slide="next"]',this._element),this._interval=null,this._observer=null,this._scrollFrame=null,this._looping=!1,this._visibility=new Map,this._playing=this._config.autoplay,this._activeIndex=this._initialActiveIndex(),this._addEventListeners(),this._observeItems(),this._refreshActiveState(),this._playing&&this.cycle(),this._updatePlayPauseControl()}static get Default(){return Default$i}static get DefaultType(){return DefaultType$i}static get NAME(){return NAME$j}next(){this.to(this._navIndex()+1)}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this.to(this._navIndex()-1)}pause(){this._clearInterval(),this._element.classList.remove("carousel-playing")}cycle(){this._clearInterval(),this._scheduleAutoplay(),this._element.classList.add("carousel-playing")}to(e){if(this._looping)return;const t=this._getItems(),n=Number.parseInt(e,10);if(this._config.ends===ENDS_LOOP&&!this._prefersReducedMotion()&&this._canLoop()){if(n>t.length-1)return void this._loopTransition(!0);if(n<0)return void this._loopTransition(!1)}const s=this._normalizeIndex(n,t.length),i=this._navIndex();null!==s&&s!==i&&(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[s],direction:this._direction(i,s),from:i,to:s}).defaultPrevented||(this._isFade()?this._fadeTo(s):this._scrollToIndex(s)))}dispose(){this._clearInterval(),this._observer&&this._observer.disconnect(),null!==this._scrollFrame&&cancelAnimationFrame(this._scrollFrame);for(const e of SelectorEngine.find(`.${CLASS_NAME_CLONE}`,this._viewport))e.remove();this._viewport.style.scrollSnapType="",EventHandler.off(this._viewport,EVENT_KEY$g),super.dispose()}_configAfterMerge(e){return[ENDS_STOP,ENDS_WRAP,ENDS_LOOP].includes(e.ends)||(e.ends=Default$i.ends),e}_initialActiveIndex(){const e=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element),t=e?this._getItems().indexOf(e):0;return Math.max(t,0)}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$2,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER$2,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),EventHandler.on(this._viewport,EVENT_POINTERDOWN$1,()=>this._pauseFromInteraction())}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._pauseFromInteraction(),"right"===t?this.prev():this.next())}_observeItems(){if(!this._isFade()&&"undefined"!=typeof IntersectionObserver){this._observer=new IntersectionObserver(e=>this._handleIntersection(e),{root:this._viewport,threshold:[0,.25,.5,.75,1]});for(const e of this._getItems())this._observer.observe(e)}}_handleIntersection(e){if(this._looping)return;for(const t of e)this._visibility.set(t.target,t.isIntersecting?t.intersectionRatio:0);const t=this._getItems().map(e=>this._visibility.get(e)??0),n=Math.max(...t);let s=this._activeIndex;n>0&&(s=t.findIndex(e=>e>=n-.05)),this._setActive(s),this._updateEndControls()}_navIndex(){if(this._isFade()||this._viewport.scrollWidth-this._viewport.clientWidth<=0)return this._activeIndex;let e=this._activeIndex,t=Number.POSITIVE_INFINITY;for(const[n,s]of this._getItems().entries()){const i=Math.abs(this._scrollDelta(s));i<t&&(t=i,e=n)}return e}_scrollToIndex(e){const t=this._getItems()[e];if(!t)return;const n=this._scrollDelta(t);if(Math.abs(n)<1)return;const s=this._viewport.scrollLeft+n;this._viewport.style.scrollSnapType="none",this._animateScroll(s,()=>{this._viewport.style.scrollSnapType="",this._observer||this._setActive(e),this._updateEndControls()})}_animateScroll(e,t){null!==this._scrollFrame&&(cancelAnimationFrame(this._scrollFrame),this._scrollFrame=null);const n=this._viewport.scrollLeft,s=e-n;if(this._prefersReducedMotion()||"undefined"==typeof requestAnimationFrame)return this._viewport.scrollTo({left:e,behavior:"instant"}),void t();let i=null;const o=a=>{null===i&&(i=a);const l=Math.min((a-i)/300,1);this._viewport.scrollTo({left:n+s*easeInOutCubic(l),behavior:"instant"}),l<1?this._scrollFrame=requestAnimationFrame(o):(this._viewport.scrollTo({left:e,behavior:"instant"}),this._scrollFrame=null,t())};this._scrollFrame=requestAnimationFrame(o)}_scrollDelta(e){const t=this._viewport.getBoundingClientRect(),n=e.getBoundingClientRect();if(this._element.classList.contains("carousel-center"))return n.left+n.width/2-(t.left+t.width/2);const s=Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart)||0;return isRTL$1()?n.right-(t.right-s):n.left-(t.left+s)}_loopTransition(e){const t=this._getItems(),n=t.length-1,s=this._activeIndex,i=e?0:n,o=this._loopDirection(e);if(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[i],direction:o,from:s,to:i}).defaultPrevented)return;this._looping=!0;const a=(e?t[0]:t[n]).cloneNode(!0);a.classList.add(CLASS_NAME_CLONE),a.classList.remove("active"),a.removeAttribute("id");for(const e of SelectorEngine.find("[id]",a))e.removeAttribute("id");a.setAttribute("aria-hidden","true"),a.inert=!0,this._viewport.style.scrollSnapType="none",e?this._viewport.append(a):(this._viewport.prepend(a),this._jumpScroll(this._scrollDelta(t[s]))),this._animateScroll(this._viewport.scrollLeft+this._scrollDelta(a),()=>{a.remove(),this._jumpScroll(this._scrollDelta(t[i])),this._activeIndex=i,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[i],direction:o,from:s,to:i}),this._viewport.style.scrollSnapType="",this._looping=!1})}_loopDirection(e){return isRTL$1()?e?"right":"left":e?"left":"right"}_jumpScroll(e){this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:e,top:0,behavior:"instant"})}_fadeTo(e){this._setActive(e)}_setActive(e){const t=this._getItems();if(e===this._activeIndex||!t[e])return;const n=this._activeIndex;this._activeIndex=e,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[e],direction:this._direction(n,e),from:n,to:e})}_refreshActiveState(){const e=this._getItems();for(const[t,n]of e.entries())n.classList.toggle("active",t===this._activeIndex);this._setActiveIndicatorElement(this._activeIndex),this._updateEndControls()}_updateEndControls(){if(this._config.ends!==ENDS_STOP)return;const e=this._viewport,t=e.scrollWidth-e.clientWidth;let n,s;if(t>0){const i=Math.abs(e.scrollLeft);n=i<=1,s=i>=t-1}else{const e=this._getItems().length-1;n=this._activeIndex<=0,s=this._activeIndex>=e}this._setControlsDisabled(this._prevControls,n),this._setControlsDisabled(this._nextControls,s)}_setControlsDisabled(e,t){for(const n of e)t&&n===document.activeElement&&((e===this._prevControls?this._nextControls:this._prevControls)[0]??this._viewport).focus({preventScroll:!0}),n.disabled=t}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t&&(t.classList.remove("active"),t.removeAttribute("aria-current"));const n=SelectorEngine.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add("active"),n.setAttribute("aria-current","true"))}_normalizeIndex(e,t){return Number.isNaN(e)||0===t?null:e<0?this._wrapsAround()?t-1:null:e>t-1?this._wrapsAround()?0:null:e}_wrapsAround(){return this._config.ends===ENDS_WRAP||this._config.ends===ENDS_LOOP}_canLoop(){if(this._isFade()||this._getItems().length<2)return!1;const e=getComputedStyle(this._element),t=t=>Number.parseFloat(e.getPropertyValue(t))||0;return 1===(t("--bs-carousel-items")||1)&&0===t("--bs-carousel-items-peek")&&!this._element.classList.contains("carousel-center")&&!this._element.classList.contains("carousel-auto")}_direction(e,t){const n=t>e;return isRTL$1()?n?"right":"left":n?"left":"right"}_scheduleAutoplay(e=this._activeIndex){const t=this._itemInterval(e);this._element.style.setProperty(PROPERTY_INTERVAL,`${t}ms`),this._interval=setTimeout(()=>{const e=this._upcomingIndex();this.nextWhenVisible(),null!==e?this._scheduleAutoplay(e):this.pause()},t)}_upcomingIndex(){return this._normalizeIndex(this._navIndex()+1,this._getItems().length)}_itemInterval(e=this._activeIndex){const t=this._getItems()[e],n=t?Number.parseInt(t.getAttribute("data-bs-interval"),10):Number.NaN;return Number.isNaN(n)?this._config.interval:n}_maybeEnableCycle(){this._playing&&this.cycle()}_pauseFromInteraction(){this._playing=!1,this.pause(),this._updatePlayPauseControl()}_togglePlayPause(){this._playing?this._pauseFromInteraction():(this._playing=!0,this.cycle(),this._updatePlayPauseControl())}_updatePlayPauseControl(){if(!this._playPauseElement)return;this._playPauseElement.classList.toggle("paused",!this._playing);const e=this._playPauseElement.getAttribute(this._playing?"data-bs-pause-label":"data-bs-play-label");e&&this._playPauseElement.setAttribute("aria-label",e)}_isFade(){return this._element.classList.contains("carousel-fade")}_prefersReducedMotion(){return"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearTimeout(this._interval),this._interval=null)}}EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_DATA_SLIDE,function(e){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;e.preventDefault();const n=Carousel.getOrCreateInstance(t);n._pauseFromInteraction();const s=this.getAttribute("data-bs-slide-to");s?n.to(s):"next"!==Manipulator.getDataAttribute(this,"slide")?n.prev():n.next()}),EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_PLAY_PAUSE,function(e){const t=SelectorEngine.getElementFromSelector(this);t&&t.classList.contains("carousel")&&(e.preventDefault(),Carousel.getOrCreateInstance(t)._togglePlayPause())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_AUTOPLAY);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$i="collapse",DATA_KEY$e="bs.collapse",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$a=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$f}`,EVENT_SHOWN$6=`shown${EVENT_KEY$f}`,EVENT_HIDE$6=`hide${EVENT_KEY$f}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$f}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$f}.data-api`,CLASS_NAME_SHOW$5="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=":scope .collapse .collapse",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$9='[data-bs-toggle="collapse"]',Default$h={parent:null,toggle:!0},DefaultType$h={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=SelectorEngine.find(SELECTOR_DATA_TOGGLE$9);for(const e of n){const t=SelectorEngine.getSelectorFromElement(e),n=SelectorEngine.find(t).filter(e=>e===this._element);null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(e=>e!==this._element).map(e=>Collapse.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_SHOW$7).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[t]="",EventHandler.trigger(this._element,EVENT_SHOWN$6)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$6).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");for(const e of this._triggerArray){const t=SelectorEngine.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$8)},this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=getElement(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$9);for(const t of e){const e=SelectorEngine.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$9,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()});const min=Math.min,max=Math.max,round=Math.round,floor=Math.floor,createCoords=e=>({x:e,y:e}),oppositeSideMap={left:"right",right:"left",bottom:"top",top:"bottom"};function clamp(e,t,n){return max(e,min(t,n))}function evaluate(e,t){return"function"==typeof e?e(t):e}function getSide(e){return e.split("-")[0]}function getAlignment(e){return e.split("-")[1]}function getOppositeAxis(e){return"x"===e?"y":"x"}function getAxisLength(e){return"y"===e?"height":"width"}function getSideAxis(e){const t=e[0];return"t"===t||"b"===t?"y":"x"}function getAlignmentAxis(e){return getOppositeAxis(getSideAxis(e))}function getAlignmentSides(e,t,n){void 0===n&&(n=!1);const s=getAlignment(e),i=getAlignmentAxis(e),o=getAxisLength(i);let a="x"===i?s===(n?"end":"start")?"right":"left":"start"===s?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=getOppositePlacement(a)),[a,getOppositePlacement(a)]}function getExpandedPlacements(e){const t=getOppositePlacement(e);return[getOppositeAlignmentPlacement(e),t,getOppositeAlignmentPlacement(t)]}function getOppositeAlignmentPlacement(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const lrPlacement=["left","right"],rlPlacement=["right","left"],tbPlacement=["top","bottom"],btPlacement=["bottom","top"];function getSideList(e,t,n){switch(e){case"top":case"bottom":return n?t?rlPlacement:lrPlacement:t?lrPlacement:rlPlacement;case"left":case"right":return t?tbPlacement:btPlacement;default:return[]}}function getOppositeAxisPlacements(e,t,n,s){const i=getAlignment(e);let o=getSideList(getSide(e),"start"===n,s);return i&&(o=o.map(e=>e+"-"+i),t&&(o=o.concat(o.map(getOppositeAlignmentPlacement)))),o}function getOppositePlacement(e){const t=getSide(e);return oppositeSideMap[t]+e.slice(t.length)}function expandPaddingObject(e){return{top:0,right:0,bottom:0,left:0,...e}}function getPaddingObject(e){return"number"!=typeof e?expandPaddingObject(e):{top:e,right:e,bottom:e,left:e}}function rectToClientRect(e){const{x:t,y:n,width:s,height:i}=e;return{width:s,height:i,top:n,left:t,right:t+s,bottom:n+i,x:t,y:n}}function computeCoordsFromPlacement(e,t,n){let{reference:s,floating:i}=e;const o=getSideAxis(t),a=getAlignmentAxis(t),l=getAxisLength(a),r=getSide(t),c="y"===o,d=s.x+s.width/2-i.width/2,u=s.y+s.height/2-i.height/2,h=s[l]/2-i[l]/2;let _;switch(r){case"top":_={x:d,y:s.y-i.height};break;case"bottom":_={x:d,y:s.y+s.height};break;case"right":_={x:s.x+s.width,y:u};break;case"left":_={x:s.x-i.width,y:u};break;default:_={x:s.x,y:s.y}}switch(getAlignment(t)){case"start":_[a]-=h*(n&&c?-1:1);break;case"end":_[a]+=h*(n&&c?-1:1)}return _}async function detectOverflow(e,t){var n;void 0===t&&(t={});const{x:s,y:i,platform:o,rects:a,elements:l,strategy:r}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:u="floating",altBoundary:h=!1,padding:_=0}=evaluate(t,e),m=getPaddingObject(_),g=l[h?"floating"===u?"reference":"floating":u],p=rectToClientRect(await o.getClippingRect({element:null==(n=await(null==o.isElement?void 0:o.isElement(g)))||n?g:g.contextElement||await(null==o.getDocumentElement?void 0:o.getDocumentElement(l.floating)),boundary:c,rootBoundary:d,strategy:r})),E="floating"===u?{x:s,y:i,width:a.floating.width,height:a.floating.height}:a.reference,f=await(null==o.getOffsetParent?void 0:o.getOffsetParent(l.floating)),v=await(null==o.isElement?void 0:o.isElement(f))&&await(null==o.getScale?void 0:o.getScale(f))||{x:1,y:1},b=rectToClientRect(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:E,offsetParent:f,strategy:r}):E);return{top:(p.top-b.top+m.top)/v.y,bottom:(b.bottom-p.bottom+m.bottom)/v.y,left:(p.left-b.left+m.left)/v.x,right:(b.right-p.right+m.right)/v.x}}const MAX_RESET_COUNT=50,computePosition$1=async(e,t,n)=>{const{placement:s="bottom",strategy:i="absolute",middleware:o=[],platform:a}=n,l=a.detectOverflow?a:{...a,detectOverflow:detectOverflow},r=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:i}),{x:d,y:u}=computeCoordsFromPlacement(c,s,r),h=s,_=0;const m={};for(let n=0;n<o.length;n++){const g=o[n];if(!g)continue;const{name:p,fn:E}=g,{x:f,y:v,data:b,reset:T}=await E({x:d,y:u,initialPlacement:s,placement:h,strategy:i,middlewareData:m,rects:c,platform:l,elements:{reference:e,floating:t}});d=null!=f?f:d,u=null!=v?v:u,m[p]={...m[p],...b},T&&_<50&&(_++,"object"==typeof T&&(T.placement&&(h=T.placement),T.rects&&(c=!0===T.rects?await a.getElementRects({reference:e,floating:t,strategy:i}):T.rects),({x:d,y:u}=computeCoordsFromPlacement(c,h,r))),n=-1)}return{x:d,y:u,placement:h,strategy:i,middlewareData:m}},arrow$1=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:s,placement:i,rects:o,platform:a,elements:l,middlewareData:r}=t,{element:c,padding:d=0}=evaluate(e,t)||{};if(null==c)return{};const u=getPaddingObject(d),h={x:n,y:s},_=getAlignmentAxis(i),m=getAxisLength(_),g=await a.getDimensions(c),p="y"===_,E=p?"top":"left",f=p?"bottom":"right",v=p?"clientHeight":"clientWidth",b=o.reference[m]+o.reference[_]-h[_]-o.floating[m],T=h[_]-o.reference[_],A=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let y=A?A[v]:0;y&&await(null==a.isElement?void 0:a.isElement(A))||(y=l.floating[v]||o.floating[m]);const S=b/2-T/2,D=y/2-g[m]/2-1,C=min(u[E],D),N=min(u[f],D),w=C,x=y-g[m]-N,L=y/2-g[m]/2+S,M=clamp(w,L,x),O=!r.arrow&&null!=getAlignment(i)&&L!==M&&o.reference[m]/2-(L<w?C:N)-g[m]/2<0,$=O?L<w?L-w:L-x:0;return{[_]:h[_]+$,data:{[_]:M,centerOffset:L-M-$,...O&&{alignmentOffset:$}},reset:O}}}),flip$1=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,s;const{placement:i,middlewareData:o,rects:a,initialPlacement:l,platform:r,elements:c}=t,{mainAxis:d=!0,crossAxis:u=!0,fallbackPlacements:h,fallbackStrategy:_="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:g=!0,...p}=evaluate(e,t);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const E=getSide(i),f=getSideAxis(l),v=getSide(l)===l,b=await(null==r.isRTL?void 0:r.isRTL(c.floating)),T=h||(v||!g?[getOppositePlacement(l)]:getExpandedPlacements(l)),A="none"!==m;!h&&A&&T.push(...getOppositeAxisPlacements(l,g,m,b));const y=[l,...T],S=await r.detectOverflow(t,p),D=[];let C=(null==(s=o.flip)?void 0:s.overflows)||[];if(d&&D.push(S[E]),u){const e=getAlignmentSides(i,a,b);D.push(S[e[0]],S[e[1]])}if(C=[...C,{placement:i,overflows:D}],!D.every(e=>e<=0)){var N,w;const e=((null==(N=o.flip)?void 0:N.index)||0)+1,t=y[e];if(t&&("alignment"!==u||f===getSideAxis(t)||C.every(e=>getSideAxis(e.placement)!==f||e.overflows[0]>0)))return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(w=C.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:w.placement;if(!n)switch(_){case"bestFit":{var x;const e=null==(x=C.filter(e=>{if(A){const t=getSideAxis(e.placement);return t===f||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:x[0];e&&(n=e);break}case"initialPlacement":n=l}if(i!==n)return{reset:{placement:n}}}return{}}}},originSides=new Set(["left","top"]);async function convertValueToCoords(e,t){const{placement:n,platform:s,elements:i}=e,o=await(null==s.isRTL?void 0:s.isRTL(i.floating)),a=getSide(n),l=getAlignment(n),r="y"===getSideAxis(n),c=originSides.has(a)?-1:1,d=o&&r?-1:1,u=evaluate(t,e);let{mainAxis:h,crossAxis:_,alignmentAxis:m}="number"==typeof u?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return l&&"number"==typeof m&&(_="end"===l?-1*m:m),r?{x:_*d,y:h*c}:{x:h*c,y:_*d}}const offset$1=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,s;const{x:i,y:o,placement:a,middlewareData:l}=t,r=await convertValueToCoords(t,e);return a===(null==(n=l.offset)?void 0:n.placement)&&null!=(s=l.arrow)&&s.alignmentOffset?{}:{x:i+r.x,y:o+r.y,data:{...r,placement:a}}}}},shift$1=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:s,placement:i,platform:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:r={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=evaluate(e,t),d={x:n,y:s},u=await o.detectOverflow(t,c),h=getSideAxis(getSide(i)),_=getOppositeAxis(h);let m=d[_],g=d[h];if(a){const e="y"===_?"bottom":"right";m=clamp(m+u["y"===_?"top":"left"],m,m-u[e])}if(l){const e="y"===h?"bottom":"right";g=clamp(g+u["y"===h?"top":"left"],g,g-u[e])}const p=r.fn({...t,[_]:m,[h]:g});return{...p,data:{x:p.x-n,y:p.y-s,enabled:{[_]:a,[h]:l}}}}}};function hasWindow(){return"undefined"!=typeof window}function getNodeName(e){return isNode(e)?(e.nodeName||"").toLowerCase():"#document"}function getWindow(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function getDocumentElement(e){var t;return null==(t=(isNode(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function isNode(e){return!!hasWindow()&&(e instanceof Node||e instanceof getWindow(e).Node)}function isElement(e){return!!hasWindow()&&(e instanceof Element||e instanceof getWindow(e).Element)}function isHTMLElement(e){return!!hasWindow()&&(e instanceof HTMLElement||e instanceof getWindow(e).HTMLElement)}function isShadowRoot(e){return!(!hasWindow()||"undefined"==typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof getWindow(e).ShadowRoot)}function isOverflowElement(e){const{overflow:t,overflowX:n,overflowY:s,display:i}=getComputedStyle$1(e);return/auto|scroll|overlay|hidden|clip/.test(t+s+n)&&"inline"!==i&&"contents"!==i}function isTableElement(e){return/^(table|td|th)$/.test(getNodeName(e))}function isTopLayer(e){try{if(e.matches(":popover-open"))return!0}catch(e){}try{return e.matches(":modal")}catch(e){return!1}}const willChangeRe=/transform|translate|scale|rotate|perspective|filter/,containRe=/paint|layout|strict|content/,isNotNone=e=>!!e&&"none"!==e;let isWebKitValue;function isContainingBlock(e){const t=isElement(e)?getComputedStyle$1(e):e;return isNotNone(t.transform)||isNotNone(t.translate)||isNotNone(t.scale)||isNotNone(t.rotate)||isNotNone(t.perspective)||!isWebKit()&&(isNotNone(t.backdropFilter)||isNotNone(t.filter))||willChangeRe.test(t.willChange||"")||containRe.test(t.contain||"")}function getContainingBlock(e){let t=getParentNode(e);for(;isHTMLElement(t)&&!isLastTraversableNode(t);){if(isContainingBlock(t))return t;if(isTopLayer(t))return null;t=getParentNode(t)}return null}function isWebKit(){return null==isWebKitValue&&(isWebKitValue="undefined"!=typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),isWebKitValue}function isLastTraversableNode(e){return/^(html|body|#document)$/.test(getNodeName(e))}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function getNodeScroll(e){return isElement(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function getParentNode(e){if("html"===getNodeName(e))return e;const t=e.assignedSlot||e.parentNode||isShadowRoot(e)&&e.host||getDocumentElement(e);return isShadowRoot(t)?t.host:t}function getNearestOverflowAncestor(e){const t=getParentNode(e);return isLastTraversableNode(t)?e.ownerDocument?e.ownerDocument.body:e.body:isHTMLElement(t)&&isOverflowElement(t)?t:getNearestOverflowAncestor(t)}function getOverflowAncestors(e,t,n){var s;void 0===t&&(t=[]),void 0===n&&(n=!0);const i=getNearestOverflowAncestor(e),o=i===(null==(s=e.ownerDocument)?void 0:s.body),a=getWindow(i);if(o){const e=getFrameElement(a);return t.concat(a,a.visualViewport||[],isOverflowElement(i)?i:[],e&&n?getOverflowAncestors(e):[])}return t.concat(i,getOverflowAncestors(i,[],n))}function getFrameElement(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function getCssDimensions(e){const t=getComputedStyle$1(e);let n=parseFloat(t.width)||0,s=parseFloat(t.height)||0;const i=isHTMLElement(e),o=i?e.offsetWidth:n,a=i?e.offsetHeight:s,l=round(n)!==o||round(s)!==a;return l&&(n=o,s=a),{width:n,height:s,$:l}}function unwrapElement(e){return isElement(e)?e:e.contextElement}function getScale(e){const t=unwrapElement(e);if(!isHTMLElement(t))return createCoords(1);const n=t.getBoundingClientRect(),{width:s,height:i,$:o}=getCssDimensions(t);let a=(o?round(n.width):n.width)/s,l=(o?round(n.height):n.height)/i;return a&&Number.isFinite(a)||(a=1),l&&Number.isFinite(l)||(l=1),{x:a,y:l}}const noOffsets=createCoords(0);function getVisualOffsets(e){const t=getWindow(e);return isWebKit()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:noOffsets}function shouldAddVisualOffsets(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==getWindow(e))&&t}function getBoundingClientRect(e,t,n,s){void 0===t&&(t=!1),void 0===n&&(n=!1);const i=e.getBoundingClientRect(),o=unwrapElement(e);let a=createCoords(1);t&&(s?isElement(s)&&(a=getScale(s)):a=getScale(e));const l=shouldAddVisualOffsets(o,n,s)?getVisualOffsets(o):createCoords(0);let r=(i.left+l.x)/a.x,c=(i.top+l.y)/a.y,d=i.width/a.x,u=i.height/a.y;if(o){const e=getWindow(o),t=s&&isElement(s)?getWindow(s):s;let n=e,i=getFrameElement(n);for(;i&&s&&t!==n;){const e=getScale(i),t=i.getBoundingClientRect(),s=getComputedStyle$1(i),o=t.left+(i.clientLeft+parseFloat(s.paddingLeft))*e.x,a=t.top+(i.clientTop+parseFloat(s.paddingTop))*e.y;r*=e.x,c*=e.y,d*=e.x,u*=e.y,r+=o,c+=a,n=getWindow(i),i=getFrameElement(n)}}return rectToClientRect({width:d,height:u,x:r,y:c})}function getWindowScrollBarX(e,t){const n=getNodeScroll(e).scrollLeft;return t?t.left+n:getBoundingClientRect(getDocumentElement(e)).left+n}function getHTMLOffset(e,t){const n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-getWindowScrollBarX(e,n),y:n.top+t.scrollTop}}function convertOffsetParentRelativeRectToViewportRelativeRect(e){let{elements:t,rect:n,offsetParent:s,strategy:i}=e;const o="fixed"===i,a=getDocumentElement(s),l=!!t&&isTopLayer(t.floating);if(s===a||l&&o)return n;let r={scrollLeft:0,scrollTop:0},c=createCoords(1);const d=createCoords(0),u=isHTMLElement(s);if((u||!u&&!o)&&(("body"!==getNodeName(s)||isOverflowElement(a))&&(r=getNodeScroll(s)),u)){const e=getBoundingClientRect(s);c=getScale(s),d.x=e.x+s.clientLeft,d.y=e.y+s.clientTop}const h=!a||u||o?createCoords(0):getHTMLOffset(a,r);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-r.scrollLeft*c.x+d.x+h.x,y:n.y*c.y-r.scrollTop*c.y+d.y+h.y}}function getClientRects(e){return Array.from(e.getClientRects())}function getDocumentRect(e){const t=getDocumentElement(e),n=getNodeScroll(e),s=e.ownerDocument.body,i=max(t.scrollWidth,t.clientWidth,s.scrollWidth,s.clientWidth),o=max(t.scrollHeight,t.clientHeight,s.scrollHeight,s.clientHeight);let a=-n.scrollLeft+getWindowScrollBarX(e);const l=-n.scrollTop;return"rtl"===getComputedStyle$1(s).direction&&(a+=max(t.clientWidth,s.clientWidth)-i),{width:i,height:o,x:a,y:l}}const SCROLLBAR_MAX=25;function getViewportRect(e,t){const n=getWindow(e),s=getDocumentElement(e),i=n.visualViewport;let o=s.clientWidth,a=s.clientHeight,l=0,r=0;if(i){o=i.width,a=i.height;const e=isWebKit();(!e||e&&"fixed"===t)&&(l=i.offsetLeft,r=i.offsetTop)}const c=getWindowScrollBarX(s);if(c<=0){const e=s.ownerDocument,t=e.body,n=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=Math.abs(s.clientWidth-t.clientWidth-i);a<=25&&(o-=a)}else c<=25&&(o+=c);return{width:o,height:a,x:l,y:r}}function getInnerBoundingClientRect(e,t){const n=getBoundingClientRect(e,!0,"fixed"===t),s=n.top+e.clientTop,i=n.left+e.clientLeft,o=isHTMLElement(e)?getScale(e):createCoords(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:i*o.x,y:s*o.y}}function getClientRectFromClippingAncestor(e,t,n){let s;if("viewport"===t)s=getViewportRect(e,n);else if("document"===t)s=getDocumentRect(getDocumentElement(e));else if(isElement(t))s=getInnerBoundingClientRect(t,n);else{const n=getVisualOffsets(e);s={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return rectToClientRect(s)}function hasFixedPositionAncestor(e,t){const n=getParentNode(e);return!(n===t||!isElement(n)||isLastTraversableNode(n))&&("fixed"===getComputedStyle$1(n).position||hasFixedPositionAncestor(n,t))}function getClippingElementAncestors(e,t){const n=t.get(e);if(n)return n;let s=getOverflowAncestors(e,[],!1).filter(e=>isElement(e)&&"body"!==getNodeName(e)),i=null;const o="fixed"===getComputedStyle$1(e).position;let a=o?getParentNode(e):e;for(;isElement(a)&&!isLastTraversableNode(a);){const t=getComputedStyle$1(a),n=isContainingBlock(a);n||"fixed"!==t.position||(i=null),(o?!n&&!i:!n&&"static"===t.position&&i&&("absolute"===i.position||"fixed"===i.position)||isOverflowElement(a)&&!n&&hasFixedPositionAncestor(e,a))?s=s.filter(e=>e!==a):i=t,a=getParentNode(a)}return t.set(e,s),s}function getClippingRect(e){let{element:t,boundary:n,rootBoundary:s,strategy:i}=e;const o=[..."clippingAncestors"===n?isTopLayer(t)?[]:getClippingElementAncestors(t,this._c):[].concat(n),s],a=getClientRectFromClippingAncestor(t,o[0],i);let l=a.top,r=a.right,c=a.bottom,d=a.left;for(let e=1;e<o.length;e++){const n=getClientRectFromClippingAncestor(t,o[e],i);l=max(n.top,l),r=min(n.right,r),c=min(n.bottom,c),d=max(n.left,d)}return{width:r-d,height:c-l,x:d,y:l}}function getDimensions(e){const{width:t,height:n}=getCssDimensions(e);return{width:t,height:n}}function getRectRelativeToOffsetParent(e,t,n){const s=isHTMLElement(t),i=getDocumentElement(t),o="fixed"===n,a=getBoundingClientRect(e,!0,o,t);let l={scrollLeft:0,scrollTop:0};const r=createCoords(0);function c(){r.x=getWindowScrollBarX(i)}if(s||!s&&!o)if(("body"!==getNodeName(t)||isOverflowElement(i))&&(l=getNodeScroll(t)),s){const e=getBoundingClientRect(t,!0,o,t);r.x=e.x+t.clientLeft,r.y=e.y+t.clientTop}else i&&c();o&&!s&&i&&c();const d=!i||s||o?createCoords(0):getHTMLOffset(i,l);return{x:a.left+l.scrollLeft-r.x-d.x,y:a.top+l.scrollTop-r.y-d.y,width:a.width,height:a.height}}function isStaticPositioned(e){return"static"===getComputedStyle$1(e).position}function getTrueOffsetParent(e,t){if(!isHTMLElement(e)||"fixed"===getComputedStyle$1(e).position)return null;if(t)return t(e);let n=e.offsetParent;return getDocumentElement(e)===n&&(n=n.ownerDocument.body),n}function getOffsetParent(e,t){const n=getWindow(e);if(isTopLayer(e))return n;if(!isHTMLElement(e)){let t=getParentNode(e);for(;t&&!isLastTraversableNode(t);){if(isElement(t)&&!isStaticPositioned(t))return t;t=getParentNode(t)}return n}let s=getTrueOffsetParent(e,t);for(;s&&isTableElement(s)&&isStaticPositioned(s);)s=getTrueOffsetParent(s,t);return s&&isLastTraversableNode(s)&&isStaticPositioned(s)&&!isContainingBlock(s)?n:s||getContainingBlock(e)||n}const getElementRects=async function(e){const t=this.getOffsetParent||getOffsetParent,n=this.getDimensions,s=await n(e.floating);return{reference:getRectRelativeToOffsetParent(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:s.width,height:s.height}}};function isRTL(e){return"rtl"===getComputedStyle$1(e).direction}const platform={convertOffsetParentRelativeRectToViewportRelativeRect:convertOffsetParentRelativeRectToViewportRelativeRect,getDocumentElement:getDocumentElement,getClippingRect:getClippingRect,getOffsetParent:getOffsetParent,getElementRects:getElementRects,getClientRects:getClientRects,getDimensions:getDimensions,getScale:getScale,isElement:isElement,isRTL:isRTL};function rectsAreEqual(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function observeMove(e,t){let n,s=null;const i=getDocumentElement(e);function o(){var e;clearTimeout(n),null==(e=s)||e.disconnect(),s=null}return function a(l,r){void 0===l&&(l=!1),void 0===r&&(r=1),o();const c=e.getBoundingClientRect(),{left:d,top:u,width:h,height:_}=c;if(l||t(),!h||!_)return;const m={rootMargin:-floor(u)+"px "+-floor(i.clientWidth-(d+h))+"px "+-floor(i.clientHeight-(u+_))+"px "+-floor(d)+"px",threshold:max(0,min(1,r))||1};let g=!0;function p(t){const s=t[0].intersectionRatio;if(s!==r){if(!g)return a();s?a(!1,s):n=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==s||rectsAreEqual(c,e.getBoundingClientRect())||a(),g=!1}try{s=new IntersectionObserver(p,{...m,root:i.ownerDocument})}catch(e){s=new IntersectionObserver(p,m)}s.observe(e)}(!0),o}function autoUpdate(e,t,n,s){void 0===s&&(s={});const{ancestorScroll:i=!0,ancestorResize:o=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:r=!1}=s,c=unwrapElement(e),d=i||o?[...c?getOverflowAncestors(c):[],...t?getOverflowAncestors(t):[]]:[];d.forEach(e=>{i&&e.addEventListener("scroll",n,{passive:!0}),o&&e.addEventListener("resize",n)});const u=c&&l?observeMove(c,n):null;let h,_=-1,m=null;a&&(m=new ResizeObserver(e=>{let[s]=e;s&&s.target===c&&m&&t&&(m.unobserve(t),cancelAnimationFrame(_),_=requestAnimationFrame(()=>{var e;null==(e=m)||e.observe(t)})),n()}),c&&!r&&m.observe(c),t&&m.observe(t));let g=r?getBoundingClientRect(e):null;return r&&function t(){const s=getBoundingClientRect(e);g&&!rectsAreEqual(g,s)&&n(),g=s,h=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{i&&e.removeEventListener("scroll",n),o&&e.removeEventListener("resize",n)}),null==u||u(),null==(e=m)||e.disconnect(),m=null,r&&cancelAnimationFrame(h)}}const offset=offset$1,shift=shift$1,flip=flip$1,arrow=arrow$1,computePosition=(e,t,n)=>{const s=new Map,i={platform:platform,...n},o={...i.platform,_c:s};return computePosition$1(e,t,{...i,platform:o})},BREAKPOINTS={sm:576,md:768,lg:1024,xl:1280,"2xl":1536},parseResponsivePlacement=(e,t="bottom")=>{if(!e||!e.includes(":"))return null;const n=e.split(/\s+/),s={xs:t};for(const e of n)if(e.includes(":")){const[t,n]=e.split(":");void 0!==BREAKPOINTS[t]&&(s[t]=n)}else s.xs=e;return s},getResponsivePlacement=(e,t="bottom")=>{if(!e)return t;const n=window.innerWidth;let s=e.xs||t;const i=["sm","md","lg","xl","2xl"];for(const t of i)n>=BREAKPOINTS[t]&&e[t]&&(s=e[t]);return s},createBreakpointListeners=e=>{const t=[];for(const n of Object.keys(BREAKPOINTS)){const s=BREAKPOINTS[n],i=window.matchMedia(`(min-width: ${s}px)`);i.addEventListener("change",e),t.push({mql:i,handler:e})}return t},disposeBreakpointListeners=e=>{for(const{mql:t,handler:n}of e)t.removeEventListener("change",n)},NAME$h="menu",DATA_KEY$d="bs.menu",EVENT_KEY$e=".bs.menu",DATA_API_KEY$9=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$2="ArrowUp",ARROW_DOWN_KEY$2="ArrowDown",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",HOME_KEY$2="Home",END_KEY$2="End",ENTER_KEY$1="Enter",SPACE_KEY$1=" ",RIGHT_MOUSE_BUTTON=2,SUBMENU_CLOSE_DELAY=100,EVENT_HIDE$5="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$6="show.bs.menu",EVENT_SHOWN$5="shown.bs.menu",EVENT_CLICK_DATA_API$5="click.bs.menu.data-api",EVENT_KEYDOWN_DATA_API="keydown.bs.menu.data-api",EVENT_KEYUP_DATA_API="keyup.bs.menu.data-api",CLASS_NAME_SHOW$4="show",SELECTOR_DATA_TOGGLE$8='[data-bs-toggle="menu"]:not(.disabled):not(:disabled)',SELECTOR_MENU$2=".menu",SELECTOR_SUBMENU=".submenu",SELECTOR_SUBMENU_TOGGLE=".submenu > .menu-item",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS$1=".menu-item:not(.disabled):not(:disabled)",DEFAULT_PLACEMENT="bottom-start",SUBMENU_PLACEMENT="end-start",resolveLogicalPlacement=e=>isRTL$1()?e.replace(/^start(?=-|$)/,"right").replace(/^end(?=-|$)/,"left"):e.replace(/^start(?=-|$)/,"left").replace(/^end(?=-|$)/,"right"),triangleSign=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Default$g={autoClose:!0,boundary:"clippingParents",container:!1,display:"dynamic",offset:[0,2],floatingConfig:null,menu:null,placement:"bottom-start",reference:"toggle",strategy:"absolute",submenuTrigger:"both",submenuDelay:100},DefaultType$g={autoClose:"(boolean|string)",boundary:"(string|element)",container:"(string|element|boolean)",display:"string",offset:"(array|string|function)",floatingConfig:"(null|object|function)",menu:"(null|element)",placement:"string",reference:"(string|element|object)",strategy:"string",submenuTrigger:"string",submenuDelay:"number"};class Menu extends BaseComponent{static _openInstances=new Set;constructor(e,t){super(e,t),this._floatingCleanup=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this._parent=this._element.parentNode,this._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=this._config.menu||this._findMenu(),!this._config.menu&&this._menu&&(this._parent=this._findWrapper(this._menu)),this._isSubmenu=this._parent.classList?.contains("submenu"),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}static get NAME(){return"menu"}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$6,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of document.body.children)EventHandler.on(e,"mouseover",noop);this._element.focus({focusVisible:!1}),this._element.setAttribute("aria-expanded","true"),this._menu.classList.add("show"),this._element.classList.add("show"),this._parent&&this._parent.classList.add("show"),Menu._openInstances.add(this),EventHandler.trigger(this._element,EVENT_SHOWN$5,e)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._disposeFloating(),this._restoreMenuToOriginalParent(),this._disposeMediaQueryListeners(),this._closeAllSubmenus(),this._clearAllSubmenuTimeouts(),Menu._openInstances.delete(this),super.dispose()}update(){this._floatingCleanup&&this._updateFloatingPosition()}_findMenu(){const e=SelectorEngine.closest(this._element,":has(.menu)");return SelectorEngine.next(this._element,".menu")[0]||SelectorEngine.prev(this._element,".menu")[0]||SelectorEngine.findOne(".menu",e||this._parent)}_findWrapper(e){let t=this._element.parentNode;for(;t instanceof Element&&!t.contains(e);)t=t.parentNode;return t instanceof Element?t:this._element.parentNode}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$5,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.off(e,"mouseover",noop);this._disposeFloating(),this._restoreMenuToOriginalParent(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._parent&&this._parent.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"placement"),Manipulator.removeDataAttribute(this._menu,"display"),Menu._openInstances.delete(this),EventHandler.trigger(this._element,EVENT_HIDDEN$7,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!isElement$1(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${"menu".toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createFloating(){if("static"===this._config.display)return void Manipulator.setDataAttribute(this._menu,"display","static");let e=this._element;"parent"===this._config.reference?e=this._parent:isElement$1(this._config.reference)?e=getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference),this._updateFloatingPosition(e),this._floatingCleanup=autoUpdate(e,this._menu,()=>this._updateFloatingPosition(e))}async _updateFloatingPosition(e=null){if(!this._menu)return;e||(e="parent"===this._config.reference?this._parent:isElement$1(this._config.reference)?getElement(this._config.reference):"object"==typeof this._config.reference?this._config.reference:this._element);const t=this._getPlacement(),n=this._getFloatingMiddleware(),s=this._getFloatingConfig(t,n);await this._applyFloatingPosition(e,this._menu,s.placement,s.middleware,s.strategy)}_isShown(){return this._menu.classList.contains("show")}_getPlacement(){const e=this._responsivePlacements?getResponsivePlacement(this._responsivePlacements,"bottom-start"):this._config.placement;return resolveLogicalPlacement(e)}_parseResponsivePlacements(){this._responsivePlacements=parseResponsivePlacement(this._config.placement,"bottom-start"),this._responsivePlacements&&this._setupMediaQueryListeners()}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_getFloatingMiddleware(){const e=this._getOffset();return[offset("function"==typeof e?e:{mainAxis:e[1]||0,crossAxis:e[0]||0}),flip({fallbackPlacements:this._getFallbackPlacements()}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})]}_getFallbackPlacements(){return{bottom:["top","bottom-start","bottom-end","top-start","top-end"],"bottom-start":["top-start","bottom-end","top-end"],"bottom-end":["top-end","bottom-start","top-start"],top:["bottom","top-start","top-end","bottom-start","bottom-end"],"top-start":["bottom-start","top-end","bottom-end"],"top-end":["bottom-end","top-start","bottom-start"],right:["left","right-start","right-end","left-start","left-end"],"right-start":["left-start","right-end","left-end","top-start","bottom-start"],"right-end":["left-end","right-start","left-start","top-end","bottom-end"],left:["right","left-start","left-end","right-start","right-end"],"left-start":["right-start","left-end","right-end","top-start","bottom-start"],"left-end":["right-end","left-start","right-start","top-end","bottom-end"]}[this._getPlacement()]||["top","bottom","right","left"]}_getFloatingConfig(e,t){const n={placement:e,middleware:t,strategy:this._config.strategy};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null)}_getContainer(){const{container:e}=this._config;return!1===e?null:!0===e?document.body:getElement(e)}_moveMenuToContainer(){const e=this._getContainer();e&&this._menu&&this._menu.parentNode!==e&&e.append(this._menu)}_restoreMenuToOriginalParent(){this._menuOriginalParent&&this._menu&&this._menu.parentNode!==this._menuOriginalParent&&this._menuOriginalParent.append(this._menu)}async _applyFloatingPosition(e,t,n,s,i="absolute"){if(!t.isConnected)return null;const{x:o,y:a,placement:l}=await computePosition(e,t,{placement:n,middleware:s,strategy:i});return t.isConnected?(Object.assign(t.style,{position:i,left:`${o}px`,top:`${a}px`,margin:"0"}),Manipulator.setDataAttribute(t,"placement",l),l):null}_setupSubmenuListeners(){"hover"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||(EventHandler.on(this._menu,"mouseenter",".submenu > .menu-item",e=>{this._onSubmenuTriggerEnter(e)}),EventHandler.on(this._menu,"mouseleave",".submenu",e=>{this._onSubmenuLeave(e)}),EventHandler.on(this._menu,"mousemove",e=>{this._trackMousePosition(e)})),"click"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||EventHandler.on(this._menu,"click",".submenu > .menu-item",e=>{this._onSubmenuTriggerClick(e)})}_onSubmenuTriggerEnter(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;const n=t.closest(".submenu"),s=SelectorEngine.findOne(".menu",n);s&&(this._cancelSubmenuCloseTimeout(s),this._closeSiblingSubmenus(n),this._openSubmenu(t,s,n))}_onSubmenuLeave(e){const t=e.target.closest(".submenu"),n=SelectorEngine.findOne(".menu",t);n&&this._openSubmenus.has(n)&&(this._isMovingTowardSubmenu(e,n)||this._scheduleSubmenuClose(n,t))}_onSubmenuTriggerClick(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;e.preventDefault(),e.stopPropagation();const n=t.closest(".submenu"),s=SelectorEngine.findOne(".menu",n);s&&(this._openSubmenus.has(s)?this._closeSubmenu(s,n):(this._closeSiblingSubmenus(n),this._openSubmenu(t,s,n)))}_openSubmenu(e,t,n){if(this._openSubmenus.has(t))return;e.setAttribute("aria-expanded","true"),e.setAttribute("aria-haspopup","true"),t.style.opacity="0",t.classList.add("show"),n.classList.add("show");const s=this._createSubmenuFloating(e,t,n);this._openSubmenus.set(t,s),EventHandler.on(t,"mouseenter",()=>{this._cancelSubmenuCloseTimeout(t)})}_closeSubmenu(e,t){if(!this._openSubmenus.has(e))return;const n=SelectorEngine.find(".submenu .menu.show",e);for(const e of n){const t=e.closest(".submenu");this._closeSubmenu(e,t)}const s=SelectorEngine.findOne(".submenu > .menu-item",t),i=this._openSubmenus.get(e);i&&i(),this._openSubmenus.delete(e),EventHandler.off(e,"mouseenter"),s&&s.setAttribute("aria-expanded","false"),e.classList.remove("show"),t.classList.remove("show"),e.style.opacity=""}_closeAllSubmenus(){for(const[e]of this._openSubmenus){const t=e.closest(".submenu");this._closeSubmenu(e,t)}}_closeSiblingSubmenus(e){const t=e.parentNode,n=SelectorEngine.find(".submenu > .menu.show",t);for(const t of n){const n=t.closest(".submenu");n!==e&&this._closeSubmenu(t,n)}}_createSubmenuFloating(e,t,n){const s=n,i=resolveLogicalPlacement("end-start"),o=[offset({mainAxis:0,crossAxis:-4}),flip({fallbackPlacements:[resolveLogicalPlacement("start-start"),resolveLogicalPlacement("end-end"),resolveLogicalPlacement("start-end")]}),shift({padding:8})],a=()=>this._applyFloatingPosition(s,t,i,o).then(e=>(t.style.opacity="",e));return a(),autoUpdate(s,t,a)}_scheduleSubmenuClose(e,t){this._cancelSubmenuCloseTimeout(e);const n=setTimeout(()=>{this._closeSubmenu(e,t),this._submenuCloseTimeouts.delete(e)},this._config.submenuDelay);this._submenuCloseTimeouts.set(e,n)}_cancelSubmenuCloseTimeout(e){const t=this._submenuCloseTimeouts.get(e);t&&(clearTimeout(t),this._submenuCloseTimeouts.delete(e))}_clearAllSubmenuTimeouts(){for(const e of this._submenuCloseTimeouts.values())clearTimeout(e);this._submenuCloseTimeouts.clear()}_trackMousePosition(e){this._hoverIntentData={x:e.clientX,y:e.clientY,timestamp:Date.now()}}_isMovingTowardSubmenu(e,t){if(!this._hoverIntentData)return!1;const n=t.getBoundingClientRect(),s={x:e.clientX,y:e.clientY},i={x:this._hoverIntentData.x,y:this._hoverIntentData.y},o=isRTL$1()?n.right:n.left,a={x:o,y:n.top},l={x:o,y:n.bottom};return this._pointInTriangle(s,i,a,l)}_pointInTriangle(e,t,n,s){const i=triangleSign(e,t,n),o=triangleSign(e,n,s),a=triangleSign(e,s,t);return!((i<0||o<0||a<0)&&(i>0||o>0||a>0))}_selectMenuItem({key:e,target:t}){const n=t.closest(".menu")||this._menu,s=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,n).filter(e=>isVisible(e));s.length&&getNextActiveElement(s,t,e===ARROW_DOWN_KEY$2,!s.includes(t)).focus()}_handleSubmenuKeydown(e){const{key:t,target:n}=e,s=isRTL$1(),i=s?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=s?ARROW_RIGHT_KEY$1:ARROW_LEFT_KEY$1,a=n.closest(".submenu"),l=a&&n.matches(".submenu > .menu-item");if((t===ENTER_KEY$1||t===SPACE_KEY$1)&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===i&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===o){const t=n.closest(".menu"),s=t?.closest(".submenu");if(s){e.preventDefault(),e.stopPropagation();const n=SelectorEngine.findOne(".submenu > .menu-item",s);return this._closeSubmenu(t,s),n&&n.focus(),!0}}if(t===HOME_KEY$2||t===END_KEY$2){e.preventDefault(),e.stopPropagation();const s=n.closest(".menu"),i=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,s).filter(e=>isVisible(e));return i.length&&(t===HOME_KEY$2?i[0]:i.at(-1)).focus(),!0}return!1}static clearMenus(e){if(2!==e.button&&("keyup"!==e.type||"Tab"===e.key))for(const t of Menu._openInstances){if(!1===t._config.autoClose)continue;const n=e.composedPath(),s=n.includes(t._menu);if(n.includes(t._element)||"inside"===t._config.autoClose&&!s||"outside"===t._config.autoClose&&s)continue;const i=e.target.closest?.("form"),o=Boolean(i)&&t._menu.contains(i);if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)||o))continue;const a={relatedTarget:t._element};"click"===e.type&&(a.clickEvent=e),t._completeHide(a)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName)||e.target.isContentEditable,n="Escape"===e.key,s=[ARROW_UP_KEY$2,ARROW_DOWN_KEY$2].includes(e.key),i=[ARROW_LEFT_KEY$1,ARROW_RIGHT_KEY$1].includes(e.key),o=[HOME_KEY$2,END_KEY$2].includes(e.key),a=[ENTER_KEY$1,SPACE_KEY$1].includes(e.key),l=e.target.matches(".submenu > .menu-item");if(!(s||n||i||o||a&&l))return;if(t&&!n)return;const r=this.matches(SELECTOR_DATA_TOGGLE$8)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$8,e.delegateTarget.parentNode);if(!r)return;const c=Menu.getOrCreateInstance(r);if(!(i||o||a&&l)||!c._handleSubmenuKeydown(e)){if(s)return e.preventDefault(),e.stopPropagation(),c.show(),void c._selectMenuItem(e);if(n&&c._isShown()){e.preventDefault(),e.stopPropagation();const t=e.target.closest(".menu"),n=t?.closest(".submenu");if(n&&c._openSubmenus.size>0){const e=SelectorEngine.findOne(".submenu > .menu-item",n);return c._closeSubmenu(t,n),void(e&&e.focus())}c.hide(),r.focus()}}}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$8,Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,".menu",Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$5,Menu.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Menu.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_TOGGLE$8,function(e){e.preventDefault(),Menu.getOrCreateInstance(this).toggle()});const NAME$g="combobox",DATA_KEY$c="bs.combobox",EVENT_KEY$d=`.${DATA_KEY$c}`,DATA_API_KEY$8=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",HOME_KEY$1="Home",END_KEY$1="End",ENTER_KEY="Enter",SPACE_KEY=" ",EVENT_CHANGE$3=`change${EVENT_KEY$d}`,EVENT_SHOW$5=`show${EVENT_KEY$d}`,EVENT_SHOWN$4=`shown${EVENT_KEY$d}`,EVENT_HIDE$4=`hide${EVENT_KEY$d}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$d}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_SHOW$3="show",CLASS_NAME_SELECTED="selected",CLASS_NAME_PLACEHOLDER="combobox-placeholder",SELECTOR_DATA_TOGGLE$7='[data-bs-toggle="combobox"]',SELECTOR_MENU$1=".menu",SELECTOR_MENU_ITEM=".menu-item[data-bs-value]",SELECTOR_VISIBLE_ITEMS=".menu-item[data-bs-value]:not(.disabled):not(:disabled)",SELECTOR_VALUE=".combobox-value",SELECTOR_SEARCH_INPUT=".combobox-search-input",SELECTOR_NO_RESULTS=".combobox-no-results",Default$f={boundary:"clippingParents",multiple:!1,name:null,offset:[0,2],placeholder:"",placement:"bottom-start",search:!1,searchNormalize:!1},DefaultType$f={boundary:"(string|element)",multiple:"boolean",name:"(string|null)",offset:"(array|string|function)",placeholder:"string",placement:"string",search:"boolean",searchNormalize:"boolean"};class Combobox extends BaseComponent{constructor(e,t){super(e,t),this._toggle=this._element,this._menu=SelectorEngine.next(this._toggle,".menu")[0],this._valueDisplay=SelectorEngine.findOne(SELECTOR_VALUE,this._toggle),this._searchInput=SelectorEngine.findOne(SELECTOR_SEARCH_INPUT,this._menu),this._noResults=SelectorEngine.findOne(SELECTOR_NO_RESULTS,this._menu),this._hiddenInput=null,this._menuInstance=null,this._createHiddenInput(),this._createMenuInstance(),this._syncInitialSelection(),this._addEventListeners()}static get Default(){return Default$f}static get DefaultType(){return DefaultType$f}static get NAME(){return NAME$g}toggle(){return this._isShown()?this.hide():this.show()}show(){isDisabled(this._toggle)||this._isShown()||EventHandler.trigger(this._toggle,EVENT_SHOW$5).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$4))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$4).defaultPrevented||(this._menuInstance.hide(),EventHandler.trigger(this._toggle,EVENT_HIDDEN$6)))}dispose(){this._menuInstance&&(this._menuInstance.dispose(),this._menuInstance=null),this._hiddenInput&&(this._hiddenInput.remove(),this._hiddenInput=null),EventHandler.off(this._menu,EVENT_KEY$d),EventHandler.off(this._toggle,EVENT_KEY$d),super.dispose()}_isShown(){return this._menu.classList.contains("show")}_createHiddenInput(){const{name:e}=this._config;e&&(this._hiddenInput=document.createElement("input"),this._hiddenInput.type="hidden",this._hiddenInput.name=e,this._hiddenInput.value="",this._toggle.parentNode.insertBefore(this._hiddenInput,this._toggle))}_createMenuInstance(){this._menuInstance=new Menu(this._toggle,{menu:this._menu,autoClose:!this._config.multiple||"outside",boundary:this._config.boundary,offset:this._config.offset,placement:this._config.placement})}_syncInitialSelection(){this._getSelectedItems().length>0?(this._updateToggleText(),this._updateHiddenInput()):this._showPlaceholder()}_addEventListeners(){EventHandler.on(this._menu,"click",SELECTOR_MENU_ITEM,e=>{const t=e.target.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&(e.preventDefault(),e.stopPropagation(),this._selectItem(t))}),EventHandler.on(this._toggle,"keydown",e=>{this._handleToggleKeydown(e)}),EventHandler.on(this._menu,"keydown",e=>{this._handleMenuKeydown(e)}),this._searchInput&&(EventHandler.on(this._searchInput,"input",()=>{this._filterItems(this._searchInput.value)}),EventHandler.on(this._searchInput,"keydown",e=>{if("ArrowDown"===e.key){e.preventDefault();const t=this._getVisibleItems();t.length>0&&t[0].focus()}"Escape"===e.key&&(this.hide(),this._toggle.focus())}))}_selectItem(e){if(this._config.multiple)e.classList.toggle("selected"),e.setAttribute("aria-selected",e.classList.contains("selected"));else{const t=SelectorEngine.find(".selected",this._menu);for(const e of t)e.classList.remove("selected"),e.setAttribute("aria-selected","false");e.classList.add("selected"),e.setAttribute("aria-selected","true")}this._updateToggleText(),this._updateHiddenInput();const t=this._config.multiple?this._getSelectedItems().map(e=>e.dataset.bsValue):e.dataset.bsValue;EventHandler.trigger(this._toggle,EVENT_CHANGE$3,{value:t,item:e}),this._config.multiple||(this.hide(),this._toggle.focus())}_updateToggleText(){const e=this._getSelectedItems();if(0!==e.length)if(this._valueDisplay.classList.remove("combobox-placeholder"),this._config.multiple&&e.length>1)this._valueDisplay.textContent=`${e.length} selected`;else{const t=e[0],n=SelectorEngine.findOne(".menu-item-content > span:first-child",t);this._valueDisplay.textContent=n?n.textContent:t.textContent.trim()}else this._showPlaceholder()}_showPlaceholder(){const{placeholder:e}=this._config;e&&(this._valueDisplay.textContent=e,this._valueDisplay.classList.add("combobox-placeholder"))}_updateHiddenInput(){if(!this._hiddenInput)return;const e=this._getSelectedItems().map(e=>e.dataset.bsValue);this._hiddenInput.value=this._config.multiple?e.join(","):e[0]||""}_getSelectedItems(){return SelectorEngine.find(".selected",this._menu)}_getVisibleItems(){return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter(e=>isVisible(e))}_filterItems(e){const t=this._normalizeText(e.toLowerCase().trim()),n=SelectorEngine.find(SELECTOR_MENU_ITEM,this._menu);let s=0;for(const e of n){const n=this._normalizeText(e.textContent.toLowerCase().trim()),i=!t||n.includes(t);e.style.display=i?"":"none",i&&s++}this._noResults&&this._noResults.classList.toggle("d-none",s>0)}_normalizeText(e){return this._config.searchNormalize?e.normalize("NFD").replace(/[\u0300-\u036F]/g,""):e}_handleToggleKeydown(e){const{key:t}=e;if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault(),this._isShown()||this.show();const n=this._getVisibleItems();return void(n.length>0&&("ArrowDown"===t?n[0]:n.at(-1)).focus())}"Enter"!==t&&" "!==t||this._isShown()||(e.preventDefault(),this.show())}_handleMenuKeydown(e){const{key:t,target:n}=e;if("Escape"===t)return e.preventDefault(),e.stopPropagation(),this.hide(),void this._toggle.focus();if("Tab"===t)return void this.hide();const s=n.matches("input");if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault();const s=this._getVisibleItems();return void(s.length>0&&getNextActiveElement(s,n,"ArrowDown"===t,!s.includes(n)).focus())}if("Home"===t||"End"===t){e.preventDefault();const n=this._getVisibleItems();return void(n.length>0&&("Home"===t?n[0]:n.at(-1)).focus())}if(("Enter"===t||" "===t)&&!s){e.preventDefault();const t=n.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&this._selectItem(t)}}static jQueryInterface(e){return this.each(function(){const t=Combobox.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$7,function(e){e.preventDefault(),Combobox.getOrCreateInstance(this).toggle()}),EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE$7))Combobox.getOrCreateInstance(e)});
+const elementMap=new Map,Data={set(e,t,n){elementMap.has(e)||elementMap.set(e,new Map);const i=elementMap.get(e);i.has(t)||0===i.size?i.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...i.keys()][0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,getAny:e=>elementMap.has(e)&&elementMap.get(e).values().next().value||null,remove(e,t){if(!elementMap.has(e))return;const n=elementMap.get(e);n.delete(t),0===n.size&&elementMap.delete(e)}},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll","scrollend"]);function makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(i){return hydrateObj(i,{delegateTarget:e}),n.oneOff&&EventHandler.off(e,i.type,t),t.apply(e,[i])}}function bootstrapDelegationHandler(e,t,n){return function i(s){const o=e.querySelectorAll(t);for(let{target:a}=s;a&&a!==this;a=a.parentNode)for(const l of o)if(l===a)return hydrateObj(s,{delegateTarget:a}),i.oneOff&&EventHandler.off(e,s.type,t,n),n.apply(a,[s])}}function findHandler(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function normalizeParameters(e,t,n){const i="string"==typeof t,s=i?n:t||n;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[i,s,o]}function addHandler(e,t,n,i,s){if("string"!=typeof t||!e)return;let[o,a,l]=normalizeParameters(t,n,i);if(t in customEvents){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};a=e(a)}const r=getElementEvents(e),c=r[l]||(r[l]={}),d=findHandler(c,a,o?n:null);if(d)return void(d.oneOff=d.oneOff&&s);const u=makeEventUid(a,t.replace(namespaceRegex,"")),h=o?bootstrapDelegationHandler(e,n,a):bootstrapHandler(e,a);h.delegationSelector=o?n:null,h.callable=a,h.oneOff=s,h.uidEvent=u,c[u]=h,e.addEventListener(l,h,o)}function removeHandler(e,t,n,i,s){const o=findHandler(t[n],i,s);o&&(e.removeEventListener(n,o,Boolean(s)),delete t[n][o.uidEvent])}function removeNamespacedHandlers(e,t,n,i){const s=t[n]||{};for(const[o,a]of Object.entries(s))o.includes(i)&&removeHandler(e,t,n,a.callable,a.delegationSelector)}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,n,i){addHandler(e,t,n,i,!1)},one(e,t,n,i){addHandler(e,t,n,i,!0)},off(e,t,n,i){if("string"!=typeof t||!e)return;const[s,o,a]=normalizeParameters(t,n,i),l=a!==t,r=getElementEvents(e),c=r[a]||{},d=t.startsWith(".");if(void 0===o){if(d)for(const n of Object.keys(r))removeNamespacedHandlers(e,r,n,t.slice(1));for(const[n,i]of Object.entries(c)){const s=n.replace(stripUidRegex,"");l&&!t.includes(s)||removeHandler(e,r,a,i.callable,i.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,r,a,o,s?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=hydrateObj(new Event(t,{bubbles:!0,cancelable:!0}),n);return e.dispatchEvent(i),i}};function hydrateObj(e,t={}){for(const[n,i]of Object.entries(t))try{e[n]=i}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>i})}return e}function normalizeData(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const Manipulator={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${normalizeDataKey(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const i of n){let n=i.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=normalizeData(e.dataset[i])}return t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`))},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const i=Number.parseFloat(t),s=Number.parseFloat(n);return i||s?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement$1=e=>!(!e||"object"!=typeof e)&&void 0!==e.nodeType,getElement=e=>isElement$1(e)?e:"string"==typeof e&&e.length>0?document.querySelector(parseSelector(e)):null,isVisible=e=>{if(!isElement$1(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},isRTL$1=()=>"rtl"===document.documentElement.dir,execute=(e,t=[],n=e)=>"function"==typeof e?e.call(...t):n,executeAfterTransition=(e,t,n=!0)=>{if(!n)return void execute(e);const i=getTransitionDurationFromElement(t)+5;let s=!1;const o=({target:n})=>{n===t&&(s=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{s||triggerTransitionEnd(t)},i)},getNextActiveElement=(e,t,n,i)=>{const s=e.length;let o=e.indexOf(t);return-1===o?!n&&i?e[s-1]:e[0]:(o+=n?1:-1,i&&(o=(o+s)%s),e[Math.max(0,Math.min(o,s-1))])};class Config{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=isElement$1(t)?Manipulator.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...isElement$1(t)?Manipulator.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[n,i]of Object.entries(t)){const t=e[n],s=isElement$1(t)?"element":toType(t);if(!new RegExp(i).test(s))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${s}" but expected type "${i}".`)}}}const VERSION="6.0.0-alpha1";class BaseComponent extends Config{constructor(e,t){if(super(),!(e=getElement(e)))return;this._element=e,this._config=this._getConfig(t);const n=Data.get(this._element,this.constructor.DATA_KEY);n&&n.dispose(),Data.set(this._element,this.constructor.DATA_KEY,this)}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){executeAfterTransition(()=>{this._element&&e()},t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>parseSelector(e)).join(","):null},SelectorEngine={find:(e,t=document.documentElement)=>[...Element.prototype.querySelectorAll.call(t,e)],findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[...e.children].filter(e=>e.matches(t)),parents(e,t){const n=[];let i=e.parentNode.closest(t);for(;i;)n.push(i),i=i.parentNode.closest(t);return n},closest:(e,t)=>Element.prototype.closest.call(e,t),prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(e){const t=getSelector(e);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(e){const t=getSelector(e);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(e){const t=getSelector(e);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,i=e.NAME;EventHandler.on(document,n,`[data-bs-dismiss="${i}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;const s=SelectorEngine.getElementFromSelector(this)||this.closest(`.${i}`);e.getOrCreateInstance(s)[t]()})},eventActionOnPlugin=(e,t,n,i,s=null)=>{eventAction(`${t}.${e.NAME}`,n,t=>{const n=t.targets.filter(Boolean).map(t=>e.getOrCreateInstance(t));"function"==typeof s&&s({...t,instances:n});for(const e of n)e[i]()})},eventAction=(e,t,n)=>{const i=`${t}:not(.disabled):not(:disabled)`;EventHandler.on(document,e,i,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault();const t=SelectorEngine.getSelectorFromElement(this),i=t?SelectorEngine.find(t):[this];n({targets:i,event:e})})},NAME$l="alert",DATA_KEY$h="bs.alert",EVENT_KEY$i=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$6="show";class Alert extends BaseComponent{static get NAME(){return NAME$l}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}}enableDismissTrigger(Alert,"close");const NAME$k="button",DATA_KEY$g="bs.button",EVENT_KEY$h=`.${DATA_KEY$g}`,DATA_API_KEY$c=".data-api",CLASS_NAME_ACTIVE$4="active",SELECTOR_DATA_TOGGLE$a='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$8=`click${EVENT_KEY$h}.data-api`;class Button extends BaseComponent{static get NAME(){return NAME$k}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}EventHandler.on(document,EVENT_CLICK_DATA_API$8,SELECTOR_DATA_TOGGLE$a,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$a);Button.getOrCreateInstance(t).toggle()});const NAME$j="carousel",DATA_KEY$f="bs.carousel",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$b=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$g}`,EVENT_SLID=`slid${EVENT_KEY$g}`,EVENT_KEYDOWN$2=`keydown${EVENT_KEY$g}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$g}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$g}`,EVENT_POINTERDOWN$1=`pointerdown${EVENT_KEY$g}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$g}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$g}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$3="active",CLASS_NAME_FADE$3="carousel-fade",CLASS_NAME_CENTER="carousel-center",CLASS_NAME_AUTO="carousel-auto",CLASS_NAME_CLONE="carousel-item-clone",CLASS_NAME_PAUSED="paused",CLASS_NAME_PLAYING="carousel-playing",PROPERTY_INTERVAL="--bs-carousel-interval",SCROLL_DURATION=300,ACTIVE_RATIO_TOLERANCE=.05,SELECTOR_ACTIVE=".active",SELECTOR_ITEM=`.carousel-item:not(.${CLASS_NAME_CLONE})`,SELECTOR_ACTIVE_ITEM=".active"+SELECTOR_ITEM,SELECTOR_INNER$1=".carousel-inner",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_PLAY_PAUSE=".carousel-control-play-pause",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_SLIDE_PREV='[data-bs-slide="prev"]',SELECTOR_DATA_SLIDE_NEXT='[data-bs-slide="next"]',SELECTOR_DATA_AUTOPLAY='[data-bs-autoplay="true"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},ENDS_STOP="stop",ENDS_WRAP="wrap",ENDS_LOOP="loop",Default$i={autoplay:!1,ends:ENDS_LOOP,interval:5e3,keyboard:!0,pause:"hover"},DefaultType$i={autoplay:"boolean",ends:"string",interval:"number",keyboard:"boolean",pause:"(string|boolean)"},easeInOutCubic=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2;class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._viewport=SelectorEngine.findOne(SELECTOR_INNER$1,this._element)||this._element,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._playPauseElement=SelectorEngine.findOne(SELECTOR_PLAY_PAUSE,this._element),this._prevControls=SelectorEngine.find('[data-bs-slide="prev"]',this._element),this._nextControls=SelectorEngine.find('[data-bs-slide="next"]',this._element),this._interval=null,this._observer=null,this._scrollFrame=null,this._looping=!1,this._visibility=new Map,this._playing=this._config.autoplay,this._activeIndex=this._initialActiveIndex(),this._addEventListeners(),this._observeItems(),this._refreshActiveState(),this._playing&&this.cycle(),this._updatePlayPauseControl()}static get Default(){return Default$i}static get DefaultType(){return DefaultType$i}static get NAME(){return NAME$j}next(){this.to(this._navIndex()+1)}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this.to(this._navIndex()-1)}pause(){this._clearInterval(),this._element.classList.remove("carousel-playing")}cycle(){this._clearInterval(),this._scheduleAutoplay(),this._element.classList.add("carousel-playing")}to(e){if(this._looping)return;const t=this._getItems(),n=Number.parseInt(e,10);if(this._config.ends===ENDS_LOOP&&!this._prefersReducedMotion()&&this._canLoop()){if(n>t.length-1)return void this._loopTransition(!0);if(n<0)return void this._loopTransition(!1)}const i=this._normalizeIndex(n,t.length),s=this._navIndex();null!==i&&i!==s&&(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[i],direction:this._direction(s,i),from:s,to:i}).defaultPrevented||(this._isFade()?this._fadeTo(i):this._scrollToIndex(i)))}dispose(){this._clearInterval(),this._observer&&this._observer.disconnect(),null!==this._scrollFrame&&cancelAnimationFrame(this._scrollFrame);for(const e of SelectorEngine.find(`.${CLASS_NAME_CLONE}`,this._viewport))e.remove();this._viewport.style.scrollSnapType="",EventHandler.off(this._viewport,EVENT_KEY$g),super.dispose()}_configAfterMerge(e){return[ENDS_STOP,ENDS_WRAP,ENDS_LOOP].includes(e.ends)||(e.ends=Default$i.ends),e}_initialActiveIndex(){const e=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element),t=e?this._getItems().indexOf(e):0;return Math.max(t,0)}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$2,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER$2,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),EventHandler.on(this._viewport,EVENT_POINTERDOWN$1,()=>this._pauseFromInteraction())}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._pauseFromInteraction(),"right"===t?this.prev():this.next())}_observeItems(){if(!this._isFade()&&"undefined"!=typeof IntersectionObserver){this._observer=new IntersectionObserver(e=>this._handleIntersection(e),{root:this._viewport,threshold:[0,.25,.5,.75,1]});for(const e of this._getItems())this._observer.observe(e)}}_handleIntersection(e){if(this._looping)return;for(const t of e)this._visibility.set(t.target,t.isIntersecting?t.intersectionRatio:0);const t=this._getItems().map(e=>this._visibility.get(e)??0),n=Math.max(...t);let i=this._activeIndex;n>0&&(i=t.findIndex(e=>e>=n-.05)),this._setActive(i),this._updateEndControls()}_navIndex(){if(this._isFade()||this._viewport.scrollWidth-this._viewport.clientWidth<=0)return this._activeIndex;let e=this._activeIndex,t=Number.POSITIVE_INFINITY;for(const[n,i]of this._getItems().entries()){const s=Math.abs(this._scrollDelta(i));s<t&&(t=s,e=n)}return e}_scrollToIndex(e){const t=this._getItems()[e];if(!t)return;const n=this._scrollDelta(t);if(Math.abs(n)<1)return;const i=this._viewport.scrollLeft+n;this._viewport.style.scrollSnapType="none",this._animateScroll(i,()=>{this._viewport.style.scrollSnapType="",this._observer||this._setActive(e),this._updateEndControls()})}_animateScroll(e,t){null!==this._scrollFrame&&(cancelAnimationFrame(this._scrollFrame),this._scrollFrame=null);const n=this._viewport.scrollLeft,i=e-n;if(this._prefersReducedMotion()||"undefined"==typeof requestAnimationFrame)return this._viewport.scrollTo({left:e,behavior:"instant"}),void t();let s=null;const o=a=>{null===s&&(s=a);const l=Math.min((a-s)/300,1);this._viewport.scrollTo({left:n+i*easeInOutCubic(l),behavior:"instant"}),l<1?this._scrollFrame=requestAnimationFrame(o):(this._viewport.scrollTo({left:e,behavior:"instant"}),this._scrollFrame=null,t())};this._scrollFrame=requestAnimationFrame(o)}_scrollDelta(e){const t=this._viewport.getBoundingClientRect(),n=e.getBoundingClientRect();if(this._element.classList.contains("carousel-center"))return n.left+n.width/2-(t.left+t.width/2);const i=Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart)||0;return isRTL$1()?n.right-(t.right-i):n.left-(t.left+i)}_loopTransition(e){const t=this._getItems(),n=t.length-1,i=this._activeIndex,s=e?0:n,o=this._loopDirection(e);if(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[s],direction:o,from:i,to:s}).defaultPrevented)return;this._looping=!0;const a=(e?t[0]:t[n]).cloneNode(!0);a.classList.add(CLASS_NAME_CLONE),a.classList.remove("active"),a.removeAttribute("id");for(const e of SelectorEngine.find("[id]",a))e.removeAttribute("id");a.setAttribute("aria-hidden","true"),a.inert=!0,this._viewport.style.scrollSnapType="none",e?this._viewport.append(a):(this._viewport.prepend(a),this._jumpScroll(this._scrollDelta(t[i]))),this._animateScroll(this._viewport.scrollLeft+this._scrollDelta(a),()=>{a.remove(),this._jumpScroll(this._scrollDelta(t[s])),this._activeIndex=s,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[s],direction:o,from:i,to:s}),this._viewport.style.scrollSnapType="",this._looping=!1})}_loopDirection(e){return isRTL$1()?e?"right":"left":e?"left":"right"}_jumpScroll(e){this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:e,top:0,behavior:"instant"})}_fadeTo(e){this._setActive(e)}_setActive(e){const t=this._getItems();if(e===this._activeIndex||!t[e])return;const n=this._activeIndex;this._activeIndex=e,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[e],direction:this._direction(n,e),from:n,to:e})}_refreshActiveState(){const e=this._getItems();for(const[t,n]of e.entries())n.classList.toggle("active",t===this._activeIndex);this._setActiveIndicatorElement(this._activeIndex),this._updateEndControls()}_updateEndControls(){if(this._config.ends!==ENDS_STOP)return;const e=this._viewport,t=e.scrollWidth-e.clientWidth;let n,i;if(t>0){const s=Math.abs(e.scrollLeft);n=s<=1,i=s>=t-1}else{const e=this._getItems().length-1;n=this._activeIndex<=0,i=this._activeIndex>=e}this._setControlsDisabled(this._prevControls,n),this._setControlsDisabled(this._nextControls,i)}_setControlsDisabled(e,t){for(const n of e)t&&n===document.activeElement&&((e===this._prevControls?this._nextControls:this._prevControls)[0]??this._viewport).focus({preventScroll:!0}),n.disabled=t}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t&&(t.classList.remove("active"),t.removeAttribute("aria-current"));const n=SelectorEngine.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add("active"),n.setAttribute("aria-current","true"))}_normalizeIndex(e,t){return Number.isNaN(e)||0===t?null:e<0?this._wrapsAround()?t-1:null:e>t-1?this._wrapsAround()?0:null:e}_wrapsAround(){return this._config.ends===ENDS_WRAP||this._config.ends===ENDS_LOOP}_canLoop(){if(this._isFade()||this._getItems().length<2)return!1;const e=getComputedStyle(this._element),t=t=>Number.parseFloat(e.getPropertyValue(t))||0;return 1===(t("--bs-carousel-items")||1)&&0===t("--bs-carousel-items-peek")&&!this._element.classList.contains("carousel-center")&&!this._element.classList.contains("carousel-auto")}_direction(e,t){const n=t>e;return isRTL$1()?n?"right":"left":n?"left":"right"}_scheduleAutoplay(e=this._activeIndex){const t=this._itemInterval(e);this._element.style.setProperty(PROPERTY_INTERVAL,`${t}ms`),this._interval=setTimeout(()=>{const e=this._upcomingIndex();this.nextWhenVisible(),null!==e?this._scheduleAutoplay(e):this.pause()},t)}_upcomingIndex(){return this._normalizeIndex(this._navIndex()+1,this._getItems().length)}_itemInterval(e=this._activeIndex){const t=this._getItems()[e],n=t?Number.parseInt(t.getAttribute("data-bs-interval"),10):Number.NaN;return Number.isNaN(n)?this._config.interval:n}_maybeEnableCycle(){this._playing&&this.cycle()}_pauseFromInteraction(){this._playing=!1,this.pause(),this._updatePlayPauseControl()}_togglePlayPause(){this._playing?this._pauseFromInteraction():(this._playing=!0,this.cycle(),this._updatePlayPauseControl())}_updatePlayPauseControl(){if(!this._playPauseElement)return;this._playPauseElement.classList.toggle("paused",!this._playing);const e=this._playPauseElement.getAttribute(this._playing?"data-bs-pause-label":"data-bs-play-label");e&&this._playPauseElement.setAttribute("aria-label",e)}_isFade(){return this._element.classList.contains("carousel-fade")}_prefersReducedMotion(){return"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearTimeout(this._interval),this._interval=null)}}EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_DATA_SLIDE,function(e){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;e.preventDefault();const n=Carousel.getOrCreateInstance(t);n._pauseFromInteraction();const i=this.getAttribute("data-bs-slide-to");i?n.to(i):"next"!==Manipulator.getDataAttribute(this,"slide")?n.prev():n.next()}),EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_PLAY_PAUSE,function(e){const t=SelectorEngine.getElementFromSelector(this);t&&t.classList.contains("carousel")&&(e.preventDefault(),Carousel.getOrCreateInstance(t)._togglePlayPause())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_AUTOPLAY);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$i="collapse",DATA_KEY$e="bs.collapse",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$a=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$f}`,EVENT_SHOWN$6=`shown${EVENT_KEY$f}`,EVENT_HIDE$6=`hide${EVENT_KEY$f}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$f}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$f}.data-api`,CLASS_NAME_SHOW$5="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=":scope .collapse .collapse",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$9='[data-bs-toggle="collapse"]',Default$h={parent:null,toggle:!0},DefaultType$h={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=SelectorEngine.find(SELECTOR_DATA_TOGGLE$9);for(const e of n){const t=SelectorEngine.getSelectorFromElement(e),n=SelectorEngine.find(t).filter(e=>e===this._element);null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(e=>e!==this._element).map(e=>Collapse.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_SHOW$7).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[t]="",EventHandler.trigger(this._element,EVENT_SHOWN$6)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$6).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");for(const e of this._triggerArray){const t=SelectorEngine.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$8)},this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=getElement(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$9);for(const t of e){const e=SelectorEngine.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$9,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()});const min=Math.min,max=Math.max,round=Math.round,floor=Math.floor,createCoords=e=>({x:e,y:e}),oppositeSideMap={left:"right",right:"left",bottom:"top",top:"bottom"};function clamp(e,t,n){return max(e,min(t,n))}function evaluate(e,t){return"function"==typeof e?e(t):e}function getSide(e){return e.split("-")[0]}function getAlignment(e){return e.split("-")[1]}function getOppositeAxis(e){return"x"===e?"y":"x"}function getAxisLength(e){return"y"===e?"height":"width"}function getSideAxis(e){const t=e[0];return"t"===t||"b"===t?"y":"x"}function getAlignmentAxis(e){return getOppositeAxis(getSideAxis(e))}function getAlignmentSides(e,t,n){void 0===n&&(n=!1);const i=getAlignment(e),s=getAlignmentAxis(e),o=getAxisLength(s);let a="x"===s?i===(n?"end":"start")?"right":"left":"start"===i?"bottom":"top";return t.reference[o]>t.floating[o]&&(a=getOppositePlacement(a)),[a,getOppositePlacement(a)]}function getExpandedPlacements(e){const t=getOppositePlacement(e);return[getOppositeAlignmentPlacement(e),t,getOppositeAlignmentPlacement(t)]}function getOppositeAlignmentPlacement(e){return e.includes("start")?e.replace("start","end"):e.replace("end","start")}const lrPlacement=["left","right"],rlPlacement=["right","left"],tbPlacement=["top","bottom"],btPlacement=["bottom","top"];function getSideList(e,t,n){switch(e){case"top":case"bottom":return n?t?rlPlacement:lrPlacement:t?lrPlacement:rlPlacement;case"left":case"right":return t?tbPlacement:btPlacement;default:return[]}}function getOppositeAxisPlacements(e,t,n,i){const s=getAlignment(e);let o=getSideList(getSide(e),"start"===n,i);return s&&(o=o.map(e=>e+"-"+s),t&&(o=o.concat(o.map(getOppositeAlignmentPlacement)))),o}function getOppositePlacement(e){const t=getSide(e);return oppositeSideMap[t]+e.slice(t.length)}function expandPaddingObject(e){return{top:0,right:0,bottom:0,left:0,...e}}function getPaddingObject(e){return"number"!=typeof e?expandPaddingObject(e):{top:e,right:e,bottom:e,left:e}}function rectToClientRect(e){const{x:t,y:n,width:i,height:s}=e;return{width:i,height:s,top:n,left:t,right:t+i,bottom:n+s,x:t,y:n}}function computeCoordsFromPlacement(e,t,n){let{reference:i,floating:s}=e;const o=getSideAxis(t),a=getAlignmentAxis(t),l=getAxisLength(a),r=getSide(t),c="y"===o,d=i.x+i.width/2-s.width/2,u=i.y+i.height/2-s.height/2,h=i[l]/2-s[l]/2;let _;switch(r){case"top":_={x:d,y:i.y-s.height};break;case"bottom":_={x:d,y:i.y+i.height};break;case"right":_={x:i.x+i.width,y:u};break;case"left":_={x:i.x-s.width,y:u};break;default:_={x:i.x,y:i.y}}switch(getAlignment(t)){case"start":_[a]-=h*(n&&c?-1:1);break;case"end":_[a]+=h*(n&&c?-1:1)}return _}async function detectOverflow(e,t){var n;void 0===t&&(t={});const{x:i,y:s,platform:o,rects:a,elements:l,strategy:r}=e,{boundary:c="clippingAncestors",rootBoundary:d="viewport",elementContext:u="floating",altBoundary:h=!1,padding:_=0}=evaluate(t,e),m=getPaddingObject(_),g=l[h?"floating"===u?"reference":"floating":u],p=rectToClientRect(await o.getClippingRect({element:null==(n=await(null==o.isElement?void 0:o.isElement(g)))||n?g:g.contextElement||await(null==o.getDocumentElement?void 0:o.getDocumentElement(l.floating)),boundary:c,rootBoundary:d,strategy:r})),E="floating"===u?{x:i,y:s,width:a.floating.width,height:a.floating.height}:a.reference,f=await(null==o.getOffsetParent?void 0:o.getOffsetParent(l.floating)),v=await(null==o.isElement?void 0:o.isElement(f))&&await(null==o.getScale?void 0:o.getScale(f))||{x:1,y:1},b=rectToClientRect(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:l,rect:E,offsetParent:f,strategy:r}):E);return{top:(p.top-b.top+m.top)/v.y,bottom:(b.bottom-p.bottom+m.bottom)/v.y,left:(p.left-b.left+m.left)/v.x,right:(b.right-p.right+m.right)/v.x}}const MAX_RESET_COUNT=50,computePosition$1=async(e,t,n)=>{const{placement:i="bottom",strategy:s="absolute",middleware:o=[],platform:a}=n,l=a.detectOverflow?a:{...a,detectOverflow:detectOverflow},r=await(null==a.isRTL?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:s}),{x:d,y:u}=computeCoordsFromPlacement(c,i,r),h=i,_=0;const m={};for(let n=0;n<o.length;n++){const g=o[n];if(!g)continue;const{name:p,fn:E}=g,{x:f,y:v,data:b,reset:T}=await E({x:d,y:u,initialPlacement:i,placement:h,strategy:s,middlewareData:m,rects:c,platform:l,elements:{reference:e,floating:t}});d=null!=f?f:d,u=null!=v?v:u,m[p]={...m[p],...b},T&&_<50&&(_++,"object"==typeof T&&(T.placement&&(h=T.placement),T.rects&&(c=!0===T.rects?await a.getElementRects({reference:e,floating:t,strategy:s}):T.rects),({x:d,y:u}=computeCoordsFromPlacement(c,h,r))),n=-1)}return{x:d,y:u,placement:h,strategy:s,middlewareData:m}},arrow$1=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:i,placement:s,rects:o,platform:a,elements:l,middlewareData:r}=t,{element:c,padding:d=0}=evaluate(e,t)||{};if(null==c)return{};const u=getPaddingObject(d),h={x:n,y:i},_=getAlignmentAxis(s),m=getAxisLength(_),g=await a.getDimensions(c),p="y"===_,E=p?"top":"left",f=p?"bottom":"right",v=p?"clientHeight":"clientWidth",b=o.reference[m]+o.reference[_]-h[_]-o.floating[m],T=h[_]-o.reference[_],A=await(null==a.getOffsetParent?void 0:a.getOffsetParent(c));let y=A?A[v]:0;y&&await(null==a.isElement?void 0:a.isElement(A))||(y=l.floating[v]||o.floating[m]);const S=b/2-T/2,D=y/2-g[m]/2-1,C=min(u[E],D),N=min(u[f],D),w=C,x=y-g[m]-N,L=y/2-g[m]/2+S,M=clamp(w,L,x),O=!r.arrow&&null!=getAlignment(s)&&L!==M&&o.reference[m]/2-(L<w?C:N)-g[m]/2<0,I=O?L<w?L-w:L-x:0;return{[_]:h[_]+I,data:{[_]:M,centerOffset:L-M-I,...O&&{alignmentOffset:I}},reset:O}}}),flip$1=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,i;const{placement:s,middlewareData:o,rects:a,initialPlacement:l,platform:r,elements:c}=t,{mainAxis:d=!0,crossAxis:u=!0,fallbackPlacements:h,fallbackStrategy:_="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:g=!0,...p}=evaluate(e,t);if(null!=(n=o.arrow)&&n.alignmentOffset)return{};const E=getSide(s),f=getSideAxis(l),v=getSide(l)===l,b=await(null==r.isRTL?void 0:r.isRTL(c.floating)),T=h||(v||!g?[getOppositePlacement(l)]:getExpandedPlacements(l)),A="none"!==m;!h&&A&&T.push(...getOppositeAxisPlacements(l,g,m,b));const y=[l,...T],S=await r.detectOverflow(t,p),D=[];let C=(null==(i=o.flip)?void 0:i.overflows)||[];if(d&&D.push(S[E]),u){const e=getAlignmentSides(s,a,b);D.push(S[e[0]],S[e[1]])}if(C=[...C,{placement:s,overflows:D}],!D.every(e=>e<=0)){var N,w;const e=((null==(N=o.flip)?void 0:N.index)||0)+1,t=y[e];if(t&&("alignment"!==u||f===getSideAxis(t)||C.every(e=>getSideAxis(e.placement)!==f||e.overflows[0]>0)))return{data:{index:e,overflows:C},reset:{placement:t}};let n=null==(w=C.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:w.placement;if(!n)switch(_){case"bestFit":{var x;const e=null==(x=C.filter(e=>{if(A){const t=getSideAxis(e.placement);return t===f||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:x[0];e&&(n=e);break}case"initialPlacement":n=l}if(s!==n)return{reset:{placement:n}}}return{}}}},originSides=new Set(["left","top"]);async function convertValueToCoords(e,t){const{placement:n,platform:i,elements:s}=e,o=await(null==i.isRTL?void 0:i.isRTL(s.floating)),a=getSide(n),l=getAlignment(n),r="y"===getSideAxis(n),c=originSides.has(a)?-1:1,d=o&&r?-1:1,u=evaluate(t,e);let{mainAxis:h,crossAxis:_,alignmentAxis:m}="number"==typeof u?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:u.mainAxis||0,crossAxis:u.crossAxis||0,alignmentAxis:u.alignmentAxis};return l&&"number"==typeof m&&(_="end"===l?-1*m:m),r?{x:_*d,y:h*c}:{x:h*c,y:_*d}}const offset$1=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,i;const{x:s,y:o,placement:a,middlewareData:l}=t,r=await convertValueToCoords(t,e);return a===(null==(n=l.offset)?void 0:n.placement)&&null!=(i=l.arrow)&&i.alignmentOffset?{}:{x:s+r.x,y:o+r.y,data:{...r,placement:a}}}}},shift$1=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:i,placement:s,platform:o}=t,{mainAxis:a=!0,crossAxis:l=!1,limiter:r={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=evaluate(e,t),d={x:n,y:i},u=await o.detectOverflow(t,c),h=getSideAxis(getSide(s)),_=getOppositeAxis(h);let m=d[_],g=d[h];if(a){const e="y"===_?"bottom":"right";m=clamp(m+u["y"===_?"top":"left"],m,m-u[e])}if(l){const e="y"===h?"bottom":"right";g=clamp(g+u["y"===h?"top":"left"],g,g-u[e])}const p=r.fn({...t,[_]:m,[h]:g});return{...p,data:{x:p.x-n,y:p.y-i,enabled:{[_]:a,[h]:l}}}}}};function hasWindow(){return"undefined"!=typeof window}function getNodeName(e){return isNode(e)?(e.nodeName||"").toLowerCase():"#document"}function getWindow(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function getDocumentElement(e){var t;return null==(t=(isNode(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function isNode(e){return!!hasWindow()&&(e instanceof Node||e instanceof getWindow(e).Node)}function isElement(e){return!!hasWindow()&&(e instanceof Element||e instanceof getWindow(e).Element)}function isHTMLElement(e){return!!hasWindow()&&(e instanceof HTMLElement||e instanceof getWindow(e).HTMLElement)}function isShadowRoot(e){return!(!hasWindow()||"undefined"==typeof ShadowRoot)&&(e instanceof ShadowRoot||e instanceof getWindow(e).ShadowRoot)}function isOverflowElement(e){const{overflow:t,overflowX:n,overflowY:i,display:s}=getComputedStyle$1(e);return/auto|scroll|overlay|hidden|clip/.test(t+i+n)&&"inline"!==s&&"contents"!==s}function isTableElement(e){return/^(table|td|th)$/.test(getNodeName(e))}function isTopLayer(e){try{if(e.matches(":popover-open"))return!0}catch(e){}try{return e.matches(":modal")}catch(e){return!1}}const willChangeRe=/transform|translate|scale|rotate|perspective|filter/,containRe=/paint|layout|strict|content/,isNotNone=e=>!!e&&"none"!==e;let isWebKitValue;function isContainingBlock(e){const t=isElement(e)?getComputedStyle$1(e):e;return isNotNone(t.transform)||isNotNone(t.translate)||isNotNone(t.scale)||isNotNone(t.rotate)||isNotNone(t.perspective)||!isWebKit()&&(isNotNone(t.backdropFilter)||isNotNone(t.filter))||willChangeRe.test(t.willChange||"")||containRe.test(t.contain||"")}function getContainingBlock(e){let t=getParentNode(e);for(;isHTMLElement(t)&&!isLastTraversableNode(t);){if(isContainingBlock(t))return t;if(isTopLayer(t))return null;t=getParentNode(t)}return null}function isWebKit(){return null==isWebKitValue&&(isWebKitValue="undefined"!=typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),isWebKitValue}function isLastTraversableNode(e){return/^(html|body|#document)$/.test(getNodeName(e))}function getComputedStyle$1(e){return getWindow(e).getComputedStyle(e)}function getNodeScroll(e){return isElement(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function getParentNode(e){if("html"===getNodeName(e))return e;const t=e.assignedSlot||e.parentNode||isShadowRoot(e)&&e.host||getDocumentElement(e);return isShadowRoot(t)?t.host:t}function getNearestOverflowAncestor(e){const t=getParentNode(e);return isLastTraversableNode(t)?e.ownerDocument?e.ownerDocument.body:e.body:isHTMLElement(t)&&isOverflowElement(t)?t:getNearestOverflowAncestor(t)}function getOverflowAncestors(e,t,n){var i;void 0===t&&(t=[]),void 0===n&&(n=!0);const s=getNearestOverflowAncestor(e),o=s===(null==(i=e.ownerDocument)?void 0:i.body),a=getWindow(s);if(o){const e=getFrameElement(a);return t.concat(a,a.visualViewport||[],isOverflowElement(s)?s:[],e&&n?getOverflowAncestors(e):[])}return t.concat(s,getOverflowAncestors(s,[],n))}function getFrameElement(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function getCssDimensions(e){const t=getComputedStyle$1(e);let n=parseFloat(t.width)||0,i=parseFloat(t.height)||0;const s=isHTMLElement(e),o=s?e.offsetWidth:n,a=s?e.offsetHeight:i,l=round(n)!==o||round(i)!==a;return l&&(n=o,i=a),{width:n,height:i,$:l}}function unwrapElement(e){return isElement(e)?e:e.contextElement}function getScale(e){const t=unwrapElement(e);if(!isHTMLElement(t))return createCoords(1);const n=t.getBoundingClientRect(),{width:i,height:s,$:o}=getCssDimensions(t);let a=(o?round(n.width):n.width)/i,l=(o?round(n.height):n.height)/s;return a&&Number.isFinite(a)||(a=1),l&&Number.isFinite(l)||(l=1),{x:a,y:l}}const noOffsets=createCoords(0);function getVisualOffsets(e){const t=getWindow(e);return isWebKit()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:noOffsets}function shouldAddVisualOffsets(e,t,n){return void 0===t&&(t=!1),!(!n||t&&n!==getWindow(e))&&t}function getBoundingClientRect(e,t,n,i){void 0===t&&(t=!1),void 0===n&&(n=!1);const s=e.getBoundingClientRect(),o=unwrapElement(e);let a=createCoords(1);t&&(i?isElement(i)&&(a=getScale(i)):a=getScale(e));const l=shouldAddVisualOffsets(o,n,i)?getVisualOffsets(o):createCoords(0);let r=(s.left+l.x)/a.x,c=(s.top+l.y)/a.y,d=s.width/a.x,u=s.height/a.y;if(o){const e=getWindow(o),t=i&&isElement(i)?getWindow(i):i;let n=e,s=getFrameElement(n);for(;s&&i&&t!==n;){const e=getScale(s),t=s.getBoundingClientRect(),i=getComputedStyle$1(s),o=t.left+(s.clientLeft+parseFloat(i.paddingLeft))*e.x,a=t.top+(s.clientTop+parseFloat(i.paddingTop))*e.y;r*=e.x,c*=e.y,d*=e.x,u*=e.y,r+=o,c+=a,n=getWindow(s),s=getFrameElement(n)}}return rectToClientRect({width:d,height:u,x:r,y:c})}function getWindowScrollBarX(e,t){const n=getNodeScroll(e).scrollLeft;return t?t.left+n:getBoundingClientRect(getDocumentElement(e)).left+n}function getHTMLOffset(e,t){const n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-getWindowScrollBarX(e,n),y:n.top+t.scrollTop}}function convertOffsetParentRelativeRectToViewportRelativeRect(e){let{elements:t,rect:n,offsetParent:i,strategy:s}=e;const o="fixed"===s,a=getDocumentElement(i),l=!!t&&isTopLayer(t.floating);if(i===a||l&&o)return n;let r={scrollLeft:0,scrollTop:0},c=createCoords(1);const d=createCoords(0),u=isHTMLElement(i);if((u||!u&&!o)&&(("body"!==getNodeName(i)||isOverflowElement(a))&&(r=getNodeScroll(i)),u)){const e=getBoundingClientRect(i);c=getScale(i),d.x=e.x+i.clientLeft,d.y=e.y+i.clientTop}const h=!a||u||o?createCoords(0):getHTMLOffset(a,r);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-r.scrollLeft*c.x+d.x+h.x,y:n.y*c.y-r.scrollTop*c.y+d.y+h.y}}function getClientRects(e){return Array.from(e.getClientRects())}function getDocumentRect(e){const t=getDocumentElement(e),n=getNodeScroll(e),i=e.ownerDocument.body,s=max(t.scrollWidth,t.clientWidth,i.scrollWidth,i.clientWidth),o=max(t.scrollHeight,t.clientHeight,i.scrollHeight,i.clientHeight);let a=-n.scrollLeft+getWindowScrollBarX(e);const l=-n.scrollTop;return"rtl"===getComputedStyle$1(i).direction&&(a+=max(t.clientWidth,i.clientWidth)-s),{width:s,height:o,x:a,y:l}}const SCROLLBAR_MAX=25;function getViewportRect(e,t){const n=getWindow(e),i=getDocumentElement(e),s=n.visualViewport;let o=i.clientWidth,a=i.clientHeight,l=0,r=0;if(s){o=s.width,a=s.height;const e=isWebKit();(!e||e&&"fixed"===t)&&(l=s.offsetLeft,r=s.offsetTop)}const c=getWindowScrollBarX(i);if(c<=0){const e=i.ownerDocument,t=e.body,n=getComputedStyle(t),s="CSS1Compat"===e.compatMode&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,a=Math.abs(i.clientWidth-t.clientWidth-s);a<=25&&(o-=a)}else c<=25&&(o+=c);return{width:o,height:a,x:l,y:r}}function getInnerBoundingClientRect(e,t){const n=getBoundingClientRect(e,!0,"fixed"===t),i=n.top+e.clientTop,s=n.left+e.clientLeft,o=isHTMLElement(e)?getScale(e):createCoords(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:s*o.x,y:i*o.y}}function getClientRectFromClippingAncestor(e,t,n){let i;if("viewport"===t)i=getViewportRect(e,n);else if("document"===t)i=getDocumentRect(getDocumentElement(e));else if(isElement(t))i=getInnerBoundingClientRect(t,n);else{const n=getVisualOffsets(e);i={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return rectToClientRect(i)}function hasFixedPositionAncestor(e,t){const n=getParentNode(e);return!(n===t||!isElement(n)||isLastTraversableNode(n))&&("fixed"===getComputedStyle$1(n).position||hasFixedPositionAncestor(n,t))}function getClippingElementAncestors(e,t){const n=t.get(e);if(n)return n;let i=getOverflowAncestors(e,[],!1).filter(e=>isElement(e)&&"body"!==getNodeName(e)),s=null;const o="fixed"===getComputedStyle$1(e).position;let a=o?getParentNode(e):e;for(;isElement(a)&&!isLastTraversableNode(a);){const t=getComputedStyle$1(a),n=isContainingBlock(a);n||"fixed"!==t.position||(s=null),(o?!n&&!s:!n&&"static"===t.position&&s&&("absolute"===s.position||"fixed"===s.position)||isOverflowElement(a)&&!n&&hasFixedPositionAncestor(e,a))?i=i.filter(e=>e!==a):s=t,a=getParentNode(a)}return t.set(e,i),i}function getClippingRect(e){let{element:t,boundary:n,rootBoundary:i,strategy:s}=e;const o=[..."clippingAncestors"===n?isTopLayer(t)?[]:getClippingElementAncestors(t,this._c):[].concat(n),i],a=getClientRectFromClippingAncestor(t,o[0],s);let l=a.top,r=a.right,c=a.bottom,d=a.left;for(let e=1;e<o.length;e++){const n=getClientRectFromClippingAncestor(t,o[e],s);l=max(n.top,l),r=min(n.right,r),c=min(n.bottom,c),d=max(n.left,d)}return{width:r-d,height:c-l,x:d,y:l}}function getDimensions(e){const{width:t,height:n}=getCssDimensions(e);return{width:t,height:n}}function getRectRelativeToOffsetParent(e,t,n){const i=isHTMLElement(t),s=getDocumentElement(t),o="fixed"===n,a=getBoundingClientRect(e,!0,o,t);let l={scrollLeft:0,scrollTop:0};const r=createCoords(0);function c(){r.x=getWindowScrollBarX(s)}if(i||!i&&!o)if(("body"!==getNodeName(t)||isOverflowElement(s))&&(l=getNodeScroll(t)),i){const e=getBoundingClientRect(t,!0,o,t);r.x=e.x+t.clientLeft,r.y=e.y+t.clientTop}else s&&c();o&&!i&&s&&c();const d=!s||i||o?createCoords(0):getHTMLOffset(s,l);return{x:a.left+l.scrollLeft-r.x-d.x,y:a.top+l.scrollTop-r.y-d.y,width:a.width,height:a.height}}function isStaticPositioned(e){return"static"===getComputedStyle$1(e).position}function getTrueOffsetParent(e,t){if(!isHTMLElement(e)||"fixed"===getComputedStyle$1(e).position)return null;if(t)return t(e);let n=e.offsetParent;return getDocumentElement(e)===n&&(n=n.ownerDocument.body),n}function getOffsetParent(e,t){const n=getWindow(e);if(isTopLayer(e))return n;if(!isHTMLElement(e)){let t=getParentNode(e);for(;t&&!isLastTraversableNode(t);){if(isElement(t)&&!isStaticPositioned(t))return t;t=getParentNode(t)}return n}let i=getTrueOffsetParent(e,t);for(;i&&isTableElement(i)&&isStaticPositioned(i);)i=getTrueOffsetParent(i,t);return i&&isLastTraversableNode(i)&&isStaticPositioned(i)&&!isContainingBlock(i)?n:i||getContainingBlock(e)||n}const getElementRects=async function(e){const t=this.getOffsetParent||getOffsetParent,n=this.getDimensions,i=await n(e.floating);return{reference:getRectRelativeToOffsetParent(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:i.width,height:i.height}}};function isRTL(e){return"rtl"===getComputedStyle$1(e).direction}const platform={convertOffsetParentRelativeRectToViewportRelativeRect:convertOffsetParentRelativeRectToViewportRelativeRect,getDocumentElement:getDocumentElement,getClippingRect:getClippingRect,getOffsetParent:getOffsetParent,getElementRects:getElementRects,getClientRects:getClientRects,getDimensions:getDimensions,getScale:getScale,isElement:isElement,isRTL:isRTL};function rectsAreEqual(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function observeMove(e,t){let n,i=null;const s=getDocumentElement(e);function o(){var e;clearTimeout(n),null==(e=i)||e.disconnect(),i=null}return function a(l,r){void 0===l&&(l=!1),void 0===r&&(r=1),o();const c=e.getBoundingClientRect(),{left:d,top:u,width:h,height:_}=c;if(l||t(),!h||!_)return;const m={rootMargin:-floor(u)+"px "+-floor(s.clientWidth-(d+h))+"px "+-floor(s.clientHeight-(u+_))+"px "+-floor(d)+"px",threshold:max(0,min(1,r))||1};let g=!0;function p(t){const i=t[0].intersectionRatio;if(i!==r){if(!g)return a();i?a(!1,i):n=setTimeout(()=>{a(!1,1e-7)},1e3)}1!==i||rectsAreEqual(c,e.getBoundingClientRect())||a(),g=!1}try{i=new IntersectionObserver(p,{...m,root:s.ownerDocument})}catch(e){i=new IntersectionObserver(p,m)}i.observe(e)}(!0),o}function autoUpdate(e,t,n,i){void 0===i&&(i={});const{ancestorScroll:s=!0,ancestorResize:o=!0,elementResize:a="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:r=!1}=i,c=unwrapElement(e),d=s||o?[...c?getOverflowAncestors(c):[],...t?getOverflowAncestors(t):[]]:[];d.forEach(e=>{s&&e.addEventListener("scroll",n,{passive:!0}),o&&e.addEventListener("resize",n)});const u=c&&l?observeMove(c,n):null;let h,_=-1,m=null;a&&(m=new ResizeObserver(e=>{let[i]=e;i&&i.target===c&&m&&t&&(m.unobserve(t),cancelAnimationFrame(_),_=requestAnimationFrame(()=>{var e;null==(e=m)||e.observe(t)})),n()}),c&&!r&&m.observe(c),t&&m.observe(t));let g=r?getBoundingClientRect(e):null;return r&&function t(){const i=getBoundingClientRect(e);g&&!rectsAreEqual(g,i)&&n(),g=i,h=requestAnimationFrame(t)}(),n(),()=>{var e;d.forEach(e=>{s&&e.removeEventListener("scroll",n),o&&e.removeEventListener("resize",n)}),null==u||u(),null==(e=m)||e.disconnect(),m=null,r&&cancelAnimationFrame(h)}}const offset=offset$1,shift=shift$1,flip=flip$1,arrow=arrow$1,computePosition=(e,t,n)=>{const i=new Map,s={platform:platform,...n},o={...s.platform,_c:i};return computePosition$1(e,t,{...s,platform:o})},BREAKPOINTS={sm:576,md:768,lg:1024,xl:1280,"2xl":1536},parseResponsivePlacement=(e,t="bottom")=>{if(!e||!e.includes(":"))return null;const n=e.split(/\s+/),i={xs:t};for(const e of n)if(e.includes(":")){const[t,n]=e.split(":");void 0!==BREAKPOINTS[t]&&(i[t]=n)}else i.xs=e;return i},getResponsivePlacement=(e,t="bottom")=>{if(!e)return t;const n=window.innerWidth;let i=e.xs||t;const s=["sm","md","lg","xl","2xl"];for(const t of s)n>=BREAKPOINTS[t]&&e[t]&&(i=e[t]);return i},createBreakpointListeners=e=>{const t=[];for(const n of Object.keys(BREAKPOINTS)){const i=BREAKPOINTS[n],s=window.matchMedia(`(min-width: ${i}px)`);s.addEventListener("change",e),t.push({mql:s,handler:e})}return t},disposeBreakpointListeners=e=>{for(const{mql:t,handler:n}of e)t.removeEventListener("change",n)},NAME$h="menu",DATA_KEY$d="bs.menu",EVENT_KEY$e=".bs.menu",DATA_API_KEY$9=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$2="ArrowUp",ARROW_DOWN_KEY$2="ArrowDown",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",HOME_KEY$2="Home",END_KEY$2="End",ENTER_KEY$1="Enter",SPACE_KEY$1=" ",RIGHT_MOUSE_BUTTON=2,SUBMENU_CLOSE_DELAY=100,EVENT_HIDE$5="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$6="show.bs.menu",EVENT_SHOWN$5="shown.bs.menu",EVENT_CLICK_DATA_API$5="click.bs.menu.data-api",EVENT_KEYDOWN_DATA_API="keydown.bs.menu.data-api",EVENT_KEYUP_DATA_API="keyup.bs.menu.data-api",CLASS_NAME_SHOW$4="show",SELECTOR_DATA_TOGGLE$8='[data-bs-toggle="menu"]:not(.disabled):not(:disabled)',SELECTOR_MENU$2=".menu",SELECTOR_SUBMENU=".submenu",SELECTOR_SUBMENU_TOGGLE=".submenu > .menu-item",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS$1=".menu-item:not(.disabled):not(:disabled)",DEFAULT_PLACEMENT="bottom-start",SUBMENU_PLACEMENT="end-start",resolveLogicalPlacement=e=>isRTL$1()?e.replace(/^start(?=-|$)/,"right").replace(/^end(?=-|$)/,"left"):e.replace(/^start(?=-|$)/,"left").replace(/^end(?=-|$)/,"right"),triangleSign=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Default$g={autoClose:!0,boundary:"clippingParents",container:!1,display:"dynamic",offset:[0,2],floatingConfig:null,menu:null,placement:"bottom-start",reference:"toggle",strategy:"absolute",submenuTrigger:"both",submenuDelay:100},DefaultType$g={autoClose:"(boolean|string)",boundary:"(string|element)",container:"(string|element|boolean)",display:"string",offset:"(array|string|function)",floatingConfig:"(null|object|function)",menu:"(null|element)",placement:"string",reference:"(string|element|object)",strategy:"string",submenuTrigger:"string",submenuDelay:"number"};class Menu extends BaseComponent{static _openInstances=new Set;constructor(e,t){super(e,t),this._floatingCleanup=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this._parent=this._element.parentNode,this._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=this._config.menu||this._findMenu(),!this._config.menu&&this._menu&&(this._parent=this._findWrapper(this._menu)),this._isSubmenu=this._parent.classList?.contains("submenu"),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}static get NAME(){return"menu"}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$6,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of document.body.children)EventHandler.on(e,"mouseover",noop);this._element.focus({focusVisible:!1}),this._element.setAttribute("aria-expanded","true"),this._menu.classList.add("show"),this._element.classList.add("show"),this._parent&&this._parent.classList.add("show"),Menu._openInstances.add(this),EventHandler.trigger(this._element,EVENT_SHOWN$5,e)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._disposeFloating(),this._restoreMenuToOriginalParent(),this._disposeMediaQueryListeners(),this._closeAllSubmenus(),this._clearAllSubmenuTimeouts(),Menu._openInstances.delete(this),super.dispose()}update(){this._floatingCleanup&&this._updateFloatingPosition()}_findMenu(){const e=SelectorEngine.closest(this._element,":has(.menu)");return SelectorEngine.next(this._element,".menu")[0]||SelectorEngine.prev(this._element,".menu")[0]||SelectorEngine.findOne(".menu",e||this._parent)}_findWrapper(e){let t=this._element.parentNode;for(;t instanceof Element&&!t.contains(e);)t=t.parentNode;return t instanceof Element?t:this._element.parentNode}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$5,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.off(e,"mouseover",noop);this._disposeFloating(),this._restoreMenuToOriginalParent(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._parent&&this._parent.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"placement"),Manipulator.removeDataAttribute(this._menu,"display"),Menu._openInstances.delete(this),EventHandler.trigger(this._element,EVENT_HIDDEN$7,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!isElement$1(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${"menu".toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createFloating(){if("static"===this._config.display)return void Manipulator.setDataAttribute(this._menu,"display","static");let e=this._element;"parent"===this._config.reference?e=this._parent:isElement$1(this._config.reference)?e=getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference),this._updateFloatingPosition(e),this._floatingCleanup=autoUpdate(e,this._menu,()=>this._updateFloatingPosition(e))}async _updateFloatingPosition(e=null){if(!this._menu)return;e||(e="parent"===this._config.reference?this._parent:isElement$1(this._config.reference)?getElement(this._config.reference):"object"==typeof this._config.reference?this._config.reference:this._element);const t=this._getPlacement(),n=this._getFloatingMiddleware(),i=this._getFloatingConfig(t,n);await this._applyFloatingPosition(e,this._menu,i.placement,i.middleware,i.strategy)}_isShown(){return this._menu.classList.contains("show")}_getPlacement(){const e=this._responsivePlacements?getResponsivePlacement(this._responsivePlacements,"bottom-start"):this._config.placement;return resolveLogicalPlacement(e)}_parseResponsivePlacements(){this._responsivePlacements=parseResponsivePlacement(this._config.placement,"bottom-start"),this._responsivePlacements&&this._setupMediaQueryListeners()}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_getFloatingMiddleware(){const e=this._getOffset();return[offset("function"==typeof e?e:{mainAxis:e[1]||0,crossAxis:e[0]||0}),flip({fallbackPlacements:this._getFallbackPlacements()}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})]}_getFallbackPlacements(){return{bottom:["top","bottom-start","bottom-end","top-start","top-end"],"bottom-start":["top-start","bottom-end","top-end"],"bottom-end":["top-end","bottom-start","top-start"],top:["bottom","top-start","top-end","bottom-start","bottom-end"],"top-start":["bottom-start","top-end","bottom-end"],"top-end":["bottom-end","top-start","bottom-start"],right:["left","right-start","right-end","left-start","left-end"],"right-start":["left-start","right-end","left-end","top-start","bottom-start"],"right-end":["left-end","right-start","left-start","top-end","bottom-end"],left:["right","left-start","left-end","right-start","right-end"],"left-start":["right-start","left-end","right-end","top-start","bottom-start"],"left-end":["right-end","left-start","right-start","top-end","bottom-end"]}[this._getPlacement()]||["top","bottom","right","left"]}_getFloatingConfig(e,t){const n={placement:e,middleware:t,strategy:this._config.strategy};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null)}_getContainer(){const{container:e}=this._config;return!1===e?null:!0===e?document.body:getElement(e)}_moveMenuToContainer(){const e=this._getContainer();e&&this._menu&&this._menu.parentNode!==e&&e.append(this._menu)}_restoreMenuToOriginalParent(){this._menuOriginalParent&&this._menu&&this._menu.parentNode!==this._menuOriginalParent&&this._menuOriginalParent.append(this._menu)}async _applyFloatingPosition(e,t,n,i,s="absolute"){if(!t.isConnected)return null;const{x:o,y:a,placement:l}=await computePosition(e,t,{placement:n,middleware:i,strategy:s});return t.isConnected?(Object.assign(t.style,{position:s,left:`${o}px`,top:`${a}px`,margin:"0"}),Manipulator.setDataAttribute(t,"placement",l),l):null}_setupSubmenuListeners(){"hover"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||(EventHandler.on(this._menu,"mouseenter",".submenu > .menu-item",e=>{this._onSubmenuTriggerEnter(e)}),EventHandler.on(this._menu,"mouseleave",".submenu",e=>{this._onSubmenuLeave(e)}),EventHandler.on(this._menu,"mousemove",e=>{this._trackMousePosition(e)})),"click"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||EventHandler.on(this._menu,"click",".submenu > .menu-item",e=>{this._onSubmenuTriggerClick(e)})}_onSubmenuTriggerEnter(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;const n=t.closest(".submenu"),i=SelectorEngine.findOne(".menu",n);i&&(this._cancelSubmenuCloseTimeout(i),this._closeSiblingSubmenus(n),this._openSubmenu(t,i,n))}_onSubmenuLeave(e){const t=e.target.closest(".submenu"),n=SelectorEngine.findOne(".menu",t);n&&this._openSubmenus.has(n)&&(this._isMovingTowardSubmenu(e,n)||this._scheduleSubmenuClose(n,t))}_onSubmenuTriggerClick(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;e.preventDefault(),e.stopPropagation();const n=t.closest(".submenu"),i=SelectorEngine.findOne(".menu",n);i&&(this._openSubmenus.has(i)?this._closeSubmenu(i,n):(this._closeSiblingSubmenus(n),this._openSubmenu(t,i,n)))}_openSubmenu(e,t,n){if(this._openSubmenus.has(t))return;e.setAttribute("aria-expanded","true"),e.setAttribute("aria-haspopup","true"),t.style.opacity="0",t.classList.add("show"),n.classList.add("show");const i=this._createSubmenuFloating(e,t,n);this._openSubmenus.set(t,i),EventHandler.on(t,"mouseenter",()=>{this._cancelSubmenuCloseTimeout(t)})}_closeSubmenu(e,t){if(!this._openSubmenus.has(e))return;const n=SelectorEngine.find(".submenu .menu.show",e);for(const e of n){const t=e.closest(".submenu");this._closeSubmenu(e,t)}const i=SelectorEngine.findOne(".submenu > .menu-item",t),s=this._openSubmenus.get(e);s&&s(),this._openSubmenus.delete(e),EventHandler.off(e,"mouseenter"),i&&i.setAttribute("aria-expanded","false"),e.classList.remove("show"),t.classList.remove("show"),e.style.opacity=""}_closeAllSubmenus(){for(const[e]of this._openSubmenus){const t=e.closest(".submenu");this._closeSubmenu(e,t)}}_closeSiblingSubmenus(e){const t=e.parentNode,n=SelectorEngine.find(".submenu > .menu.show",t);for(const t of n){const n=t.closest(".submenu");n!==e&&this._closeSubmenu(t,n)}}_createSubmenuFloating(e,t,n){const i=n,s=resolveLogicalPlacement("end-start"),o=[offset({mainAxis:0,crossAxis:-4}),flip({fallbackPlacements:[resolveLogicalPlacement("start-start"),resolveLogicalPlacement("end-end"),resolveLogicalPlacement("start-end")]}),shift({padding:8})],a=()=>this._applyFloatingPosition(i,t,s,o).then(e=>(t.style.opacity="",e));return a(),autoUpdate(i,t,a)}_scheduleSubmenuClose(e,t){this._cancelSubmenuCloseTimeout(e);const n=setTimeout(()=>{this._closeSubmenu(e,t),this._submenuCloseTimeouts.delete(e)},this._config.submenuDelay);this._submenuCloseTimeouts.set(e,n)}_cancelSubmenuCloseTimeout(e){const t=this._submenuCloseTimeouts.get(e);t&&(clearTimeout(t),this._submenuCloseTimeouts.delete(e))}_clearAllSubmenuTimeouts(){for(const e of this._submenuCloseTimeouts.values())clearTimeout(e);this._submenuCloseTimeouts.clear()}_trackMousePosition(e){this._hoverIntentData={x:e.clientX,y:e.clientY,timestamp:Date.now()}}_isMovingTowardSubmenu(e,t){if(!this._hoverIntentData)return!1;const n=t.getBoundingClientRect(),i={x:e.clientX,y:e.clientY},s={x:this._hoverIntentData.x,y:this._hoverIntentData.y},o=isRTL$1()?n.right:n.left,a={x:o,y:n.top},l={x:o,y:n.bottom};return this._pointInTriangle(i,s,a,l)}_pointInTriangle(e,t,n,i){const s=triangleSign(e,t,n),o=triangleSign(e,n,i),a=triangleSign(e,i,t);return!((s<0||o<0||a<0)&&(s>0||o>0||a>0))}_selectMenuItem({key:e,target:t}){const n=t.closest(".menu")||this._menu,i=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,n).filter(e=>isVisible(e));i.length&&getNextActiveElement(i,t,e===ARROW_DOWN_KEY$2,!i.includes(t)).focus()}_handleSubmenuKeydown(e){const{key:t,target:n}=e,i=isRTL$1(),s=i?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=i?ARROW_RIGHT_KEY$1:ARROW_LEFT_KEY$1,a=n.closest(".submenu"),l=a&&n.matches(".submenu > .menu-item");if((t===ENTER_KEY$1||t===SPACE_KEY$1)&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===s&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",a);return t&&(this._closeSiblingSubmenus(a),this._openSubmenu(n,t,a),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===o){const t=n.closest(".menu"),i=t?.closest(".submenu");if(i){e.preventDefault(),e.stopPropagation();const n=SelectorEngine.findOne(".submenu > .menu-item",i);return this._closeSubmenu(t,i),n&&n.focus(),!0}}if(t===HOME_KEY$2||t===END_KEY$2){e.preventDefault(),e.stopPropagation();const i=n.closest(".menu"),s=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,i).filter(e=>isVisible(e));return s.length&&(t===HOME_KEY$2?s[0]:s.at(-1)).focus(),!0}return!1}static clearMenus(e){if(2!==e.button&&("keyup"!==e.type||"Tab"===e.key))for(const t of Menu._openInstances){if(!1===t._config.autoClose)continue;const n=e.composedPath(),i=n.includes(t._menu);if(n.includes(t._element)||"inside"===t._config.autoClose&&!i||"outside"===t._config.autoClose&&i)continue;const s=e.target.closest?.("form"),o=Boolean(s)&&t._menu.contains(s);if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)||o))continue;const a={relatedTarget:t._element};"click"===e.type&&(a.clickEvent=e),t._completeHide(a)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName)||e.target.isContentEditable,n="Escape"===e.key,i=[ARROW_UP_KEY$2,ARROW_DOWN_KEY$2].includes(e.key),s=[ARROW_LEFT_KEY$1,ARROW_RIGHT_KEY$1].includes(e.key),o=[HOME_KEY$2,END_KEY$2].includes(e.key),a=[ENTER_KEY$1,SPACE_KEY$1].includes(e.key),l=e.target.matches(".submenu > .menu-item");if(!(i||n||s||o||a&&l))return;if(t&&!n)return;const r=this.matches(SELECTOR_DATA_TOGGLE$8)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$8,e.delegateTarget.parentNode);if(!r)return;const c=Menu.getOrCreateInstance(r);if(!(s||o||a&&l)||!c._handleSubmenuKeydown(e)){if(i)return e.preventDefault(),e.stopPropagation(),c.show(),void c._selectMenuItem(e);if(n&&c._isShown()){e.preventDefault(),e.stopPropagation();const t=e.target.closest(".menu"),n=t?.closest(".submenu");if(n&&c._openSubmenus.size>0){const e=SelectorEngine.findOne(".submenu > .menu-item",n);return c._closeSubmenu(t,n),void(e&&e.focus())}c.hide(),r.focus()}}}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$8,Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,".menu",Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$5,Menu.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Menu.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_TOGGLE$8,function(e){e.preventDefault(),Menu.getOrCreateInstance(this).toggle()});const NAME$g="combobox",DATA_KEY$c="bs.combobox",EVENT_KEY$d=`.${DATA_KEY$c}`,DATA_API_KEY$8=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",HOME_KEY$1="Home",END_KEY$1="End",ENTER_KEY="Enter",SPACE_KEY=" ",EVENT_CHANGE$3=`change${EVENT_KEY$d}`,EVENT_SHOW$5=`show${EVENT_KEY$d}`,EVENT_SHOWN$4=`shown${EVENT_KEY$d}`,EVENT_HIDE$4=`hide${EVENT_KEY$d}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$d}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_SHOW$3="show",CLASS_NAME_SELECTED="selected",CLASS_NAME_PLACEHOLDER="combobox-placeholder",SELECTOR_DATA_TOGGLE$7='[data-bs-toggle="combobox"]',SELECTOR_MENU$1=".menu",SELECTOR_MENU_ITEM=".menu-item[data-bs-value]",SELECTOR_VISIBLE_ITEMS=".menu-item[data-bs-value]:not(.disabled):not(:disabled)",SELECTOR_VALUE=".combobox-value",SELECTOR_SEARCH_INPUT=".combobox-search-input",SELECTOR_NO_RESULTS=".combobox-no-results",Default$f={boundary:"clippingParents",multiple:!1,name:null,offset:[0,2],placeholder:"",placement:"bottom-start",search:!1,searchNormalize:!1},DefaultType$f={boundary:"(string|element)",multiple:"boolean",name:"(string|null)",offset:"(array|string|function)",placeholder:"string",placement:"string",search:"boolean",searchNormalize:"boolean"};class Combobox extends BaseComponent{constructor(e,t){super(e,t),this._toggle=this._element,this._menu=SelectorEngine.next(this._toggle,".menu")[0],this._valueDisplay=SelectorEngine.findOne(SELECTOR_VALUE,this._toggle),this._searchInput=SelectorEngine.findOne(SELECTOR_SEARCH_INPUT,this._menu),this._noResults=SelectorEngine.findOne(SELECTOR_NO_RESULTS,this._menu),this._hiddenInput=null,this._menuInstance=null,this._createHiddenInput(),this._createMenuInstance(),this._syncInitialSelection(),this._addEventListeners()}static get Default(){return Default$f}static get DefaultType(){return DefaultType$f}static get NAME(){return NAME$g}toggle(){return this._isShown()?this.hide():this.show()}show(){isDisabled(this._toggle)||this._isShown()||EventHandler.trigger(this._toggle,EVENT_SHOW$5).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$4))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$4).defaultPrevented||(this._menuInstance.hide(),EventHandler.trigger(this._toggle,EVENT_HIDDEN$6)))}dispose(){this._menuInstance&&(this._menuInstance.dispose(),this._menuInstance=null),this._hiddenInput&&(this._hiddenInput.remove(),this._hiddenInput=null),EventHandler.off(this._menu,EVENT_KEY$d),EventHandler.off(this._toggle,EVENT_KEY$d),super.dispose()}_isShown(){return this._menu.classList.contains("show")}_createHiddenInput(){const{name:e}=this._config;e&&(this._hiddenInput=document.createElement("input"),this._hiddenInput.type="hidden",this._hiddenInput.name=e,this._hiddenInput.value="",this._toggle.parentNode.insertBefore(this._hiddenInput,this._toggle))}_createMenuInstance(){this._menuInstance=new Menu(this._toggle,{menu:this._menu,autoClose:!this._config.multiple||"outside",boundary:this._config.boundary,offset:this._config.offset,placement:this._config.placement})}_syncInitialSelection(){this._getSelectedItems().length>0?(this._updateToggleText(),this._updateHiddenInput()):this._showPlaceholder()}_addEventListeners(){EventHandler.on(this._menu,"click",SELECTOR_MENU_ITEM,e=>{const t=e.target.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&(e.preventDefault(),e.stopPropagation(),this._selectItem(t))}),EventHandler.on(this._toggle,"keydown",e=>{this._handleToggleKeydown(e)}),EventHandler.on(this._menu,"keydown",e=>{this._handleMenuKeydown(e)}),this._searchInput&&(EventHandler.on(this._searchInput,"input",()=>{this._filterItems(this._searchInput.value)}),EventHandler.on(this._searchInput,"keydown",e=>{if("ArrowDown"===e.key){e.preventDefault();const t=this._getVisibleItems();t.length>0&&t[0].focus()}"Escape"===e.key&&(this.hide(),this._toggle.focus())}))}_selectItem(e){if(this._config.multiple)e.classList.toggle("selected"),e.setAttribute("aria-selected",e.classList.contains("selected"));else{const t=SelectorEngine.find(".selected",this._menu);for(const e of t)e.classList.remove("selected"),e.setAttribute("aria-selected","false");e.classList.add("selected"),e.setAttribute("aria-selected","true")}this._updateToggleText(),this._updateHiddenInput();const t=this._config.multiple?this._getSelectedItems().map(e=>e.dataset.bsValue):e.dataset.bsValue;EventHandler.trigger(this._toggle,EVENT_CHANGE$3,{value:t,item:e}),this._config.multiple||(this.hide(),this._toggle.focus())}_updateToggleText(){const e=this._getSelectedItems();if(0!==e.length)if(this._valueDisplay.classList.remove("combobox-placeholder"),this._config.multiple&&e.length>1)this._valueDisplay.textContent=`${e.length} selected`;else{const t=e[0],n=SelectorEngine.findOne(".menu-item-content > span:first-child",t);this._valueDisplay.textContent=n?n.textContent:t.textContent.trim()}else this._showPlaceholder()}_showPlaceholder(){const{placeholder:e}=this._config;e&&(this._valueDisplay.textContent=e,this._valueDisplay.classList.add("combobox-placeholder"))}_updateHiddenInput(){if(!this._hiddenInput)return;const e=this._getSelectedItems().map(e=>e.dataset.bsValue);this._hiddenInput.value=this._config.multiple?e.join(","):e[0]||""}_getSelectedItems(){return SelectorEngine.find(".selected",this._menu)}_getVisibleItems(){return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter(e=>isVisible(e))}_filterItems(e){const t=this._normalizeText(e.toLowerCase().trim()),n=SelectorEngine.find(SELECTOR_MENU_ITEM,this._menu);let i=0;for(const e of n){const n=this._normalizeText(e.textContent.toLowerCase().trim()),s=!t||n.includes(t);e.style.display=s?"":"none",s&&i++}this._noResults&&this._noResults.classList.toggle("d-none",i>0)}_normalizeText(e){return this._config.searchNormalize?e.normalize("NFD").replace(/[\u0300-\u036F]/g,""):e}_handleToggleKeydown(e){const{key:t}=e;if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault(),this._isShown()||this.show();const n=this._getVisibleItems();return void(n.length>0&&("ArrowDown"===t?n[0]:n.at(-1)).focus())}"Enter"!==t&&" "!==t||this._isShown()||(e.preventDefault(),this.show())}_handleMenuKeydown(e){const{key:t,target:n}=e;if("Escape"===t)return e.preventDefault(),e.stopPropagation(),this.hide(),void this._toggle.focus();if("Tab"===t)return void this.hide();const i=n.matches("input");if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault();const i=this._getVisibleItems();return void(i.length>0&&getNextActiveElement(i,n,"ArrowDown"===t,!i.includes(n)).focus())}if("Home"===t||"End"===t){e.preventDefault();const n=this._getVisibleItems();return void(n.length>0&&("Home"===t?n[0]:n.at(-1)).focus())}if(("Enter"===t||" "===t)&&!i){e.preventDefault();const t=n.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&this._selectItem(t)}}static jQueryInterface(e){return this.each(function(){const t=Combobox.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$7,function(e){e.preventDefault(),Combobox.getOrCreateInstance(this).toggle()}),EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE$7))Combobox.getOrCreateInstance(e)});
 /*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */
-var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the "init()" method first.',notLocale:"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».",incorrectTime:"The value of the time property can be: false, 12 or 24.",incorrectMonthsCount:"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1."},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,s,i,o;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(s=null==(n=e.context.inputElement)?void 0:n.replaceWith)||s.call(n,e.context.originalElement),setContext(e,"inputElement",void 0)):null==(o=(i=e.context.mainElement).replaceWith)||o.call(i,e.context.originalElement),setContext(e,"mainElement",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR="data-vc-prev-tabindex",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute("tabindex");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:"")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);""===t||null===t?e.removeAttribute("tabindex"):e.setAttribute("tabindex",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{e.context.isShowInInputMode&&e.context.currentType&&(e.context.mainElement.dataset.vcCalendarHidden="",setContext(e,"isShowInInputMode",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach(e=>e()),setContext(e,"cleanupHandlers",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)&&(("function"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()),e.onHide&&e.onHide(e))};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:s,left:i}=getOffset(e),{vh:o,vw:a}=getViewportDimensions(),l=s-t,r=i-n;return{top:l,bottom:o-(l+e.clientHeight),left:r,right:a-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const s={top:!0,bottom:!0,left:!0,right:!0},i=[];if(!t||!e)return{canShow:s,parentPositions:i};const{bottom:o,top:a}=calculateAvailableSpace(e),{top:l,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:h}=getViewportDimensions(),_=h/2,m=u/2;return[{condition:l<m,position:"top"},{condition:l>m,position:"bottom"},{condition:r<_,position:"left"},{condition:r>_,position:"right"}].forEach(({condition:e,position:t})=>{e&&i.push(t)}),Object.assign(s,{top:c<=a-n,bottom:c<=o-n,left:d<=r,right:d<=h-r}),{canShow:s,parentPositions:i}}const handleDay=(e,t,n,s)=>{var i;const o=s.querySelector(`[data-vc-date="${t}"]`),a=null==o?void 0:o.querySelector("[data-vc-date-btn]");if(!o||!a)return;if((null==n?void 0:n.modifier)&&a.classList.add(...n.modifier.trim().split(" ")),!(null==n?void 0:n.html))return;const l=document.createElement("div");l.className=e.styles.datePopup,l.dataset.vcDatePopup="",l.innerHTML=e.sanitizerHTML(n.html),a.ariaExpanded="true",a.ariaLabel=`${a.ariaLabel}, ${null==(i=null==l?void 0:l.textContent)?void 0:i.replace(/^\s+|\s+(?=\s)|\s+$/g,"").replace(/&nbsp;/g," ")}`,o.appendChild(l),requestAnimationFrame(()=>{if(!l)return;const{canShow:e}=getAvailablePosition(o,l),t=e.bottom?o.offsetHeight:-l.offsetHeight,n=e.left&&!e.right?o.offsetWidth-l.offsetWidth/2:!e.left&&e.right?l.offsetWidth/2:0;Object.assign(l.style,{left:`${n}px`,top:`${t}px`})})},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach(([n,s])=>handleDay(e,n,s,t)))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,parseDates=e=>e.reduce((e,t)=>{if(t instanceof Date||"number"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\d{4}-\d{2}-\d{2})$/g)?e.push(t):t.replace(/(\d{4}-\d{2}-\d{2}).*?(\d{4}-\d{2}-\d{2})/g,(t,n,s)=>{const i=getDate(n),o=getDate(s),a=new Date(i.getTime());for(;a<=o;a.setDate(a.getDate()+1))e.push(getDateString(a));return t});return e},[]),updateAttribute=(e,t,n,s="")=>{t?e.setAttribute(n,s):e.getAttribute(n)===s&&e.removeAttribute(n)},setDateModifier=(e,t,n,s,i,o,a)=>{var l,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(o)||getDate(e.context.displayDateMax)<getDate(o)||(null==(l=e.context.disableDates)?void 0:l.includes(o))||!e.selectionMonthsMode&&"current"!==a||!e.selectionYearsMode&&getDate(o).getFullYear()!==t;updateAttribute(n,u,"data-vc-date-disabled"),s&&updateAttribute(s,u,"aria-disabled","true"),s&&updateAttribute(s,u,"tabindex","-1"),updateAttribute(n,!e.disableToday&&e.context.dateToday===o,"data-vc-date-today"),updateAttribute(n,!e.disableToday&&e.context.dateToday===o,"aria-current","date"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(i),"data-vc-date-weekend");const h=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,h.includes(o),"data-vc-date-holiday"),(null==(d=e.context.selectedDates)?void 0:d.includes(o))?(n.setAttribute("data-vc-date-selected",""),s&&s.setAttribute("aria-selected","true"),e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode&&(e.context.selectedDates[0]===o&&e.context.selectedDates[e.context.selectedDates.length-1]===o?n.setAttribute("data-vc-date-selected","first-and-last"):e.context.selectedDates[0]===o?n.setAttribute("data-vc-date-selected","first"):e.context.selectedDates[e.context.selectedDates.length-1]===o&&n.setAttribute("data-vc-date-selected","last"),e.context.selectedDates[0]!==o&&e.context.selectedDates[e.context.selectedDates.length-1]!==o&&n.setAttribute("data-vc-date-selected","middle"))):n.hasAttribute("data-vc-date-selected")&&(n.removeAttribute("data-vc-date-selected"),s&&s.removeAttribute("aria-selected")),!e.context.disableDates.includes(o)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),s=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),i=getDate(o);updateAttribute(n,i>t&&i<s,"data-vc-date-selected","middle")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),s=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-s);const i=new Date(n.getFullYear(),0,1),o=Math.ceil(((+n-+i)/864e5+1)/7);return{year:n.getFullYear(),week:o}},addWeekNumberForDate=(e,t,n)=>{const s=getWeekNumber(n,e.firstWeekday);s&&(t.dataset.vcDateWeekNumber=String(s.week))},setDaysAsDisabled=(e,t,n)=>{var s,i,o,a,l;const r=null==(s=e.disableWeekdays)?void 0:s.includes(n),c=e.disableAllDates&&!!(null==(i=e.context.enableDates)?void 0:i[0]);!r&&!c||(null==(o=e.context.enableDates)?void 0:o.includes(t))||(null==(a=e.context.disableDates)?void 0:a.includes(t))||(e.context.disableDates.push(t),null==(l=e.context.disableDates)||l.sort((e,t)=>+new Date(e)-+new Date(t)))},createDate=(e,t,n,s,i,o)=>{const a=getDate(i).getDay(),l="string"==typeof e.locale&&e.locale.length?e.locale:"en",r=document.createElement("div");let c;r.className=e.styles.date,r.dataset.vcDate=i,r.dataset.vcDateMonth=o,r.dataset.vcDateWeekDay=String(a),r.role="gridcell",("current"===o||e.displayDatesOutside)&&(c=document.createElement("button"),c.className=e.styles.dateBtn,c.type="button",c.ariaLabel=getLocaleString(i,l,{dateStyle:"long",timeZone:"UTC"}),c.dataset.vcDateBtn="",c.innerText=String(s),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,i),setDaysAsDisabled(e,i,a),setDateModifier(e,t,r,c,a,i,o),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,s,i)=>{for(let o=1;o<=n;o++){const n=new Date(s,i,o);createDate(e,s,t,o,getDateString(n),"current")}},createDatesFromNextMonth=(e,t,n,s,i)=>{const o=i+1===12?s+1:s,a=i+1===12?"01":i+2<10?`0${i+2}`:i+2;for(let i=1;i<=n;i++){const n=i<10?`0${i}`:String(i);createDate(e,s,t,i,`${o}-${a}-${n}`,"next")}},createDatesFromPrevMonth=(e,t,n,s,i)=>{let o=new Date(n,s,0).getDate()-(i-1);const a=0===s?n-1:n,l=0===s?12:s<10?`0${s}`:s;for(let s=i;s>0;s--,o++)createDate(e,n,t,o,`${a}-${l}-${o}`,"prev")},createWeekNumbers=(e,t,n,s,i)=>{if(!e.enableWeekNumbers)return;s.textContent="";const o=document.createElement("b");o.className=e.styles.weekNumbersTitle,o.innerText="#",o.dataset.vcWeekNumbers="title",s.appendChild(o);const a=document.createElement("div");a.className=e.styles.weekNumbersContent,a.dataset.vcWeekNumbers="content",s.appendChild(a);const l=document.createElement("button");l.type="button",l.className=e.styles.weekNumber;const r=i.querySelectorAll("[data-vc-date]"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,s=getWeekNumber(n,e.firstWeekday);if(!s)return;const i=l.cloneNode(!0);i.innerText=String(s.week),i.dataset.vcWeekNumber=String(s.week),i.dataset.vcWeekYear=String(s.year),i.role="rowheader",i.ariaLabel=`${s.week}`,a.appendChild(i)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),s=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach((n,i)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const o=new Date(t);o.setMonth(o.getMonth()+i);const a=o.getMonth(),l=o.getFullYear(),r=(new Date(l,a,1).getDay()-e.firstWeekday+7)%7,c=new Date(l,a+1,0).getDate(),d=r+c,u=Math.ceil(d/7),h=7*u-d,_=[];for(let t=0;t<u;t++){const t=document.createElement("div");t.className=e.styles.datesRow,t.setAttribute("data-vc-dates","row"),t.setAttribute("role","row"),_.push(t)}let m=0,g=0;const p={addDate:e=>{_[m].appendChild(e),g++,g>=7&&(m++,g=0)}};createDatesFromPrevMonth(e,p,l,a,r),createDatesFromCurrentMonth(e,p,c,l,a),createDatesFromNextMonth(e,p,h,l,a);for(const e of _)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,s[i],n)})},layoutDefault=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <#WeekNumbers />\n    <div class="${e.styles.content}" data-vc="content" role="grid">\n      <#Week />\n      <#Dates />\n      <#DateRangeTooltip />\n    </div>\n  </div>\n  <#ControlTime />\n`,layoutMonths=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Months />\n    </div>\n  </div>\n`,layoutMultiple=e=>`\n  <div class="${e.styles.controls}" data-vc="controls" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.grid}" data-vc="grid">\n    <#Multiple>\n      <div class="${e.styles.column}" data-vc="column" role="region">\n        <div class="${e.styles.header}" data-vc="header">\n          <div class="${e.styles.headerContent}" data-vc-header="content">\n            <#Month />\n            <#Year />\n          </div>\n        </div>\n        <div class="${e.styles.wrapper}" data-vc="wrapper">\n          <#WeekNumbers />\n          <div class="${e.styles.content}" data-vc="content" role="grid">\n            <#Week />\n            <#Dates />\n          </div>\n        </div>\n      </div>\n    <#/Multiple>\n    <#DateRangeTooltip />\n  </div>\n  <#ControlTime />\n`,layoutYears=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [year] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [year] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Years />\n    </div>\n  </div>\n`,ArrowNext=(e,t)=>`<button type="button" class="${e.styles.arrowNext}" data-vc-arrow="next" aria-label="${e.labels.arrowNext[t]}"></button>`,ArrowPrev=(e,t)=>`<button type="button" class="${e.styles.arrowPrev}" data-vc-arrow="prev" aria-label="${e.labels.arrowPrev[t]}"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class="${e.styles.time}" data-vc="time" role="group" aria-label="${e.labels.selectingTime}"></div>`:"",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class="${e.styles.dateRangeTooltip}" data-vc-date-range-tooltip="hidden"></div>`:"",Dates=e=>`<div class="${e.styles.dates}" data-vc="dates" aria-live="assertive" aria-label="${e.labels.dates}" ${"multiple"===e.type?"aria-multiselectable":""}></div>`,Month=e=>`<button type="button" class="${e.styles.month}" data-vc="month"></button>`,Months=e=>`<div class="${e.styles.months}" data-vc="months" role="grid" aria-live="assertive" aria-label="${e.labels.months}"></div>`,Week=e=>`<div class="${e.styles.week}" data-vc="week" role="row" aria-label="${e.labels.week}"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class="${e.styles.weekNumbers}" data-vc-week="numbers" role="row" aria-label="${e.labels.weekNumber}"></div>`:"",Year=e=>`<button type="button" class="${e.styles.year}" data-vc="year"></button>`,Years=e=>`<div class="${e.styles.years}" data-vc="years" role="grid" aria-live="assertive" aria-label="${e.labels.years}"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,(t,n)=>{const s=(n.match(/\[(.*?)\]/)||[])[1],i=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),o=getComponent(i),a=o?o(e,null!=s?s:null):"";return e.sanitizerHTML(a)}).replace(/[\n\t]/g,""),parseMultipleLayout=(e,t)=>t.replace(new RegExp("<#Multiple>(.*?)<#\\/Multiple>","gs"),(t,n)=>{const s=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(s)}).replace(/[\n\t]/g,""),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach(t=>{const s=t;e.layouts[s].length||(e.layouts[s]=n[s](e))}),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc="calendar",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role="application",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,"multiple"!==e.context.currentType){if("multiple"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc="controls"]'),s=e.context.mainElement.querySelector('[data-vc="grid"]'),i=t.closest('[data-vc="column"]');return n&&n.remove(),s&&(s.dataset.vcGrid="hidden"),i&&(i.dataset.vcColumn=e.context.currentType),void(i&&(i.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,s)=>{e.style.visibility=n?"hidden":"",t.style.visibility=s?"hidden":""},handleDefaultType=(e,t,n)=>{const s=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),i=new Date(s.getTime()),o=new Date(s.getTime());i.setMonth(i.getMonth()-e.monthsToSwitch),o.setMonth(o.getMonth()+e.monthsToSwitch);const a=getDate(e.context.dateMin),l=getDate(e.context.dateMax);e.selectionYearsMode||(a.setFullYear(s.getFullYear()),l.setFullYear(s.getFullYear()));const r=!e.selectionMonthsMode||i.getFullYear()<a.getFullYear()||i.getFullYear()===a.getFullYear()&&i.getMonth()<a.getMonth(),c=!e.selectionMonthsMode||o.getFullYear()>l.getFullYear()||o.getFullYear()===l.getFullYear()&&o.getMonth()>l.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax),o=!!(s.getFullYear()&&e.context.displayYear-7<=s.getFullYear()),a=!!(i.getFullYear()&&e.context.displayYear+7>=i.getFullYear());setVisibilityArrows(t,n,o,a)},visibilityArrows=e=>{if("month"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow="prev"]'),n=e.context.mainElement.querySelector('[data-vc-arrow="next"]');t&&n&&{default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)}["multiple"===e.context.currentType?"default":e.context.currentType]()},visibilityHandler=(e,t,n,s,i)=>{const o=new Date(s.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),a=new Date(s.setMonth(e.context.selectedMonth+n)).getMonth(),l=e.context.locale.months.long[a],r=t.closest('[data-vc="column"]');r&&(r.ariaLabel=`${l} ${o}`);const c={month:{id:a,label:l},year:{id:o,label:o}};t.innerText=String(c[i].label),t.dataset[`vc${i.charAt(0).toUpperCase()+i.slice(1)}`]=String(c[i].id),t.ariaLabel=`${e.labels[i]} ${c[i].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[i]||"only-arrows"===d[i];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc="month"]'),n=e.context.mainElement.querySelectorAll('[data-vc="year"]'),s=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach(t=>null==t?void 0:t.forEach((t,n)=>visibilityHandler(e,t,n,s,t.dataset.vc)))},setYearModifier=(e,t,n,s,i)=>{var o;const a={month:{selected:"data-vc-months-month-selected",aria:"aria-selected",value:"vcMonthsMonth",selectedProperty:"selectedMonth"},year:{selected:"data-vc-years-year-selected",aria:"aria-selected",value:"vcYearsYear",selectedProperty:"selectedYear"}};i&&(null==(o=e.context.mainElement.querySelectorAll({month:"[data-vc-months-month]",year:"[data-vc-years-year]"}[n]))||o.forEach(e=>{e.removeAttribute(a[n].selected),e.removeAttribute(a[n].aria)}),setContext(e,a[n].selectedProperty,Number(t.dataset[a[n].value])),visibilityTitle(e),"year"===n&&visibilityArrows(e)),s&&(t.setAttribute(a[n].selected,""),t.setAttribute(a[n].aria,"true"))},getColumnID=(e,t)=>{var n;if("multiple"!==e.type)return{currentValue:null,columnID:0};const s=e.context.mainElement.querySelectorAll('[data-vc="column"]'),i=Array.from(s).findIndex(e=>e.closest(`[data-vc-column="${t}"]`));return{currentValue:i>=0?Number(null==(n=s[i].querySelector(`[data-vc="${t}"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(i,0)}},createMonthEl=(e,t,n,s,i,o,a)=>{const l=t.cloneNode(!1);return l.className=e.styles.monthsMonth,l.innerText=s,l.ariaLabel=i,l.role="gridcell",l.dataset.vcMonthsMonth=`${a}`,o&&(l.ariaDisabled="true"),o&&(l.tabIndex=-1),l.disabled=o,setYearModifier(e,l,"month",n===a,!1),l},createMonths=(e,t)=>{var n,s;const i=null==(n=null==t?void 0:t.closest('[data-vc="header"]'))?void 0:n.querySelector('[data-vc="year"]'),o=i?Number(i.dataset.vcYear):e.context.selectedYear,a=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,"currentType","month"),createLayouts(e,t),visibilityTitle(e);const l=e.context.mainElement.querySelector('[data-vc="months"]');if(!e.selectionMonthsMode||!l)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map((t,n)=>a-e.monthsToSwitch*n).concat(e.context.locale.months.long.map((t,n)=>a+e.monthsToSwitch*n)).filter(e=>e>=0&&e<=12):Array.from(Array(12).keys()),c=document.createElement("button");c.type="button";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,"month"),u=o<=n.getFullYear()&&t<n.getMonth()+d||o>=s.getFullYear()&&t>s.getMonth()-i+d||o>s.getFullYear()||t!==a&&!r.includes(t),h=createMonthEl(e,c,a,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);l.appendChild(h),e.onCreateMonthEls&&e.onCreateMonthEls(e,h)}null==(s=e.context.mainElement.querySelector("[data-vc-months-month]:not([disabled])"))||s.focus()},TimeInput=(e,t,n,s,i)=>`\n  <label class="${t}" data-vc-time-input="${e}">\n    <input type="text" name="${e}" maxlength="2" aria-label="${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${s}" ${i?"disabled":""}>\n  </label>\n`,TimeRange=(e,t,n,s,i,o,a)=>`\n  <label class="${t}" data-vc-time-range="${e}">\n    <input type="range" name="${e}" min="${s}" max="${i}" step="${o}" aria-label="${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${a}">\n  </label>\n`,handleActions=(e,t,n,s)=>{({hour:()=>setContext(e,"selectedHours",n),minute:()=>setContext(e,"selectedMinutes",n)})[s](),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:""}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:"00",PM:"12"},1:{AM:"01",PM:"13"},2:{AM:"02",PM:"14"},3:{AM:"03",PM:"15"},4:{AM:"04",PM:"16"},5:{AM:"05",PM:"17"},6:{AM:"06",PM:"18"},7:{AM:"07",PM:"19"},8:{AM:"08",PM:"20"},9:{AM:"09",PM:"21"},10:{AM:"10",PM:"22"},11:{AM:"11",PM:"23"},12:{AM:"00",PM:"12"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,s,i)=>{const o=o=>{const a="AM"===e.context.selectedKeeping?"PM":"AM",l=transformTime24(e.context.selectedHours,a);Number(l)<=s&&Number(l)>=i?(setContext(e,"selectedKeeping",a),n.value=l,handleActions(e,o,e.context.selectedHours,"hour"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,o,!0)};return t.addEventListener("click",o),()=>{t.removeEventListener("click",o)}},transformTime12=e=>({0:"12",13:"01",14:"02",15:"03",16:"04",17:"05",18:"06",19:"07",20:"08",21:"09",22:"10",23:"11"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,s)=>{e.value=n,t.value=s},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleInput$1=(e,t,n,s,i,o,a)=>{const l={hour:(l,r,c)=>{e.selectionTimeMode&&{12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=o&&d>=a))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),l>12&&updateKeepingTime$1(e,s,"PM"),handleActions(e,c,transformTime12(r),i)},24:()=>{if(!(l<=o&&l>=a))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,i)}}[e.selectionTimeMode]()},minute:(s,l,r)=>{if(!(s<=o&&s>=a))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=l,t.value=l,handleActions(e,r,l,i)}},r=e=>{const t=Number(n.value),s=n.value.padStart(2,"0");l[i]&&l[i](t,s,e)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},updateInputAndTime=(e,t,n,s,i)=>{t.value=i,handleActions(e,n,i,s)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleRange=(e,t,n,s,i)=>{const o=o=>{const a=Number(t.value),l=t.value.padStart(2,"0"),r="hour"===i,c=24===e.selectionTimeMode,d=a>0&&a<12;r&&!c&&updateKeepingTime(e,s,0===a||d?"AM":"PM"),updateInputAndTime(e,n,o,i,!r||c||d?l:transformTime12(t.value))};return t.addEventListener("input",o),()=>{t.removeEventListener("input",o)}},handleMouseOver=e=>e.setAttribute("data-vc-input-focus",""),handleMouseOut=e=>e.removeAttribute("data-vc-input-focus"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range="hour"] input[name="hour"]'),s=t.querySelector('[data-vc-time-range="minute"] input[name="minute"]'),i=t.querySelector('[data-vc-time-input="hour"] input[name="hour"]'),o=t.querySelector('[data-vc-time-input="minute"] input[name="minute"]'),a=t.querySelector('[data-vc-time="keeping"]');if(!(n&&s&&i&&o))return;const l=e=>{e.target===n&&handleMouseOver(i),e.target===s&&handleMouseOver(o)},r=e=>{e.target===n&&handleMouseOut(i),e.target===s&&handleMouseOut(o)};return t.addEventListener("mouseover",l),t.addEventListener("mouseout",r),handleInput$1(e,n,i,a,"hour",e.timeMaxHour,e.timeMinHour),handleInput$1(e,s,o,a,"minute",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,i,a,"hour"),handleRange(e,s,o,a,"minute"),a&&handleClickKeepingTime(e,a,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener("mouseover",l),t.removeEventListener("mouseout",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc="time"]');if(!e.selectionTimeMode||!t)return;const[n,s]=[e.timeMinHour,e.timeMaxHour],[i,o]=[e.timeMinMinute,e.timeMaxMinute],a=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,l="range"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\n    <div class="${e.styles.timeContent}" data-vc-time="content">\n      ${TimeInput("hour",e.styles.timeHour,e.labels,e.context.selectedHours,l)}\n      ${TimeInput("minute",e.styles.timeMinute,e.labels,e.context.selectedMinutes,l)}\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type="button" class="${e.styles.timeKeeping}" aria-label="${e.labels.btnKeeping} ${r}" data-vc-time="keeping" ${l?"disabled":""}>${r}</button>`):""}\n    </div>\n    <div class="${e.styles.timeRanges}" data-vc-time="ranges">\n      ${TimeRange("hour",e.styles.timeRange,e.labels,n,s,e.timeStepHour,a)}\n      ${TimeRange("minute",e.styles.timeRange,e.labels,i,o,e.timeStepMinute,e.context.selectedMinutes)}\n    </div>\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce((n,s,i)=>[...n,{id:i,titleShort:e.context.locale.weekdays.short[i],titleLong:s,isWeekend:t.includes(i)}],[]),s=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc="week"]').forEach(t=>{const n=e.onClickWeekDay?document.createElement("button"):document.createElement("b");e.onClickWeekDay&&(n.type="button"),s.forEach(s=>{const i=n.cloneNode(!0);i.innerText=s.titleShort,i.className=e.styles.weekDay,i.role="columnheader",i.ariaLabel=s.titleLong,i.dataset.vcWeekDay=String(s.id),s.isWeekend&&(i.dataset.vcWeekDayOff=""),t.appendChild(i)})})},createYearEl=(e,t,n,s,i)=>{const o=t.cloneNode(!1);return o.className=e.styles.yearsYear,o.innerText=String(i),o.ariaLabel=String(i),o.role="gridcell",o.dataset.vcYearsYear=`${i}`,s&&(o.ariaDisabled="true"),s&&(o.tabIndex=-1),o.disabled=s,setYearModifier(e,o,"year",n===i,!1),o},createYears=(e,t)=>{var n;const s=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,"currentType","year"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const i=e.context.mainElement.querySelector('[data-vc="years"]');if(!e.selectionYearsMode||!i)return;const o="multiple"!==e.type||e.context.selectedYear===s?0:1,a=document.createElement("button");a.type="button";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+o||t>getDate(e.context.dateMax).getFullYear(),l=createYearEl(e,a,s,n,t);i.appendChild(l),e.onCreateYearEls&&e.onCreateYearEls(e,l)}null==(n=e.context.mainElement.querySelector("[data-vc-years-year]:not([disabled])"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver(e=>{for(let s=0;s<e.length;s++)if(e[s].attributeName===t){n();break}}).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?"dark":"light"),"system"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc="calendar"]');null==t||t.forEach(t=>setTheme(t,e.matches?"dark":"light"))};t.addEventListener?t.addEventListener("change",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,s=e.themeAttrDetect.replace(/^.*\[(.+)\]/g,(e,t)=>t);if(!n||"system"===n.getAttribute(s))return void trackChangesThemeInSystemSettings(e,t);const i=n.getAttribute(s);i?(setTheme(e.context.mainElement,i),trackChangesHTMLElement(n,s,()=>{const t=n.getAttribute(s);t&&setTheme(e.context.mainElement,t)})):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{"not all"!==window.matchMedia("(prefers-color-scheme)").media?"system"===e.selectedTheme?detectTheme(e,window.matchMedia("(prefers-color-scheme: dark)")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,"light")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\./,""),getLocaleWeekday=(e,t,n)=>{const s=new Date(`1978-01-0${t+1}T00:00:00.000Z`),i=s.toLocaleString(n,{weekday:"short",timeZone:"UTC"}),o=s.toLocaleString(n,{weekday:"long",timeZone:"UTC"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(i)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(o))},getLocaleMonth=(e,t,n)=>{const s=new Date(`1978-${String(t+1).padStart(2,"0")}-01T00:00:00.000Z`),i=s.toLocaleString(n,{month:"short",timeZone:"UTC"}),o=s.toLocaleString(n,{month:"long",timeZone:"UTC"});e.context.locale.months.short.push(capitalizeFirstLetter(i)),e.context.locale.months.long.push(capitalizeFirstLetter(o))},getLocale=e=>{var t,n,s,i,o,a,l,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if("string"==typeof e.locale){if("string"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},(t,n)=>getLocaleWeekday(e,n,e.locale)),Array.from({length:12},(t,n)=>getLocaleMonth(e,n,e.locale))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(i=null==(s=e.locale)?void 0:s.weekdays)?void 0:i.long[6])&&(null==(a=null==(o=e.locale)?void 0:o.months)?void 0:a.short[11])&&(null==(r=null==(l=e.locale)?void 0:l.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,"locale",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const s=t.target;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)||"button"!==s.localName)return;const i=Array.from(e.context.mainElement.querySelectorAll('[data-vc="calendar"] button')),o=i.indexOf(s);if(-1===o)return;const a=(l=i[o]).hasAttribute("data-vc-date-btn")?7:l.hasAttribute("data-vc-months-month")?4:l.hasAttribute("data-vc-years-year")?5:1;var l;const r=(0,{ArrowUp:()=>Math.max(0,o-a),ArrowDown:()=>Math.min(i.length-1,o+a),ArrowLeft:()=>Math.max(0,o-1),ArrowRight:()=>Math.min(i.length-1,o+1)}[t.key])();null==(n=i[r])||n.focus()};return e.context.mainElement.addEventListener("keydown",t),()=>e.context.mainElement.removeEventListener("keydown",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,"selectedMonth",n.getMonth()),setContext(e,"selectedYear",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest("[data-vc-arrow]");if(n){if(["default","multiple"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if("year"===e.context.currentType&&void 0!==e.context.displayYear){const s={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,"displayYear",e.context.displayYear+s),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||("function"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const s=t.dataset.vcDate,i=t.closest("[data-vc-date][data-vc-date-selected]"),o=canToggleSelection(e);if(i&&!o)return;const a=i?e.context.selectedDates.filter(e=>e!==s):n?[...e.context.selectedDates,s]:[s];setContext(e,"selectedDates",a)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip="hidden",void(t.textContent="");const s=e.context.mainElement.getBoundingClientRect(),i=n.getBoundingClientRect();t.style.left=i.left-s.left+i.width/2+"px",t.style.top=i.bottom-s.top-i.height+"px",t.dataset.vcDateRangeTooltip="visible",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,i,s))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var s,i,o;if(!(null==(i=null==(s=state.self)?void 0:s.context)?void 0:i.selectedDates[0]))return;const a=getDateString(e);(null==(o=state.self.context.disableDates)?void 0:o.includes(a))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date="${a}"]`).forEach(e=>e.dataset.vcDateHover=""),t.forEach(e=>e.dataset.vcDateHover="first"),n.forEach(e=>{"first"===e.dataset.vcDateHover?e.dataset.vcDateHover="first-and-last":e.dataset.vcDateHover="last"}))},removeHoverEffect=()=>{var e,t;(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement)&&state.self.context.mainElement.querySelectorAll("[data-vc-date-hover]").forEach(e=>e.removeAttribute("data-vc-date-hover"))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc="dates"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const s=e.closest("[data-vc-date]");if(!s||state.lastDateEl===s)return;state.lastDateEl=s,createDateRangeTooltip(state.self,state.tooltipEl,s),removeHoverEffect();const i=s.dataset.vcDate,o=getDate(state.self.context.selectedDates[0]),a=getDate(i),l=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${state.self.context.selectedDates[0]}"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${i}"]`),[c,d]=o<a?[l,r]:[r,l],[u,h]=o<a?[o,a]:[a,o];for(let e=new Date(u);e<=h;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest("[data-vc-date-selected]");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame(()=>{e(n),state.isHovering=!1}))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&"Escape"===e.key&&(state.lastDateEl=null,setContext(state.self,"selectedDates",[]),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout(()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()},50)},updateDisabledDates=()=>{var e,t,n,s;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(s=state.self.context.disableDates)?void 0:s[0]))return;const i=getDate(state.self.context.selectedDates[0]),[o,a]=state.self.context.disableDates.map(e=>getDate(e)).reduce(([e,t],n)=>[i>=n?n:e,i<n&&null===t?n:t],[null,null]);o&&setContext(state.self,"displayDateMin",getDateString(new Date(o.setDate(o.getDate()+1)))),a&&setContext(state.self,"displayDateMax",getDateString(new Date(a.setDate(a.getDate()-1)))),state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,"displayDateMin",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector("[data-vc-date-range-tooltip]"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),s=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,"selectedDates",s),e.context.selectedDates.length>1&&e.context.selectedDates.sort((e,t)=>+new Date(e)-+new Date(t))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.addEventListener("keydown",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates)}),reset:()=>{const[n,s]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],i=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],o=parseDates([`${n}:${s}`]).filter(t=>!e.context.disableDates.includes(t)),a=i?e.enableEdgeDatesOnly?[n,s]:o:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,"selectedDates",a),e.disableDatesGaps&&(setContext(e,"displayDateMin",state.rangeMin),setContext(e,"displayDateMax",state.rangeMax)),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave)}}})[1===e.context.selectedDates.length?"set":"reset"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll("[data-vc-date]").forEach(t=>{const n=t.querySelector("[data-vc-date-btn]"),s=t.dataset.vcDate,i=getDate(s).getDay();setDateModifier(e,e.context.selectedYear,t,n,i,s,"current")})},handleClickDate=(e,t)=>{var n;const s=t.target,i=s.closest("[data-vc-date-btn]");if(!e.selectionDatesMode||!["single","multiple","multiple-ranged"].includes(e.selectionDatesMode)||!i)return;const o=i.closest("[data-vc-date]");({single:()=>handleSelectDate(e,o,!1),multiple:()=>handleSelectDate(e,o,!0),"multiple-ranged":()=>handleSelectDateRange(e,o)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort((e,t)=>+new Date(e)-+new Date(t)),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const a=s.closest('[data-vc-date-month="prev"]'),l=s.closest('[data-vc-date-month="next"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"prev"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"next"):updateDateModifier(e),current:()=>updateDateModifier(e)})[a?"prev":l?"next":"current"]()},typeClick=["month","year"],getValue=(e,t,n)=>{const{currentValue:s,columnID:i}=getColumnID(e,t);return"month"===e.context.currentType&&i>=0?n-i:"year"===e.context.currentType&&e.context.selectedYear!==s?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,"year",Number(t.dataset.vcYearsYear)),s=getDate(e.context.dateMin),i=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:a}=getColumnID(e,"year"),l=e.context.selectedMonth<s.getMonth()&&n<=s.getFullYear(),r=e.context.selectedMonth>i.getMonth()-o+a&&n>=i.getFullYear(),c=n<s.getFullYear(),d=n>i.getFullYear(),u=l||c?s.getFullYear():r||d?i.getFullYear():n,h=l||c?s.getMonth():r||d?i.getMonth()-o+a:e.context.selectedMonth;setContext(e,"selectedYear",u),setContext(e,"selectedMonth",h)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column="month"]').querySelector('[data-vc="year"]'),s=getValue(e,"month",Number(t.dataset.vcMonthsMonth)),i=Number(n.dataset.vcYear),o=getDate(e.context.dateMin),a=getDate(e.context.dateMax),l=s<o.getMonth()&&i<=o.getFullYear(),r=s>a.getMonth()&&i>=a.getFullYear();setContext(e,"selectedYear",i),setContext(e,"selectedMonth",l?o.getMonth():r?a.getMonth():s)},handleItemClick=(e,t,n,s)=>{var i;({year:()=>{if("multiple"===e.type)return handleMultipleYearSelection(e,s);setContext(e,"selectedYear",Number(s.dataset.vcYearsYear))},month:()=>{if("multiple"===e.type)return handleMultipleMonthSelection(e,s);setContext(e,"selectedMonth",Number(s.dataset.vcMonthsMonth))}})[n](),{year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}}[n](),e.context.currentType!==e.type?(setContext(e,"currentType",e.type),create(e),null==(i=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||i.focus()):setYearModifier(e,s,n,!0,!0)},handleClickType=(e,t,n)=>{var s;const i=t.target,o=i.closest(`[data-vc="${n}"]`),a={year:()=>createYears(e,i),month:()=>createMonths(e,i)};if(o&&e.onClickTitle&&e.onClickTitle(e,t),o&&e.context.currentType!==n)return a[n]();const l=i.closest(`[data-vc-${n}s-${n}]`);if(l)return handleItemClick(e,t,n,l);const r=i.closest('[data-vc="grid"]'),c=i.closest('[data-vc="column"]');(e.context.currentType===n&&o||"multiple"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,"currentType",e.type),create(e),null==(s=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||s.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach(s=>{n[s]&&t.target&&handleClickType(e,t,s)})},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest("[data-vc-week-number]"),s=e.context.mainElement.querySelectorAll("[data-vc-date-week-number]");if(!n||!s[0])return;const i=Number(n.innerText),o=Number(n.dataset.vcWeekYear),a=Array.from(s).filter(e=>Number(e.dataset.vcDateWeekNumber)===i);e.onClickWeekNumber(e,i,o,a,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest("[data-vc-week-day]"),s=t.target.closest('[data-vc="column"]'),i=s?s.querySelectorAll("[data-vc-date-week-day]"):e.context.mainElement.querySelectorAll("[data-vc-date-week-day]");if(!n||!i[0])return;const o=Number(n.dataset.vcWeekDay),a=Array.from(i).filter(e=>Number(e.dataset.vcDateWeekDay)===o);e.onClickWeekDay(e,o,a,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener("click",t),()=>e.context.mainElement.removeEventListener("click",t)},initMonthsCount=e=>{if("multiple"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if("multiple"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,"displayMonthsCount",e.displayMonthsCount?e.displayMonthsCount:"multiple"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>"today"===e?getLocalDate():e instanceof Date||"number"==typeof e||"string"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,s;const i=resolveDate(e.dateMin,e.dateMin),o=resolveDate(e.dateMax,e.dateMax),a=resolveDate(e.displayDateMin,i),l=resolveDate(e.displayDateMax,o);setContext(e,"dateToday",resolveDate(e.dateToday,e.dateToday)),setContext(e,"displayDateMin",a?getDate(i)>=getDate(a)?i:a:i),setContext(e,"displayDateMax",l?getDate(o)<=getDate(l)?o:l:o);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(a)<getDate(e.context.dateToday);setContext(e,"displayDateMin",r||e.disableAllDates?e.context.dateToday:a),setContext(e,"displayDateMax",e.disableAllDates?e.context.dateToday:l),setContext(e,"disableDates",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort((e,t)=>+new Date(e)-+new Date(t)),setContext(e,"enableDates",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,"disableDates",e.context.disableDates.filter(t=>!e.context.enableDates.includes(t))),e.context.enableDates.length>1&&e.context.enableDates.sort((e,t)=>+new Date(e)-+new Date(t)),(null==(s=e.context.enableDates)?void 0:s[0])&&e.disableAllDates&&(setContext(e,"displayDateMin",e.context.enableDates[0]),setContext(e,"displayDateMax",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,"dateMin",e.displayDisabledDates?i:e.context.displayDateMin),setContext(e,"dateMax",e.displayDisabledDates?o:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,"selectedDates",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&"today"!==e.displayDateMin&&(n=e.displayDateMin,s=new Date,new Date(n).getTime()>s.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,s;if(e.displayDateMax&&"today"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,"selectedMonth",t),setContext(e,"selectedYear",n),setContext(e,"displayYear",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,s=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),s?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,s;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const i=12===e.selectionTimeMode,o=i?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[a,l,r]=null!=(s=null==(n=null==(t=e.selectedTime)?void 0:t.match(o))?void 0:n.slice(1))?s:[];a?i&&!r&&(r="AM"):(a=i?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),l=String(e.timeMinMinute),r=i?Number(transformTime12(String(e.timeMinHour)))>=12?"PM":"AM":null),setContext(e,"selectedHours",a.padStart(2,"0")),setContext(e,"selectedMinutes",l.padStart(2,"0")),setContext(e,"selectedKeeping",r),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:""}`)},initAllVariables=e=>{setContext(e,"currentType",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:s,time:i,locale:o},a=!0)=>{var l;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=i?r.time:e.context.selectedTime,e.selectedDates="only-first"===s&&(null==(l=e.context.selectedDates)?void 0:l[0])?[e.context.selectedDates[0]]:!0===s?r.dates:e.context.selectedDates,o&&setContext(e,"locale",{months:{short:[],long:[]},weekdays:{short:[],long:[]}}),initAllVariables(e),a&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,"multiple-ranged"===e.selectionDatesMode&&s&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement("div");return t.className=e.styles.calendar,t.dataset.vc="calendar",t.dataset.vcInput="",t.dataset.vcCalendarHidden="",setContext(e,"inputModeInit",!0),setContext(e,"isShowInInputMode",!1),setContext(e,"mainElement",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout(()=>show(e)),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,"inputElement",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout(()=>show(e)):createToInput(e)};e.context.inputElement.addEventListener("click",t);const n="function"==typeof e.openOnFocus||!0===e.openOnFocus,s=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener("focus",s);const i=t=>{const n="Tab"===t.key&&!t.shiftKey,s=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key);(n||s)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const s=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),i=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>s(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:s(e.context.mainElement)?e.context.mainElement:null;!i||i.tabIndex<0||(t.preventDefault(),i.focus())})(t)};return e.context.inputElement.addEventListener("keydown",i),()=>{e.context.inputElement.removeEventListener("click",t),n&&e.context.inputElement.removeEventListener("focus",s),e.context.inputElement.removeEventListener("keydown",i)}},init=e=>(setContext(e,"originalElement",e.context.mainElement.cloneNode(!0)),setContext(e,"isInit",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let s=0;s<n.length;s++){const i=n[s];"object"!=typeof e[i]||"object"!=typeof t[i]||t[i]instanceof Date||Array.isArray(t[i])?void 0!==t[i]&&(e[i]=t[i]):replaceProperties(e[i],t[i])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n="left";if(!t||!e)return n;const{canShow:s,parentPositions:i}=getAvailablePosition(e,t),o=s.left&&s.right;return(o&&s.bottom?"center":o&&s.top?["top","center"]:Array.isArray(i)?["bottom"===i[0]?"top":"bottom",...i.slice(1)]:i)||n}const setPosition=(e,t,n)=>{if(!e)return;const s="auto"===n?findBestPickerPosition(e,t):n,i={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},o=Array.isArray(s)?s[0]:"bottom",a=Array.isArray(s)?s[1]:s;t.dataset.vcPosition=o;const{top:l,left:r}=getOffset(e),c=l+i[o];let d=r+i[a];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,"cleanupHandlers",[]),setContext(e,"isShowInInputMode",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute("data-vc-calendar-hidden");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener("resize",t),e.context.cleanupHandlers.push(()=>window.removeEventListener("resize",t));const n=t=>{"Escape"===t.key&&hide(e)};document.addEventListener("keydown",n),e.context.cleanupHandlers.push(()=>document.removeEventListener("keydown",n));const s=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener("click",s,{capture:!0}),e.context.cleanupHandlers.push(()=>document.removeEventListener("click",s,{capture:!0})),e.onShow&&e.onShow(e)},labels={application:"Calendar",navigation:"Calendar Navigation",arrowNext:{month:"Next month",year:"Next list of years"},arrowPrev:{month:"Previous month",year:"Previous list of years"},month:"Select month, current selected month:",months:"List of months",year:"Select year, current selected year:",years:"List of years",week:"Days of the week",weekNumber:"Numbers of weeks in a year",dates:"Dates in the current month",selectingTime:"Selecting a time ",inputHour:"Hours",inputMinute:"Minutes",rangeHour:"Slider for selecting hours",rangeMinute:"Slider for selecting minutes",btnKeeping:"Switch AM/PM, current position:"},styles={calendar:"vc",controls:"vc-controls",grid:"vc-grid",column:"vc-column",header:"vc-header",headerContent:"vc-header__content",month:"vc-month",year:"vc-year",arrowPrev:"vc-arrow vc-arrow_prev",arrowNext:"vc-arrow vc-arrow_next",wrapper:"vc-wrapper",content:"vc-content",months:"vc-months",monthsMonth:"vc-months__month",years:"vc-years",yearsYear:"vc-years__year",week:"vc-week",weekDay:"vc-week__day",weekNumbers:"vc-week-numbers",weekNumbersTitle:"vc-week-numbers__title",weekNumbersContent:"vc-week-numbers__content",weekNumber:"vc-week-number",dates:"vc-dates",datesRow:"vc-dates__row",date:"vc-date",dateBtn:"vc-date__btn",datePopup:"vc-date__popup",dateRangeTooltip:"vc-date-range-tooltip",time:"vc-time",timeContent:"vc-time__content",timeHour:"vc-time__hour",timeMinute:"vc-time__minute",timeKeeping:"vc-time__keeping",timeRanges:"vc-time__ranges",timeRange:"vc-time__range"};class OptionsCalendar{constructor(){__publicField(this,"type","default"),__publicField(this,"inputMode",!1),__publicField(this,"openOnFocus",!0),__publicField(this,"positionToInput","left"),__publicField(this,"firstWeekday",1),__publicField(this,"monthsToSwitch",1),__publicField(this,"themeAttrDetect","html[data-theme]"),__publicField(this,"locale","en"),__publicField(this,"dateToday","today"),__publicField(this,"dateMin","1970-01-01"),__publicField(this,"dateMax","2470-12-31"),__publicField(this,"displayDateMin"),__publicField(this,"displayDateMax"),__publicField(this,"displayDatesOutside",!0),__publicField(this,"displayDisabledDates",!1),__publicField(this,"displayMonthsCount"),__publicField(this,"disableDates",[]),__publicField(this,"disableAllDates",!1),__publicField(this,"disableDatesPast",!1),__publicField(this,"disableDatesGaps",!1),__publicField(this,"disableWeekdays",[]),__publicField(this,"disableToday",!1),__publicField(this,"enableDates",[]),__publicField(this,"enableEdgeDatesOnly",!0),__publicField(this,"enableDateToggle",!0),__publicField(this,"enableWeekNumbers",!1),__publicField(this,"enableMonthChangeOnDayClick",!0),__publicField(this,"enableJumpToSelectedDate",!1),__publicField(this,"selectionDatesMode","single"),__publicField(this,"selectionMonthsMode",!0),__publicField(this,"selectionYearsMode",!0),__publicField(this,"selectionTimeMode",!1),__publicField(this,"selectedDates",[]),__publicField(this,"selectedMonth"),__publicField(this,"selectedYear"),__publicField(this,"selectedHolidays",[]),__publicField(this,"selectedWeekends",[0,6]),__publicField(this,"selectedTime"),__publicField(this,"selectedTheme","system"),__publicField(this,"timeMinHour",0),__publicField(this,"timeMaxHour",23),__publicField(this,"timeMinMinute",0),__publicField(this,"timeMaxMinute",59),__publicField(this,"timeControls","all"),__publicField(this,"timeStepHour",1),__publicField(this,"timeStepMinute",1),__publicField(this,"sanitizerHTML",e=>e),__publicField(this,"onClickDate"),__publicField(this,"onClickWeekDay"),__publicField(this,"onClickWeekNumber"),__publicField(this,"onClickTitle"),__publicField(this,"onClickMonth"),__publicField(this,"onClickYear"),__publicField(this,"onClickArrow"),__publicField(this,"onChangeTime"),__publicField(this,"onChangeToInput"),__publicField(this,"onCreateDateRangeTooltip"),__publicField(this,"onCreateDateEls"),__publicField(this,"onCreateMonthEls"),__publicField(this,"onCreateYearEls"),__publicField(this,"onInit"),__publicField(this,"onUpdate"),__publicField(this,"onDestroy"),__publicField(this,"onShow"),__publicField(this,"onHide"),__publicField(this,"popups",{}),__publicField(this,"labels",__spreadValues({},labels)),__publicField(this,"layouts",{default:"",multiple:"",month:"",year:""}),__publicField(this,"styles",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var s;super(),__publicField(this,"init",()=>init(this)),__publicField(this,"update",e=>update(this,e)),__publicField(this,"destroy",()=>destroy(this)),__publicField(this,"show",()=>show(this)),__publicField(this,"hide",()=>hide(this)),__publicField(this,"set",(e,t)=>set(this,e,t)),__publicField(this,"context"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,"mainElement","string"==typeof t?null!=(s=e.memoizedElements.get(t))?s:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,"memoizedElements",new Map);let Calendar=_Calendar;const NAME$f="datepicker",DATA_KEY$b="bs.datepicker",EVENT_KEY$c=`.${DATA_KEY$b}`,DATA_API_KEY$7=".data-api",EVENT_CHANGE$2=`change${EVENT_KEY$c}`,EVENT_SHOW$4=`show${EVENT_KEY$c}`,EVENT_SHOWN$3=`shown${EVENT_KEY$c}`,EVENT_HIDE$3=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$c}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$c}.data-api`,SELECTOR_DATA_TOGGLE$6='[data-bs-toggle="datepicker"]',HIDE_DELAY=100,Default$e={datepickerTheme:null,dateMin:null,dateMax:null,dateFormat:null,displayElement:null,displayMonthsCount:1,firstWeekday:1,inline:!1,locale:"default",positionElement:null,selectedDates:[],selectionMode:"single",placement:"left",vcpOptions:{}},DefaultType$e={datepickerTheme:"(null|string)",dateMin:"(null|string|number|object)",dateMax:"(null|string|number|object)",dateFormat:"(null|object|function)",displayElement:"(null|string|element|boolean)",displayMonthsCount:"number",firstWeekday:"number",inline:"boolean",locale:"string",positionElement:"(null|string|element)",selectedDates:"array",selectionMode:"string",placement:"string",vcpOptions:"object"};class Datepicker extends BaseComponent{constructor(e,t){super(e,t),this._calendar=null,this._isShown=!1,this._initCalendar()}static get Default(){return Default$e}static get DefaultType(){return DefaultType$e}static get NAME(){return NAME$f}toggle(){if(!this._config.inline)return this._isShown?this.hide():this.show()}show(){this._config.inline||!this._calendar||isDisabled(this._element)||this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$4).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$3))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented||(this._calendar.hide(),this._isShown=!1,EventHandler.trigger(this._element,EVENT_HIDDEN$5)))}dispose(){this._themeObserver&&(this._themeObserver.disconnect(),this._themeObserver=null),this._calendar&&this._calendar.destroy(),this._calendar=null,super.dispose()}getSelectedDates(){const e=this._calendar?.context?.selectedDates;return e?[...e]:[]}setSelectedDates(e){this._calendar&&this._calendar.set({selectedDates:e})}_initCalendar(){this._isInput="INPUT"===this._element.tagName,this._isInline=this._config.inline,this._isInline&&!this._isInput&&(this._boundInput=this._element.querySelector('input[type="hidden"], input[name]')),this._positionElement=this._resolvePositionElement(),this._displayElement=this._resolveDisplayElement();const e=this._buildCalendarOptions();this._calendar=new Calendar(this._positionElement,e),this._calendar.init(),this._setupThemeObserver(),this._isInput&&this._element.value&&this._parseInputValue(),this._updateDisplayWithSelectedDates()}_updateDisplayWithSelectedDates(){const{selectedDates:e}=this._config;if(!e||0===e.length)return;const t=this._formatDateForInput(e);this._isInput&&(this._element.value=t),this._boundInput&&(this._boundInput.value=e.join(",")),this._displayElement&&(this._displayElement.textContent=t)}_resolvePositionElement(){let{positionElement:e}=this._config;if("string"==typeof e&&(e=document.querySelector(e)),!e&&this._isInput&&!this._isInline){const t=this._element.closest(".form-adorn");t&&(e=t)}return e||this._element}_resolveDisplayElement(){const{displayElement:e}=this._config;return"string"==typeof e?document.querySelector(e):!0===e||null===e&&!this._isInput&&!this._isInline?this._element.querySelector("[data-bs-datepicker-display]")||this._element:e}_getThemeAncestor(){return this._element.closest("[data-bs-theme]")}_getEffectiveTheme(){const{datepickerTheme:e}=this._config;if(e)return e;const t=this._getThemeAncestor();return t?.getAttribute("data-bs-theme")||null}_syncThemeAttribute(e){if(!e)return;const t=this._getEffectiveTheme();t?e.setAttribute("data-bs-theme",t):e.removeAttribute("data-bs-theme")}_setupThemeObserver(){const e=this._getThemeAncestor();e&&!this._config.datepickerTheme&&(this._themeObserver=new MutationObserver(()=>{this._syncThemeAttribute(this._calendar?.context?.mainElement)}),this._themeObserver.observe(e,{attributes:!0,attributeFilter:["data-bs-theme"]}))}_buildCalendarOptions(){const e=this._getEffectiveTheme(),t=e&&"auto"!==e?e:"system",n={...this._config.vcpOptions,inputMode:!this._isInline,positionToInput:this._config.placement,firstWeekday:this._config.firstWeekday,locale:this._config.locale,selectionDatesMode:this._config.selectionMode,selectedDates:this._config.selectedDates,displayMonthsCount:this._config.displayMonthsCount,type:this._config.displayMonthsCount>1?"multiple":"default",selectedTheme:t,themeAttrDetect:"[data-bs-theme]",onClickDate:(e,t)=>this._handleDateClick(e,t),onInit:e=>{this._syncThemeAttribute(e.context.mainElement)},onShow:()=>{this._isShown=!0,this._syncThemeAttribute(this._calendar.context.mainElement)},onHide:()=>{this._isShown=!1}};if(this._config.selectedDates.length>0){const e=this._parseDate(this._config.selectedDates[0]);n.selectedMonth=e.getMonth(),n.selectedYear=e.getFullYear()}return this._config.dateMin&&(n.dateMin=this._config.dateMin),this._config.dateMax&&(n.dateMax=this._config.dateMax),n}_handleDateClick(e,t){const n=[...e.context.selectedDates];if(n.length>0){const e=this._formatDateForInput(n);this._isInput&&(this._element.value=e),this._boundInput&&(this._boundInput.value=n.join(",")),this._displayElement&&(this._displayElement.textContent=e)}EventHandler.trigger(this._element,EVENT_CHANGE$2,{dates:n,event:t}),this._maybeHideAfterSelection(n)}_maybeHideAfterSelection(e){this._isInline||("single"===this._config.selectionMode&&e.length>0||"multiple-ranged"===this._config.selectionMode&&e.length>=2)&&setTimeout(()=>this.hide(),100)}_parseDate(e){const[t,n,s]=e.split("-");return new Date(t,n-1,s)}_formatDate(e){const t=this._parseDate(e),n="default"===this._config.locale?void 0:this._config.locale,{dateFormat:s}=this._config;return"function"==typeof s?s(t,n):s&&"object"==typeof s?new Intl.DateTimeFormat(n,s).format(t):t.toLocaleDateString(n)}_formatDateForInput(e){if(0===e.length)return"";if(1===e.length)return this._formatDate(e[0]);const t="multiple-ranged"===this._config.selectionMode?" – ":", ";return e.map(e=>this._formatDate(e)).join(t)}_parseInputValue(){const e=this._element.value.trim();if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime())){const e=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`;this._calendar.set({selectedDates:[e]})}}}EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$6,function(e){"INPUT"!==this.tagName&&"true"!==this.dataset.bsInline&&(e.preventDefault(),Datepicker.getOrCreateInstance(this).toggle())}),EventHandler.on(document,EVENT_FOCUSIN_DATA_API,SELECTOR_DATA_TOGGLE$6,function(){"INPUT"===this.tagName&&Datepicker.getOrCreateInstance(this).show()}),EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$c}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const CLASS_NAME_OPEN="dialog-open";class DialogBase extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._openedAsModal=!1,this._addDialogListeners()}static get NAME(){return"dialogbase"}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){if(this._element.open||this._isTransitioning)return;if(EventHandler.trigger(this._element,this.constructor.eventName("show"),{relatedTarget:e}).defaultPrevented)return;this._isTransitioning=!0,this._onBeforeShow();const{modal:t,preventBodyScroll:n}=this._getShowOptions();this._showElement({modal:t,preventBodyScroll:n}),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("shown"),{relatedTarget:e})},this._element,this._isAnimated())}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented||(this._isTransitioning=!0,this._hideElement(),this._queueCallback(()=>{this._element.open&&this._closeAndCleanup(),this._element.classList.remove("hiding"),this._onAfterHide(),this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("hidden"))},this._element,this._isAnimated())))}dispose(){this._element.open&&this._closeAndCleanup(),super.dispose()}_getShowOptions(){return{modal:!0,preventBodyScroll:!0}}_onBeforeShow(){}_onAfterHide(){}_isAnimated(){return!this._element.classList.contains(this._getInstantClassName())}_getInstantClassName(){return"dialog-instant"}_getStaticClassName(){return"dialog-static"}_onCancel(){}_showElement({modal:e=!0,preventBodyScroll:t=!0}={}){this._openedAsModal=e,e?this._element.showModal():this._element.show(),t&&document.documentElement.classList.add("dialog-open")}_hideElement(){this._hideChildComponents(),this._element.classList.add("hiding"),this._shouldDeferClose()||this._closeAndCleanup()}_closeAndCleanup(){this._element.close(),this._openedAsModal=!1,document.querySelector("dialog[open]:modal")||document.documentElement.classList.remove("dialog-open")}_shouldDeferClose(){return!1}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,this.constructor.eventName("hidePrevented")).defaultPrevented)return;const e=this._getStaticClassName();this._element.classList.add(e),this._queueCallback(()=>{this._element.classList.remove(e)},this._element)}_hideChildComponents(){for(const e of SelectorEngine.find('[data-bs-toggle="tooltip"], [data-bs-toggle="popover"]',this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}for(const e of SelectorEngine.find(".toast.show",this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}}_addDialogListeners(){const e=this.constructor.EVENT_KEY;EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(this._onCancel(),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,`keydown${e}`,e=>{"Escape"!==e.key||this._openedAsModal||(e.preventDefault(),this._config.keyboard&&(this._onCancel(),this.hide()))}),EventHandler.on(this._element,`click${e}`,e=>{e.target===this._element&&this._openedAsModal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}const NAME$e="dialog",DATA_KEY$a="bs.dialog",EVENT_KEY$b=`.${DATA_KEY$a}`,DATA_API_KEY$6=".data-api",EVENT_SHOW$3=`show${EVENT_KEY$b}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$b}`,EVENT_CANCEL=`cancel${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$b}.data-api`,CLASS_NAME_NONMODAL="dialog-nonmodal",CLASS_NAME_INSTANT="dialog-instant",CLASS_NAME_SWAP_IN="dialog-swap-in",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',Default$d={backdrop:!0,keyboard:!0,modal:!0},DefaultType$d={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends DialogBase{static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}handleUpdate(){}_getShowOptions(){return{modal:this._config.modal,preventBodyScroll:this._config.modal}}_onBeforeShow(){this._config.modal||this._element.classList.add("dialog-nonmodal")}_onAfterHide(){this._element.classList.remove("dialog-nonmodal")}_shouldDeferClose(){return this._isAnimated()}_onCancel(){EventHandler.trigger(this._element,EVENT_CANCEL)}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$5,function(e){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$3,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$4,()=>{isVisible(this)&&this.focus({preventScroll:!0})})});const n=Manipulator.getDataAttributes(this),s=this.closest("dialog[open]");if(s&&s!==t){const e=Dialog.getOrCreateInstance(t,n);t.classList.add("dialog-swap-in"),e.show(this),EventHandler.one(t,`shown${EVENT_KEY$b}`,()=>{t.classList.remove("dialog-swap-in")});const i=Dialog.getInstance(s);return void(i&&(s.classList.add("dialog-instant"),EventHandler.one(s,EVENT_HIDDEN$4,()=>{s.classList.remove("dialog-instant")}),i.hide()))}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$d="navoverflow",DATA_KEY$9="bs.navoverflow",EVENT_KEY$a=`.${DATA_KEY$9}`,EVENT_UPDATE=`update${EVENT_KEY$a}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$a}`,CLASS_NAME_OVERFLOW="nav-overflow",CLASS_NAME_OVERFLOW_MENU="nav-overflow-menu",CLASS_NAME_HIDDEN="d-none",SELECTOR_NAV_ITEM=".nav-item",SELECTOR_NAV_LINK=".nav-link",SELECTOR_OVERFLOW_TOGGLE=".nav-overflow-toggle",SELECTOR_OVERFLOW_MENU=".nav-overflow-menu",SELECTOR_CUSTOM_ICON="[data-bs-overflow-icon]",CLASS_NAME_KEEP="nav-overflow-keep",Default$c={collapseBelow:0,iconPlacement:"start",menuPlacement:"bottom-end",moreText:"More",moreIcon:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></svg>',threshold:0},DefaultType$c={collapseBelow:"(number|string)",iconPlacement:"string",menuPlacement:"string",moreText:"string",moreIcon:"string",threshold:"number"};class NavOverflow extends BaseComponent{constructor(e,t){super(e,t),this._items=[],this._overflowItems=[],this._overflowMenu=null,this._overflowToggle=null,this._resizeObserver=null,this._collapseBelow=0,this._isInitialized=!1,this._init()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}update(){this._calculateOverflow(),EventHandler.trigger(this._element,EVENT_UPDATE)}dispose(){this._resizeObserver&&this._resizeObserver.disconnect(),this._restoreItems(),this._overflowToggle&&this._overflowToggle.parentElement&&this._overflowToggle.parentElement.remove(),super.dispose()}_init(){this._element.classList.add("nav-overflow"),this._items=[...SelectorEngine.find(".nav-item",this._element)];for(const[e,t]of this._items.entries())t.dataset.bsNavOrder=e;this._collapseBelow=this._resolveCollapseBelow(),this._createOverflowMenu(),this._setupResizeObserver(),this._calculateOverflow(),this._isInitialized=!0}_createOverflowMenu(){if(this._overflowToggle=SelectorEngine.findOne(".nav-overflow-toggle",this._element),this._overflowToggle)return void(this._overflowMenu=SelectorEngine.findOne(".nav-overflow-menu",this._element));const e=`<span class="nav-overflow-icon">${this._resolveIcon()}</span>`,t=`<span class="nav-overflow-text">${this._config.moreText}</span>`,n="end"===this._config.iconPlacement?`${t}${e}`:`${e}${t}`,s=document.createElement("li");s.className="nav-item nav-overflow-item",s.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="${this._config.menuPlacement}" aria-expanded="false">\n        ${n}\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(s),this._overflowToggle=s.querySelector(".nav-overflow-toggle"),this._overflowMenu=s.querySelector(".nav-overflow-menu")}_resolveIcon(){const e=SelectorEngine.findOne(SELECTOR_CUSTOM_ICON,this._element);if(!e)return this._config.moreIcon;const t=e.cloneNode(!0);t.removeAttribute("data-bs-overflow-icon");const n=t.outerHTML;return e.remove(),n}_resolveCollapseBelow(){const e=this._config.collapseBelow;if("number"==typeof e)return e;if("string"==typeof e&&""!==e){const t=getComputedStyle(document.documentElement).getPropertyValue(`--bs-breakpoint-${e}`);return Number.parseFloat(t)||0}return 0}_setupResizeObserver(){"undefined"!=typeof ResizeObserver?(this._resizeObserver=new ResizeObserver(()=>{this._calculateOverflow()}),this._resizeObserver.observe(this._element)):EventHandler.on(window,"resize",()=>this._calculateOverflow())}_calculateOverflow(){this._restoreItems();const e=this._element.offsetWidth,t=this._overflowToggle?.closest(".nav-item");if(this._collapseBelow>0&&e<this._collapseBelow){const e=this._items.filter(e=>!e.classList.contains(CLASS_NAME_KEEP));return this._moveToOverflow(e),t&&(e.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),void(e.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:e.length,visibleCount:this._items.length-e.length}))}let n=0;const s=[],i=e-(t?.offsetWidth||0)-this._items.filter(e=>e.classList.contains(CLASS_NAME_KEEP)).reduce((e,t)=>e+t.offsetWidth,0)-10;for(const e of this._items)e.classList.contains(CLASS_NAME_KEEP)||(n+=e.offsetWidth,n>i&&s.push(e));if(this._items.length-s.length<this._config.threshold&&this._items.length>this._config.threshold){const e=this._items.slice(this._config.threshold).filter(e=>!e.classList.contains(CLASS_NAME_KEEP));s.length=0,s.push(...e)}this._moveToOverflow(s),t&&(s.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),s.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:s.length,visibleCount:this._items.length-s.length})}_moveToOverflow(e){if(this._overflowMenu){this._overflowMenu.innerHTML="",this._overflowItems=[];for(const t of e){const e=SelectorEngine.findOne(".nav-link",t);if(!e)continue;const n=e.cloneNode(!0);n.className="menu-item",e.classList.contains("active")&&n.classList.add("active"),(e.classList.contains("disabled")||e.hasAttribute("disabled"))&&n.classList.add("disabled"),this._overflowMenu.append(n),t.classList.add("d-none"),t.dataset.bsNavOverflow="true",this._overflowItems.push(t)}}}_restoreItems(){for(const e of this._items)e.classList.remove("d-none"),delete e.dataset.bsNavOverflow;this._overflowMenu&&(this._overflowMenu.innerHTML=""),this._overflowItems=[]}}EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find('[data-bs-toggle="nav-overflow"]'))NavOverflow.getOrCreateInstance(e)});const NAME$c="swipe",EVENT_KEY$9=".bs.swipe",EVENT_TOUCHSTART="touchstart.bs.swipe",EVENT_TOUCHMOVE="touchmove.bs.swipe",EVENT_TOUCHEND="touchend.bs.swipe",EVENT_POINTERDOWN="pointerdown.bs.swipe",EVENT_POINTERUP="pointerup.bs.swipe",POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$b={endCallback:null,leftCallback:null,rightCallback:null,upCallback:null,downCallback:null},DefaultType$b={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)",upCallback:"(function|null)",downCallback:"(function|null)"};class Swipe extends Config{constructor(e,t){super(),this._element=e,e&&Swipe.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._deltaY=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){if(!this._supportPointerEvents)return this._deltaX=e.touches[0].clientX,void(this._deltaY=e.touches[0].clientY);this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX,this._deltaY=e.clientY)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX,this._deltaY=e.clientY-this._deltaY),this._handleSwipe(),execute(this._config.endCallback)}_move(e){if(e.touches&&e.touches.length>1)return this._deltaX=0,void(this._deltaY=0);this._deltaX=e.touches[0].clientX-this._deltaX,this._deltaY=e.touches[0].clientY-this._deltaY}_handleSwipe(){const e=Math.abs(this._deltaX),t=Math.abs(this._deltaY);if(t>e&&t>40){const e=this._deltaY>0?"down":"up";return this._deltaX=0,this._deltaY=0,void execute("down"===e?this._config.downCallback:this._config.upCallback)}if(e>40){const t=e/this._deltaX;if(this._deltaX=0,this._deltaY=0,!t)return;return void execute(t>0?this._config.rightCallback:this._config.leftCallback)}this._deltaX=0,this._deltaY=0}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,e=>this._start(e)),EventHandler.on(this._element,EVENT_POINTERUP,e=>this._end(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,e=>this._start(e)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>this._move(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$b="drawer",DATA_KEY$8="bs.drawer",EVENT_KEY$8=`.${DATA_KEY$8}`,DATA_API_KEY$5=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$8}.data-api`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$8}`,EVENT_RESIZE$1=`resize${EVENT_KEY$8}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$8}.data-api`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="drawer"]',Default$a={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$a={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Drawer extends DialogBase{constructor(e,t){super(e,t),this._swipeHelper=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_getShowOptions(){return{modal:Boolean(this._config.backdrop)||!this._config.scroll,preventBodyScroll:!this._config.scroll}}_onBeforeShow(){this._initSwipe()}_getInstantClassName(){return"drawer-instant"}_getStaticClassName(){return"drawer-static"}_initSwipe(){if(this._swipeHelper||!Swipe.isSupported())return;const e={},t=this._element;t.classList.contains("drawer-bottom")?e.downCallback=()=>this.hide():t.classList.contains("drawer-top")?e.upCallback=()=>this.hide():t.classList.contains("drawer-end")?isRTL$1()?e.leftCallback=()=>this.hide():e.rightCallback=()=>this.hide():isRTL$1()?e.rightCallback=()=>this.hide():e.leftCallback=()=>this.hide(),this._swipeHelper=new Swipe(t,e)}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$4,function(e){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus({preventScroll:!0})});const n=SelectorEngine.findOne("dialog.drawer[open]");n&&n!==t&&Drawer.getInstance(n).hide(),Drawer.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find("dialog.drawer[open]"))Drawer.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE$1,()=>{for(const e of SelectorEngine.find('dialog[open][class*="\\:drawer"]'))"fixed"!==getComputedStyle(e).position&&Drawer.getOrCreateInstance(e).hide()}),enableDismissTrigger(Drawer);const NAME$a="strength",DATA_KEY$7="bs.strength",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$7}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$9={input:null,minLength:8,messages:{weak:"Weak",fair:"Fair",good:"Good",strong:"Strong"},weights:{minLength:1,extraLength:1,lowercase:1,uppercase:1,numbers:1,special:1,multipleSpecial:1,longPassword:1},thresholds:[2,4,6],scorer:null},DefaultType$9={input:"(string|element|null)",minLength:"number",messages:"object",weights:"object",thresholds:"array",scorer:"(function|null)"};class Strength extends BaseComponent{constructor(e,t){super(e,t),this._input=this._getInput(),this._segments=SelectorEngine.find(".strength-segment",this._element),this._textElement=SelectorEngine.findOne(".strength-text",this._element.parentElement),this._currentStrength=null,this._input&&(this._addEventListeners(),this._evaluate())}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}getStrength(){return this._currentStrength}evaluate(){this._evaluate()}_getInput(){if(this._config.input)return"string"==typeof this._config.input?SelectorEngine.findOne(this._config.input):this._config.input;const e=this._element.parentElement;return SelectorEngine.findOne('input[type="password"]',e)}_addEventListeners(){EventHandler.on(this._input,"input",()=>this._evaluate()),EventHandler.on(this._input,"change",()=>this._evaluate())}_evaluate(){const e=this._input.value,t=this._calculateScore(e),n=this._scoreToStrength(t);n!==this._currentStrength&&(this._currentStrength=n,this._updateUI(n,t),EventHandler.trigger(this._element,EVENT_STRENGTH_CHANGE,{strength:n,score:t,password:e.length>0?"***":""}))}_calculateScore(e){if(!e)return 0;if("function"==typeof this._config.scorer)return this._config.scorer(e);const{weights:t}=this._config;let n=0;return e.length>=this._config.minLength&&(n+=t.minLength),e.length>=this._config.minLength+4&&(n+=t.extraLength),/[a-z]/.test(e)&&(n+=t.lowercase),/[A-Z]/.test(e)&&(n+=t.uppercase),/\d/.test(e)&&(n+=t.numbers),/[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.special),/[!@#$%^&*(),.?":{}|<>].*[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.multipleSpecial),e.length>=16&&(n+=t.longPassword),n}_scoreToStrength(e){if(0===e)return null;const[t,n,s]=this._config.thresholds;return e<=t?"weak":e<=n?"fair":e<=s?"good":"strong"}_updateUI(e){e?this._element.dataset.bsStrength=e:delete this._element.dataset.bsStrength;const t=e?STRENGTH_LEVELS.indexOf(e):-1;for(const[e,n]of this._segments.entries())e<=t?n.classList.add("active"):n.classList.remove("active");if(this._textElement)if(e&&this._config.messages[e]){this._textElement.textContent=this._config.messages[e],this._textElement.dataset.bsStrength=e;const t={weak:"danger",fair:"warning",good:"info",strong:"success"};this._textElement.style.setProperty("--strength-color",`var(--${t[e]}-text)`)}else this._textElement.textContent="",delete this._textElement.dataset.bsStrength}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$7}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$9="otpInput",DATA_KEY$6="bs.otpInput",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$6}`,EVENT_INPUT$1=`input${EVENT_KEY$6}`,EVENT_DOMCONTENT_LOADED=`DOMContentLoaded${EVENT_KEY$6}.data-api`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT$1="input",SYNC_EVENTS=["blur","keyup","click","select"],CLASS_NAME_INPUT="otp-input",CLASS_NAME_RENDERED="otp-rendered",CLASS_NAME_SLOTS="otp-slots",CLASS_NAME_SLOT="otp-slot",CLASS_NAME_SLOT_FILLED="otp-slot-filled",CLASS_NAME_SLOT_ACTIVE="otp-slot-active",CLASS_NAME_SEPARATOR="otp-separator",MASK_CHARACTER="•",TYPES={numeric:{inputmode:"numeric",pattern:"[0-9]*",filter:/[^0-9]/g},alphanumeric:{inputmode:"text",pattern:"[A-Za-z0-9]*",filter:/[^A-Za-z0-9]/g},alpha:{inputmode:"text",pattern:"[A-Za-z]*",filter:/[^A-Za-z]/g}},Default$8={groups:null,length:null,mask:!1,separator:"·",type:"numeric"},DefaultType$8={groups:"(array|null)",length:"(number|null)",mask:"boolean",separator:"string",type:"string"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne("input",this._element),this._input&&(this._type=TYPES[this._config.type]||TYPES.numeric,this._length=this._resolveLength(),this._slots=[],this._setupInput(),this._renderSlots(),this._addEventListeners(),this._render())}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}getValue(){return this._input.value}setValue(e){this._input.value=this._sanitize(String(e)),this._render(),this._checkComplete()}clear(){this._input.value="",this._render(),this._input.focus()}focus(){this._input.focus();const e=this._input.value.length;this._input.setSelectionRange(e,e),this._render()}dispose(){EventHandler.off(this._input,"input",this._onInput),EventHandler.off(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.off(this._input,e,this._onSync);this._slotsContainer?.remove(),this._element.classList.remove("otp-rendered"),super.dispose()}_resolveLength(){if(this._config.length)return this._config.length;const e=Number.parseInt(this._input.getAttribute("maxlength"),10);return Number.isNaN(e)||e<1?6:e}_setupInput(){const e=this._input;"number"!==e.type&&"password"!==e.type||(e.type="text"),e.classList.add("otp-input"),e.setAttribute("maxlength",String(this._length)),e.setAttribute("inputmode",this._type.inputmode),e.setAttribute("pattern",this._type.pattern),e.getAttribute("autocomplete")||e.setAttribute("autocomplete","one-time-code"),e.value&&(e.value=this._sanitize(e.value))}_renderSlots(){const e=document.createElement("div");e.className="otp-slots",e.setAttribute("aria-hidden","true");const{groups:t}=this._config;let n=0,s=0;for(let i=0;i<this._length;i++){const o=document.createElement("div");if(o.className="otp-slot",e.append(o),this._slots.push(o),Array.isArray(t)&&t.length>0&&(s++,s===t[n]&&i<this._length-1)){const i=document.createElement("div");i.className="otp-separator",i.textContent=this._config.separator,e.append(i),n=Math.min(n+1,t.length-1),s=0}}this._slotsContainer=e,this._element.append(e),this._element.classList.add("otp-rendered")}_addEventListeners(){this._onInput=()=>this._handleInput(),this._onFocus=()=>this.focus(),this._onSync=()=>this._render(),EventHandler.on(this._input,"input",this._onInput),EventHandler.on(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.on(this._input,e,this._onSync)}_handleInput(){const e=this._sanitize(this._input.value);e!==this._input.value&&(this._input.value=e),this._render(),EventHandler.trigger(this._element,EVENT_INPUT$1,{value:this._input.value}),this._checkComplete()}_sanitize(e){return e.replace(this._type.filter,"").slice(0,this._length)}_render(){const{value:e}=this._input,t=document.activeElement===this._input,n=Math.min(this._input.selectionStart??e.length,this._length-1);for(const[s,i]of this._slots.entries()){const o=e[s]??"";i.textContent=o&&this._config.mask?"•":o,i.classList.toggle("otp-slot-filled",Boolean(o)),i.classList.toggle("otp-slot-active",t&&s===n)}}_checkComplete(){const{value:e}=this._input;e.length===this._length&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,EVENT_DOMCONTENT_LOADED,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const NAME$8="chips",DATA_KEY$5="bs.chips",EVENT_KEY$5=".bs.chips",DATA_API_KEY$2=".data-api",EVENT_ADD="add.bs.chips",EVENT_REMOVE="remove.bs.chips",EVENT_CHANGE$1="change.bs.chips",EVENT_SELECT="select.bs.chips",SELECTOR_DATA_CHIPS="[data-bs-chips]",SELECTOR_GHOST_INPUT=".form-ghost",SELECTOR_CHIP=".chip",SELECTOR_CHIP_DISMISS=".chip-dismiss",CLASS_NAME_CHIP="chip",CLASS_NAME_CHIP_DISMISS="chip-dismiss",CLASS_NAME_ACTIVE$2="active",DEFAULT_DISMISS_ICON='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Default$7={separator:",",allowDuplicates:!1,maxChips:null,placeholder:"",dismissible:!0,dismissIcon:DEFAULT_DISMISS_ICON,createOnBlur:!0},DefaultType$7={separator:"(string|null)",allowDuplicates:"boolean",maxChips:"(number|null)",placeholder:"string",dismissible:"boolean",dismissIcon:"string",createOnBlur:"boolean"};class Chips extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne(".form-ghost",this._element),this._chips=[],this._selectedChips=new Set,this._anchorChip=null,this._input||this._createInput(),this._initializeExistingChips(),this._addEventListeners()}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}add(e){const t=String(e).trim();if(!t)return null;if(!this._config.allowDuplicates&&this._chips.includes(t))return null;if(null!==this._config.maxChips&&this._chips.length>=this._config.maxChips)return null;if(EventHandler.trigger(this._element,EVENT_ADD,{value:t,relatedTarget:this._input}).defaultPrevented)return null;const n=this._createChip(t);return this._element.insertBefore(n,this._input),this._chips.push(t),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),n}remove(e){let t,n;return"string"==typeof e?(n=e,t=this._findChipByValue(n)):(t=e,n=this._getChipValue(t)),!(!t||!n)&&(!EventHandler.trigger(this._element,EVENT_REMOVE,{value:n,chip:t,relatedTarget:this._input}).defaultPrevented&&(this._selectedChips.delete(t),this._anchorChip===t&&(this._anchorChip=null),t.remove(),this._chips=this._chips.filter(e=>e!==n),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),!0))}removeSelected(){const e=[...this._selectedChips];for(const t of e)this.remove(t);this._input?.focus()}getValues(){return[...this._chips]}getSelectedValues(){return[...this._selectedChips].map(e=>this._getChipValue(e))}clear(){const e=SelectorEngine.find(".chip",this._element);for(const t of e)t.remove();this._chips=[],this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:[]})}clearSelection(){for(const e of this._selectedChips)e.classList.remove("active");this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_SELECT,{selected:[]})}selectChip(e,t={}){const{addToSelection:n=!1,rangeSelect:s=!1}=t,i=this._getChipElements();if(i.includes(e)){if(s&&this._anchorChip){const t=i.indexOf(this._anchorChip),s=i.indexOf(e),o=Math.min(t,s),a=Math.max(t,s);n||this.clearSelection();for(let e=o;e<=a;e++)this._selectedChips.add(i[e]),i[e].classList.add("active")}else n?this._selectedChips.has(e)?(this._selectedChips.delete(e),e.classList.remove("active")):(this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e):(this.clearSelection(),this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e);EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}focus(){this._input?.focus()}_getChipElements(){return SelectorEngine.find(".chip",this._element)}_createInput(){const e=document.createElement("input");e.type="text",e.className="form-ghost",this._config.placeholder&&(e.placeholder=this._config.placeholder),this._element.append(e),this._input=e}_initializeExistingChips(){const e=SelectorEngine.find(".chip",this._element);for(const t of e){const e=this._getChipValue(t);e&&(this._chips.push(e),this._setupChip(t))}}_setupChip(e){e.setAttribute("tabindex","0"),this._config.dismissible&&!SelectorEngine.findOne(".chip-dismiss",e)&&e.append(this._createDismissButton())}_createChip(e){const t=document.createElement("span");return t.className="chip",t.dataset.bsChipValue=e,t.append(document.createTextNode(e)),this._setupChip(t),t}_createDismissButton(){const e=document.createElement("button");return e.type="button",e.className="chip-dismiss",e.setAttribute("aria-label","Remove"),e.setAttribute("tabindex","-1"),e.innerHTML=this._config.dismissIcon,e}_findChipByValue(e){return this._getChipElements().find(t=>this._getChipValue(t)===e)}_getChipValue(e){if(e.dataset.bsChipValue)return e.dataset.bsChipValue;const t=e.cloneNode(!0),n=SelectorEngine.findOne(".chip-dismiss",t);return n&&n.remove(),t.textContent?.trim()||""}_addEventListeners(){EventHandler.on(this._input,"keydown",e=>this._handleInputKeydown(e)),EventHandler.on(this._input,"input",e=>this._handleInput(e)),EventHandler.on(this._input,"paste",e=>this._handlePaste(e)),EventHandler.on(this._input,"focus",()=>this.clearSelection()),this._config.createOnBlur&&EventHandler.on(this._input,"blur",e=>{e.relatedTarget?.closest(".chip")||this._createChipFromInput()}),EventHandler.on(this._element,"click",".chip",e=>{if(e.target.closest(".chip-dismiss"))return;const t=e.target.closest(".chip");t&&(e.preventDefault(),this.selectChip(t,{addToSelection:e.metaKey||e.ctrlKey,rangeSelect:e.shiftKey}),t.focus())}),EventHandler.on(this._element,"click",".chip-dismiss",e=>{e.stopPropagation();const t=e.target.closest(".chip");t&&(this.remove(t),this._input?.focus())}),EventHandler.on(this._element,"keydown",".chip",e=>{this._handleChipKeydown(e)}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&(this.clearSelection(),this._input?.focus())})}_handleInputKeydown(e){const{key:t}=e;switch(t){case"Enter":e.preventDefault(),this._createChipFromInput();break;case"Backspace":case"Delete":if(""===this._input.value){e.preventDefault();const t=this._getChipElements();if(t.length>0){const e=t.at(-1);this.selectChip(e),e.focus()}}break;case"ArrowLeft":if(0===this._input.selectionStart&&0===this._input.selectionEnd){e.preventDefault();const t=this._getChipElements();if(t.length>0){const n=t.at(-1);e.shiftKey?this.selectChip(n,{addToSelection:!0}):this.selectChip(n),n.focus()}}break;case"Escape":this._input.value="",this.clearSelection(),this._input.blur()}}_handleChipKeydown(e){const{key:t}=e,n=e.target.closest(".chip");if(!n)return;const s=this._getChipElements(),i=s.indexOf(n);switch(t){case"Backspace":case"Delete":e.preventDefault(),this._handleChipDelete(i,s);break;case"ArrowLeft":e.preventDefault(),this._navigateChip(s,i,-1,e.shiftKey);break;case"ArrowRight":e.preventDefault(),this._navigateChip(s,i,1,e.shiftKey);break;case"Home":e.preventDefault(),this._navigateToEdge(s,0,e.shiftKey);break;case"End":case"Escape":e.preventDefault(),this.clearSelection(),this._input?.focus();break;case"a":this._handleSelectAll(e,s)}}_handleChipDelete(e,t){if(0===this._selectedChips.size)return;const n=Math.min(e,t.length-this._selectedChips.size-1);this.removeSelected();const s=this._getChipElements();if(s.length>0){const e=Math.max(0,Math.min(n,s.length-1));s[e].focus(),this.selectChip(s[e])}else this._input?.focus()}_navigateChip(e,t,n,s){const i=t+n;if(n<0&&i>=0){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else if(n>0&&i<e.length){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else n>0&&(this.clearSelection(),this._input?.focus())}_navigateToEdge(e,t,n){if(0===e.length)return;const s=e[t];this.selectChip(s,n?{rangeSelect:!0}:{}),s.focus()}_handleSelectAll(e,t){if(e.metaKey||e.ctrlKey){e.preventDefault();for(const e of t)this._selectedChips.add(e),e.classList.add("active");EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}_handleInput(e){const{value:t}=e.target,{separator:n}=this._config;if(n&&t.includes(n)){const e=t.split(n);for(const t of e.slice(0,-1))this.add(t.trim());this._input.value=e.at(-1)}}_handlePaste(e){const{separator:t}=this._config;if(!t)return;const n=(e.clipboardData||window.clipboardData).getData("text");if(n.includes(t)){e.preventDefault();const s=n.split(t);for(const e of s)this.add(e.trim())}}_createChipFromInput(){const e=this._input.value.trim();e&&(this.add(e),this._input.value="")}}EventHandler.on(document,"DOMContentLoaded.bs.chips.data-api",()=>{for(const e of SelectorEngine.find("[data-bs-chips]"))Chips.getOrCreateInstance(e)});const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,DATA_URL_PATTERN=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z=]+$/i,allowedAttribute=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!uriAttributes.has(n)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)||DATA_URL_PATTERN.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function sanitizeHtml(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const s=(new window.DOMParser).parseFromString(e,"text/html"),i=[...s.body.querySelectorAll("*")];for(const e of i){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const s=[...e.attributes],i=[...t["*"]||[],...t[n]||[]];for(const t of s)allowedAttribute(t,i)||e.removeAttribute(t.nodeName)}return s.body.innerHTML}const NAME$7="TemplateFactory",Default$6={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$6={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},DefaultContentType)}_setContent(e,t,n){const s=SelectorEngine.findOne(n,e);s&&((t=this._resolvePossibleFunction(t))?isElement$1(t)?this._putElementInTemplate(getElement(t),s):this._config.html?s.innerHTML=this._maybeSanitize(t):s.textContent=t:s.remove())}_maybeSanitize(e){return this._config.sanitize?sanitizeHtml(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return execute(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const NAME$6="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),ESCAPE_KEY="Escape",CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="tooltip"]',EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$3="click",EVENT_FOCUSIN$2="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER$1="mouseenter",EVENT_MOUSELEAVE="mouseleave",EVENT_KEYDOWN$1="keydown",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL$1()?"left":"right",BOTTOM:"bottom",LEFT:isRTL$1()?"right":"left"},Default$5={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",floatingConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},DefaultType$5={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",floatingConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Tooltip extends BaseComponent{constructor(e,t){super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._floatingCleanup=null,this._keydownHandler=null,this._templateFactory=null,this._newContent=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this.tip=null,this._parseResponsivePlacements(),this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),this._removeEscapeListener(),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposeFloating(),this._disposeMediaQueryListeners(),super.dispose()}async show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.eventName("show")),t=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return void(this._isHovered=!1);this._disposeFloating();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));let{container:s}=this._config;const i=this._element.closest("dialog[open]");if(i&&s===document.body&&(s=i),this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(n),EventHandler.trigger(this._element,this.constructor.eventName("inserted"))),await this._createFloating(n),n.classList.add("show"),this._setEscapeListener(),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.on(e,"mouseover",noop);this._queueCallback(()=>{EventHandler.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._removeEscapeListener(),this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.off(e,"mouseover",noop);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposeFloating(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._floatingCleanup&&this.tip&&this._updateFloatingPosition()}_isWithContent(){return Boolean(this._getTitle())||this._hasNewContent()}_hasNewContent(){return Boolean(this._newContent)&&Object.values(this._newContent).some(Boolean)}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();t.classList.remove("fade","show"),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=getUID(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add("fade"),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposeFloating(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new TemplateFactory({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains("fade")}_isShown(){return this.tip&&this.tip.classList.contains("show")}_getPlacement(e){if(this._responsivePlacements){const e=getResponsivePlacement(this._responsivePlacements,"top");return AttachmentMap[e.toUpperCase()]||e}const t=execute(this._config.placement,[this,e,this._element]);return AttachmentMap[t.toUpperCase()]||t}_parseResponsivePlacements(){"string"==typeof this._config.placement?(this._responsivePlacements=parseResponsivePlacement(this._config.placement,"top"),this._responsivePlacements&&this._setupMediaQueryListeners()):this._responsivePlacements=null}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}async _createFloating(e){const t=this._getPlacement(e),n=e.querySelector(`.${this.constructor.NAME}-arrow`);await this._updateFloatingPosition(e,t,n),this._floatingCleanup=autoUpdate(this._element,e,()=>this._updateFloatingPosition(e,null,n))}async _updateFloatingPosition(e=this.tip,t=null,n=null){if(!e)return;t||(t=this._getPlacement(e)),n||(n=e.querySelector(`.${this.constructor.NAME}-arrow`));const s=this._getFloatingMiddleware(n),i=this._getFloatingConfig(t,s),{x:o,y:a,placement:l,middlewareData:r}=await computePosition(this._element,e,i);if(Object.assign(e.style,{position:"absolute",left:`${o}px`,top:`${a}px`}),n&&(n.style.position="absolute"),Manipulator.setDataAttribute(e,"placement",l),n&&r.arrow){const{x:e,y:t}=r.arrow,s=l.startsWith("top")||l.startsWith("bottom");Object.assign(n.style,{left:s&&null!==e?`${e}px`:"",top:s||null===t?"":`${t}px`,right:"",bottom:""})}}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_resolvePossibleFunction(e){return execute(e,[this._element,this._element])}_getFloatingMiddleware(e){const t=this._getOffset(),n=[offset("function"==typeof t?t:{mainAxis:t[1]||0,crossAxis:t[0]||0}),flip({fallbackPlacements:this._config.fallbackPlacements}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})];return e&&n.push(arrow({element:e})),n}_getFloatingConfig(e,t){const n={placement:e,middleware:t};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)EventHandler.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!(t._isShown()&&t._activeTrigger.click),t.toggle()});else if("manual"!==t){const e="hover"===t?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n="hover"===t?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");EventHandler.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0,t._enter()}),EventHandler.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler)}_setEscapeListener(){this._keydownHandler||(this._keydownHandler=e=>{"Escape"===e.key&&this._isShown()&&this.tip.isConnected&&(e.preventDefault(),e.stopPropagation(),this.hide())},this._element.ownerDocument.addEventListener("keydown",this._keydownHandler,!0))}_removeEscapeListener(){this._keydownHandler&&(this._element.ownerDocument.removeEventListener("keydown",this._keydownHandler,!0),this._keydownHandler=null)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);for(const e of Object.keys(t))DISALLOWED_ATTRIBUTES.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"!=typeof e.title&&"boolean"!=typeof e.title||(e.title=e.title.toString()),"number"!=typeof e.content&&"boolean"!=typeof e.content||(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null),this.tip&&(this.tip.remove(),this.tip=null)}}const initTooltip=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$3);t&&Tooltip.getOrCreateInstance(t)};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$5="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="popover"]',EVENT_CLICK$2="click",EVENT_FOCUSIN$1="focusin",EVENT_MOUSEENTER="mouseenter",Default$4={...Tooltip.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},DefaultType$4={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}_isWithContent(){return Boolean(this._getTitle()||this._getContent())||this._hasNewContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}}const initPopover=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$2);t&&("click"===e.type&&e.preventDefault(),Popover.getOrCreateInstance(t))};EventHandler.on(document,"click",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$2,initPopover);const NAME$4="range",DATA_KEY$4="bs.range",EVENT_KEY$4=".bs.range",DATA_API_KEY$1=".data-api",EVENT_CHANGED="changed.bs.range",EVENT_DOM_CONTENT_LOADED="DOMContentLoaded.bs.range.data-api",EVENT_INPUT="input",EVENT_CHANGE="change",SELECTOR_RANGE=".form-range",SELECTOR_INPUT=".form-range-input",CLASS_NAME_BUBBLE="form-range-bubble",CLASS_NAME_TICKS="form-range-ticks",CLASS_NAME_TICK="form-range-tick",CLASS_NAME_TICK_LABEL="form-range-tick-label",PROPERTY_FILL="--bs-range-fill",Default$3={bubble:!1,formatter:null},DefaultType$3={bubble:"(boolean|null)",formatter:"(function|null)"};class Range extends BaseComponent{constructor(e,t){super(e,t),this._element&&(this._input=SelectorEngine.findOne(SELECTOR_INPUT,this._element),this._input&&(this._bubble=null,this._bubbleText=null,this._ticks=null,this._updateHandler=()=>this._update(),this._config.bubble&&this._createBubble(),this._createTicks(),this._addEventListeners(),this._update()))}static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}update(){this._update()}dispose(){EventHandler.off(this._input,"input",this._updateHandler),EventHandler.off(this._input,"change",this._updateHandler),this._bubble?.remove(),this._ticks?.remove(),super.dispose()}_configAfterMerge(e){return null===e.bubble&&(e.bubble=!0),e}_addEventListeners(){EventHandler.on(this._input,"input",this._updateHandler),EventHandler.on(this._input,"change",this._updateHandler)}_min(){return""===this._input.min?0:Number.parseFloat(this._input.min)}_max(){return""===this._input.max?100:Number.parseFloat(this._input.max)}_value(){return Number.parseFloat(this._input.value)}_ratio(){const e=this._max()-this._min();return e>0?(this._value()-this._min())/e:0}_update(){this._element.style.setProperty(PROPERTY_FILL,`${this._ratio()}`),this._bubbleText&&(this._bubbleText.textContent=this._format(this._value())),EventHandler.trigger(this._input,EVENT_CHANGED,{value:this._value()})}_format(e){return"function"==typeof this._config.formatter?this._config.formatter(e):String(e)}_createBubble(){this._bubble=document.createElement("output"),this._bubble.className=`${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`,this._bubble.setAttribute("aria-hidden","true");const e=document.createElement("div");e.className="tooltip-arrow",this._bubbleText=document.createElement("div"),this._bubbleText.className="tooltip-inner",this._bubble.append(e,this._bubbleText),this._input.insertAdjacentElement("afterend",this._bubble)}_createTicks(){const e=this._input.getAttribute("list"),t=e?document.getElementById(e):null;if(!t)return;const n=this._min(),s=this._max()-n||1,i=[];for(const e of SelectorEngine.find("option",t)){const t=Number.parseFloat(e.value);if(!Number.isNaN(t)){const o=Math.min(Math.max((t-n)/s,0),1);i.push({ratio:o,label:e.label})}}if(0===i.length)return;i.sort((e,t)=>e.ratio-t.ratio),this._ticks=document.createElement("div"),this._ticks.className=CLASS_NAME_TICKS,this._ticks.setAttribute("aria-hidden","true");const o=[0,...i.map(e=>e.ratio),1];this._ticks.style.gridTemplateColumns=o.slice(1).map((e,t)=>e-o[t]+"fr").join(" ");for(const[e,t]of i.entries()){const n=document.createElement("span");if(n.className=CLASS_NAME_TICK,n.style.gridColumnStart=`${e+2}`,t.label){const e=document.createElement("span");e.className=CLASS_NAME_TICK_LABEL,e.textContent=t.label,n.append(e)}this._ticks.append(n)}this._element.append(this._ticks)}}EventHandler.on(document,EVENT_DOM_CONTENT_LOADED,()=>{for(const e of SelectorEngine.find(".form-range"))Range.getOrCreateInstance(e)});const NAME$3="scrollspy",DATA_KEY$3="bs.scrollspy",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$3}`,EVENT_CLICK$1=`click${EVENT_KEY$3}`,EVENT_SCROLL=`scroll${EVENT_KEY$3}`,EVENT_SCROLLEND=`scrollend${EVENT_KEY$3}`,EVENT_RESIZE=`resize${EVENT_KEY$3}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$3}.data-api`,CLASS_NAME_MENU_ITEM="menu-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .nav-item > .nav-link, .list-group-item",SELECTOR_MENU_TOGGLE$1='[data-bs-toggle="menu"]',SCROLL_IDLE_TIMEOUT=100,RESIZE_DEBOUNCE=100,Default$2={rootMargin:null,smoothScroll:!1,target:null,threshold:[0],topMargin:"12%"},DefaultType$2={rootMargin:"(string|null)",smoothScroll:"boolean",target:"element",threshold:"array",topMargin:"string"};class ScrollSpy extends BaseComponent{constructor(e,t){super(e,t),this._sections=[],this._linkBySection=new Map,this._sectionByLink=new Map,this._intersecting=new Set,this._activeTarget=null,this._lastActive=null,this._atBottom=!1,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._observer=null,this._sentinel=null,this._sentinelObserver=null,this._pendingNavigation=null,this._settleTimeout=null,this._settleHandler=null,this._scrollIdleHandler=null,this._resizeHandler=null,this._resizeTimeout=null,this.refresh()}static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?.disconnect(),this._intersecting.clear(),this._observer=this._getNewObserver();for(const e of this._sections)this._observer.observe(e);this._setUpSentinel(),this._maybeAddResizeListener()}dispose(){this._observer?.disconnect(),this._teardownSentinel(),this._disarmSettle(),this._removeResizeListener(),EventHandler.off(this._config.target,EVENT_CLICK$1),super.dispose()}_configAfterMerge(e){return e.target=getElement(e.target)||document.body,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin??this._getDerivedRootMargin()};return new IntersectionObserver(e=>this._onIntersect(e),e)}_onIntersect(e){for(const t of e)t.isIntersecting?this._intersecting.add(t.target):this._intersecting.delete(t.target);this._computeActive()}_computeActive(){if(!this._element?.isConnected||0===this._sections.length)return;let e=null;if(this._atBottom)e=this._sections.at(-1);else{for(const t of this._sections)this._intersecting.has(t)&&(e=t);e||=this._lastActive??this._sections.at(0)}if(!e)return;this._lastActive=e;const t=this._linkBySection.get(e);t&&this._process(t)}_parseTopMargin(){const e=String(this._config.topMargin);return{value:Number.parseFloat(e)||0,unit:e.endsWith("%")?"%":"px"}}_getDerivedRootMargin(){const{value:e,unit:t}=this._parseTopMargin();let n=e;if("px"===t){const t=this._rootElement?this._rootElement.clientHeight:document.documentElement.clientHeight||window.innerHeight;n=t?e/t*100:12}return`0px 0px -${Math.min(Math.max(100-n,0),100)}% 0px`}_usesPixelMargin(){return!this._config.rootMargin&&"px"===this._parseTopMargin().unit}_setUpSentinel(){if(this._teardownSentinel(),0===this._sections.length)return;const e=document.createElement("div");e.setAttribute("aria-hidden","true"),e.style.cssText="position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;",this._element.append(e),this._sentinel=e,this._sentinelObserver=new IntersectionObserver(e=>this._onSentinel(e),{root:this._rootElement,threshold:[0]}),this._sentinelObserver.observe(e)}_onSentinel(e){const t=e.at(-1);this._atBottom=Boolean(t?.isIntersecting)&&this._isOverflowing(),this._computeActive()}_isOverflowing(){const e=this._rootElement||document.scrollingElement||document.documentElement;return e.scrollHeight>e.clientHeight}_teardownSentinel(){this._sentinelObserver?.disconnect(),this._sentinelObserver=null,this._sentinel?.remove(),this._sentinel=null,this._atBottom=!1}_maybeAddResizeListener(){this._removeResizeListener(),this._usesPixelMargin()&&(this._resizeHandler=()=>{clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(()=>this._rebuildObserver(),100)},EventHandler.on(window,EVENT_RESIZE,this._resizeHandler))}_removeResizeListener(){clearTimeout(this._resizeTimeout),this._resizeTimeout=null,this._resizeHandler&&(EventHandler.off(window,EVENT_RESIZE,this._resizeHandler),this._resizeHandler=null)}_rebuildObserver(){if(this._observer){this._observer.disconnect(),this._intersecting.clear(),this._observer=this._getNewObserver();for(const e of this._sections)this._observer.observe(e)}}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK$1),EventHandler.on(this._config.target,EVENT_CLICK$1,"[href]",e=>{const t=e.target.closest("[href]"),n=t&&this._sectionByLink.get(t);if(!n||!this._element)return;e.preventDefault();const s=this._rootElement||window,i=n.offsetTop-this._element.offsetTop,o=this._rootElement?this._rootElement.scrollTop:window.scrollY??window.pageYOffset;if(matchMedia("(prefers-reduced-motion: reduce)").matches||Math.abs(o-i)<=2)return s.scrollTo?s.scrollTo({top:i,behavior:"auto"}):s.scrollTop=i,void this._settleNavigation(t.hash,n);this._pendingNavigation={hash:t.hash,section:n},this._armSettle(),s.scrollTo?s.scrollTo({top:i,behavior:"smooth"}):s.scrollTop=i}))}_armSettle(){this._disarmSettle();const e=this._getSettleTarget();this._settleHandler=()=>this._onSettle(),this._scrollIdleHandler=()=>{clearTimeout(this._settleTimeout),this._settleTimeout=setTimeout(()=>this._onSettle(),100)},EventHandler.on(e,EVENT_SCROLLEND,this._settleHandler),EventHandler.on(e,EVENT_SCROLL,this._scrollIdleHandler)}_disarmSettle(){clearTimeout(this._settleTimeout),this._settleTimeout=null;const e=this._getSettleTarget();this._settleHandler&&(EventHandler.off(e,EVENT_SCROLLEND,this._settleHandler),this._settleHandler=null),this._scrollIdleHandler&&(EventHandler.off(e,EVENT_SCROLL,this._scrollIdleHandler),this._scrollIdleHandler=null)}_getSettleTarget(){return this._rootElement||document}_onSettle(){if(this._disarmSettle(),!this._pendingNavigation)return;const{hash:e,section:t}=this._pendingNavigation;this._settleNavigation(e,t)}_settleNavigation(e,t){this._pendingNavigation=null,window.history?.replaceState&&window.history.replaceState(null,"",e),t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus({preventScroll:!0})}_initializeTargetsAndObservables(){this._sections=[],this._linkBySection=new Map,this._sectionByLink=new Map;const e=SelectorEngine.find("[href]",this._config.target),t=new Set;for(const n of e){if(!n.hash||isDisabled(n))continue;const e=decodeFragment(n.hash.slice(1));if(!e)continue;const s=document.getElementById(e);s&&this._element.contains(s)&&isVisible(s)&&(this._sectionByLink.set(n,s),this._linkBySection.set(s,n),t.has(s)||(t.add(s),this._sections.push(s)))}this._sections.sort((e,t)=>e.getBoundingClientRect().top-t.getBoundingClientRect().top)}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add("active"),this._activateParents(e),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("menu-item")){const t=e.closest(".menu")?.previousElementSibling;return void(t?.matches(SELECTOR_MENU_TOGGLE$1)&&t.classList.add("active"))}for(const t of SelectorEngine.parents(e,".nav, .list-group"))for(const e of SelectorEngine.prev(t,SELECTOR_LINK_ITEMS))e.classList.add("active")}_clearActiveClass(e){e.classList.remove("active");const t=SelectorEngine.find("[href].active",e);for(const e of t)e.classList.remove("active")}}function decodeFragment(e){try{return decodeURIComponent(e)}catch{return e}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(e)});const NAME$2="tab",DATA_KEY$2="bs.tab",EVENT_KEY$2=".bs.tab",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab",EVENT_KEYDOWN="keydown.bs.tab",EVENT_LOAD_DATA_API="load.bs.tab",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",SELECTOR_MENU_TOGGLE='[data-bs-toggle="menu"]',SELECTOR_MENU=".menu",NOT_SELECTOR_MENU_TOGGLE=`:not(${SELECTOR_MENU_TOGGLE})`,SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER=`.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`,SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="tab"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"]';class Tab extends BaseComponent{constructor(e){super(e),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),n=t?EventHandler.trigger(t,EVENT_HIDE$1,{relatedTarget:e}):null;EventHandler.trigger(e,EVENT_SHOW$1,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add("active"),this._activate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleMenu(e,!0),EventHandler.trigger(e,EVENT_SHOWN$1,{relatedTarget:t})):e.classList.add("show")},e,e.classList.contains("fade")))}_deactivate(e,t){e&&(e.classList.remove("active"),e.blur(),this._deactivate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleMenu(e,!1),EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:t})):e.classList.remove("show")},e,e.classList.contains("fade")))}_keydown(e){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(e.key))return;if(e.altKey||e.ctrlKey||e.metaKey)return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(e=>!isDisabled(e));let n;if([HOME_KEY,END_KEY].includes(e.key))n=e.key===HOME_KEY?t[0]:t.at(-1);else{const s=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(e.key);n=getNextActiveElement(t,e.target,s,!0)}n&&(n.focus({preventScroll:!0}),Tab.getOrCreateInstance(n).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=SelectorEngine.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleMenu(e,t){const n=this._getOuterElement(e),s=SelectorEngine.findOne(SELECTOR_MENU_TOGGLE,n);if(!s)return;const i=SelectorEngine.findOne(".menu",n);s.classList.toggle("active",t),i&&i.classList.toggle("show",t),s.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains("active")}_getInnerElement(e){return e.matches(SELECTOR_INNER_ELEM)?e:SelectorEngine.findOne(SELECTOR_INNER_ELEM,e)}_getOuterElement(e){return e.closest(SELECTOR_OUTER)||e}}EventHandler.on(document,"click.bs.tab",SELECTOR_DATA_TOGGLE$1,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()}),EventHandler.on(window,"load.bs.tab",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(e)});const NAME$1="toast",DATA_KEY$1="bs.toast",EVENT_KEY$1=".bs.toast",EVENT_MOUSEOVER="mouseover.bs.toast",EVENT_MOUSEOUT="mouseout.bs.toast",EVENT_FOCUSIN="focusin.bs.toast",EVENT_FOCUSOUT="focusout.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType$1={animation:"boolean",autohide:"boolean",delay:"number"},Default$1={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$1}show(){EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show","showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing","show"),EventHandler.trigger(this._element,EVENT_HIDDEN)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove("show"),super.dispose()}isShown(){return this._element.classList.contains("show")}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,e=>this._onInteraction(e,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}}enableDismissTrigger(Toast);const NAME="toggler",DATA_KEY="bs.toggler",EVENT_KEY=`.${DATA_KEY}`,EVENT_TOGGLE=`toggle${EVENT_KEY}`,EVENT_TOGGLED=`toggled${EVENT_KEY}`,EVENT_CLICK="click",SELECTOR_DATA_TOGGLE='[data-bs-toggle="toggler"]',DefaultType={attribute:"string",value:"(string|number|boolean)"},Default={attribute:"class",value:null};class Toggler extends BaseComponent{static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}toggle(){EventHandler.trigger(this._element,EVENT_TOGGLE).defaultPrevented||(this._execute(),EventHandler.trigger(this._element,EVENT_TOGGLED))}_execute(){const{attribute:e,value:t}=this._config;"id"!==e&&("class"!==e?this._element.getAttribute(e)!==String(t)?this._element.setAttribute(e,t):this._element.removeAttribute(e):this._element.classList.toggle(t))}}eventActionOnPlugin(Toggler,"click",SELECTOR_DATA_TOGGLE,"toggle");export{Alert,Button,Carousel,Chips,Collapse,Combobox,Datepicker,Dialog,Drawer,Menu,NavOverflow,OtpInput,Popover,Range,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
+var __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the "init()" method first.',notLocale:"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».",incorrectTime:"The value of the time property can be: false, 12 or 24.",incorrectMonthsCount:"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1."},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,i,s,o;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(i=null==(n=e.context.inputElement)?void 0:n.replaceWith)||i.call(n,e.context.originalElement),setContext(e,"inputElement",void 0)):null==(o=(s=e.context.mainElement).replaceWith)||o.call(s,e.context.originalElement),setContext(e,"mainElement",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR="data-vc-prev-tabindex",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute("tabindex");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:"")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);""===t||null===t?e.removeAttribute("tabindex"):e.setAttribute("tabindex",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{e.context.isShowInInputMode&&e.context.currentType&&(e.context.mainElement.dataset.vcCalendarHidden="",setContext(e,"isShowInInputMode",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach(e=>e()),setContext(e,"cleanupHandlers",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)&&(("function"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()),e.onHide&&e.onHide(e))};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:i,left:s}=getOffset(e),{vh:o,vw:a}=getViewportDimensions(),l=i-t,r=s-n;return{top:l,bottom:o-(l+e.clientHeight),left:r,right:a-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const i={top:!0,bottom:!0,left:!0,right:!0},s=[];if(!t||!e)return{canShow:i,parentPositions:s};const{bottom:o,top:a}=calculateAvailableSpace(e),{top:l,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:h}=getViewportDimensions(),_=h/2,m=u/2;return[{condition:l<m,position:"top"},{condition:l>m,position:"bottom"},{condition:r<_,position:"left"},{condition:r>_,position:"right"}].forEach(({condition:e,position:t})=>{e&&s.push(t)}),Object.assign(i,{top:c<=a-n,bottom:c<=o-n,left:d<=r,right:d<=h-r}),{canShow:i,parentPositions:s}}const handleDay=(e,t,n,i)=>{var s;const o=i.querySelector(`[data-vc-date="${t}"]`),a=null==o?void 0:o.querySelector("[data-vc-date-btn]");if(!o||!a)return;if((null==n?void 0:n.modifier)&&a.classList.add(...n.modifier.trim().split(" ")),!(null==n?void 0:n.html))return;const l=document.createElement("div");l.className=e.styles.datePopup,l.dataset.vcDatePopup="",l.innerHTML=e.sanitizerHTML(n.html),a.ariaExpanded="true",a.ariaLabel=`${a.ariaLabel}, ${null==(s=null==l?void 0:l.textContent)?void 0:s.replace(/^\s+|\s+(?=\s)|\s+$/g,"").replace(/&nbsp;/g," ")}`,o.appendChild(l),requestAnimationFrame(()=>{if(!l)return;const{canShow:e}=getAvailablePosition(o,l),t=e.bottom?o.offsetHeight:-l.offsetHeight,n=e.left&&!e.right?o.offsetWidth-l.offsetWidth/2:!e.left&&e.right?l.offsetWidth/2:0;Object.assign(l.style,{left:`${n}px`,top:`${t}px`})})},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach(([n,i])=>handleDay(e,n,i,t)))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,parseDates=e=>e.reduce((e,t)=>{if(t instanceof Date||"number"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\d{4}-\d{2}-\d{2})$/g)?e.push(t):t.replace(/(\d{4}-\d{2}-\d{2}).*?(\d{4}-\d{2}-\d{2})/g,(t,n,i)=>{const s=getDate(n),o=getDate(i),a=new Date(s.getTime());for(;a<=o;a.setDate(a.getDate()+1))e.push(getDateString(a));return t});return e},[]),updateAttribute=(e,t,n,i="")=>{t?e.setAttribute(n,i):e.getAttribute(n)===i&&e.removeAttribute(n)},setDateModifier=(e,t,n,i,s,o,a)=>{var l,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(o)||getDate(e.context.displayDateMax)<getDate(o)||(null==(l=e.context.disableDates)?void 0:l.includes(o))||!e.selectionMonthsMode&&"current"!==a||!e.selectionYearsMode&&getDate(o).getFullYear()!==t;updateAttribute(n,u,"data-vc-date-disabled"),i&&updateAttribute(i,u,"aria-disabled","true"),i&&updateAttribute(i,u,"tabindex","-1"),updateAttribute(n,!e.disableToday&&e.context.dateToday===o,"data-vc-date-today"),updateAttribute(n,!e.disableToday&&e.context.dateToday===o,"aria-current","date"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(s),"data-vc-date-weekend");const h=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,h.includes(o),"data-vc-date-holiday"),(null==(d=e.context.selectedDates)?void 0:d.includes(o))?(n.setAttribute("data-vc-date-selected",""),i&&i.setAttribute("aria-selected","true"),e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode&&(e.context.selectedDates[0]===o&&e.context.selectedDates[e.context.selectedDates.length-1]===o?n.setAttribute("data-vc-date-selected","first-and-last"):e.context.selectedDates[0]===o?n.setAttribute("data-vc-date-selected","first"):e.context.selectedDates[e.context.selectedDates.length-1]===o&&n.setAttribute("data-vc-date-selected","last"),e.context.selectedDates[0]!==o&&e.context.selectedDates[e.context.selectedDates.length-1]!==o&&n.setAttribute("data-vc-date-selected","middle"))):n.hasAttribute("data-vc-date-selected")&&(n.removeAttribute("data-vc-date-selected"),i&&i.removeAttribute("aria-selected")),!e.context.disableDates.includes(o)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&"multiple-ranged"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),i=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),s=getDate(o);updateAttribute(n,s>t&&s<i,"data-vc-date-selected","middle")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),i=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-i);const s=new Date(n.getFullYear(),0,1),o=Math.ceil(((+n-+s)/864e5+1)/7);return{year:n.getFullYear(),week:o}},addWeekNumberForDate=(e,t,n)=>{const i=getWeekNumber(n,e.firstWeekday);i&&(t.dataset.vcDateWeekNumber=String(i.week))},setDaysAsDisabled=(e,t,n)=>{var i,s,o,a,l;const r=null==(i=e.disableWeekdays)?void 0:i.includes(n),c=e.disableAllDates&&!!(null==(s=e.context.enableDates)?void 0:s[0]);!r&&!c||(null==(o=e.context.enableDates)?void 0:o.includes(t))||(null==(a=e.context.disableDates)?void 0:a.includes(t))||(e.context.disableDates.push(t),null==(l=e.context.disableDates)||l.sort((e,t)=>+new Date(e)-+new Date(t)))},createDate=(e,t,n,i,s,o)=>{const a=getDate(s).getDay(),l="string"==typeof e.locale&&e.locale.length?e.locale:"en",r=document.createElement("div");let c;r.className=e.styles.date,r.dataset.vcDate=s,r.dataset.vcDateMonth=o,r.dataset.vcDateWeekDay=String(a),r.role="gridcell",("current"===o||e.displayDatesOutside)&&(c=document.createElement("button"),c.className=e.styles.dateBtn,c.type="button",c.ariaLabel=getLocaleString(s,l,{dateStyle:"long",timeZone:"UTC"}),c.dataset.vcDateBtn="",c.innerText=String(i),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,s),setDaysAsDisabled(e,s,a),setDateModifier(e,t,r,c,a,s,o),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,i,s)=>{for(let o=1;o<=n;o++){const n=new Date(i,s,o);createDate(e,i,t,o,getDateString(n),"current")}},createDatesFromNextMonth=(e,t,n,i,s)=>{const o=s+1===12?i+1:i,a=s+1===12?"01":s+2<10?`0${s+2}`:s+2;for(let s=1;s<=n;s++){const n=s<10?`0${s}`:String(s);createDate(e,i,t,s,`${o}-${a}-${n}`,"next")}},createDatesFromPrevMonth=(e,t,n,i,s)=>{let o=new Date(n,i,0).getDate()-(s-1);const a=0===i?n-1:n,l=0===i?12:i<10?`0${i}`:i;for(let i=s;i>0;i--,o++)createDate(e,n,t,o,`${a}-${l}-${o}`,"prev")},createWeekNumbers=(e,t,n,i,s)=>{if(!e.enableWeekNumbers)return;i.textContent="";const o=document.createElement("b");o.className=e.styles.weekNumbersTitle,o.innerText="#",o.dataset.vcWeekNumbers="title",i.appendChild(o);const a=document.createElement("div");a.className=e.styles.weekNumbersContent,a.dataset.vcWeekNumbers="content",i.appendChild(a);const l=document.createElement("button");l.type="button",l.className=e.styles.weekNumber;const r=s.querySelectorAll("[data-vc-date]"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,i=getWeekNumber(n,e.firstWeekday);if(!i)return;const s=l.cloneNode(!0);s.innerText=String(i.week),s.dataset.vcWeekNumber=String(i.week),s.dataset.vcWeekYear=String(i.year),s.role="rowheader",s.ariaLabel=`${i.week}`,a.appendChild(s)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc="dates"]'),i=e.context.mainElement.querySelectorAll('[data-vc-week="numbers"]');n.forEach((n,s)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=""),n.textContent="";const o=new Date(t);o.setMonth(o.getMonth()+s);const a=o.getMonth(),l=o.getFullYear(),r=(new Date(l,a,1).getDay()-e.firstWeekday+7)%7,c=new Date(l,a+1,0).getDate(),d=r+c,u=Math.ceil(d/7),h=7*u-d,_=[];for(let t=0;t<u;t++){const t=document.createElement("div");t.className=e.styles.datesRow,t.setAttribute("data-vc-dates","row"),t.setAttribute("role","row"),_.push(t)}let m=0,g=0;const p={addDate:e=>{_[m].appendChild(e),g++,g>=7&&(m++,g=0)}};createDatesFromPrevMonth(e,p,l,a,r),createDatesFromCurrentMonth(e,p,c,l,a),createDatesFromNextMonth(e,p,h,l,a);for(const e of _)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,i[s],n)})},layoutDefault=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <#WeekNumbers />\n    <div class="${e.styles.content}" data-vc="content" role="grid">\n      <#Week />\n      <#Dates />\n      <#DateRangeTooltip />\n    </div>\n  </div>\n  <#ControlTime />\n`,layoutMonths=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Months />\n    </div>\n  </div>\n`,layoutMultiple=e=>`\n  <div class="${e.styles.controls}" data-vc="controls" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [month] />\n    <#ArrowNext [month] />\n  </div>\n  <div class="${e.styles.grid}" data-vc="grid">\n    <#Multiple>\n      <div class="${e.styles.column}" data-vc="column" role="region">\n        <div class="${e.styles.header}" data-vc="header">\n          <div class="${e.styles.headerContent}" data-vc-header="content">\n            <#Month />\n            <#Year />\n          </div>\n        </div>\n        <div class="${e.styles.wrapper}" data-vc="wrapper">\n          <#WeekNumbers />\n          <div class="${e.styles.content}" data-vc="content" role="grid">\n            <#Week />\n            <#Dates />\n          </div>\n        </div>\n      </div>\n    <#/Multiple>\n    <#DateRangeTooltip />\n  </div>\n  <#ControlTime />\n`,layoutYears=e=>`\n  <div class="${e.styles.header}" data-vc="header" role="toolbar" aria-label="${e.labels.navigation}">\n    <#ArrowPrev [year] />\n    <div class="${e.styles.headerContent}" data-vc-header="content">\n      <#Month />\n      <#Year />\n    </div>\n    <#ArrowNext [year] />\n  </div>\n  <div class="${e.styles.wrapper}" data-vc="wrapper">\n    <div class="${e.styles.content}" data-vc="content">\n      <#Years />\n    </div>\n  </div>\n`,ArrowNext=(e,t)=>`<button type="button" class="${e.styles.arrowNext}" data-vc-arrow="next" aria-label="${e.labels.arrowNext[t]}"></button>`,ArrowPrev=(e,t)=>`<button type="button" class="${e.styles.arrowPrev}" data-vc-arrow="prev" aria-label="${e.labels.arrowPrev[t]}"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class="${e.styles.time}" data-vc="time" role="group" aria-label="${e.labels.selectingTime}"></div>`:"",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class="${e.styles.dateRangeTooltip}" data-vc-date-range-tooltip="hidden"></div>`:"",Dates=e=>`<div class="${e.styles.dates}" data-vc="dates" aria-live="assertive" aria-label="${e.labels.dates}" ${"multiple"===e.type?"aria-multiselectable":""}></div>`,Month=e=>`<button type="button" class="${e.styles.month}" data-vc="month"></button>`,Months=e=>`<div class="${e.styles.months}" data-vc="months" role="grid" aria-live="assertive" aria-label="${e.labels.months}"></div>`,Week=e=>`<div class="${e.styles.week}" data-vc="week" role="row" aria-label="${e.labels.week}"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class="${e.styles.weekNumbers}" data-vc-week="numbers" role="row" aria-label="${e.labels.weekNumber}"></div>`:"",Year=e=>`<button type="button" class="${e.styles.year}" data-vc="year"></button>`,Years=e=>`<div class="${e.styles.years}" data-vc="years" role="grid" aria-live="assertive" aria-label="${e.labels.years}"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\n\t]/g,"").replace(/<#(?!\/?Multiple)(.*?)>/g,(t,n)=>{const i=(n.match(/\[(.*?)\]/)||[])[1],s=n.replace(/[/\s\n\t]|\[(.*?)\]/g,""),o=getComponent(s),a=o?o(e,null!=i?i:null):"";return e.sanitizerHTML(a)}).replace(/[\n\t]/g,""),parseMultipleLayout=(e,t)=>t.replace(new RegExp("<#Multiple>(.*?)<#\\/Multiple>","gs"),(t,n)=>{const i=Array(e.context.displayMonthsCount).fill(n).join("");return e.sanitizerHTML(i)}).replace(/[\n\t]/g,""),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach(t=>{const i=t;e.layouts[i].length||(e.layouts[i]=n[i](e))}),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc="calendar",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role="application",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,"multiple"!==e.context.currentType){if("multiple"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc="controls"]'),i=e.context.mainElement.querySelector('[data-vc="grid"]'),s=t.closest('[data-vc="column"]');return n&&n.remove(),i&&(i.dataset.vcGrid="hidden"),s&&(s.dataset.vcColumn=e.context.currentType),void(s&&(s.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,i)=>{e.style.visibility=n?"hidden":"",t.style.visibility=i?"hidden":""},handleDefaultType=(e,t,n)=>{const i=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),s=new Date(i.getTime()),o=new Date(i.getTime());s.setMonth(s.getMonth()-e.monthsToSwitch),o.setMonth(o.getMonth()+e.monthsToSwitch);const a=getDate(e.context.dateMin),l=getDate(e.context.dateMax);e.selectionYearsMode||(a.setFullYear(i.getFullYear()),l.setFullYear(i.getFullYear()));const r=!e.selectionMonthsMode||s.getFullYear()<a.getFullYear()||s.getFullYear()===a.getFullYear()&&s.getMonth()<a.getMonth(),c=!e.selectionMonthsMode||o.getFullYear()>l.getFullYear()||o.getFullYear()===l.getFullYear()&&o.getMonth()>l.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const i=getDate(e.context.dateMin),s=getDate(e.context.dateMax),o=!!(i.getFullYear()&&e.context.displayYear-7<=i.getFullYear()),a=!!(s.getFullYear()&&e.context.displayYear+7>=s.getFullYear());setVisibilityArrows(t,n,o,a)},visibilityArrows=e=>{if("month"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow="prev"]'),n=e.context.mainElement.querySelector('[data-vc-arrow="next"]');t&&n&&{default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)}["multiple"===e.context.currentType?"default":e.context.currentType]()},visibilityHandler=(e,t,n,i,s)=>{const o=new Date(i.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),a=new Date(i.setMonth(e.context.selectedMonth+n)).getMonth(),l=e.context.locale.months.long[a],r=t.closest('[data-vc="column"]');r&&(r.ariaLabel=`${l} ${o}`);const c={month:{id:a,label:l},year:{id:o,label:o}};t.innerText=String(c[s].label),t.dataset[`vc${s.charAt(0).toUpperCase()+s.slice(1)}`]=String(c[s].id),t.ariaLabel=`${e.labels[s]} ${c[s].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[s]||"only-arrows"===d[s];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc="month"]'),n=e.context.mainElement.querySelectorAll('[data-vc="year"]'),i=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach(t=>null==t?void 0:t.forEach((t,n)=>visibilityHandler(e,t,n,i,t.dataset.vc)))},setYearModifier=(e,t,n,i,s)=>{var o;const a={month:{selected:"data-vc-months-month-selected",aria:"aria-selected",value:"vcMonthsMonth",selectedProperty:"selectedMonth"},year:{selected:"data-vc-years-year-selected",aria:"aria-selected",value:"vcYearsYear",selectedProperty:"selectedYear"}};s&&(null==(o=e.context.mainElement.querySelectorAll({month:"[data-vc-months-month]",year:"[data-vc-years-year]"}[n]))||o.forEach(e=>{e.removeAttribute(a[n].selected),e.removeAttribute(a[n].aria)}),setContext(e,a[n].selectedProperty,Number(t.dataset[a[n].value])),visibilityTitle(e),"year"===n&&visibilityArrows(e)),i&&(t.setAttribute(a[n].selected,""),t.setAttribute(a[n].aria,"true"))},getColumnID=(e,t)=>{var n;if("multiple"!==e.type)return{currentValue:null,columnID:0};const i=e.context.mainElement.querySelectorAll('[data-vc="column"]'),s=Array.from(i).findIndex(e=>e.closest(`[data-vc-column="${t}"]`));return{currentValue:s>=0?Number(null==(n=i[s].querySelector(`[data-vc="${t}"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(s,0)}},createMonthEl=(e,t,n,i,s,o,a)=>{const l=t.cloneNode(!1);return l.className=e.styles.monthsMonth,l.innerText=i,l.ariaLabel=s,l.role="gridcell",l.dataset.vcMonthsMonth=`${a}`,o&&(l.ariaDisabled="true"),o&&(l.tabIndex=-1),l.disabled=o,setYearModifier(e,l,"month",n===a,!1),l},createMonths=(e,t)=>{var n,i;const s=null==(n=null==t?void 0:t.closest('[data-vc="header"]'))?void 0:n.querySelector('[data-vc="year"]'),o=s?Number(s.dataset.vcYear):e.context.selectedYear,a=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,"currentType","month"),createLayouts(e,t),visibilityTitle(e);const l=e.context.mainElement.querySelector('[data-vc="months"]');if(!e.selectionMonthsMode||!l)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map((t,n)=>a-e.monthsToSwitch*n).concat(e.context.locale.months.long.map((t,n)=>a+e.monthsToSwitch*n)).filter(e=>e>=0&&e<=12):Array.from(Array(12).keys()),c=document.createElement("button");c.type="button";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),i=getDate(e.context.dateMax),s=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,"month"),u=o<=n.getFullYear()&&t<n.getMonth()+d||o>=i.getFullYear()&&t>i.getMonth()-s+d||o>i.getFullYear()||t!==a&&!r.includes(t),h=createMonthEl(e,c,a,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);l.appendChild(h),e.onCreateMonthEls&&e.onCreateMonthEls(e,h)}null==(i=e.context.mainElement.querySelector("[data-vc-months-month]:not([disabled])"))||i.focus()},TimeInput=(e,t,n,i,s)=>`\n  <label class="${t}" data-vc-time-input="${e}">\n    <input type="text" name="${e}" maxlength="2" aria-label="${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${i}" ${s?"disabled":""}>\n  </label>\n`,TimeRange=(e,t,n,i,s,o,a)=>`\n  <label class="${t}" data-vc-time-range="${e}">\n    <input type="range" name="${e}" min="${i}" max="${s}" step="${o}" aria-label="${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}" value="${a}">\n  </label>\n`,handleActions=(e,t,n,i)=>{({hour:()=>setContext(e,"selectedHours",n),minute:()=>setContext(e,"selectedMinutes",n)})[i](),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:""}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:"00",PM:"12"},1:{AM:"01",PM:"13"},2:{AM:"02",PM:"14"},3:{AM:"03",PM:"15"},4:{AM:"04",PM:"16"},5:{AM:"05",PM:"17"},6:{AM:"06",PM:"18"},7:{AM:"07",PM:"19"},8:{AM:"08",PM:"20"},9:{AM:"09",PM:"21"},10:{AM:"10",PM:"22"},11:{AM:"11",PM:"23"},12:{AM:"00",PM:"12"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,i,s)=>{const o=o=>{const a="AM"===e.context.selectedKeeping?"PM":"AM",l=transformTime24(e.context.selectedHours,a);Number(l)<=i&&Number(l)>=s?(setContext(e,"selectedKeeping",a),n.value=l,handleActions(e,o,e.context.selectedHours,"hour"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,o,!0)};return t.addEventListener("click",o),()=>{t.removeEventListener("click",o)}},transformTime12=e=>({0:"12",13:"01",14:"02",15:"03",16:"04",17:"05",18:"06",19:"07",20:"08",21:"09",22:"10",23:"11"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,i)=>{e.value=n,t.value=i},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleInput$1=(e,t,n,i,s,o,a)=>{const l={hour:(l,r,c)=>{e.selectionTimeMode&&{12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=o&&d>=a))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),l>12&&updateKeepingTime$1(e,i,"PM"),handleActions(e,c,transformTime12(r),s)},24:()=>{if(!(l<=o&&l>=a))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,s)}}[e.selectionTimeMode]()},minute:(i,l,r)=>{if(!(i<=o&&i>=a))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=l,t.value=l,handleActions(e,r,l,s)}},r=e=>{const t=Number(n.value),i=n.value.padStart(2,"0");l[s]&&l[s](t,i,e)};return n.addEventListener("change",r),()=>{n.removeEventListener("change",r)}},updateInputAndTime=(e,t,n,i,s)=>{t.value=s,handleActions(e,n,s,i)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,"selectedKeeping",n),t.innerText=n)},handleRange=(e,t,n,i,s)=>{const o=o=>{const a=Number(t.value),l=t.value.padStart(2,"0"),r="hour"===s,c=24===e.selectionTimeMode,d=a>0&&a<12;r&&!c&&updateKeepingTime(e,i,0===a||d?"AM":"PM"),updateInputAndTime(e,n,o,s,!r||c||d?l:transformTime12(t.value))};return t.addEventListener("input",o),()=>{t.removeEventListener("input",o)}},handleMouseOver=e=>e.setAttribute("data-vc-input-focus",""),handleMouseOut=e=>e.removeAttribute("data-vc-input-focus"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range="hour"] input[name="hour"]'),i=t.querySelector('[data-vc-time-range="minute"] input[name="minute"]'),s=t.querySelector('[data-vc-time-input="hour"] input[name="hour"]'),o=t.querySelector('[data-vc-time-input="minute"] input[name="minute"]'),a=t.querySelector('[data-vc-time="keeping"]');if(!(n&&i&&s&&o))return;const l=e=>{e.target===n&&handleMouseOver(s),e.target===i&&handleMouseOver(o)},r=e=>{e.target===n&&handleMouseOut(s),e.target===i&&handleMouseOut(o)};return t.addEventListener("mouseover",l),t.addEventListener("mouseout",r),handleInput$1(e,n,s,a,"hour",e.timeMaxHour,e.timeMinHour),handleInput$1(e,i,o,a,"minute",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,s,a,"hour"),handleRange(e,i,o,a,"minute"),a&&handleClickKeepingTime(e,a,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener("mouseover",l),t.removeEventListener("mouseout",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc="time"]');if(!e.selectionTimeMode||!t)return;const[n,i]=[e.timeMinHour,e.timeMaxHour],[s,o]=[e.timeMinMinute,e.timeMaxMinute],a=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,l="range"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\n    <div class="${e.styles.timeContent}" data-vc-time="content">\n      ${TimeInput("hour",e.styles.timeHour,e.labels,e.context.selectedHours,l)}\n      ${TimeInput("minute",e.styles.timeMinute,e.labels,e.context.selectedMinutes,l)}\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type="button" class="${e.styles.timeKeeping}" aria-label="${e.labels.btnKeeping} ${r}" data-vc-time="keeping" ${l?"disabled":""}>${r}</button>`):""}\n    </div>\n    <div class="${e.styles.timeRanges}" data-vc-time="ranges">\n      ${TimeRange("hour",e.styles.timeRange,e.labels,n,i,e.timeStepHour,a)}\n      ${TimeRange("minute",e.styles.timeRange,e.labels,s,o,e.timeStepMinute,e.context.selectedMinutes)}\n    </div>\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce((n,i,s)=>[...n,{id:s,titleShort:e.context.locale.weekdays.short[s],titleLong:i,isWeekend:t.includes(s)}],[]),i=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc="week"]').forEach(t=>{const n=e.onClickWeekDay?document.createElement("button"):document.createElement("b");e.onClickWeekDay&&(n.type="button"),i.forEach(i=>{const s=n.cloneNode(!0);s.innerText=i.titleShort,s.className=e.styles.weekDay,s.role="columnheader",s.ariaLabel=i.titleLong,s.dataset.vcWeekDay=String(i.id),i.isWeekend&&(s.dataset.vcWeekDayOff=""),t.appendChild(s)})})},createYearEl=(e,t,n,i,s)=>{const o=t.cloneNode(!1);return o.className=e.styles.yearsYear,o.innerText=String(s),o.ariaLabel=String(s),o.role="gridcell",o.dataset.vcYearsYear=`${s}`,i&&(o.ariaDisabled="true"),i&&(o.tabIndex=-1),o.disabled=i,setYearModifier(e,o,"year",n===s,!1),o},createYears=(e,t)=>{var n;const i=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,"currentType","year"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const s=e.context.mainElement.querySelector('[data-vc="years"]');if(!e.selectionYearsMode||!s)return;const o="multiple"!==e.type||e.context.selectedYear===i?0:1,a=document.createElement("button");a.type="button";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+o||t>getDate(e.context.dateMax).getFullYear(),l=createYearEl(e,a,i,n,t);s.appendChild(l),e.onCreateYearEls&&e.onCreateYearEls(e,l)}null==(n=e.context.mainElement.querySelector("[data-vc-years-year]:not([disabled])"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver(e=>{for(let i=0;i<e.length;i++)if(e[i].attributeName===t){n();break}}).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?"dark":"light"),"system"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc="calendar"]');null==t||t.forEach(t=>setTheme(t,e.matches?"dark":"light"))};t.addEventListener?t.addEventListener("change",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,i=e.themeAttrDetect.replace(/^.*\[(.+)\]/g,(e,t)=>t);if(!n||"system"===n.getAttribute(i))return void trackChangesThemeInSystemSettings(e,t);const s=n.getAttribute(i);s?(setTheme(e.context.mainElement,s),trackChangesHTMLElement(n,i,()=>{const t=n.getAttribute(i);t&&setTheme(e.context.mainElement,t)})):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{"not all"!==window.matchMedia("(prefers-color-scheme)").media?"system"===e.selectedTheme?detectTheme(e,window.matchMedia("(prefers-color-scheme: dark)")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,"light")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\./,""),getLocaleWeekday=(e,t,n)=>{const i=new Date(`1978-01-0${t+1}T00:00:00.000Z`),s=i.toLocaleString(n,{weekday:"short",timeZone:"UTC"}),o=i.toLocaleString(n,{weekday:"long",timeZone:"UTC"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(s)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(o))},getLocaleMonth=(e,t,n)=>{const i=new Date(`1978-${String(t+1).padStart(2,"0")}-01T00:00:00.000Z`),s=i.toLocaleString(n,{month:"short",timeZone:"UTC"}),o=i.toLocaleString(n,{month:"long",timeZone:"UTC"});e.context.locale.months.short.push(capitalizeFirstLetter(s)),e.context.locale.months.long.push(capitalizeFirstLetter(o))},getLocale=e=>{var t,n,i,s,o,a,l,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if("string"==typeof e.locale){if("string"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},(t,n)=>getLocaleWeekday(e,n,e.locale)),Array.from({length:12},(t,n)=>getLocaleMonth(e,n,e.locale))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(s=null==(i=e.locale)?void 0:i.weekdays)?void 0:s.long[6])&&(null==(a=null==(o=e.locale)?void 0:o.months)?void 0:a.short[11])&&(null==(r=null==(l=e.locale)?void 0:l.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,"locale",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const i=t.target;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key)||"button"!==i.localName)return;const s=Array.from(e.context.mainElement.querySelectorAll('[data-vc="calendar"] button')),o=s.indexOf(i);if(-1===o)return;const a=(l=s[o]).hasAttribute("data-vc-date-btn")?7:l.hasAttribute("data-vc-months-month")?4:l.hasAttribute("data-vc-years-year")?5:1;var l;const r=(0,{ArrowUp:()=>Math.max(0,o-a),ArrowDown:()=>Math.min(s.length-1,o+a),ArrowLeft:()=>Math.max(0,o-1),ArrowRight:()=>Math.min(s.length-1,o+1)}[t.key])();null==(n=s[r])||n.focus()};return e.context.mainElement.addEventListener("keydown",t),()=>e.context.mainElement.removeEventListener("keydown",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,"selectedMonth",n.getMonth()),setContext(e,"selectedYear",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest("[data-vc-arrow]");if(n){if(["default","multiple"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if("year"===e.context.currentType&&void 0!==e.context.displayYear){const i={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,"displayYear",e.context.displayYear+i),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||("function"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const i=t.dataset.vcDate,s=t.closest("[data-vc-date][data-vc-date-selected]"),o=canToggleSelection(e);if(s&&!o)return;const a=s?e.context.selectedDates.filter(e=>e!==i):n?[...e.context.selectedDates,i]:[i];setContext(e,"selectedDates",a)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip="hidden",void(t.textContent="");const i=e.context.mainElement.getBoundingClientRect(),s=n.getBoundingClientRect();t.style.left=s.left-i.left+s.width/2+"px",t.style.top=s.bottom-i.top-s.height+"px",t.dataset.vcDateRangeTooltip="visible",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,s,i))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var i,s,o;if(!(null==(s=null==(i=state.self)?void 0:i.context)?void 0:s.selectedDates[0]))return;const a=getDateString(e);(null==(o=state.self.context.disableDates)?void 0:o.includes(a))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date="${a}"]`).forEach(e=>e.dataset.vcDateHover=""),t.forEach(e=>e.dataset.vcDateHover="first"),n.forEach(e=>{"first"===e.dataset.vcDateHover?e.dataset.vcDateHover="first-and-last":e.dataset.vcDateHover="last"}))},removeHoverEffect=()=>{var e,t;(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement)&&state.self.context.mainElement.querySelectorAll("[data-vc-date-hover]").forEach(e=>e.removeAttribute("data-vc-date-hover"))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc="dates"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const i=e.closest("[data-vc-date]");if(!i||state.lastDateEl===i)return;state.lastDateEl=i,createDateRangeTooltip(state.self,state.tooltipEl,i),removeHoverEffect();const s=i.dataset.vcDate,o=getDate(state.self.context.selectedDates[0]),a=getDate(s),l=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${state.self.context.selectedDates[0]}"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date="${s}"]`),[c,d]=o<a?[l,r]:[r,l],[u,h]=o<a?[o,a]:[a,o];for(let e=new Date(u);e<=h;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest("[data-vc-date-selected]");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame(()=>{e(n),state.isHovering=!1}))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&"Escape"===e.key&&(state.lastDateEl=null,setContext(state.self,"selectedDates",[]),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout(()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()},50)},updateDisabledDates=()=>{var e,t,n,i;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(i=state.self.context.disableDates)?void 0:i[0]))return;const s=getDate(state.self.context.selectedDates[0]),[o,a]=state.self.context.disableDates.map(e=>getDate(e)).reduce(([e,t],n)=>[s>=n?n:e,s<n&&null===t?n:t],[null,null]);o&&setContext(state.self,"displayDateMin",getDateString(new Date(o.setDate(o.getDate()+1)))),a&&setContext(state.self,"displayDateMax",getDateString(new Date(a.setDate(a.getDate()-1)))),state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,"displayDateMin",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector("[data-vc-date-range-tooltip]"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),i=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,"selectedDates",i),e.context.selectedDates.length>1&&e.context.selectedDates.sort((e,t)=>+new Date(e)-+new Date(t))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.addEventListener("keydown",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates)}),reset:()=>{const[n,i]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],s=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],o=parseDates([`${n}:${i}`]).filter(t=>!e.context.disableDates.includes(t)),a=s?e.enableEdgeDatesOnly?[n,i]:o:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,"selectedDates",a),e.disableDatesGaps&&(setContext(e,"displayDateMin",state.rangeMin),setContext(e,"displayDateMax",state.rangeMax)),state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),state.self.context.mainElement.removeEventListener("keydown",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener("mouseleave",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener("mousemove",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener("mouseleave",handleMouseLeave)}}})[1===e.context.selectedDates.length?"set":"reset"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll("[data-vc-date]").forEach(t=>{const n=t.querySelector("[data-vc-date-btn]"),i=t.dataset.vcDate,s=getDate(i).getDay();setDateModifier(e,e.context.selectedYear,t,n,s,i,"current")})},handleClickDate=(e,t)=>{var n;const i=t.target,s=i.closest("[data-vc-date-btn]");if(!e.selectionDatesMode||!["single","multiple","multiple-ranged"].includes(e.selectionDatesMode)||!s)return;const o=s.closest("[data-vc-date]");({single:()=>handleSelectDate(e,o,!1),multiple:()=>handleSelectDate(e,o,!0),"multiple-ranged":()=>handleSelectDateRange(e,o)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort((e,t)=>+new Date(e)-+new Date(t)),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const a=i.closest('[data-vc-date-month="prev"]'),l=i.closest('[data-vc-date-month="next"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"prev"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,"next"):updateDateModifier(e),current:()=>updateDateModifier(e)})[a?"prev":l?"next":"current"]()},typeClick=["month","year"],getValue=(e,t,n)=>{const{currentValue:i,columnID:s}=getColumnID(e,t);return"month"===e.context.currentType&&s>=0?n-s:"year"===e.context.currentType&&e.context.selectedYear!==i?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,"year",Number(t.dataset.vcYearsYear)),i=getDate(e.context.dateMin),s=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:a}=getColumnID(e,"year"),l=e.context.selectedMonth<i.getMonth()&&n<=i.getFullYear(),r=e.context.selectedMonth>s.getMonth()-o+a&&n>=s.getFullYear(),c=n<i.getFullYear(),d=n>s.getFullYear(),u=l||c?i.getFullYear():r||d?s.getFullYear():n,h=l||c?i.getMonth():r||d?s.getMonth()-o+a:e.context.selectedMonth;setContext(e,"selectedYear",u),setContext(e,"selectedMonth",h)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column="month"]').querySelector('[data-vc="year"]'),i=getValue(e,"month",Number(t.dataset.vcMonthsMonth)),s=Number(n.dataset.vcYear),o=getDate(e.context.dateMin),a=getDate(e.context.dateMax),l=i<o.getMonth()&&s<=o.getFullYear(),r=i>a.getMonth()&&s>=a.getFullYear();setContext(e,"selectedYear",s),setContext(e,"selectedMonth",l?o.getMonth():r?a.getMonth():i)},handleItemClick=(e,t,n,i)=>{var s;({year:()=>{if("multiple"===e.type)return handleMultipleYearSelection(e,i);setContext(e,"selectedYear",Number(i.dataset.vcYearsYear))},month:()=>{if("multiple"===e.type)return handleMultipleMonthSelection(e,i);setContext(e,"selectedMonth",Number(i.dataset.vcMonthsMonth))}})[n](),{year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}}[n](),e.context.currentType!==e.type?(setContext(e,"currentType",e.type),create(e),null==(s=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||s.focus()):setYearModifier(e,i,n,!0,!0)},handleClickType=(e,t,n)=>{var i;const s=t.target,o=s.closest(`[data-vc="${n}"]`),a={year:()=>createYears(e,s),month:()=>createMonths(e,s)};if(o&&e.onClickTitle&&e.onClickTitle(e,t),o&&e.context.currentType!==n)return a[n]();const l=s.closest(`[data-vc-${n}s-${n}]`);if(l)return handleItemClick(e,t,n,l);const r=s.closest('[data-vc="grid"]'),c=s.closest('[data-vc="column"]');(e.context.currentType===n&&o||"multiple"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,"currentType",e.type),create(e),null==(i=e.context.mainElement.querySelector(`[data-vc="${n}"]`))||i.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach(i=>{n[i]&&t.target&&handleClickType(e,t,i)})},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest("[data-vc-week-number]"),i=e.context.mainElement.querySelectorAll("[data-vc-date-week-number]");if(!n||!i[0])return;const s=Number(n.innerText),o=Number(n.dataset.vcWeekYear),a=Array.from(i).filter(e=>Number(e.dataset.vcDateWeekNumber)===s);e.onClickWeekNumber(e,s,o,a,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest("[data-vc-week-day]"),i=t.target.closest('[data-vc="column"]'),s=i?i.querySelectorAll("[data-vc-date-week-day]"):e.context.mainElement.querySelectorAll("[data-vc-date-week-day]");if(!n||!s[0])return;const o=Number(n.dataset.vcWeekDay),a=Array.from(s).filter(e=>Number(e.dataset.vcDateWeekDay)===o);e.onClickWeekDay(e,o,a,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener("click",t),()=>e.context.mainElement.removeEventListener("click",t)},initMonthsCount=e=>{if("multiple"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if("multiple"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,"displayMonthsCount",e.displayMonthsCount?e.displayMonthsCount:"multiple"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>"today"===e?getLocalDate():e instanceof Date||"number"==typeof e||"string"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,i;const s=resolveDate(e.dateMin,e.dateMin),o=resolveDate(e.dateMax,e.dateMax),a=resolveDate(e.displayDateMin,s),l=resolveDate(e.displayDateMax,o);setContext(e,"dateToday",resolveDate(e.dateToday,e.dateToday)),setContext(e,"displayDateMin",a?getDate(s)>=getDate(a)?s:a:s),setContext(e,"displayDateMax",l?getDate(o)<=getDate(l)?o:l:o);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(a)<getDate(e.context.dateToday);setContext(e,"displayDateMin",r||e.disableAllDates?e.context.dateToday:a),setContext(e,"displayDateMax",e.disableAllDates?e.context.dateToday:l),setContext(e,"disableDates",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort((e,t)=>+new Date(e)-+new Date(t)),setContext(e,"enableDates",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,"disableDates",e.context.disableDates.filter(t=>!e.context.enableDates.includes(t))),e.context.enableDates.length>1&&e.context.enableDates.sort((e,t)=>+new Date(e)-+new Date(t)),(null==(i=e.context.enableDates)?void 0:i[0])&&e.disableAllDates&&(setContext(e,"displayDateMin",e.context.enableDates[0]),setContext(e,"displayDateMax",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,"dateMin",e.displayDisabledDates?s:e.context.displayDateMin),setContext(e,"dateMax",e.displayDisabledDates?o:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,"selectedDates",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&"today"!==e.displayDateMin&&(n=e.displayDateMin,i=new Date,new Date(n).getTime()>i.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,i;if(e.displayDateMax&&"today"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,"selectedMonth",t),setContext(e,"selectedYear",n),setContext(e,"displayYear",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,i=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),i?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,i;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const s=12===e.selectionTimeMode,o=s?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[a,l,r]=null!=(i=null==(n=null==(t=e.selectedTime)?void 0:t.match(o))?void 0:n.slice(1))?i:[];a?s&&!r&&(r="AM"):(a=s?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),l=String(e.timeMinMinute),r=s?Number(transformTime12(String(e.timeMinHour)))>=12?"PM":"AM":null),setContext(e,"selectedHours",a.padStart(2,"0")),setContext(e,"selectedMinutes",l.padStart(2,"0")),setContext(e,"selectedKeeping",r),setContext(e,"selectedTime",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:""}`)},initAllVariables=e=>{setContext(e,"currentType",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:i,time:s,locale:o},a=!0)=>{var l;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=s?r.time:e.context.selectedTime,e.selectedDates="only-first"===i&&(null==(l=e.context.selectedDates)?void 0:l[0])?[e.context.selectedDates[0]]:!0===i?r.dates:e.context.selectedDates,o&&setContext(e,"locale",{months:{short:[],long:[]},weekdays:{short:[],long:[]}}),initAllVariables(e),a&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,"multiple-ranged"===e.selectionDatesMode&&i&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement("div");return t.className=e.styles.calendar,t.dataset.vc="calendar",t.dataset.vcInput="",t.dataset.vcCalendarHidden="",setContext(e,"inputModeInit",!0),setContext(e,"isShowInInputMode",!1),setContext(e,"mainElement",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout(()=>show(e)),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,"inputElement",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout(()=>show(e)):createToInput(e)};e.context.inputElement.addEventListener("click",t);const n="function"==typeof e.openOnFocus||!0===e.openOnFocus,i=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener("focus",i);const s=t=>{const n="Tab"===t.key&&!t.shiftKey,i=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(t.key);(n||i)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const i=e=>e.tabIndex>=0&&!e.hasAttribute("disabled")&&"true"!==e.getAttribute("aria-disabled"),s=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>i(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:i(e.context.mainElement)?e.context.mainElement:null;!s||s.tabIndex<0||(t.preventDefault(),s.focus())})(t)};return e.context.inputElement.addEventListener("keydown",s),()=>{e.context.inputElement.removeEventListener("click",t),n&&e.context.inputElement.removeEventListener("focus",i),e.context.inputElement.removeEventListener("keydown",s)}},init=e=>(setContext(e,"originalElement",e.context.mainElement.cloneNode(!0)),setContext(e,"isInit",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let i=0;i<n.length;i++){const s=n[i];"object"!=typeof e[s]||"object"!=typeof t[s]||t[s]instanceof Date||Array.isArray(t[s])?void 0!==t[s]&&(e[s]=t[s]):replaceProperties(e[s],t[s])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n="left";if(!t||!e)return n;const{canShow:i,parentPositions:s}=getAvailablePosition(e,t),o=i.left&&i.right;return(o&&i.bottom?"center":o&&i.top?["top","center"]:Array.isArray(s)?["bottom"===s[0]?"top":"bottom",...s.slice(1)]:s)||n}const setPosition=(e,t,n)=>{if(!e)return;const i="auto"===n?findBestPickerPosition(e,t):n,s={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},o=Array.isArray(i)?i[0]:"bottom",a=Array.isArray(i)?i[1]:i;t.dataset.vcPosition=o;const{top:l,left:r}=getOffset(e),c=l+s[o];let d=r+s[a];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,"cleanupHandlers",[]),setContext(e,"isShowInInputMode",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute("data-vc-calendar-hidden");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener("resize",t),e.context.cleanupHandlers.push(()=>window.removeEventListener("resize",t));const n=t=>{"Escape"===t.key&&hide(e)};document.addEventListener("keydown",n),e.context.cleanupHandlers.push(()=>document.removeEventListener("keydown",n));const i=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener("click",i,{capture:!0}),e.context.cleanupHandlers.push(()=>document.removeEventListener("click",i,{capture:!0})),e.onShow&&e.onShow(e)},labels={application:"Calendar",navigation:"Calendar Navigation",arrowNext:{month:"Next month",year:"Next list of years"},arrowPrev:{month:"Previous month",year:"Previous list of years"},month:"Select month, current selected month:",months:"List of months",year:"Select year, current selected year:",years:"List of years",week:"Days of the week",weekNumber:"Numbers of weeks in a year",dates:"Dates in the current month",selectingTime:"Selecting a time ",inputHour:"Hours",inputMinute:"Minutes",rangeHour:"Slider for selecting hours",rangeMinute:"Slider for selecting minutes",btnKeeping:"Switch AM/PM, current position:"},styles={calendar:"vc",controls:"vc-controls",grid:"vc-grid",column:"vc-column",header:"vc-header",headerContent:"vc-header__content",month:"vc-month",year:"vc-year",arrowPrev:"vc-arrow vc-arrow_prev",arrowNext:"vc-arrow vc-arrow_next",wrapper:"vc-wrapper",content:"vc-content",months:"vc-months",monthsMonth:"vc-months__month",years:"vc-years",yearsYear:"vc-years__year",week:"vc-week",weekDay:"vc-week__day",weekNumbers:"vc-week-numbers",weekNumbersTitle:"vc-week-numbers__title",weekNumbersContent:"vc-week-numbers__content",weekNumber:"vc-week-number",dates:"vc-dates",datesRow:"vc-dates__row",date:"vc-date",dateBtn:"vc-date__btn",datePopup:"vc-date__popup",dateRangeTooltip:"vc-date-range-tooltip",time:"vc-time",timeContent:"vc-time__content",timeHour:"vc-time__hour",timeMinute:"vc-time__minute",timeKeeping:"vc-time__keeping",timeRanges:"vc-time__ranges",timeRange:"vc-time__range"};class OptionsCalendar{constructor(){__publicField(this,"type","default"),__publicField(this,"inputMode",!1),__publicField(this,"openOnFocus",!0),__publicField(this,"positionToInput","left"),__publicField(this,"firstWeekday",1),__publicField(this,"monthsToSwitch",1),__publicField(this,"themeAttrDetect","html[data-theme]"),__publicField(this,"locale","en"),__publicField(this,"dateToday","today"),__publicField(this,"dateMin","1970-01-01"),__publicField(this,"dateMax","2470-12-31"),__publicField(this,"displayDateMin"),__publicField(this,"displayDateMax"),__publicField(this,"displayDatesOutside",!0),__publicField(this,"displayDisabledDates",!1),__publicField(this,"displayMonthsCount"),__publicField(this,"disableDates",[]),__publicField(this,"disableAllDates",!1),__publicField(this,"disableDatesPast",!1),__publicField(this,"disableDatesGaps",!1),__publicField(this,"disableWeekdays",[]),__publicField(this,"disableToday",!1),__publicField(this,"enableDates",[]),__publicField(this,"enableEdgeDatesOnly",!0),__publicField(this,"enableDateToggle",!0),__publicField(this,"enableWeekNumbers",!1),__publicField(this,"enableMonthChangeOnDayClick",!0),__publicField(this,"enableJumpToSelectedDate",!1),__publicField(this,"selectionDatesMode","single"),__publicField(this,"selectionMonthsMode",!0),__publicField(this,"selectionYearsMode",!0),__publicField(this,"selectionTimeMode",!1),__publicField(this,"selectedDates",[]),__publicField(this,"selectedMonth"),__publicField(this,"selectedYear"),__publicField(this,"selectedHolidays",[]),__publicField(this,"selectedWeekends",[0,6]),__publicField(this,"selectedTime"),__publicField(this,"selectedTheme","system"),__publicField(this,"timeMinHour",0),__publicField(this,"timeMaxHour",23),__publicField(this,"timeMinMinute",0),__publicField(this,"timeMaxMinute",59),__publicField(this,"timeControls","all"),__publicField(this,"timeStepHour",1),__publicField(this,"timeStepMinute",1),__publicField(this,"sanitizerHTML",e=>e),__publicField(this,"onClickDate"),__publicField(this,"onClickWeekDay"),__publicField(this,"onClickWeekNumber"),__publicField(this,"onClickTitle"),__publicField(this,"onClickMonth"),__publicField(this,"onClickYear"),__publicField(this,"onClickArrow"),__publicField(this,"onChangeTime"),__publicField(this,"onChangeToInput"),__publicField(this,"onCreateDateRangeTooltip"),__publicField(this,"onCreateDateEls"),__publicField(this,"onCreateMonthEls"),__publicField(this,"onCreateYearEls"),__publicField(this,"onInit"),__publicField(this,"onUpdate"),__publicField(this,"onDestroy"),__publicField(this,"onShow"),__publicField(this,"onHide"),__publicField(this,"popups",{}),__publicField(this,"labels",__spreadValues({},labels)),__publicField(this,"layouts",{default:"",multiple:"",month:"",year:""}),__publicField(this,"styles",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var i;super(),__publicField(this,"init",()=>init(this)),__publicField(this,"update",e=>update(this,e)),__publicField(this,"destroy",()=>destroy(this)),__publicField(this,"show",()=>show(this)),__publicField(this,"hide",()=>hide(this)),__publicField(this,"set",(e,t)=>set(this,e,t)),__publicField(this,"context"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,"mainElement","string"==typeof t?null!=(i=e.memoizedElements.get(t))?i:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,"memoizedElements",new Map);let Calendar=_Calendar;const NAME$f="datepicker",DATA_KEY$b="bs.datepicker",EVENT_KEY$c=`.${DATA_KEY$b}`,DATA_API_KEY$7=".data-api",EVENT_CHANGE$2=`change${EVENT_KEY$c}`,EVENT_SHOW$4=`show${EVENT_KEY$c}`,EVENT_SHOWN$3=`shown${EVENT_KEY$c}`,EVENT_HIDE$3=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$c}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$c}.data-api`,SELECTOR_DATA_TOGGLE$6='[data-bs-toggle="datepicker"]',HIDE_DELAY=100,Default$e={datepickerTheme:null,dateMin:null,dateMax:null,dateFormat:null,displayElement:null,displayMonthsCount:1,firstWeekday:1,inline:!1,locale:"default",positionElement:null,selectedDates:[],selectionMode:"single",placement:"left",vcpOptions:{}},DefaultType$e={datepickerTheme:"(null|string)",dateMin:"(null|string|number|object)",dateMax:"(null|string|number|object)",dateFormat:"(null|object|function)",displayElement:"(null|string|element|boolean)",displayMonthsCount:"number",firstWeekday:"number",inline:"boolean",locale:"string",positionElement:"(null|string|element)",selectedDates:"array",selectionMode:"string",placement:"string",vcpOptions:"object"};class Datepicker extends BaseComponent{constructor(e,t){super(e,t),this._calendar=null,this._isShown=!1,this._initCalendar()}static get Default(){return Default$e}static get DefaultType(){return DefaultType$e}static get NAME(){return NAME$f}toggle(){if(!this._config.inline)return this._isShown?this.hide():this.show()}show(){this._config.inline||!this._calendar||isDisabled(this._element)||this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$4).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$3))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented||(this._calendar.hide(),this._isShown=!1,EventHandler.trigger(this._element,EVENT_HIDDEN$5)))}dispose(){this._themeObserver&&(this._themeObserver.disconnect(),this._themeObserver=null),this._calendar&&this._calendar.destroy(),this._calendar=null,super.dispose()}getSelectedDates(){const e=this._calendar?.context?.selectedDates;return e?[...e]:[]}setSelectedDates(e){this._calendar&&this._calendar.set({selectedDates:e})}_initCalendar(){this._isInput="INPUT"===this._element.tagName,this._isInline=this._config.inline,this._isInline&&!this._isInput&&(this._boundInput=this._element.querySelector('input[type="hidden"], input[name]')),this._positionElement=this._resolvePositionElement(),this._displayElement=this._resolveDisplayElement();const e=this._buildCalendarOptions();this._calendar=new Calendar(this._positionElement,e),this._calendar.init(),this._setupThemeObserver(),this._isInput&&this._element.value&&this._parseInputValue(),this._updateDisplayWithSelectedDates()}_updateDisplayWithSelectedDates(){const{selectedDates:e}=this._config;if(!e||0===e.length)return;const t=this._formatDateForInput(e);this._isInput&&(this._element.value=t),this._boundInput&&(this._boundInput.value=e.join(",")),this._displayElement&&(this._displayElement.textContent=t)}_resolvePositionElement(){let{positionElement:e}=this._config;if("string"==typeof e&&(e=document.querySelector(e)),!e&&this._isInput&&!this._isInline){const t=this._element.closest(".form-adorn");t&&(e=t)}return e||this._element}_resolveDisplayElement(){const{displayElement:e}=this._config;return"string"==typeof e?document.querySelector(e):!0===e||null===e&&!this._isInput&&!this._isInline?this._element.querySelector("[data-bs-datepicker-display]")||this._element:e}_getThemeAncestor(){return this._element.closest("[data-bs-theme]")}_getEffectiveTheme(){const{datepickerTheme:e}=this._config;if(e)return e;const t=this._getThemeAncestor();return t?.getAttribute("data-bs-theme")||null}_syncThemeAttribute(e){if(!e)return;const t=this._getEffectiveTheme();t?e.setAttribute("data-bs-theme",t):e.removeAttribute("data-bs-theme")}_setupThemeObserver(){const e=this._getThemeAncestor();e&&!this._config.datepickerTheme&&(this._themeObserver=new MutationObserver(()=>{this._syncThemeAttribute(this._calendar?.context?.mainElement)}),this._themeObserver.observe(e,{attributes:!0,attributeFilter:["data-bs-theme"]}))}_buildCalendarOptions(){const e=this._getEffectiveTheme(),t=e&&"auto"!==e?e:"system",n={...this._config.vcpOptions,inputMode:!this._isInline,positionToInput:this._config.placement,firstWeekday:this._config.firstWeekday,locale:this._config.locale,selectionDatesMode:this._config.selectionMode,selectedDates:this._config.selectedDates,displayMonthsCount:this._config.displayMonthsCount,type:this._config.displayMonthsCount>1?"multiple":"default",selectedTheme:t,themeAttrDetect:"[data-bs-theme]",onClickDate:(e,t)=>this._handleDateClick(e,t),onInit:e=>{this._syncThemeAttribute(e.context.mainElement)},onShow:()=>{this._isShown=!0,this._syncThemeAttribute(this._calendar.context.mainElement)},onHide:()=>{this._isShown=!1}};if(this._config.selectedDates.length>0){const e=this._parseDate(this._config.selectedDates[0]);n.selectedMonth=e.getMonth(),n.selectedYear=e.getFullYear()}return this._config.dateMin&&(n.dateMin=this._config.dateMin),this._config.dateMax&&(n.dateMax=this._config.dateMax),n}_handleDateClick(e,t){const n=[...e.context.selectedDates];if(n.length>0){const e=this._formatDateForInput(n);this._isInput&&(this._element.value=e),this._boundInput&&(this._boundInput.value=n.join(",")),this._displayElement&&(this._displayElement.textContent=e)}EventHandler.trigger(this._element,EVENT_CHANGE$2,{dates:n,event:t}),this._maybeHideAfterSelection(n)}_maybeHideAfterSelection(e){this._isInline||("single"===this._config.selectionMode&&e.length>0||"multiple-ranged"===this._config.selectionMode&&e.length>=2)&&setTimeout(()=>this.hide(),100)}_parseDate(e){const[t,n,i]=e.split("-");return new Date(t,n-1,i)}_formatDate(e){const t=this._parseDate(e),n="default"===this._config.locale?void 0:this._config.locale,{dateFormat:i}=this._config;return"function"==typeof i?i(t,n):i&&"object"==typeof i?new Intl.DateTimeFormat(n,i).format(t):t.toLocaleDateString(n)}_formatDateForInput(e){if(0===e.length)return"";if(1===e.length)return this._formatDate(e[0]);const t="multiple-ranged"===this._config.selectionMode?" – ":", ";return e.map(e=>this._formatDate(e)).join(t)}_parseInputValue(){const e=this._element.value.trim();if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime())){const e=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`;this._calendar.set({selectedDates:[e]})}}}EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$6,function(e){"INPUT"!==this.tagName&&"true"!==this.dataset.bsInline&&(e.preventDefault(),Datepicker.getOrCreateInstance(this).toggle())}),EventHandler.on(document,EVENT_FOCUSIN_DATA_API,SELECTOR_DATA_TOGGLE$6,function(){"INPUT"===this.tagName&&Datepicker.getOrCreateInstance(this).show()}),EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$c}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const CLASS_NAME_OPEN="dialog-open";class DialogBase extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._openedAsModal=!1,this._addDialogListeners()}static get NAME(){return"dialogbase"}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){if(this._element.open||this._isTransitioning)return;if(EventHandler.trigger(this._element,this.constructor.eventName("show"),{relatedTarget:e}).defaultPrevented)return;this._isTransitioning=!0,this._onBeforeShow();const{modal:t,preventBodyScroll:n}=this._getShowOptions();this._showElement({modal:t,preventBodyScroll:n}),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("shown"),{relatedTarget:e})},this._element,this._isAnimated())}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented||(this._isTransitioning=!0,this._hideElement(),this._queueCallback(()=>{this._element.open&&this._closeAndCleanup(),this._element.classList.remove("hiding"),this._onAfterHide(),this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("hidden"))},this._element,this._isAnimated())))}dispose(){this._element.open&&this._closeAndCleanup(),super.dispose()}_getShowOptions(){return{modal:!0,preventBodyScroll:!0}}_onBeforeShow(){}_onAfterHide(){}_isAnimated(){return!this._element.classList.contains(this._getInstantClassName())}_getInstantClassName(){return"dialog-instant"}_getStaticClassName(){return"dialog-static"}_onCancel(){}_showElement({modal:e=!0,preventBodyScroll:t=!0}={}){this._openedAsModal=e,e?this._element.showModal():this._element.show(),t&&document.documentElement.classList.add("dialog-open")}_hideElement(){this._hideChildComponents(),this._element.classList.add("hiding"),this._shouldDeferClose()||this._closeAndCleanup()}_closeAndCleanup(){this._element.close(),this._openedAsModal=!1,document.querySelector("dialog[open]:modal")||document.documentElement.classList.remove("dialog-open")}_shouldDeferClose(){return!1}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,this.constructor.eventName("hidePrevented")).defaultPrevented)return;const e=this._getStaticClassName();this._element.classList.add(e),this._queueCallback(()=>{this._element.classList.remove(e)},this._element)}_hideChildComponents(){for(const e of SelectorEngine.find('[data-bs-toggle="tooltip"], [data-bs-toggle="popover"]',this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}for(const e of SelectorEngine.find(".toast.show",this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}}_addDialogListeners(){const e=this.constructor.EVENT_KEY;EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(this._onCancel(),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,`keydown${e}`,e=>{"Escape"!==e.key||this._openedAsModal||(e.preventDefault(),this._config.keyboard&&(this._onCancel(),this.hide()))}),EventHandler.on(this._element,`click${e}`,e=>{e.target===this._element&&this._openedAsModal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}const NAME$e="dialog",DATA_KEY$a="bs.dialog",EVENT_KEY$b=`.${DATA_KEY$a}`,DATA_API_KEY$6=".data-api",EVENT_SHOW$3=`show${EVENT_KEY$b}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$b}`,EVENT_CANCEL=`cancel${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$b}.data-api`,CLASS_NAME_NONMODAL="dialog-nonmodal",CLASS_NAME_INSTANT="dialog-instant",CLASS_NAME_SWAP_IN="dialog-swap-in",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',Default$d={backdrop:!0,keyboard:!0,modal:!0},DefaultType$d={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends DialogBase{static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}handleUpdate(){}_getShowOptions(){return{modal:this._config.modal,preventBodyScroll:this._config.modal}}_onBeforeShow(){this._config.modal||this._element.classList.add("dialog-nonmodal")}_onAfterHide(){this._element.classList.remove("dialog-nonmodal")}_shouldDeferClose(){return this._isAnimated()}_onCancel(){EventHandler.trigger(this._element,EVENT_CANCEL)}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$5,function(e){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$3,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$4,()=>{isVisible(this)&&this.focus({preventScroll:!0})})});const n=Manipulator.getDataAttributes(this),i=this.closest("dialog[open]");if(i&&i!==t){const e=Dialog.getOrCreateInstance(t,n);t.classList.add("dialog-swap-in"),e.show(this),EventHandler.one(t,`shown${EVENT_KEY$b}`,()=>{t.classList.remove("dialog-swap-in")});const s=Dialog.getInstance(i);return void(s&&(i.classList.add("dialog-instant"),EventHandler.one(i,EVENT_HIDDEN$4,()=>{i.classList.remove("dialog-instant")}),s.hide()))}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$d="navoverflow",DATA_KEY$9="bs.navoverflow",EVENT_KEY$a=`.${DATA_KEY$9}`,EVENT_UPDATE=`update${EVENT_KEY$a}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$a}`,CLASS_NAME_OVERFLOW="nav-overflow",CLASS_NAME_OVERFLOW_MENU="nav-overflow-menu",CLASS_NAME_HIDDEN="d-none",SELECTOR_NAV_ITEM=".nav-item",SELECTOR_NAV_LINK=".nav-link",SELECTOR_OVERFLOW_TOGGLE=".nav-overflow-toggle",SELECTOR_OVERFLOW_MENU=".nav-overflow-menu",SELECTOR_CUSTOM_ICON="[data-bs-overflow-icon]",CLASS_NAME_KEEP="nav-overflow-keep",Default$c={collapseBelow:0,iconPlacement:"start",menuPlacement:"bottom-end",moreText:"More",moreIcon:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></svg>',threshold:0},DefaultType$c={collapseBelow:"(number|string)",iconPlacement:"string",menuPlacement:"string",moreText:"string",moreIcon:"string",threshold:"number"};class NavOverflow extends BaseComponent{constructor(e,t){super(e,t),this._items=[],this._overflowItems=[],this._overflowMenu=null,this._overflowToggle=null,this._resizeObserver=null,this._collapseBelow=0,this._isInitialized=!1,this._init()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}update(){this._calculateOverflow(),EventHandler.trigger(this._element,EVENT_UPDATE)}dispose(){this._resizeObserver&&this._resizeObserver.disconnect(),this._restoreItems(),this._overflowToggle&&this._overflowToggle.parentElement&&this._overflowToggle.parentElement.remove(),super.dispose()}_init(){this._element.classList.add("nav-overflow"),this._items=[...SelectorEngine.find(".nav-item",this._element)];for(const[e,t]of this._items.entries())t.dataset.bsNavOrder=e;this._collapseBelow=this._resolveCollapseBelow(),this._createOverflowMenu(),this._setupResizeObserver(),this._calculateOverflow(),this._isInitialized=!0}_createOverflowMenu(){if(this._overflowToggle=SelectorEngine.findOne(".nav-overflow-toggle",this._element),this._overflowToggle)return void(this._overflowMenu=SelectorEngine.findOne(".nav-overflow-menu",this._element));const e=`<span class="nav-overflow-icon">${this._resolveIcon()}</span>`,t=`<span class="nav-overflow-text">${this._config.moreText}</span>`,n="end"===this._config.iconPlacement?`${t}${e}`:`${e}${t}`,i=document.createElement("li");i.className="nav-item nav-overflow-item",i.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="${this._config.menuPlacement}" aria-expanded="false">\n        ${n}\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(i),this._overflowToggle=i.querySelector(".nav-overflow-toggle"),this._overflowMenu=i.querySelector(".nav-overflow-menu")}_resolveIcon(){const e=SelectorEngine.findOne(SELECTOR_CUSTOM_ICON,this._element);if(!e)return this._config.moreIcon;const t=e.cloneNode(!0);t.removeAttribute("data-bs-overflow-icon");const n=t.outerHTML;return e.remove(),n}_resolveCollapseBelow(){const e=this._config.collapseBelow;if("number"==typeof e)return e;if("string"==typeof e&&""!==e){const t=getComputedStyle(document.documentElement).getPropertyValue(`--bs-breakpoint-${e}`);return Number.parseFloat(t)||0}return 0}_setupResizeObserver(){"undefined"!=typeof ResizeObserver?(this._resizeObserver=new ResizeObserver(()=>{this._calculateOverflow()}),this._resizeObserver.observe(this._element)):EventHandler.on(window,"resize",()=>this._calculateOverflow())}_calculateOverflow(){this._restoreItems();const e=this._element.offsetWidth,t=this._overflowToggle?.closest(".nav-item");if(this._collapseBelow>0&&e<this._collapseBelow){const e=this._items.filter(e=>!e.classList.contains(CLASS_NAME_KEEP));return this._moveToOverflow(e),t&&(e.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),void(e.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:e.length,visibleCount:this._items.length-e.length}))}let n=0;const i=[],s=e-(t?.offsetWidth||0)-this._items.filter(e=>e.classList.contains(CLASS_NAME_KEEP)).reduce((e,t)=>e+t.offsetWidth,0)-10;for(const e of this._items)e.classList.contains(CLASS_NAME_KEEP)||(n+=e.offsetWidth,n>s&&i.push(e));if(this._items.length-i.length<this._config.threshold&&this._items.length>this._config.threshold){const e=this._items.slice(this._config.threshold).filter(e=>!e.classList.contains(CLASS_NAME_KEEP));i.length=0,i.push(...e)}this._moveToOverflow(i),t&&(i.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),i.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:i.length,visibleCount:this._items.length-i.length})}_moveToOverflow(e){if(this._overflowMenu){this._overflowMenu.innerHTML="",this._overflowItems=[];for(const t of e){const e=SelectorEngine.findOne(".nav-link",t);if(!e)continue;const n=e.cloneNode(!0);n.className="menu-item",e.classList.contains("active")&&n.classList.add("active"),(e.classList.contains("disabled")||e.hasAttribute("disabled"))&&n.classList.add("disabled"),this._overflowMenu.append(n),t.classList.add("d-none"),t.dataset.bsNavOverflow="true",this._overflowItems.push(t)}}}_restoreItems(){for(const e of this._items)e.classList.remove("d-none"),delete e.dataset.bsNavOverflow;this._overflowMenu&&(this._overflowMenu.innerHTML=""),this._overflowItems=[]}}EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find('[data-bs-toggle="nav-overflow"]'))NavOverflow.getOrCreateInstance(e)});const NAME$c="swipe",EVENT_KEY$9=".bs.swipe",EVENT_TOUCHSTART="touchstart.bs.swipe",EVENT_TOUCHMOVE="touchmove.bs.swipe",EVENT_TOUCHEND="touchend.bs.swipe",EVENT_POINTERDOWN="pointerdown.bs.swipe",EVENT_POINTERUP="pointerup.bs.swipe",POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$b={endCallback:null,leftCallback:null,rightCallback:null,upCallback:null,downCallback:null},DefaultType$b={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)",upCallback:"(function|null)",downCallback:"(function|null)"};class Swipe extends Config{constructor(e,t){super(),this._element=e,e&&Swipe.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._deltaY=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){if(!this._supportPointerEvents)return this._deltaX=e.touches[0].clientX,void(this._deltaY=e.touches[0].clientY);this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX,this._deltaY=e.clientY)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX,this._deltaY=e.clientY-this._deltaY),this._handleSwipe(),execute(this._config.endCallback)}_move(e){if(e.touches&&e.touches.length>1)return this._deltaX=0,void(this._deltaY=0);this._deltaX=e.touches[0].clientX-this._deltaX,this._deltaY=e.touches[0].clientY-this._deltaY}_handleSwipe(){const e=Math.abs(this._deltaX),t=Math.abs(this._deltaY);if(t>e&&t>40){const e=this._deltaY>0?"down":"up";return this._deltaX=0,this._deltaY=0,void execute("down"===e?this._config.downCallback:this._config.upCallback)}if(e>40){const t=e/this._deltaX;if(this._deltaX=0,this._deltaY=0,!t)return;return void execute(t>0?this._config.rightCallback:this._config.leftCallback)}this._deltaX=0,this._deltaY=0}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,e=>this._start(e)),EventHandler.on(this._element,EVENT_POINTERUP,e=>this._end(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,e=>this._start(e)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>this._move(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$b="drawer",DATA_KEY$8="bs.drawer",EVENT_KEY$8=`.${DATA_KEY$8}`,DATA_API_KEY$5=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$8}.data-api`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$8}`,EVENT_RESIZE$1=`resize${EVENT_KEY$8}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$8}.data-api`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="drawer"]',Default$a={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$a={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Drawer extends DialogBase{constructor(e,t){super(e,t),this._swipeHelper=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_getShowOptions(){return{modal:Boolean(this._config.backdrop)||!this._config.scroll,preventBodyScroll:!this._config.scroll}}_onBeforeShow(){this._initSwipe()}_getInstantClassName(){return"drawer-instant"}_getStaticClassName(){return"drawer-static"}_initSwipe(){if(this._swipeHelper||!Swipe.isSupported())return;const e={},t=this._element;t.classList.contains("drawer-bottom")?e.downCallback=()=>this.hide():t.classList.contains("drawer-top")?e.upCallback=()=>this.hide():t.classList.contains("drawer-end")?isRTL$1()?e.leftCallback=()=>this.hide():e.rightCallback=()=>this.hide():isRTL$1()?e.rightCallback=()=>this.hide():e.leftCallback=()=>this.hide(),this._swipeHelper=new Swipe(t,e)}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$4,function(e){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus({preventScroll:!0})});const n=SelectorEngine.findOne("dialog.drawer[open]");n&&n!==t&&Drawer.getInstance(n).hide(),Drawer.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find("dialog.drawer[open]"))Drawer.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE$1,()=>{for(const e of SelectorEngine.find('dialog[open][class*="\\:drawer"]'))"fixed"!==getComputedStyle(e).position&&Drawer.getOrCreateInstance(e).hide()}),enableDismissTrigger(Drawer);const NAME$a="strength",DATA_KEY$7="bs.strength",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$7}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$9={input:null,minLength:8,messages:{weak:"Weak",fair:"Fair",good:"Good",strong:"Strong"},weights:{minLength:1,extraLength:1,lowercase:1,uppercase:1,numbers:1,special:1,multipleSpecial:1,longPassword:1},thresholds:[2,4,6],scorer:null},DefaultType$9={input:"(string|element|null)",minLength:"number",messages:"object",weights:"object",thresholds:"array",scorer:"(function|null)"};class Strength extends BaseComponent{constructor(e,t){super(e,t),this._input=this._getInput(),this._segments=SelectorEngine.find(".strength-segment",this._element),this._textElement=SelectorEngine.findOne(".strength-text",this._element.parentElement),this._currentStrength=null,this._input&&(this._addEventListeners(),this._evaluate())}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}getStrength(){return this._currentStrength}evaluate(){this._evaluate()}_getInput(){if(this._config.input)return"string"==typeof this._config.input?SelectorEngine.findOne(this._config.input):this._config.input;const e=this._element.parentElement;return SelectorEngine.findOne('input[type="password"]',e)}_addEventListeners(){EventHandler.on(this._input,"input",()=>this._evaluate()),EventHandler.on(this._input,"change",()=>this._evaluate())}_evaluate(){const e=this._input.value,t=this._calculateScore(e),n=this._scoreToStrength(t);n!==this._currentStrength&&(this._currentStrength=n,this._updateUI(n,t),EventHandler.trigger(this._element,EVENT_STRENGTH_CHANGE,{strength:n,score:t,password:e.length>0?"***":""}))}_calculateScore(e){if(!e)return 0;if("function"==typeof this._config.scorer)return this._config.scorer(e);const{weights:t}=this._config;let n=0;return e.length>=this._config.minLength&&(n+=t.minLength),e.length>=this._config.minLength+4&&(n+=t.extraLength),/[a-z]/.test(e)&&(n+=t.lowercase),/[A-Z]/.test(e)&&(n+=t.uppercase),/\d/.test(e)&&(n+=t.numbers),/[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.special),/[!@#$%^&*(),.?":{}|<>].*[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.multipleSpecial),e.length>=16&&(n+=t.longPassword),n}_scoreToStrength(e){if(0===e)return null;const[t,n,i]=this._config.thresholds;return e<=t?"weak":e<=n?"fair":e<=i?"good":"strong"}_updateUI(e){e?this._element.dataset.bsStrength=e:delete this._element.dataset.bsStrength;const t=e?STRENGTH_LEVELS.indexOf(e):-1;for(const[e,n]of this._segments.entries())e<=t?n.classList.add("active"):n.classList.remove("active");if(this._textElement)if(e&&this._config.messages[e]){this._textElement.textContent=this._config.messages[e],this._textElement.dataset.bsStrength=e;const t={weak:"danger",fair:"warning",good:"info",strong:"success"};this._textElement.style.setProperty("--strength-color",`var(--${t[e]}-text)`)}else this._textElement.textContent="",delete this._textElement.dataset.bsStrength}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$7}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$9="otpInput",DATA_KEY$6="bs.otpInput",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$6}`,EVENT_INPUT$1=`input${EVENT_KEY$6}`,EVENT_DOMCONTENT_LOADED=`DOMContentLoaded${EVENT_KEY$6}.data-api`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT$1="input",SYNC_EVENTS=["blur","keyup","select"],CLASS_NAME_INPUT="otp-input",CLASS_NAME_RENDERED="otp-rendered",CLASS_NAME_SLOTS="otp-slots",CLASS_NAME_SLOT="otp-slot",CLASS_NAME_SLOT_FILLED="otp-slot-filled",CLASS_NAME_SLOT_ACTIVE="otp-slot-active",CLASS_NAME_SEPARATOR="otp-separator",MASK_CHARACTER="•",TYPES={numeric:{inputmode:"numeric",pattern:"[0-9]*",filter:/[^0-9]/g},alphanumeric:{inputmode:"text",pattern:"[A-Za-z0-9]*",filter:/[^A-Za-z0-9]/g},alpha:{inputmode:"text",pattern:"[A-Za-z]*",filter:/[^A-Za-z]/g}},Default$8={groups:null,length:null,mask:!1,separator:"·",type:"numeric"},DefaultType$8={groups:"(array|null)",length:"(number|null)",mask:"boolean",separator:"string",type:"string"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne("input",this._element),this._input&&(this._type=TYPES[this._config.type]||TYPES.numeric,this._length=this._resolveLength(),this._slots=[],this._pointerActive=!1,this._pointerIndex=0,this._setupInput(),this._renderSlots(),this._addEventListeners(),this._render())}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}getValue(){return this._input.value}setValue(e){this._input.value=this._sanitize(String(e)),this._render(),this._checkComplete()}clear(){this._input.value="",this._render(),this._input.focus()}focus(){this._input.focus(),this._selectSlot(this._firstEmptyIndex()),this._render()}dispose(){EventHandler.off(this._input,"input",this._onInput),EventHandler.off(this._input,"beforeinput",this._onBeforeInput),EventHandler.off(this._input,"focus",this._onFocus),EventHandler.off(this._input,"pointerdown",this._onPointerDown),EventHandler.off(document,"selectionchange",this._onSelectionChange);for(const e of SYNC_EVENTS)EventHandler.off(this._input,e,this._onSync);this._slotsContainer?.remove(),this._element.classList.remove("otp-rendered"),super.dispose()}_resolveLength(){if(this._config.length)return this._config.length;const e=Number.parseInt(this._input.getAttribute("maxlength"),10);return Number.isNaN(e)||e<1?6:e}_setupInput(){const e=this._input;"number"!==e.type&&"password"!==e.type||(e.type="text"),e.classList.add("otp-input"),e.setAttribute("maxlength",String(this._length)),e.setAttribute("inputmode",this._type.inputmode),e.setAttribute("pattern",this._type.pattern),e.getAttribute("autocomplete")||e.setAttribute("autocomplete","one-time-code"),e.value&&(e.value=this._sanitize(e.value))}_renderSlots(){const e=document.createElement("div");e.className="otp-slots",e.setAttribute("aria-hidden","true");const{groups:t}=this._config;let n=0,i=0;for(let s=0;s<this._length;s++){const o=document.createElement("div");if(o.className="otp-slot",e.append(o),this._slots.push(o),Array.isArray(t)&&t.length>0&&(i++,i===t[n]&&s<this._length-1)){const s=document.createElement("div");s.className="otp-separator",s.textContent=this._config.separator,e.append(s),n=Math.min(n+1,t.length-1),i=0}}this._slotsContainer=e,this._element.append(e),this._element.classList.add("otp-rendered")}_addEventListeners(){this._onInput=()=>this._handleInput(),this._onBeforeInput=e=>this._handleBeforeInput(e),this._onPointerDown=e=>this._handlePointerDown(e),this._onFocus=()=>{if(this._pointerActive)return this._pointerActive=!1,this._selectSlot(this._pointerIndex),void this._render();this._selectSlot(this._firstEmptyIndex()),this._render()},this._onSync=()=>this._render(),this._onSelectionChange=()=>{document.activeElement===this._input&&this._render()},EventHandler.on(this._input,"input",this._onInput),EventHandler.on(this._input,"beforeinput",this._onBeforeInput),EventHandler.on(this._input,"focus",this._onFocus),EventHandler.on(this._input,"pointerdown",this._onPointerDown),EventHandler.on(document,"selectionchange",this._onSelectionChange);for(const e of SYNC_EVENTS)EventHandler.on(this._input,e,this._onSync)}_handleInput(){const e=this._sanitize(this._input.value);e!==this._input.value&&(this._input.value=e),document.activeElement===this._input&&this._selectSlot(this._firstEmptyIndex()),this._afterValueChange()}_handleBeforeInput(e){const{inputType:t,data:n}=e;if("insertText"===t&&n&&1===n.length){e.preventDefault();const t=this._sanitize(n);if(!t)return;const i=Math.min(this._input.selectionStart??0,this._length-1),s=[...this._input.value];return s[i]=t,this._input.value=s.join("").slice(0,this._length),this._selectSlot(i+1),void this._afterValueChange()}if("deleteContentBackward"===t){e.preventDefault();const t=this._input.selectionStart??0,n=this._input.selectionEnd??t,i=[...this._input.value];n>t?(i.splice(t,n-t),this._input.value=i.join(""),this._selectSlot(t)):t>0&&(i.splice(t-1,1),this._input.value=i.join(""),this._selectSlot(t-1)),this._afterValueChange()}}_handlePointerDown(e){const t=this._slotIndexFromPoint(e.clientX);if(null===t)return;const n=Math.min(t,this._firstEmptyIndex());if(document.activeElement===this._input)return e.preventDefault(),this._selectSlot(n),void this._render();this._pointerActive=!0,this._pointerIndex=n}_slotIndexFromPoint(e){for(const[t,n]of this._slots.entries())if(e<=n.getBoundingClientRect().right||t===this._slots.length-1)return t;return null}_afterValueChange(){this._render(),EventHandler.trigger(this._element,EVENT_INPUT$1,{value:this._input.value}),this._checkComplete()}_firstEmptyIndex(){return Math.min(this._input.value.length,this._length-1)}_selectSlot(e){const t=Math.max(0,Math.min(e,this._length-1)),n=t<this._input.value.length?t+1:t;this._input.setSelectionRange(t,n)}_sanitize(e){return e.replace(this._type.filter,"").slice(0,this._length)}_render(){const{value:e}=this._input,t=document.activeElement===this._input,n=Math.min(this._input.selectionStart??e.length,this._length-1);for(const[i,s]of this._slots.entries()){const o=e[i]??"";s.textContent=o&&this._config.mask?"•":o,s.classList.toggle("otp-slot-filled",Boolean(o)),s.classList.toggle("otp-slot-active",t&&i===n)}}_checkComplete(){const{value:e}=this._input;e.length===this._length&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,EVENT_DOMCONTENT_LOADED,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const NAME$8="chips",DATA_KEY$5="bs.chips",EVENT_KEY$5=".bs.chips",DATA_API_KEY$2=".data-api",EVENT_ADD="add.bs.chips",EVENT_REMOVE="remove.bs.chips",EVENT_CHANGE$1="change.bs.chips",EVENT_SELECT="select.bs.chips",SELECTOR_DATA_CHIPS="[data-bs-chips]",SELECTOR_GHOST_INPUT=".form-ghost",SELECTOR_CHIP=".chip",SELECTOR_CHIP_DISMISS=".chip-dismiss",CLASS_NAME_CHIP="chip",CLASS_NAME_CHIP_DISMISS="chip-dismiss",CLASS_NAME_ACTIVE$2="active",DEFAULT_DISMISS_ICON='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Default$7={separator:",",allowDuplicates:!1,maxChips:null,placeholder:"",dismissible:!0,dismissIcon:DEFAULT_DISMISS_ICON,createOnBlur:!0},DefaultType$7={separator:"(string|null)",allowDuplicates:"boolean",maxChips:"(number|null)",placeholder:"string",dismissible:"boolean",dismissIcon:"string",createOnBlur:"boolean"};class Chips extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne(".form-ghost",this._element),this._chips=[],this._selectedChips=new Set,this._anchorChip=null,this._input||this._createInput(),this._initializeExistingChips(),this._addEventListeners()}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}add(e){const t=String(e).trim();if(!t)return null;if(!this._config.allowDuplicates&&this._chips.includes(t))return null;if(null!==this._config.maxChips&&this._chips.length>=this._config.maxChips)return null;if(EventHandler.trigger(this._element,EVENT_ADD,{value:t,relatedTarget:this._input}).defaultPrevented)return null;const n=this._createChip(t);return this._element.insertBefore(n,this._input),this._chips.push(t),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),n}remove(e){let t,n;return"string"==typeof e?(n=e,t=this._findChipByValue(n)):(t=e,n=this._getChipValue(t)),!(!t||!n)&&(!EventHandler.trigger(this._element,EVENT_REMOVE,{value:n,chip:t,relatedTarget:this._input}).defaultPrevented&&(this._selectedChips.delete(t),this._anchorChip===t&&(this._anchorChip=null),t.remove(),this._chips=this._chips.filter(e=>e!==n),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),!0))}removeSelected(){const e=[...this._selectedChips];for(const t of e)this.remove(t);this._input?.focus()}getValues(){return[...this._chips]}getSelectedValues(){return[...this._selectedChips].map(e=>this._getChipValue(e))}clear(){const e=SelectorEngine.find(".chip",this._element);for(const t of e)t.remove();this._chips=[],this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:[]})}clearSelection(){for(const e of this._selectedChips)e.classList.remove("active");this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_SELECT,{selected:[]})}selectChip(e,t={}){const{addToSelection:n=!1,rangeSelect:i=!1}=t,s=this._getChipElements();if(s.includes(e)){if(i&&this._anchorChip){const t=s.indexOf(this._anchorChip),i=s.indexOf(e),o=Math.min(t,i),a=Math.max(t,i);n||this.clearSelection();for(let e=o;e<=a;e++)this._selectedChips.add(s[e]),s[e].classList.add("active")}else n?this._selectedChips.has(e)?(this._selectedChips.delete(e),e.classList.remove("active")):(this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e):(this.clearSelection(),this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e);EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}focus(){this._input?.focus()}_getChipElements(){return SelectorEngine.find(".chip",this._element)}_createInput(){const e=document.createElement("input");e.type="text",e.className="form-ghost",this._config.placeholder&&(e.placeholder=this._config.placeholder),this._element.append(e),this._input=e}_initializeExistingChips(){const e=SelectorEngine.find(".chip",this._element);for(const t of e){const e=this._getChipValue(t);e&&(this._chips.push(e),this._setupChip(t))}}_setupChip(e){e.setAttribute("tabindex","0"),this._config.dismissible&&!SelectorEngine.findOne(".chip-dismiss",e)&&e.append(this._createDismissButton())}_createChip(e){const t=document.createElement("span");return t.className="chip",t.dataset.bsChipValue=e,t.append(document.createTextNode(e)),this._setupChip(t),t}_createDismissButton(){const e=document.createElement("button");return e.type="button",e.className="chip-dismiss",e.setAttribute("aria-label","Remove"),e.setAttribute("tabindex","-1"),e.innerHTML=this._config.dismissIcon,e}_findChipByValue(e){return this._getChipElements().find(t=>this._getChipValue(t)===e)}_getChipValue(e){if(e.dataset.bsChipValue)return e.dataset.bsChipValue;const t=e.cloneNode(!0),n=SelectorEngine.findOne(".chip-dismiss",t);return n&&n.remove(),t.textContent?.trim()||""}_addEventListeners(){EventHandler.on(this._input,"keydown",e=>this._handleInputKeydown(e)),EventHandler.on(this._input,"input",e=>this._handleInput(e)),EventHandler.on(this._input,"paste",e=>this._handlePaste(e)),EventHandler.on(this._input,"focus",()=>this.clearSelection()),this._config.createOnBlur&&EventHandler.on(this._input,"blur",e=>{e.relatedTarget?.closest(".chip")||this._createChipFromInput()}),EventHandler.on(this._element,"click",".chip",e=>{if(e.target.closest(".chip-dismiss"))return;const t=e.target.closest(".chip");t&&(e.preventDefault(),this.selectChip(t,{addToSelection:e.metaKey||e.ctrlKey,rangeSelect:e.shiftKey}),t.focus())}),EventHandler.on(this._element,"click",".chip-dismiss",e=>{e.stopPropagation();const t=e.target.closest(".chip");t&&(this.remove(t),this._input?.focus())}),EventHandler.on(this._element,"keydown",".chip",e=>{this._handleChipKeydown(e)}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&(this.clearSelection(),this._input?.focus())})}_handleInputKeydown(e){const{key:t}=e;switch(t){case"Enter":e.preventDefault(),this._createChipFromInput();break;case"Backspace":case"Delete":if(""===this._input.value){e.preventDefault();const t=this._getChipElements();if(t.length>0){const e=t.at(-1);this.selectChip(e),e.focus()}}break;case"ArrowLeft":if(0===this._input.selectionStart&&0===this._input.selectionEnd){e.preventDefault();const t=this._getChipElements();if(t.length>0){const n=t.at(-1);e.shiftKey?this.selectChip(n,{addToSelection:!0}):this.selectChip(n),n.focus()}}break;case"Escape":this._input.value="",this.clearSelection(),this._input.blur()}}_handleChipKeydown(e){const{key:t}=e,n=e.target.closest(".chip");if(!n)return;const i=this._getChipElements(),s=i.indexOf(n);switch(t){case"Backspace":case"Delete":e.preventDefault(),this._handleChipDelete(s,i);break;case"ArrowLeft":e.preventDefault(),this._navigateChip(i,s,-1,e.shiftKey);break;case"ArrowRight":e.preventDefault(),this._navigateChip(i,s,1,e.shiftKey);break;case"Home":e.preventDefault(),this._navigateToEdge(i,0,e.shiftKey);break;case"End":case"Escape":e.preventDefault(),this.clearSelection(),this._input?.focus();break;case"a":this._handleSelectAll(e,i)}}_handleChipDelete(e,t){if(0===this._selectedChips.size)return;const n=Math.min(e,t.length-this._selectedChips.size-1);this.removeSelected();const i=this._getChipElements();if(i.length>0){const e=Math.max(0,Math.min(n,i.length-1));i[e].focus(),this.selectChip(i[e])}else this._input?.focus()}_navigateChip(e,t,n,i){const s=t+n;if(n<0&&s>=0){const t=e[s];this.selectChip(t,i?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else if(n>0&&s<e.length){const t=e[s];this.selectChip(t,i?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else n>0&&(this.clearSelection(),this._input?.focus())}_navigateToEdge(e,t,n){if(0===e.length)return;const i=e[t];this.selectChip(i,n?{rangeSelect:!0}:{}),i.focus()}_handleSelectAll(e,t){if(e.metaKey||e.ctrlKey){e.preventDefault();for(const e of t)this._selectedChips.add(e),e.classList.add("active");EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}_handleInput(e){const{value:t}=e.target,{separator:n}=this._config;if(n&&t.includes(n)){const e=t.split(n);for(const t of e.slice(0,-1))this.add(t.trim());this._input.value=e.at(-1)}}_handlePaste(e){const{separator:t}=this._config;if(!t)return;const n=(e.clipboardData||window.clipboardData).getData("text");if(n.includes(t)){e.preventDefault();const i=n.split(t);for(const e of i)this.add(e.trim())}}_createChipFromInput(){const e=this._input.value.trim();e&&(this.add(e),this._input.value="")}}EventHandler.on(document,"DOMContentLoaded.bs.chips.data-api",()=>{for(const e of SelectorEngine.find("[data-bs-chips]"))Chips.getOrCreateInstance(e)});const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,DATA_URL_PATTERN=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z=]+$/i,allowedAttribute=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!uriAttributes.has(n)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)||DATA_URL_PATTERN.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function sanitizeHtml(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const i=(new window.DOMParser).parseFromString(e,"text/html"),s=[...i.body.querySelectorAll("*")];for(const e of s){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const i=[...e.attributes],s=[...t["*"]||[],...t[n]||[]];for(const t of i)allowedAttribute(t,s)||e.removeAttribute(t.nodeName)}return i.body.innerHTML}const NAME$7="TemplateFactory",Default$6={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$6={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},DefaultContentType)}_setContent(e,t,n){const i=SelectorEngine.findOne(n,e);i&&((t=this._resolvePossibleFunction(t))?isElement$1(t)?this._putElementInTemplate(getElement(t),i):this._config.html?i.innerHTML=this._maybeSanitize(t):i.textContent=t:i.remove())}_maybeSanitize(e){return this._config.sanitize?sanitizeHtml(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return execute(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const NAME$6="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),ESCAPE_KEY="Escape",CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="tooltip"]',EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$3="click",EVENT_FOCUSIN$2="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER$1="mouseenter",EVENT_MOUSELEAVE="mouseleave",EVENT_KEYDOWN$1="keydown",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL$1()?"left":"right",BOTTOM:"bottom",LEFT:isRTL$1()?"right":"left"},Default$5={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",floatingConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},DefaultType$5={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",floatingConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Tooltip extends BaseComponent{constructor(e,t){super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._floatingCleanup=null,this._keydownHandler=null,this._templateFactory=null,this._newContent=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this.tip=null,this._parseResponsivePlacements(),this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),this._removeEscapeListener(),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposeFloating(),this._disposeMediaQueryListeners(),super.dispose()}async show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.eventName("show")),t=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return void(this._isHovered=!1);this._disposeFloating();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));let{container:i}=this._config;const s=this._element.closest("dialog[open]");if(s&&i===document.body&&(i=s),this._element.ownerDocument.documentElement.contains(this.tip)||(i.append(n),EventHandler.trigger(this._element,this.constructor.eventName("inserted"))),await this._createFloating(n),n.classList.add("show"),this._setEscapeListener(),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.on(e,"mouseover",noop);this._queueCallback(()=>{EventHandler.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._removeEscapeListener(),this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.off(e,"mouseover",noop);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposeFloating(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._floatingCleanup&&this.tip&&this._updateFloatingPosition()}_isWithContent(){return Boolean(this._getTitle())||this._hasNewContent()}_hasNewContent(){return Boolean(this._newContent)&&Object.values(this._newContent).some(Boolean)}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();t.classList.remove("fade","show"),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=getUID(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add("fade"),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposeFloating(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new TemplateFactory({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains("fade")}_isShown(){return this.tip&&this.tip.classList.contains("show")}_getPlacement(e){if(this._responsivePlacements){const e=getResponsivePlacement(this._responsivePlacements,"top");return AttachmentMap[e.toUpperCase()]||e}const t=execute(this._config.placement,[this,e,this._element]);return AttachmentMap[t.toUpperCase()]||t}_parseResponsivePlacements(){"string"==typeof this._config.placement?(this._responsivePlacements=parseResponsivePlacement(this._config.placement,"top"),this._responsivePlacements&&this._setupMediaQueryListeners()):this._responsivePlacements=null}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}async _createFloating(e){const t=this._getPlacement(e),n=e.querySelector(`.${this.constructor.NAME}-arrow`);await this._updateFloatingPosition(e,t,n),this._floatingCleanup=autoUpdate(this._element,e,()=>this._updateFloatingPosition(e,null,n))}async _updateFloatingPosition(e=this.tip,t=null,n=null){if(!e)return;t||(t=this._getPlacement(e)),n||(n=e.querySelector(`.${this.constructor.NAME}-arrow`));const i=this._getFloatingMiddleware(n),s=this._getFloatingConfig(t,i),{x:o,y:a,placement:l,middlewareData:r}=await computePosition(this._element,e,s);if(Object.assign(e.style,{position:"absolute",left:`${o}px`,top:`${a}px`}),n&&(n.style.position="absolute"),Manipulator.setDataAttribute(e,"placement",l),n&&r.arrow){const{x:e,y:t}=r.arrow,i=l.startsWith("top")||l.startsWith("bottom");Object.assign(n.style,{left:i&&null!==e?`${e}px`:"",top:i||null===t?"":`${t}px`,right:"",bottom:""})}}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_resolvePossibleFunction(e){return execute(e,[this._element,this._element])}_getFloatingMiddleware(e){const t=this._getOffset(),n=[offset("function"==typeof t?t:{mainAxis:t[1]||0,crossAxis:t[0]||0}),flip({fallbackPlacements:this._config.fallbackPlacements}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})];return e&&n.push(arrow({element:e})),n}_getFloatingConfig(e,t){const n={placement:e,middleware:t};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)EventHandler.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!(t._isShown()&&t._activeTrigger.click),t.toggle()});else if("manual"!==t){const e="hover"===t?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n="hover"===t?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");EventHandler.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0,t._enter()}),EventHandler.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler)}_setEscapeListener(){this._keydownHandler||(this._keydownHandler=e=>{"Escape"===e.key&&this._isShown()&&this.tip.isConnected&&(e.preventDefault(),e.stopPropagation(),this.hide())},this._element.ownerDocument.addEventListener("keydown",this._keydownHandler,!0))}_removeEscapeListener(){this._keydownHandler&&(this._element.ownerDocument.removeEventListener("keydown",this._keydownHandler,!0),this._keydownHandler=null)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);for(const e of Object.keys(t))DISALLOWED_ATTRIBUTES.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"!=typeof e.title&&"boolean"!=typeof e.title||(e.title=e.title.toString()),"number"!=typeof e.content&&"boolean"!=typeof e.content||(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null),this.tip&&(this.tip.remove(),this.tip=null)}}const initTooltip=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$3);t&&Tooltip.getOrCreateInstance(t)};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$5="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="popover"]',EVENT_CLICK$2="click",EVENT_FOCUSIN$1="focusin",EVENT_MOUSEENTER="mouseenter",Default$4={...Tooltip.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},DefaultType$4={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}_isWithContent(){return Boolean(this._getTitle()||this._getContent())||this._hasNewContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}}const initPopover=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$2);t&&("click"===e.type&&e.preventDefault(),Popover.getOrCreateInstance(t))};EventHandler.on(document,"click",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$2,initPopover);const NAME$4="range",DATA_KEY$4="bs.range",EVENT_KEY$4=".bs.range",DATA_API_KEY$1=".data-api",EVENT_CHANGED="changed.bs.range",EVENT_DOM_CONTENT_LOADED="DOMContentLoaded.bs.range.data-api",EVENT_INPUT="input",EVENT_CHANGE="change",SELECTOR_RANGE=".form-range",SELECTOR_INPUT=".form-range-input",CLASS_NAME_BUBBLE="form-range-bubble",CLASS_NAME_TICKS="form-range-ticks",CLASS_NAME_TICK="form-range-tick",CLASS_NAME_TICK_LABEL="form-range-tick-label",PROPERTY_FILL="--bs-range-fill",Default$3={bubble:!1,formatter:null},DefaultType$3={bubble:"(boolean|null)",formatter:"(function|null)"};class Range extends BaseComponent{constructor(e,t){super(e,t),this._element&&(this._input=SelectorEngine.findOne(SELECTOR_INPUT,this._element),this._input&&(this._bubble=null,this._bubbleText=null,this._ticks=null,this._updateHandler=()=>this._update(),this._config.bubble&&this._createBubble(),this._createTicks(),this._addEventListeners(),this._update()))}static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}update(){this._update()}dispose(){EventHandler.off(this._input,"input",this._updateHandler),EventHandler.off(this._input,"change",this._updateHandler),this._bubble?.remove(),this._ticks?.remove(),super.dispose()}_configAfterMerge(e){return null===e.bubble&&(e.bubble=!0),e}_addEventListeners(){EventHandler.on(this._input,"input",this._updateHandler),EventHandler.on(this._input,"change",this._updateHandler)}_min(){return""===this._input.min?0:Number.parseFloat(this._input.min)}_max(){return""===this._input.max?100:Number.parseFloat(this._input.max)}_value(){return Number.parseFloat(this._input.value)}_ratio(){const e=this._max()-this._min();return e>0?(this._value()-this._min())/e:0}_update(){this._element.style.setProperty(PROPERTY_FILL,`${this._ratio()}`),this._bubbleText&&(this._bubbleText.textContent=this._format(this._value())),EventHandler.trigger(this._input,EVENT_CHANGED,{value:this._value()})}_format(e){return"function"==typeof this._config.formatter?this._config.formatter(e):String(e)}_createBubble(){this._bubble=document.createElement("output"),this._bubble.className=`${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`,this._bubble.setAttribute("aria-hidden","true");const e=document.createElement("div");e.className="tooltip-arrow",this._bubbleText=document.createElement("div"),this._bubbleText.className="tooltip-inner",this._bubble.append(e,this._bubbleText),this._input.insertAdjacentElement("afterend",this._bubble)}_createTicks(){const e=this._input.getAttribute("list"),t=e?document.getElementById(e):null;if(!t)return;const n=this._min(),i=this._max()-n||1,s=[];for(const e of SelectorEngine.find("option",t)){const t=Number.parseFloat(e.value);if(!Number.isNaN(t)){const o=Math.min(Math.max((t-n)/i,0),1);s.push({ratio:o,label:e.label})}}if(0===s.length)return;s.sort((e,t)=>e.ratio-t.ratio),this._ticks=document.createElement("div"),this._ticks.className=CLASS_NAME_TICKS,this._ticks.setAttribute("aria-hidden","true");const o=[0,...s.map(e=>e.ratio),1];this._ticks.style.gridTemplateColumns=o.slice(1).map((e,t)=>e-o[t]+"fr").join(" ");for(const[e,t]of s.entries()){const n=document.createElement("span");if(n.className=CLASS_NAME_TICK,n.style.gridColumnStart=`${e+2}`,t.label){const e=document.createElement("span");e.className=CLASS_NAME_TICK_LABEL,e.textContent=t.label,n.append(e)}this._ticks.append(n)}this._element.append(this._ticks)}}EventHandler.on(document,EVENT_DOM_CONTENT_LOADED,()=>{for(const e of SelectorEngine.find(".form-range"))Range.getOrCreateInstance(e)});const NAME$3="scrollspy",DATA_KEY$3="bs.scrollspy",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$3}`,EVENT_CLICK$1=`click${EVENT_KEY$3}`,EVENT_SCROLL=`scroll${EVENT_KEY$3}`,EVENT_SCROLLEND=`scrollend${EVENT_KEY$3}`,EVENT_RESIZE=`resize${EVENT_KEY$3}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$3}.data-api`,CLASS_NAME_MENU_ITEM="menu-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .nav-item > .nav-link, .list-group-item",SELECTOR_MENU_TOGGLE$1='[data-bs-toggle="menu"]',SCROLL_IDLE_TIMEOUT=100,RESIZE_DEBOUNCE=100,Default$2={rootMargin:null,smoothScroll:!1,target:null,threshold:[0],topMargin:"12%"},DefaultType$2={rootMargin:"(string|null)",smoothScroll:"boolean",target:"element",threshold:"array",topMargin:"string"};class ScrollSpy extends BaseComponent{constructor(e,t){super(e,t),this._sections=[],this._linkBySection=new Map,this._sectionByLink=new Map,this._intersecting=new Set,this._activeTarget=null,this._lastActive=null,this._atBottom=!1,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._observer=null,this._sentinel=null,this._sentinelObserver=null,this._pendingNavigation=null,this._settleTimeout=null,this._settleHandler=null,this._scrollIdleHandler=null,this._resizeHandler=null,this._resizeTimeout=null,this.refresh()}static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?.disconnect(),this._intersecting.clear(),this._observer=this._getNewObserver();for(const e of this._sections)this._observer.observe(e);this._setUpSentinel(),this._maybeAddResizeListener()}dispose(){this._observer?.disconnect(),this._teardownSentinel(),this._disarmSettle(),this._removeResizeListener(),EventHandler.off(this._config.target,EVENT_CLICK$1),super.dispose()}_configAfterMerge(e){return e.target=getElement(e.target)||document.body,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin??this._getDerivedRootMargin()};return new IntersectionObserver(e=>this._onIntersect(e),e)}_onIntersect(e){for(const t of e)t.isIntersecting?this._intersecting.add(t.target):this._intersecting.delete(t.target);this._computeActive()}_computeActive(){if(!this._element?.isConnected||0===this._sections.length)return;let e=null;if(this._atBottom)e=this._sections.at(-1);else{for(const t of this._sections)this._intersecting.has(t)&&(e=t);e||=this._lastActive??this._sections.at(0)}if(!e)return;this._lastActive=e;const t=this._linkBySection.get(e);t&&this._process(t)}_parseTopMargin(){const e=String(this._config.topMargin);return{value:Number.parseFloat(e)||0,unit:e.endsWith("%")?"%":"px"}}_getDerivedRootMargin(){const{value:e,unit:t}=this._parseTopMargin();let n=e;if("px"===t){const t=this._rootElement?this._rootElement.clientHeight:document.documentElement.clientHeight||window.innerHeight;n=t?e/t*100:12}return`0px 0px -${Math.min(Math.max(100-n,0),100)}% 0px`}_usesPixelMargin(){return!this._config.rootMargin&&"px"===this._parseTopMargin().unit}_setUpSentinel(){if(this._teardownSentinel(),0===this._sections.length)return;const e=document.createElement("div");e.setAttribute("aria-hidden","true"),e.style.cssText="position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;",this._element.append(e),this._sentinel=e,this._sentinelObserver=new IntersectionObserver(e=>this._onSentinel(e),{root:this._rootElement,threshold:[0]}),this._sentinelObserver.observe(e)}_onSentinel(e){const t=e.at(-1);this._atBottom=Boolean(t?.isIntersecting)&&this._isOverflowing(),this._computeActive()}_isOverflowing(){const e=this._rootElement||document.scrollingElement||document.documentElement;return e.scrollHeight>e.clientHeight}_teardownSentinel(){this._sentinelObserver?.disconnect(),this._sentinelObserver=null,this._sentinel?.remove(),this._sentinel=null,this._atBottom=!1}_maybeAddResizeListener(){this._removeResizeListener(),this._usesPixelMargin()&&(this._resizeHandler=()=>{clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(()=>this._rebuildObserver(),100)},EventHandler.on(window,EVENT_RESIZE,this._resizeHandler))}_removeResizeListener(){clearTimeout(this._resizeTimeout),this._resizeTimeout=null,this._resizeHandler&&(EventHandler.off(window,EVENT_RESIZE,this._resizeHandler),this._resizeHandler=null)}_rebuildObserver(){if(this._observer){this._observer.disconnect(),this._intersecting.clear(),this._observer=this._getNewObserver();for(const e of this._sections)this._observer.observe(e)}}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK$1),EventHandler.on(this._config.target,EVENT_CLICK$1,"[href]",e=>{const t=e.target.closest("[href]"),n=t&&this._sectionByLink.get(t);if(!n||!this._element)return;e.preventDefault();const i=this._rootElement||window,s=n.offsetTop-this._element.offsetTop,o=this._rootElement?this._rootElement.scrollTop:window.scrollY??window.pageYOffset;if(matchMedia("(prefers-reduced-motion: reduce)").matches||Math.abs(o-s)<=2)return i.scrollTo?i.scrollTo({top:s,behavior:"auto"}):i.scrollTop=s,void this._settleNavigation(t.hash,n);this._pendingNavigation={hash:t.hash,section:n},this._armSettle(),i.scrollTo?i.scrollTo({top:s,behavior:"smooth"}):i.scrollTop=s}))}_armSettle(){this._disarmSettle();const e=this._getSettleTarget();this._settleHandler=()=>this._onSettle(),this._scrollIdleHandler=()=>{clearTimeout(this._settleTimeout),this._settleTimeout=setTimeout(()=>this._onSettle(),100)},EventHandler.on(e,EVENT_SCROLLEND,this._settleHandler),EventHandler.on(e,EVENT_SCROLL,this._scrollIdleHandler)}_disarmSettle(){clearTimeout(this._settleTimeout),this._settleTimeout=null;const e=this._getSettleTarget();this._settleHandler&&(EventHandler.off(e,EVENT_SCROLLEND,this._settleHandler),this._settleHandler=null),this._scrollIdleHandler&&(EventHandler.off(e,EVENT_SCROLL,this._scrollIdleHandler),this._scrollIdleHandler=null)}_getSettleTarget(){return this._rootElement||document}_onSettle(){if(this._disarmSettle(),!this._pendingNavigation)return;const{hash:e,section:t}=this._pendingNavigation;this._settleNavigation(e,t)}_settleNavigation(e,t){this._pendingNavigation=null,window.history?.replaceState&&window.history.replaceState(null,"",e),t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus({preventScroll:!0})}_initializeTargetsAndObservables(){this._sections=[],this._linkBySection=new Map,this._sectionByLink=new Map;const e=SelectorEngine.find("[href]",this._config.target),t=new Set;for(const n of e){if(!n.hash||isDisabled(n))continue;const e=decodeFragment(n.hash.slice(1));if(!e)continue;const i=document.getElementById(e);i&&this._element.contains(i)&&isVisible(i)&&(this._sectionByLink.set(n,i),this._linkBySection.set(i,n),t.has(i)||(t.add(i),this._sections.push(i)))}this._sections.sort((e,t)=>e.getBoundingClientRect().top-t.getBoundingClientRect().top)}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add("active"),this._activateParents(e),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("menu-item")){const t=e.closest(".menu")?.previousElementSibling;return void(t?.matches(SELECTOR_MENU_TOGGLE$1)&&t.classList.add("active"))}for(const t of SelectorEngine.parents(e,".nav, .list-group"))for(const e of SelectorEngine.prev(t,SELECTOR_LINK_ITEMS))e.classList.add("active")}_clearActiveClass(e){e.classList.remove("active");const t=SelectorEngine.find("[href].active",e);for(const e of t)e.classList.remove("active")}}function decodeFragment(e){try{return decodeURIComponent(e)}catch{return e}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(e)});const NAME$2="tab",DATA_KEY$2="bs.tab",EVENT_KEY$2=".bs.tab",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab",EVENT_KEYDOWN="keydown.bs.tab",EVENT_LOAD_DATA_API="load.bs.tab",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",SELECTOR_MENU_TOGGLE='[data-bs-toggle="menu"]',SELECTOR_MENU=".menu",NOT_SELECTOR_MENU_TOGGLE=`:not(${SELECTOR_MENU_TOGGLE})`,SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER=`.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`,SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="tab"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"]';class Tab extends BaseComponent{constructor(e){super(e),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),n=t?EventHandler.trigger(t,EVENT_HIDE$1,{relatedTarget:e}):null;EventHandler.trigger(e,EVENT_SHOW$1,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add("active"),this._activate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleMenu(e,!0),EventHandler.trigger(e,EVENT_SHOWN$1,{relatedTarget:t})):e.classList.add("show")},e,e.classList.contains("fade")))}_deactivate(e,t){e&&(e.classList.remove("active"),e.blur(),this._deactivate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleMenu(e,!1),EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:t})):e.classList.remove("show")},e,e.classList.contains("fade")))}_keydown(e){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(e.key))return;if(e.altKey||e.ctrlKey||e.metaKey)return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(e=>!isDisabled(e));let n;if([HOME_KEY,END_KEY].includes(e.key))n=e.key===HOME_KEY?t[0]:t.at(-1);else{const i=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(e.key);n=getNextActiveElement(t,e.target,i,!0)}n&&(n.focus({preventScroll:!0}),Tab.getOrCreateInstance(n).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=SelectorEngine.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleMenu(e,t){const n=this._getOuterElement(e),i=SelectorEngine.findOne(SELECTOR_MENU_TOGGLE,n);if(!i)return;const s=SelectorEngine.findOne(".menu",n);i.classList.toggle("active",t),s&&s.classList.toggle("show",t),i.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains("active")}_getInnerElement(e){return e.matches(SELECTOR_INNER_ELEM)?e:SelectorEngine.findOne(SELECTOR_INNER_ELEM,e)}_getOuterElement(e){return e.closest(SELECTOR_OUTER)||e}}EventHandler.on(document,"click.bs.tab",SELECTOR_DATA_TOGGLE$1,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()}),EventHandler.on(window,"load.bs.tab",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(e)});const NAME$1="toast",DATA_KEY$1="bs.toast",EVENT_KEY$1=".bs.toast",EVENT_MOUSEOVER="mouseover.bs.toast",EVENT_MOUSEOUT="mouseout.bs.toast",EVENT_FOCUSIN="focusin.bs.toast",EVENT_FOCUSOUT="focusout.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType$1={animation:"boolean",autohide:"boolean",delay:"number"},Default$1={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$1}show(){EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show","showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing","show"),EventHandler.trigger(this._element,EVENT_HIDDEN)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove("show"),super.dispose()}isShown(){return this._element.classList.contains("show")}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,e=>this._onInteraction(e,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}}enableDismissTrigger(Toast);const NAME="toggler",DATA_KEY="bs.toggler",EVENT_KEY=`.${DATA_KEY}`,EVENT_TOGGLE=`toggle${EVENT_KEY}`,EVENT_TOGGLED=`toggled${EVENT_KEY}`,EVENT_CLICK="click",SELECTOR_DATA_TOGGLE='[data-bs-toggle="toggler"]',DefaultType={attribute:"string",value:"(string|number|boolean)"},Default={attribute:"class",value:null};class Toggler extends BaseComponent{static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}toggle(){EventHandler.trigger(this._element,EVENT_TOGGLE).defaultPrevented||(this._execute(),EventHandler.trigger(this._element,EVENT_TOGGLED))}_execute(){const{attribute:e,value:t}=this._config;"id"!==e&&("class"!==e?this._element.getAttribute(e)!==String(t)?this._element.setAttribute(e,t):this._element.removeAttribute(e):this._element.classList.toggle(t))}}eventActionOnPlugin(Toggler,"click",SELECTOR_DATA_TOGGLE,"toggle");export{Alert,Button,Carousel,Chips,Collapse,Combobox,Datepicker,Dialog,Drawer,Menu,NavOverflow,OtpInput,Popover,Range,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
 //# sourceMappingURL=bootstrap.bundle.min.js.map
\ No newline at end of file
index fca36aedc184c7f81f935262af8e3627a1299749..85078480d21ea70d0907ef0af4fc378e3f5894a8 100644 (file)
@@ -1 +1 @@
-{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","this","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","length","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","existingInstance","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","complete","selected","triggerArray","isOpen","round","createCoords","v","x","y","oppositeSideMap","bottom","clamp","start","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","reference","floating","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","concat","expandPaddingObject","padding","getPaddingObject","rectToClientRect","height","computeCoordsFromPlacement","_ref","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","MAX_RESET_COUNT","computePosition","middleware","platformWithDetectOverflow","getElementRects","statefulPlacement","resetCount","middlewareData","i","currentMiddleware","nextX","nextY","reset","initialPlacement","arrow","arrowDimensions","getDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","centerOffset","flip","_middlewareData$arrow","_middlewareData$flip","mainAxis","checkMainAxis","crossAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","sides","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","d","resetPlacement","sort","a","b","_overflowsData$filter2","currentSideAxis","reduce","acc","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","hasWindow","getNodeName","isNode","nodeName","getWindow","_node$ownerDocument","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","isTableElement","isTopLayer","_e","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","css","transform","translate","scale","rotate","perspective","isWebKit","backdropFilter","willChange","contain","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","supports","getNodeScroll","scrollTop","scrollX","scrollY","result","assignedSlot","host","getNearestOverflowAncestor","body","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","visualViewport","getPrototypeOf","getCssDimensions","getComputedStyle$1","hasOffset","offsetWidth","shouldFallback","$","unwrapElement","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","shouldAddVisualOffsets","isFixed","floatingOffsetParent","includeScale","isFixedStrategy","clientRect","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","htmlRect","topLayer","offsets","isOffsetParentAnElement","offsetRect","htmlOffset","Array","getDocumentRect","html","scrollHeight","clientHeight","SCROLLBAR_MAX","getViewportRect","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","compatMode","marginLeft","marginRight","clippingStableScrollbarWidth","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","position","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","clippingAncestors","_c","firstRect","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","getOffsetParentFn","getDimensionsFn","floatingDimensions","rectsAreEqual","observeMove","onMove","timeoutId","io","cleanup","_io","refresh","skip","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","arrow$1","mergedOptions","platformWithCache","computePosition$1","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","xs","part","breakpoint","undefined","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","createBreakpointListeners","listeners","minWidth","mql","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","autoClose","container","floatingConfig","menu","submenuTrigger","submenuDelay","Menu","static","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","focusVisible","_openInstances","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","_updateFloatingPosition","wrapper","referenceElement","_getPlacement","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","offsetValue","_getFallbackPlacements","defaultConfig","_getContainer","isConnected","finalPlacement","assign","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","updatePosition","then","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","at","clearMenus","composedPath","isMenuTarget","formAncestor","isInsideMenuForm","dataApiKeydownHandler","isInput","isContentEditable","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","__defProp","__defProps","defineProperties","__getOwnPropDescs","getOwnPropertyDescriptors","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","hasOwnProperty","__propIsEnum","propertyIsEnumerable","__defNormalProp","e","t","n","enumerable","writable","__spreadValues","__spreadProps","__publicField","errorMessages","notFoundSelector","notInit","notLocale","incorrectTime","incorrectMonthsCount","setContext","context","destroy","o","l","isInit","inputMode","mainElement","parentElement","removeChild","inputElement","replaceWith","originalElement","onDestroy","skipOpenOnFocus","WeakSet","shouldSkipOpenOnFocus","setSkipOpenOnFocus","clearSkipOpenOnFocus","PREV_TABINDEX_ATTR","isFocusable","tabIndex","storePrevTabIndex","restorePrevTabIndex","disableTabbing","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","FILTER_ACCEPT","FILTER_SKIP","nextNode","restoreTabbing","isShowInInputMode","currentType","vcCalendarHidden","cleanupHandlers","openOnFocus","onHide","getOffset","getViewportDimensions","vw","vh","innerHeight","getWindowScrollPosition","calculateAvailableSpace","s","r","getAvailablePosition","canShow","parentPositions","c","u","m","p","h","condition","handleDay","modifier","className","datePopup","vcDatePopup","innerHTML","sanitizerHTML","ariaExpanded","ariaLabel","appendChild","createDatePopup","popups","getDate","getDateString","getFullYear","String","getMonth","parseDates","toISOString","substring","getTime","setDate","updateAttribute","setDateModifier","displayDateMin","displayDateMax","disableDates","selectionMonthsMode","selectionYearsMode","disableToday","dateToday","selectedWeekends","selectedHolidays","selectedDates","selectionDatesMode","enableEdgeDatesOnly","getLocaleString","toLocaleString","getWeekNumber","getDay","ceil","year","week","addWeekNumberForDate","firstWeekday","vcDateWeekNumber","setDaysAsDisabled","disableWeekdays","disableAllDates","enableDates","createDate","locale","date","vcDate","vcDateMonth","vcDateWeekDay","role","displayDatesOutside","dateBtn","dateStyle","timeZone","vcDateBtn","innerText","enableWeekNumbers","addDate","onCreateDateEls","createDatesFromCurrentMonth","createDatesFromNextMonth","createDatesFromPrevMonth","createWeekNumbers","weekNumbersTitle","vcWeekNumbers","weekNumbersContent","weekNumber","vcWeekNumber","vcWeekYear","createDates","selectedYear","selectedMonth","vcDatesDisabled","setMonth","datesRow","g","layoutDefault","header","labels","navigation","headerContent","content","layoutMonths","layoutMultiple","grid","column","layoutYears","ArrowNext","arrowNext","ArrowPrev","arrowPrev","ControlTime","selectionTimeMode","time","selectingTime","DateRangeTooltip","onCreateDateRangeTooltip","dateRangeTooltip","Dates","dates","Month","month","Months","months","Week","WeekNumbers","weekNumbers","Year","Years","years","components","getComponent","parseLayout","parseMultipleLayout","displayMonthsCount","fill","createLayouts","default","layouts","calendar","vc","vcType","application","vcGrid","vcColumn","setVisibilityArrows","visibility","handleDefaultType","monthsToSwitch","dateMin","dateMax","setFullYear","handleYearType","displayYear","visibilityArrows","visibilityHandler","long","visibilityTitle","setYearModifier","aria","selectedProperty","getColumnID","currentValue","columnID","createMonthEl","monthsMonth","vcMonthsMonth","ariaDisabled","createMonths","vcYear","vcMonth","short","onCreateMonthEls","TimeInput","TimeRange","handleActions","hour","minute","selectedHours","selectedMinutes","selectedKeeping","onChangeTime","onChangeToInput","transformTime24","AM","PM","handleClickKeepingTime","btnKeeping","transformTime12","updateInputAndRange","updateKeepingTime$1","handleInput$1","updateInputAndTime","updateKeepingTime","handleRange","handleMouseOver","handleMouseOut","handleTime","timeMaxHour","timeMinHour","timeMaxMinute","timeMinMinute","createTime","timeControls","timeContent","timeHour","timeMinute","timeKeeping","timeRanges","timeRange","timeStepHour","timeStepMinute","createWeek","weekdays","titleShort","titleLong","isWeekend","onClickWeekDay","weekDay","vcWeekDay","vcWeekDayOff","createYearEl","yearsYear","vcYearsYear","createYears","onCreateYearEls","trackChangesHTMLElement","MutationObserver","attributeName","haveListener","check","setTheme","vcTheme","trackChangesThemeInSystemSettings","selectedTheme","addListener","detectTheme","themeAttrDetect","handleTheme","media","capitalizeFirstLetter","getLocaleWeekday","weekday","getLocaleMonth","getLocale","create","handleArrowKeys","localName","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","handleMonth","handleClickArrow","vcArrow","onClickArrow","resolveToggle","canToggleSelection","enableDateToggle","handleSelectDate","createDateRangeTooltip","vcDateRangeTooltip","self","lastDateEl","isHovering","rangeMin","rangeMax","tooltipEl","addHoverEffect","vcDateHover","removeHoverEffect","handleHoverDatesEvent","handleHoverSelectedDatesRangeEvent","optimizedHoverHandler","optimizedHandleHoverDatesEvent","optimizedHandleHoverSelectedDatesRangeEvent","handleCancelSelectionDates","handleMouseLeave","updateDisabledDates","disableDatesPast","handleSelectDateRange","disableDatesGaps","updateDateModifier","handleClickDate","single","onClickDate","enableMonthChangeOnDayClick","current","typeClick","getValue","handleMultipleYearSelection","handleMultipleMonthSelection","handleItemClick","onClickYear","onClickMonth","handleClickType","onClickTitle","handleClickMonthOrYear","handleClickWeekNumber","onClickWeekNumber","handleClickWeekDay","handleClick","initMonthsCount","getLocalDate","getTimezoneOffset","resolveDate","initRange","displayDisabledDates","initSelectedDates","displayClosestValidDate","setInitialContext","initSelectedMonthYear","enableJumpToSelectedDate","initTime","selectedTime","initAllVariables","createToInput","vcInput","onInit","canOpenOnFocus","handleInput","inputModeInit","shiftKey","init","onUpdate","replaceProperties","isArray","findBestPickerPosition","setPosition","vcPosition","click","positionToInput","capture","onShow","inputHour","inputMinute","rangeHour","rangeMinute","OptionsCalendar","_Calendar","memoizedElements","queryAndMemoize","Calendar","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateFormat","displayElement","inline","positionElement","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","getSelectedDates","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","attributeFilter","vcpTheme","_handleDateClick","firstDate","_parseDate","_maybeHideAfterSelection","dateStr","day","_formatDate","Intl","DateTimeFormat","format","toLocaleDateString","separator","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","showEvent","currentDialog","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconSpan","_resolveIcon","textSpan","toggleContent","overflowItem","customIconElement","iconClone","iconHtml","outerHTML","cssValue","navWidth","itemsToOverflow","_moveToOverflow","overflowCount","usedWidth","overflowThreshold","sum","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","Drawer","_swipeHelper","_initSwipe","swipeConfig","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","setValue","_sanitize","_checkComplete","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","slot","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","remainingChips","focusIndex","targetChip","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","area","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","ul","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","extraClass","sanitize","sanitizeFn","template","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","isInTheDom","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_hasNewContent","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","arrowX","arrowY","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","stops","gridTemplateColumns","stop","tick","gridColumnStart","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_SCROLLEND","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","SCROLL_IDLE_TIMEOUT","RESIZE_DEBOUNCE","smoothScroll","topMargin","ScrollSpy","_sections","_linkBySection","_sectionByLink","_intersecting","_activeTarget","_lastActive","_atBottom","_rootElement","_sentinel","_sentinelObserver","_pendingNavigation","_settleTimeout","_settleHandler","_scrollIdleHandler","_resizeHandler","_resizeTimeout","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","_setUpSentinel","_maybeAddResizeListener","_teardownSentinel","_disarmSettle","_removeResizeListener","_getDerivedRootMargin","_onIntersect","_computeActive","_process","_parseTopMargin","unit","endsWith","percent","rootHeight","_usesPixelMargin","sentinel","cssText","_onSentinel","_isOverflowing","scroller","scrollingElement","_rebuildObserver","currentTop","pageYOffset","_settleNavigation","hash","_armSettle","_getSettleTarget","_onSettle","history","replaceState","targetLinks","seen","anchor","decodeFragment","_clearActiveClass","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","altKey","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","_execute"],"sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../node_modules/vanilla-calendar-pro/index.mjs","../../js/src/datepicker.js","../../js/src/dialog-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...instanceMap.keys()][0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll',\n  'scrollend'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsely appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [...Element.prototype.querySelectorAll.call(element, selector)]\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [...element.children].filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { isRTL, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\n\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects,\n        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        platform\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    if (floating) {\n      resizeObserver.observe(floating);\n    }\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // menu wrapper\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Don't auto-close when interacting with a form inside the menu — clicks\n      // on a form's labels, buttons, etc. (not just inputs) should keep it open.\n      const formAncestor = event.target.closest?.('form')\n      const isInsideMenuForm = Boolean(formAncestor) && instance._menu.contains(formAncestor)\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName) || isInsideMenuForm)) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // Treat contenteditable hosts (e.g. rich-text editors) like inputs so the\n    // menu doesn't hijack their arrow keys.\n    const isInput = /input|textarea/i.test(event.target.tagName) || event.target.isContentEditable\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items.at(-1)\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */\nvar __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,\"symbol\"!=typeof t?t+\"\":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the \"init()\" method first.',notLocale:\"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».\",incorrectTime:\"The value of the time property can be: false, 12 or 24.\",incorrectMonthsCount:\"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1.\"},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,\"inputElement\",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,\"mainElement\",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR=\"data-vc-prev-tabindex\",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(\"tabindex\");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:\"\")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);\"\"===t||null===t?e.removeAttribute(\"tabindex\"):e.setAttribute(\"tabindex\",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden=\"\",setContext(e,\"isShowInInputMode\",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,\"cleanupHandlers\",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){(\"function\"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()}e.onHide&&e.onHide(e)}};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return{top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return[{condition:i<h,position:\"top\"},{condition:i>h,position:\"bottom\"},{condition:r<p,position:\"left\"},{condition:r>p,position:\"right\"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date=\"${t}\"]`),s=null==l?void 0:l.querySelector(\"[data-vc-date-btn]\");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(\" \")),!(null==n?void 0:n.html))return;const i=document.createElement(\"div\");i.className=e.styles.datePopup,i.dataset.vcDatePopup=\"\",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded=\"true\",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\\s+|\\s+(?=\\s)|\\s+$/g,\"\").replace(/&nbsp;/g,\" \")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`})}))},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,\"0\")}-${String(e.getDate()).padStart(2,\"0\")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||\"number\"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\\d{4}-\\d{2}-\\d{2})$/g)?e.push(t):t.replace(/(\\d{4}-\\d{2}-\\d{2}).*?(\\d{4}-\\d{2}-\\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a=\"\")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n)},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&\"current\"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,\"data-vc-date-disabled\"),a&&updateAttribute(a,u,\"aria-disabled\",\"true\"),a&&updateAttribute(a,u,\"tabindex\",\"-1\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"data-vc-date-today\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"aria-current\",\"date\"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),\"data-vc-date-weekend\");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),\"data-vc-date-holiday\"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute(\"data-vc-date-selected\",\"\"),a&&a.setAttribute(\"aria-selected\",\"true\"),e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute(\"data-vc-date-selected\",\"first-and-last\"):e.context.selectedDates[0]===l?n.setAttribute(\"data-vc-date-selected\",\"first\"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute(\"data-vc-date-selected\",\"last\"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute(\"data-vc-date-selected\",\"middle\"))):n.hasAttribute(\"data-vc-date-selected\")&&(n.removeAttribute(\"data-vc-date-selected\"),a&&a.removeAttribute(\"aria-selected\")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,\"data-vc-date-selected\",\"middle\")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week))},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))))},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i=\"string\"==typeof e.locale&&e.locale.length?e.locale:\"en\",r=document.createElement(\"div\");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role=\"gridcell\",(\"current\"===l||e.displayDatesOutside)&&(c=document.createElement(\"button\"),c.className=e.styles.dateBtn,c.type=\"button\",c.ariaLabel=getLocaleString(o,i,{dateStyle:\"long\",timeZone:\"UTC\"}),c.dataset.vcDateBtn=\"\",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),\"current\")}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?\"01\":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,\"next\")}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,\"prev\")}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent=\"\";const l=document.createElement(\"b\");l.className=e.styles.weekNumbersTitle,l.innerText=\"#\",l.dataset.vcWeekNumbers=\"title\",a.appendChild(l);const s=document.createElement(\"div\");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers=\"content\",a.appendChild(s);const i=document.createElement(\"button\");i.type=\"button\",i.className=e.styles.weekNumber;const r=o.querySelectorAll(\"[data-vc-date]\"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(!0);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role=\"rowheader\",o.ariaLabel=`${a.week}`,s.appendChild(o)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc=\"dates\"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week=\"numbers\"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=\"\"),n.textContent=\"\";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement(\"div\");t.className=e.styles.datesRow,t.setAttribute(\"data-vc-dates\",\"row\"),t.setAttribute(\"role\",\"row\"),p.push(t)}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0)}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n)}))},layoutDefault=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <#WeekNumbers />\\n    <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n      <#Week />\\n      <#Dates />\\n      <#DateRangeTooltip />\\n    </div>\\n  </div>\\n  <#ControlTime />\\n`,layoutMonths=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Months />\\n    </div>\\n  </div>\\n`,layoutMultiple=e=>`\\n  <div class=\"${e.styles.controls}\" data-vc=\"controls\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.grid}\" data-vc=\"grid\">\\n    <#Multiple>\\n      <div class=\"${e.styles.column}\" data-vc=\"column\" role=\"region\">\\n        <div class=\"${e.styles.header}\" data-vc=\"header\">\\n          <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n            <#Month />\\n            <#Year />\\n          </div>\\n        </div>\\n        <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n          <#WeekNumbers />\\n          <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n            <#Week />\\n            <#Dates />\\n          </div>\\n        </div>\\n      </div>\\n    <#/Multiple>\\n    <#DateRangeTooltip />\\n  </div>\\n  <#ControlTime />\\n`,layoutYears=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [year] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [year] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Years />\\n    </div>\\n  </div>\\n`,ArrowNext=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowNext}\" data-vc-arrow=\"next\" aria-label=\"${e.labels.arrowNext[t]}\"></button>`,ArrowPrev=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowPrev}\" data-vc-arrow=\"prev\" aria-label=\"${e.labels.arrowPrev[t]}\"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class=\"${e.styles.time}\" data-vc=\"time\" role=\"group\" aria-label=\"${e.labels.selectingTime}\"></div>`:\"\",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class=\"${e.styles.dateRangeTooltip}\" data-vc-date-range-tooltip=\"hidden\"></div>`:\"\",Dates=e=>`<div class=\"${e.styles.dates}\" data-vc=\"dates\" aria-live=\"assertive\" aria-label=\"${e.labels.dates}\" ${\"multiple\"===e.type?\"aria-multiselectable\":\"\"}></div>`,Month=e=>`<button type=\"button\" class=\"${e.styles.month}\" data-vc=\"month\"></button>`,Months=e=>`<div class=\"${e.styles.months}\" data-vc=\"months\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.months}\"></div>`,Week=e=>`<div class=\"${e.styles.week}\" data-vc=\"week\" role=\"row\" aria-label=\"${e.labels.week}\"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class=\"${e.styles.weekNumbers}\" data-vc-week=\"numbers\" role=\"row\" aria-label=\"${e.labels.weekNumber}\"></div>`:\"\",Year=e=>`<button type=\"button\" class=\"${e.styles.year}\" data-vc=\"year\"></button>`,Years=e=>`<div class=\"${e.styles.years}\" data-vc=\"years\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.years}\"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\\n\\t]/g,\"\").replace(/<#(?!\\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\\[(.*?)\\]/)||[])[1],o=n.replace(/[/\\s\\n\\t]|\\[(.*?)\\]/g,\"\"),l=getComponent(o),s=l?l(e,null!=a?a:null):\"\";return e.sanitizerHTML(s)})).replace(/[\\n\\t]/g,\"\"),parseMultipleLayout=(e,t)=>t.replace(new RegExp(\"<#Multiple>(.*?)<#\\\\/Multiple>\",\"gs\"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join(\"\");return e.sanitizerHTML(a)})).replace(/[\\n\\t]/g,\"\"),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e))})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc=\"calendar\",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role=\"application\",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,\"multiple\"!==e.context.currentType){if(\"multiple\"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc=\"controls\"]'),a=e.context.mainElement.querySelector('[data-vc=\"grid\"]'),o=t.closest('[data-vc=\"column\"]');return n&&n.remove(),a&&(a.dataset.vcGrid=\"hidden\"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?\"hidden\":\"\",t.style.visibility=a?\"hidden\":\"\"},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s)},visibilityArrows=e=>{if(\"month\"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow=\"prev\"]'),n=e.context.mainElement.querySelector('[data-vc-arrow=\"next\"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})[\"multiple\"===e.context.currentType?\"default\":e.context.currentType]()},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc=\"column\"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[o]||\"only-arrows\"===d[o];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc=\"month\"]'),n=e.context.mainElement.querySelectorAll('[data-vc=\"year\"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))))},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:\"[data-vc-months-month]\",year:\"[data-vc-years-year]\"},i={month:{selected:\"data-vc-months-month-selected\",aria:\"aria-selected\",value:\"vcMonthsMonth\",selectedProperty:\"selectedMonth\"},year:{selected:\"data-vc-years-year-selected\",aria:\"aria-selected\",value:\"vcYearsYear\",selectedProperty:\"selectedYear\"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria)})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),\"year\"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,\"\"),t.setAttribute(i[n].aria,\"true\"))},getColumnID=(e,t)=>{var n;if(\"multiple\"!==e.type)return{currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc=\"column\"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column=\"${t}\"]`)));return{currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc=\"${t}\"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(!1);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role=\"gridcell\",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled=\"true\"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,\"month\",n===s,!1),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc=\"header\"]'))?void 0:n.querySelector('[data-vc=\"year\"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,\"currentType\",\"month\"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc=\"months\"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement(\"button\");c.type=\"button\";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,\"month\"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m)}null==(a=e.context.mainElement.querySelector(\"[data-vc-months-month]:not([disabled])\"))||a.focus()},TimeInput=(e,t,n,a,o)=>`\\n  <label class=\"${t}\" data-vc-time-input=\"${e}\">\\n    <input type=\"text\" name=\"${e}\" maxlength=\"2\" aria-label=\"${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${a}\" ${o?\"disabled\":\"\"}>\\n  </label>\\n`,TimeRange=(e,t,n,a,o,l,s)=>`\\n  <label class=\"${t}\" data-vc-time-range=\"${e}\">\\n    <input type=\"range\" name=\"${e}\" min=\"${a}\" max=\"${o}\" step=\"${l}\" aria-label=\"${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${s}\">\\n  </label>\\n`,handleActions=(e,t,n,a)=>{({hour:()=>setContext(e,\"selectedHours\",n),minute:()=>setContext(e,\"selectedMinutes\",n)})[a](),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:\"\"}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:\"00\",PM:\"12\"},1:{AM:\"01\",PM:\"13\"},2:{AM:\"02\",PM:\"14\"},3:{AM:\"03\",PM:\"15\"},4:{AM:\"04\",PM:\"16\"},5:{AM:\"05\",PM:\"17\"},6:{AM:\"06\",PM:\"18\"},7:{AM:\"07\",PM:\"19\"},8:{AM:\"08\",PM:\"20\"},9:{AM:\"09\",PM:\"21\"},10:{AM:\"10\",PM:\"22\"},11:{AM:\"11\",PM:\"23\"},12:{AM:\"00\",PM:\"12\"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s=\"AM\"===e.context.selectedKeeping?\"PM\":\"AM\",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,\"selectedKeeping\",s),n.value=i,handleActions(e,l,e.context.selectedHours,\"hour\"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,!0)};return t.addEventListener(\"click\",l),()=>{t.removeEventListener(\"click\",l)}},transformTime12=e=>({0:\"12\",13:\"01\",14:\"02\",15:\"03\",16:\"04\",17:\"05\",18:\"06\",19:\"07\",20:\"08\",21:\"09\",22:\"10\",23:\"11\"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,\"PM\"),handleActions(e,c,transformTime12(r),o)},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o)}})[e.selectionTimeMode]()},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=i,t.value=i,handleActions(e,r,i,o)}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,\"0\");i[o]&&i[o](t,a,e)};return n.addEventListener(\"change\",r),()=>{n.removeEventListener(\"change\",r)}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,\"0\"),r=\"hour\"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?\"AM\":\"PM\"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value))};return t.addEventListener(\"input\",l),()=>{t.removeEventListener(\"input\",l)}},handleMouseOver=e=>e.setAttribute(\"data-vc-input-focus\",\"\"),handleMouseOut=e=>e.removeAttribute(\"data-vc-input-focus\"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range=\"hour\"] input[name=\"hour\"]'),a=t.querySelector('[data-vc-time-range=\"minute\"] input[name=\"minute\"]'),o=t.querySelector('[data-vc-time-input=\"hour\"] input[name=\"hour\"]'),l=t.querySelector('[data-vc-time-input=\"minute\"] input[name=\"minute\"]'),s=t.querySelector('[data-vc-time=\"keeping\"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l)},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l)};return t.addEventListener(\"mouseover\",i),t.addEventListener(\"mouseout\",r),handleInput$1(e,n,o,s,\"hour\",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,\"minute\",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,\"hour\"),handleRange(e,a,l,s,\"minute\"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener(\"mouseover\",i),t.removeEventListener(\"mouseout\",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc=\"time\"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i=\"range\"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\\n    <div class=\"${e.styles.timeContent}\" data-vc-time=\"content\">\\n      ${TimeInput(\"hour\",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\\n      ${TimeInput(\"minute\",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type=\"button\" class=\"${e.styles.timeKeeping}\" aria-label=\"${e.labels.btnKeeping} ${r}\" data-vc-time=\"keeping\" ${i?\"disabled\":\"\"}>${r}</button>`):\"\"}\\n    </div>\\n    <div class=\"${e.styles.timeRanges}\" data-vc-time=\"ranges\">\\n      ${TimeRange(\"hour\",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\\n      ${TimeRange(\"minute\",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\\n    </div>\\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc=\"week\"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement(\"button\"):document.createElement(\"b\");e.onClickWeekDay&&(n.type=\"button\"),a.forEach((a=>{const o=n.cloneNode(!0);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role=\"columnheader\",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=\"\"),t.appendChild(o)}))}))},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(!1);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role=\"gridcell\",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled=\"true\"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,\"year\",n===o,!1),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,\"currentType\",\"year\"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc=\"years\"]');if(!e.selectionYearsMode||!o)return;const l=\"multiple\"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement(\"button\");s.type=\"button\";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i)}null==(n=e.context.mainElement.querySelector(\"[data-vc-years-year]:not([disabled])\"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?\"dark\":\"light\"),\"system\"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc=\"calendar\"]');null==t||t.forEach((t=>setTheme(t,e.matches?\"dark\":\"light\")))};t.addEventListener?t.addEventListener(\"change\",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\\[(.+)\\]/g,((e,t)=>t));if(!n||\"system\"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t)}))):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{\"not all\"!==window.matchMedia(\"(prefers-color-scheme)\").media?\"system\"===e.selectedTheme?detectTheme(e,window.matchMedia(\"(prefers-color-scheme: dark)\")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,\"light\")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\\./,\"\"),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{weekday:\"long\",timeZone:\"UTC\"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l))},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,\"0\")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{month:\"long\",timeZone:\"UTC\"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l))},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if(\"string\"==typeof e.locale){if(\"string\"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,\"locale\",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(![\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key)||\"button\"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc=\"calendar\"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute(\"data-vc-date-btn\")?7:i.hasAttribute(\"data-vc-months-month\")?4:i.hasAttribute(\"data-vc-years-year\")?5:1;var i;const r=(0,{ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus()};return e.context.mainElement.addEventListener(\"keydown\",t),()=>e.context.mainElement.removeEventListener(\"keydown\",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,\"selectedMonth\",n.getMonth()),setContext(e,\"selectedYear\",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest(\"[data-vc-arrow]\");if(n){if([\"default\",\"multiple\"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if(\"year\"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,\"displayYear\",e.context.displayYear+a),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||(\"function\"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest(\"[data-vc-date][data-vc-date-selected]\"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,\"selectedDates\",s)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip=\"hidden\",void(t.textContent=\"\");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+\"px\",t.style.top=o.bottom-a.top-o.height+\"px\",t.dataset.vcDateRangeTooltip=\"visible\",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${s}\"]`).forEach((e=>e.dataset.vcDateHover=\"\")),t.forEach((e=>e.dataset.vcDateHover=\"first\")),n.forEach((e=>{\"first\"===e.dataset.vcDateHover?e.dataset.vcDateHover=\"first-and-last\":e.dataset.vcDateHover=\"last\"})))},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll(\"[data-vc-date-hover]\").forEach((e=>e.removeAttribute(\"data-vc-date-hover\")))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc=\"dates\"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest(\"[data-vc-date]\");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${state.self.context.selectedDates[0]}\"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${o}\"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest(\"[data-vc-date-selected]\");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame((()=>{e(n),state.isHovering=!1})))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&\"Escape\"===e.key&&(state.lastDateEl=null,setContext(state.self,\"selectedDates\",[]),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()}),50)},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,\"displayDateMin\",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,\"displayDateMax\",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,\"displayDateMin\",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector(\"[data-vc-date-range-tooltip]\"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,\"selectedDates\",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.addEventListener(\"keydown\",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates)}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,\"selectedDates\",s),e.disableDatesGaps&&(setContext(e,\"displayDateMin\",state.rangeMin),setContext(e,\"displayDateMax\",state.rangeMax)),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave)}}})[1===e.context.selectedDates.length?\"set\":\"reset\"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll(\"[data-vc-date]\").forEach((t=>{const n=t.querySelector(\"[data-vc-date-btn]\"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,\"current\")}))},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest(\"[data-vc-date-btn]\");if(!e.selectionDatesMode||![\"single\",\"multiple\",\"multiple-ranged\"].includes(e.selectionDatesMode)||!o)return;const l=o.closest(\"[data-vc-date]\");({single:()=>handleSelectDate(e,l,!1),multiple:()=>handleSelectDate(e,l,!0),\"multiple-ranged\":()=>handleSelectDateRange(e,l)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month=\"prev\"]'),i=a.closest('[data-vc-date-month=\"next\"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"prev\"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"next\"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?\"prev\":i?\"next\":\"current\"]()},typeClick=[\"month\",\"year\"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return\"month\"===e.context.currentType&&o>=0?n-o:\"year\"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,\"year\",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,\"year\"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,\"selectedYear\",u),setContext(e,\"selectedMonth\",m)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column=\"month\"]').querySelector('[data-vc=\"year\"]'),a=getValue(e,\"month\",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,\"selectedYear\",o),setContext(e,\"selectedMonth\",i?l.getMonth():r?s.getMonth():a)},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if(\"multiple\"===e.type)return handleMultipleYearSelection(e,a);setContext(e,\"selectedYear\",Number(a.dataset.vcYearsYear))},month:()=>{if(\"multiple\"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,\"selectedMonth\",Number(a.dataset.vcMonthsMonth))}})[n]();({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}})[n](),e.context.currentType!==e.type?(setContext(e,\"currentType\",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||o.focus()):setYearModifier(e,a,n,!0,!0)},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc=\"${n}\"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc=\"grid\"]'),c=o.closest('[data-vc=\"column\"]');(e.context.currentType===n&&l||\"multiple\"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,\"currentType\",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||a.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a)}))},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest(\"[data-vc-week-number]\"),a=e.context.mainElement.querySelectorAll(\"[data-vc-date-week-number]\");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest(\"[data-vc-week-day]\"),a=t.target.closest('[data-vc=\"column\"]'),o=a?a.querySelectorAll(\"[data-vc-date-week-day]\"):e.context.mainElement.querySelectorAll(\"[data-vc-date-week-day]\");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener(\"click\",t),()=>e.context.mainElement.removeEventListener(\"click\",t)},initMonthsCount=e=>{if(\"multiple\"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if(\"multiple\"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,\"displayMonthsCount\",e.displayMonthsCount?e.displayMonthsCount:\"multiple\"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>\"today\"===e?getLocalDate():e instanceof Date||\"number\"==typeof e||\"string\"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,\"dateToday\",resolveDate(e.dateToday,e.dateToday)),setContext(e,\"displayDateMin\",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,\"displayDateMax\",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,\"displayDateMin\",r||e.disableAllDates?e.context.dateToday:s),setContext(e,\"displayDateMax\",e.disableAllDates?e.context.dateToday:i),setContext(e,\"disableDates\",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,\"enableDates\",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,\"disableDates\",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,\"displayDateMin\",e.context.enableDates[0]),setContext(e,\"displayDateMax\",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,\"dateMin\",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,\"dateMax\",e.displayDisabledDates?l:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,\"selectedDates\",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&\"today\"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,a;if(e.displayDateMax&&\"today\"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,\"selectedMonth\",t),setContext(e,\"selectedYear\",n),setContext(e,\"displayYear\",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r=\"AM\"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?\"PM\":\"AM\":null),setContext(e,\"selectedHours\",s.padStart(2,\"0\")),setContext(e,\"selectedMinutes\",i.padStart(2,\"0\")),setContext(e,\"selectedKeeping\",r),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:\"\"}`)},initAllVariables=e=>{setContext(e,\"currentType\",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=!0)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates=\"only-first\"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:!0===a?r.dates:e.context.selectedDates,l){setContext(e,\"locale\",{months:{short:[],long:[]},weekdays:{short:[],long:[]}})}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,\"multiple-ranged\"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement(\"div\");return t.className=e.styles.calendar,t.dataset.vc=\"calendar\",t.dataset.vcInput=\"\",t.dataset.vcCalendarHidden=\"\",setContext(e,\"inputModeInit\",!0),setContext(e,\"isShowInInputMode\",!1),setContext(e,\"mainElement\",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,\"inputElement\",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e)};e.context.inputElement.addEventListener(\"click\",t);const n=\"function\"==typeof e.openOnFocus||!0===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener(\"focus\",a);const o=t=>{const n=\"Tab\"===t.key&&!t.shiftKey,a=[\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const a=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus())})(t)};return e.context.inputElement.addEventListener(\"keydown\",o),()=>{e.context.inputElement.removeEventListener(\"click\",t),n&&e.context.inputElement.removeEventListener(\"focus\",a),e.context.inputElement.removeEventListener(\"keydown\",o)}},init=e=>(setContext(e,\"originalElement\",e.context.mainElement.cloneNode(!0)),setContext(e,\"isInit\",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];\"object\"!=typeof e[o]||\"object\"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n=\"left\";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return(l&&a.bottom?\"center\":l&&a.top?[\"top\",\"center\"]:Array.isArray(o)?[\"bottom\"===o[0]?\"top\":\"bottom\",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a=\"auto\"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:\"bottom\",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,\"cleanupHandlers\",[]),setContext(e,\"isShowInInputMode\",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute(\"data-vc-calendar-hidden\");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener(\"resize\",t),e.context.cleanupHandlers.push((()=>window.removeEventListener(\"resize\",t)));const n=t=>{\"Escape\"===t.key&&hide(e)};document.addEventListener(\"keydown\",n),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"keydown\",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener(\"click\",a,{capture:!0}),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"click\",a,{capture:!0}))),e.onShow&&e.onShow(e)},labels={application:\"Calendar\",navigation:\"Calendar Navigation\",arrowNext:{month:\"Next month\",year:\"Next list of years\"},arrowPrev:{month:\"Previous month\",year:\"Previous list of years\"},month:\"Select month, current selected month:\",months:\"List of months\",year:\"Select year, current selected year:\",years:\"List of years\",week:\"Days of the week\",weekNumber:\"Numbers of weeks in a year\",dates:\"Dates in the current month\",selectingTime:\"Selecting a time \",inputHour:\"Hours\",inputMinute:\"Minutes\",rangeHour:\"Slider for selecting hours\",rangeMinute:\"Slider for selecting minutes\",btnKeeping:\"Switch AM/PM, current position:\"},styles={calendar:\"vc\",controls:\"vc-controls\",grid:\"vc-grid\",column:\"vc-column\",header:\"vc-header\",headerContent:\"vc-header__content\",month:\"vc-month\",year:\"vc-year\",arrowPrev:\"vc-arrow vc-arrow_prev\",arrowNext:\"vc-arrow vc-arrow_next\",wrapper:\"vc-wrapper\",content:\"vc-content\",months:\"vc-months\",monthsMonth:\"vc-months__month\",years:\"vc-years\",yearsYear:\"vc-years__year\",week:\"vc-week\",weekDay:\"vc-week__day\",weekNumbers:\"vc-week-numbers\",weekNumbersTitle:\"vc-week-numbers__title\",weekNumbersContent:\"vc-week-numbers__content\",weekNumber:\"vc-week-number\",dates:\"vc-dates\",datesRow:\"vc-dates__row\",date:\"vc-date\",dateBtn:\"vc-date__btn\",datePopup:\"vc-date__popup\",dateRangeTooltip:\"vc-date-range-tooltip\",time:\"vc-time\",timeContent:\"vc-time__content\",timeHour:\"vc-time__hour\",timeMinute:\"vc-time__minute\",timeKeeping:\"vc-time__keeping\",timeRanges:\"vc-time__ranges\",timeRange:\"vc-time__range\"};class OptionsCalendar{constructor(){__publicField(this,\"type\",\"default\"),__publicField(this,\"inputMode\",!1),__publicField(this,\"openOnFocus\",!0),__publicField(this,\"positionToInput\",\"left\"),__publicField(this,\"firstWeekday\",1),__publicField(this,\"monthsToSwitch\",1),__publicField(this,\"themeAttrDetect\",\"html[data-theme]\"),__publicField(this,\"locale\",\"en\"),__publicField(this,\"dateToday\",\"today\"),__publicField(this,\"dateMin\",\"1970-01-01\"),__publicField(this,\"dateMax\",\"2470-12-31\"),__publicField(this,\"displayDateMin\"),__publicField(this,\"displayDateMax\"),__publicField(this,\"displayDatesOutside\",!0),__publicField(this,\"displayDisabledDates\",!1),__publicField(this,\"displayMonthsCount\"),__publicField(this,\"disableDates\",[]),__publicField(this,\"disableAllDates\",!1),__publicField(this,\"disableDatesPast\",!1),__publicField(this,\"disableDatesGaps\",!1),__publicField(this,\"disableWeekdays\",[]),__publicField(this,\"disableToday\",!1),__publicField(this,\"enableDates\",[]),__publicField(this,\"enableEdgeDatesOnly\",!0),__publicField(this,\"enableDateToggle\",!0),__publicField(this,\"enableWeekNumbers\",!1),__publicField(this,\"enableMonthChangeOnDayClick\",!0),__publicField(this,\"enableJumpToSelectedDate\",!1),__publicField(this,\"selectionDatesMode\",\"single\"),__publicField(this,\"selectionMonthsMode\",!0),__publicField(this,\"selectionYearsMode\",!0),__publicField(this,\"selectionTimeMode\",!1),__publicField(this,\"selectedDates\",[]),__publicField(this,\"selectedMonth\"),__publicField(this,\"selectedYear\"),__publicField(this,\"selectedHolidays\",[]),__publicField(this,\"selectedWeekends\",[0,6]),__publicField(this,\"selectedTime\"),__publicField(this,\"selectedTheme\",\"system\"),__publicField(this,\"timeMinHour\",0),__publicField(this,\"timeMaxHour\",23),__publicField(this,\"timeMinMinute\",0),__publicField(this,\"timeMaxMinute\",59),__publicField(this,\"timeControls\",\"all\"),__publicField(this,\"timeStepHour\",1),__publicField(this,\"timeStepMinute\",1),__publicField(this,\"sanitizerHTML\",(e=>e)),__publicField(this,\"onClickDate\"),__publicField(this,\"onClickWeekDay\"),__publicField(this,\"onClickWeekNumber\"),__publicField(this,\"onClickTitle\"),__publicField(this,\"onClickMonth\"),__publicField(this,\"onClickYear\"),__publicField(this,\"onClickArrow\"),__publicField(this,\"onChangeTime\"),__publicField(this,\"onChangeToInput\"),__publicField(this,\"onCreateDateRangeTooltip\"),__publicField(this,\"onCreateDateEls\"),__publicField(this,\"onCreateMonthEls\"),__publicField(this,\"onCreateYearEls\"),__publicField(this,\"onInit\"),__publicField(this,\"onUpdate\"),__publicField(this,\"onDestroy\"),__publicField(this,\"onShow\"),__publicField(this,\"onHide\"),__publicField(this,\"popups\",{}),__publicField(this,\"labels\",__spreadValues({},labels)),__publicField(this,\"layouts\",{default:\"\",multiple:\"\",month:\"\",year:\"\"}),__publicField(this,\"styles\",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,\"init\",(()=>init(this))),__publicField(this,\"update\",(e=>update(this,e))),__publicField(this,\"destroy\",(()=>destroy(this))),__publicField(this,\"show\",(()=>show(this))),__publicField(this,\"hide\",(()=>hide(this))),__publicField(this,\"set\",((e,t)=>set(this,e,t))),__publicField(this,\"context\"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,\"mainElement\",\"string\"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,\"memoizedElements\",new Map);let Calendar=_Calendar;export{Calendar};","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('shown'),\n        { relatedTarget }\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  dispose() {\n    // If disposed while still open, close the native <dialog> and restore body\n    // scroll. Otherwise `dialog-open` (overflow: hidden) would stay stuck on the\n    // body — e.g. when an SPA tears the component down mid-navigation.\n    if (this._element.open) {\n      this._closeAndCleanup()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      // Lock scroll on the root element (not <body>) so it lands on the same\n      // element that carries `scrollbar-gutter: stable`. Co-locating them keeps\n      // the gutter reserved while the scrollbar is hidden, so the page doesn't\n      // shift (and the ::backdrop covers the gutter instead of leaving a strip).\n      document.documentElement.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.documentElement.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, `keydown${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends DialogBase {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus({ preventScroll: true })\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._collapseBelow = 0\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\n      if (overflowItem) {\n        if (itemsToOverflow.length > 0) {\n          overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n        } else {\n          overflowItem.classList.add(CLASS_NAME_HIDDEN)\n        }\n      }\n\n      if (itemsToOverflow.length > 0) {\n        EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n          overflowCount: itemsToOverflow.length,\n          visibleCount: this._items.length - itemsToOverflow.length\n        })\n      }\n\n      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null,\n  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._deltaY = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    if (isVisible(this)) {\n      this.focus({ preventScroll: true })\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.value = ''\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio\n * types — notably NOT `data:text/html`, which is an XSS vector.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L49\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z=]+$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [...createdDocument.body.querySelectorAll('*')]\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [...element.attributes]\n    const allowedAttributes = [...(allowList['*'] || []), ...(allowList[elementName] || [])]\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\nconst EVENT_KEYDOWN = 'keydown'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._keydownHandler = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    this._removeEscapeListener()\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      // Reset the transient hover/active state so a prevented (or not-in-DOM)\n      // show doesn't leave `_isHovered` stuck true — otherwise a click-triggered\n      // tip would hit the `_enter()` early-return on every later click and never\n      // reopen.\n      this._isHovered = false\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._removeEscapeListener()\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle()) || this._hasNewContent()\n  }\n\n  // Content supplied via setContent() (a `{ selector: content }` map) overrides\n  // the configured title/content when rendering, so it should also satisfy the\n  // show() gate — otherwise a tip whose content is only set via setContent()\n  // can never be shown.\n  _hasNewContent() {\n    return Boolean(this._newContent) && Object.values(this._newContent).some(Boolean)\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    // Coerce number/boolean title and content to strings. `data-bs-title=\"true\"`\n    // / `data-bs-content=\"false\"` are auto-converted to booleans by the data-API,\n    // which would otherwise fail the (null|string|element|function) type check.\n    if (typeof config.title === 'number' || typeof config.title === 'boolean') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number' || typeof config.content === 'boolean') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return Boolean(this._getTitle() || this._getContent()) || this._hasNewContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap range.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_SCROLLEND = `scrollend${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\n// How long (ms) to wait after the last scroll event before settling a pending\n// smooth-scroll navigation, when the native `scrollend` event is unavailable.\nconst SCROLL_IDLE_TIMEOUT = 100\n// Debounce (ms) for rebuilding the observer on resize (px activation lines only).\nconst RESIZE_DEBOUNCE = 100\n\nconst Default = {\n  // `rootMargin` is the raw IntersectionObserver root-box override. When set it\n  // takes precedence over `topMargin` and is passed straight to the observer.\n  // Leave it null and use `topMargin` for everyday use.\n  rootMargin: null,\n  smoothScroll: false,\n  target: null,\n  threshold: [0],\n  // Position of the activation line, measured from the top of the scroll root.\n  // The active section is the deepest one whose top has scrolled to/above it.\n  // Accepts a percentage (`12%`) or pixels (`96px`, e.g. below a sticky navbar).\n  topMargin: '12%'\n}\n\nconst DefaultType = {\n  rootMargin: '(string|null)',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array',\n  topMargin: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._sections = [] // observable section elements, in DOM order\n    this._linkBySection = new Map() // section element -> nav link\n    this._sectionByLink = new Map() // nav link -> section element (for smooth scroll)\n    this._intersecting = new Set() // sections currently crossing the activation line\n    this._activeTarget = null\n    this._lastActive = null // last activated section (keep-last across gaps)\n    this._atBottom = false\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n\n    this._observer = null\n    this._sentinel = null\n    this._sentinelObserver = null\n\n    this._pendingNavigation = null\n    this._settleTimeout = null\n    this._settleHandler = null\n    this._scrollIdleHandler = null\n\n    this._resizeHandler = null\n    this._resizeTimeout = null\n\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    // (Re)build the activation observer.\n    this._observer?.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n\n    // Detect the bottom-of-page case (a short last section whose top never\n    // reaches the activation line) natively, via a dedicated sentinel observer.\n    this._setUpSentinel()\n\n    // A px activation line doesn't track viewport height the way `%` does, so\n    // rebuild the observer (debounced) on resize when px units are in play.\n    this._maybeAddResizeListener()\n  }\n\n  dispose() {\n    this._observer?.disconnect()\n    this._teardownSentinel()\n    this._disarmSettle()\n    this._removeResizeListener()\n    EventHandler.off(this._config.target, EVENT_CLICK)\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  // --- Detection (IntersectionObserver-driven) -----------------------------\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin ?? this._getDerivedRootMargin()\n    }\n\n    return new IntersectionObserver(entries => this._onIntersect(entries), options)\n  }\n\n  _onIntersect(entries) {\n    for (const entry of entries) {\n      if (entry.isIntersecting) {\n        this._intersecting.add(entry.target)\n      } else {\n        this._intersecting.delete(entry.target)\n      }\n    }\n\n    this._computeActive()\n  }\n\n  // Single source of truth for active selection, derived only from IO state —\n  // no per-frame layout reads. The active section is the deepest (DOM-order)\n  // one currently crossing the activation line; in a gap we keep the last one;\n  // above the first section the first stays active; at the very bottom the last\n  // section wins.\n  _computeActive() {\n    // Guard against observer callbacks that outlive a disposed/detached instance.\n    if (!this._element?.isConnected || this._sections.length === 0) {\n      return\n    }\n\n    let active = null\n\n    if (this._atBottom) {\n      active = this._sections.at(-1)\n    } else {\n      for (const section of this._sections) {\n        if (this._intersecting.has(section)) {\n          active = section\n        }\n      }\n\n      // No section crosses the line: keep the last active (content gap), or fall\n      // back to the first section at the top of the page.\n      active ||= this._lastActive ?? this._sections.at(0)\n    }\n\n    if (!active) {\n      return\n    }\n\n    this._lastActive = active\n    const link = this._linkBySection.get(active)\n    if (link) {\n      this._process(link)\n    }\n  }\n\n  // Single source of truth for the `topMargin` option: its numeric value and\n  // whether it's expressed as a percentage of the root height or in pixels.\n  _parseTopMargin() {\n    const value = String(this._config.topMargin)\n    return {\n      value: Number.parseFloat(value) || 0,\n      unit: value.endsWith('%') ? '%' : 'px'\n    }\n  }\n\n  // Collapse the observer root to a strip from the top down to the activation\n  // line, so a section is \"intersecting\" exactly while it crosses that line.\n  _getDerivedRootMargin() {\n    const { value, unit } = this._parseTopMargin()\n    let percent = value\n\n    // Express a pixel activation line as a percentage of the root height.\n    if (unit === 'px') {\n      const rootHeight = this._rootElement ?\n        this._rootElement.clientHeight :\n        (document.documentElement.clientHeight || window.innerHeight)\n      percent = rootHeight ? (value / rootHeight) * 100 : 12\n    }\n\n    // Clamp so the bottom inset stays a valid (non-negative) rootMargin even if\n    // the line sits outside the root box.\n    const bottom = Math.min(Math.max(100 - percent, 0), 100)\n    return `0px 0px -${bottom}% 0px`\n  }\n\n  // Whether the activation line is derived from a pixel `topMargin` (in which\n  // case it must be recomputed on resize). An explicit `rootMargin` is owned by\n  // the caller, and a `%` topMargin is recomputed by the browser automatically.\n  _usesPixelMargin() {\n    return !this._config.rootMargin && this._parseTopMargin().unit === 'px'\n  }\n\n  // --- Bottom sentinel -----------------------------------------------------\n\n  _setUpSentinel() {\n    this._teardownSentinel()\n\n    if (this._sections.length === 0) {\n      return\n    }\n\n    const sentinel = document.createElement('div')\n    sentinel.setAttribute('aria-hidden', 'true')\n    sentinel.style.cssText = 'position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;'\n    this._element.append(sentinel)\n    this._sentinel = sentinel\n\n    this._sentinelObserver = new IntersectionObserver(entries => this._onSentinel(entries), {\n      root: this._rootElement,\n      threshold: [0]\n    })\n    this._sentinelObserver.observe(sentinel)\n  }\n\n  _onSentinel(entries) {\n    const entry = entries.at(-1)\n    // Only treat the sentinel as \"bottom reached\" when content actually\n    // overflows; otherwise everything is visible and there's nothing to spy.\n    this._atBottom = Boolean(entry?.isIntersecting) && this._isOverflowing()\n    this._computeActive()\n  }\n\n  _isOverflowing() {\n    const scroller = this._rootElement || document.scrollingElement || document.documentElement\n    return scroller.scrollHeight > scroller.clientHeight\n  }\n\n  _teardownSentinel() {\n    this._sentinelObserver?.disconnect()\n    this._sentinelObserver = null\n    this._sentinel?.remove()\n    this._sentinel = null\n    this._atBottom = false\n  }\n\n  // --- Resize (px activation lines only) -----------------------------------\n\n  _maybeAddResizeListener() {\n    this._removeResizeListener()\n\n    if (!this._usesPixelMargin()) {\n      return\n    }\n\n    this._resizeHandler = () => {\n      clearTimeout(this._resizeTimeout)\n      this._resizeTimeout = setTimeout(() => this._rebuildObserver(), RESIZE_DEBOUNCE)\n    }\n\n    EventHandler.on(window, EVENT_RESIZE, this._resizeHandler)\n  }\n\n  _removeResizeListener() {\n    clearTimeout(this._resizeTimeout)\n    this._resizeTimeout = null\n\n    if (this._resizeHandler) {\n      EventHandler.off(window, EVENT_RESIZE, this._resizeHandler)\n      this._resizeHandler = null\n    }\n  }\n\n  _rebuildObserver() {\n    if (!this._observer) {\n      return\n    }\n\n    this._observer.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n  }\n\n  // --- Smooth-scroll settle (hash + focus) ---------------------------------\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // Unregister any previous listener so refresh() doesn't stack them.\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const link = event.target.closest(SELECTOR_TARGET_LINKS)\n      const section = link && this._sectionByLink.get(link)\n      if (!section || !this._element) {\n        return\n      }\n\n      event.preventDefault()\n\n      const root = this._rootElement || window\n      const height = section.offsetTop - this._element.offsetTop\n      const currentTop = this._rootElement ?\n        this._rootElement.scrollTop :\n        (window.scrollY ?? window.pageYOffset)\n      const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)').matches\n\n      // If we're already there (or motion is reduced), there will be no scroll\n      // — and thus no `scrollend` — to wait for, so settle immediately. This\n      // avoids a stuck pending navigation that never restores hash/focus.\n      if (reduceMotion || Math.abs(currentTop - height) <= 2) {\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'auto' })\n        } else {\n          root.scrollTop = height\n        }\n\n        this._settleNavigation(link.hash, section)\n        return\n      }\n\n      // Defer the URL-hash and focus updates until the scroll settles, so we\n      // don't thrash the address bar mid-animation (and so the native hash\n      // navigation we just prevented is restored once we arrive).\n      this._pendingNavigation = { hash: link.hash, section }\n      this._armSettle()\n\n      if (root.scrollTo) {\n        root.scrollTo({ top: height, behavior: 'smooth' })\n      } else {\n        root.scrollTop = height\n      }\n    })\n  }\n\n  // Arm a one-shot settle for the in-flight smooth scroll. `scrollend` is the\n  // primary signal; a transient scroll-idle timer covers engines without it.\n  // Both are removed on settle, so a later unrelated scroll can't replay it.\n  _armSettle() {\n    this._disarmSettle()\n\n    const target = this._getSettleTarget()\n\n    this._settleHandler = () => this._onSettle()\n    this._scrollIdleHandler = () => {\n      clearTimeout(this._settleTimeout)\n      this._settleTimeout = setTimeout(() => this._onSettle(), SCROLL_IDLE_TIMEOUT)\n    }\n\n    EventHandler.on(target, EVENT_SCROLLEND, this._settleHandler)\n    EventHandler.on(target, EVENT_SCROLL, this._scrollIdleHandler)\n  }\n\n  _disarmSettle() {\n    clearTimeout(this._settleTimeout)\n    this._settleTimeout = null\n\n    const target = this._getSettleTarget()\n    if (this._settleHandler) {\n      EventHandler.off(target, EVENT_SCROLLEND, this._settleHandler)\n      this._settleHandler = null\n    }\n\n    if (this._scrollIdleHandler) {\n      EventHandler.off(target, EVENT_SCROLL, this._scrollIdleHandler)\n      this._scrollIdleHandler = null\n    }\n  }\n\n  _getSettleTarget() {\n    return this._rootElement || document\n  }\n\n  _onSettle() {\n    this._disarmSettle()\n\n    if (!this._pendingNavigation) {\n      return\n    }\n\n    const { hash, section } = this._pendingNavigation\n    this._settleNavigation(hash, section)\n  }\n\n  _settleNavigation(hash, section) {\n    this._pendingNavigation = null\n\n    // Restore the URL hash (without adding a history entry) now that we've\n    // arrived, and move focus to the section for keyboard/AT users.\n    if (window.history?.replaceState) {\n      window.history.replaceState(null, '', hash)\n    }\n\n    if (!section.hasAttribute('tabindex')) {\n      section.setAttribute('tabindex', '-1')\n    }\n\n    section.focus({ preventScroll: true })\n  }\n\n  // --- Targets / observables ----------------------------------------------\n\n  _initializeTargetsAndObservables() {\n    this._sections = []\n    this._linkBySection = new Map()\n    this._sectionByLink = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n    const seen = new Set()\n\n    for (const anchor of targetLinks) {\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      // Resolve by id (decoded) rather than building a CSS selector, so any\n      // literal id works — dots, slashes, colons, and percent-encoded chars —\n      // without escaping.\n      const id = decodeFragment(anchor.hash.slice(1))\n      if (!id) {\n        continue\n      }\n\n      const section = document.getElementById(id)\n      // ensure the section exists, is scoped to this element, and is visible\n      if (!section || !this._element.contains(section) || !isVisible(section)) {\n        continue\n      }\n\n      this._sectionByLink.set(anchor, section)\n      this._linkBySection.set(section, anchor) // last link wins for a section\n\n      if (!seen.has(section)) {\n        seen.add(section)\n        this._sections.push(section)\n      }\n    }\n\n    // Keep sections in top-to-bottom order so \"deepest\" selection is\n    // well-defined. Read once here (refresh/resize), never on the hot path.\n    this._sections.sort((a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top)\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n// Decode a URL fragment id, tolerating malformed escapes (returns it as-is).\nfunction decodeFragment(hash) {\n  try {\n    return decodeURIComponent(hash)\n  } catch {\n    return hash\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    // Don't hijack modifier+arrow shortcuts (e.g. Alt+Left/Right for browser\n    // history navigation); only the bare keys drive tablist navigation.\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = event.key === HOME_KEY ? children[0] : children.at(-1)\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
+{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","this","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","length","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","existingInstance","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","complete","selected","triggerArray","isOpen","round","createCoords","v","x","y","oppositeSideMap","bottom","clamp","start","end","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","reference","floating","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","concat","expandPaddingObject","padding","getPaddingObject","rectToClientRect","height","computeCoordsFromPlacement","_ref","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","async","detectOverflow","state","options","_await$platform$isEle","platform","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","getClippingRect","contextElement","getDocumentElement","offsetParent","getOffsetParent","offsetScale","getScale","elementClientRect","convertOffsetParentRelativeRectToViewportRelativeRect","MAX_RESET_COUNT","computePosition","middleware","platformWithDetectOverflow","getElementRects","statefulPlacement","resetCount","middlewareData","i","currentMiddleware","nextX","nextY","reset","initialPlacement","arrow","arrowDimensions","getDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","centerOffset","flip","_middlewareData$arrow","_middlewareData$flip","mainAxis","checkMainAxis","crossAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","placements","overflow","overflows","overflowsData","sides","every","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","d","resetPlacement","sort","a","b","_overflowsData$filter2","currentSideAxis","reduce","acc","originSides","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","hasWindow","getNodeName","isNode","nodeName","getWindow","_node$ownerDocument","ownerDocument","defaultView","isHTMLElement","HTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","isTableElement","isTopLayer","_e","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","css","transform","translate","scale","rotate","perspective","isWebKit","backdropFilter","willChange","contain","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","supports","getNodeScroll","scrollTop","scrollX","scrollY","result","assignedSlot","host","getNearestOverflowAncestor","body","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","visualViewport","getPrototypeOf","getCssDimensions","getComputedStyle$1","hasOffset","offsetWidth","shouldFallback","$","unwrapElement","isFinite","noOffsets","getVisualOffsets","offsetLeft","offsetTop","shouldAddVisualOffsets","isFixed","floatingOffsetParent","includeScale","isFixedStrategy","clientRect","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getWindowScrollBarX","leftScroll","getHTMLOffset","scroll","htmlRect","topLayer","offsets","isOffsetParentAnElement","offsetRect","htmlOffset","Array","getDocumentRect","html","scrollHeight","clientHeight","SCROLLBAR_MAX","getViewportRect","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","compatMode","marginLeft","marginRight","clippingStableScrollbarWidth","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","position","getClippingElementAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","clippingAncestors","_c","firstRect","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","svgOffsetParent","getOffsetParentFn","getDimensionsFn","floatingDimensions","rectsAreEqual","observeMove","onMove","timeoutId","io","cleanup","_io","refresh","skip","elementRectForRootMargin","rootMargin","isFirstUpdate","handleObserve","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","animationFrame","referenceEl","ancestors","forEach","passive","cleanupIo","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","_resizeObserver","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","arrow$1","mergedOptions","platformWithCache","computePosition$1","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","xs","part","breakpoint","undefined","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","createBreakpointListeners","listeners","minWidth","mql","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","autoClose","container","floatingConfig","menu","submenuTrigger","submenuDelay","Menu","static","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","focusVisible","_openInstances","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","_updateFloatingPosition","wrapper","referenceElement","_getPlacement","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","offsetValue","_getFallbackPlacements","defaultConfig","_getContainer","isConnected","finalPlacement","assign","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","updatePosition","then","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","at","clearMenus","composedPath","isMenuTarget","formAncestor","isInsideMenuForm","dataApiKeydownHandler","isInput","isContentEditable","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","__defProp","__defProps","defineProperties","__getOwnPropDescs","getOwnPropertyDescriptors","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","hasOwnProperty","__propIsEnum","propertyIsEnumerable","__defNormalProp","e","t","n","enumerable","writable","__spreadValues","__spreadProps","__publicField","errorMessages","notFoundSelector","notInit","notLocale","incorrectTime","incorrectMonthsCount","setContext","context","destroy","o","l","isInit","inputMode","mainElement","parentElement","removeChild","inputElement","replaceWith","originalElement","onDestroy","skipOpenOnFocus","WeakSet","shouldSkipOpenOnFocus","setSkipOpenOnFocus","clearSkipOpenOnFocus","PREV_TABINDEX_ATTR","isFocusable","tabIndex","storePrevTabIndex","restorePrevTabIndex","disableTabbing","createTreeWalker","NodeFilter","SHOW_ELEMENT","acceptNode","FILTER_ACCEPT","FILTER_SKIP","nextNode","restoreTabbing","isShowInInputMode","currentType","vcCalendarHidden","cleanupHandlers","openOnFocus","onHide","getOffset","getViewportDimensions","vw","vh","innerHeight","getWindowScrollPosition","calculateAvailableSpace","s","r","getAvailablePosition","canShow","parentPositions","c","u","m","p","h","condition","handleDay","modifier","className","datePopup","vcDatePopup","innerHTML","sanitizerHTML","ariaExpanded","ariaLabel","appendChild","createDatePopup","popups","getDate","getDateString","getFullYear","String","getMonth","parseDates","toISOString","substring","getTime","setDate","updateAttribute","setDateModifier","displayDateMin","displayDateMax","disableDates","selectionMonthsMode","selectionYearsMode","disableToday","dateToday","selectedWeekends","selectedHolidays","selectedDates","selectionDatesMode","enableEdgeDatesOnly","getLocaleString","toLocaleString","getWeekNumber","getDay","ceil","year","week","addWeekNumberForDate","firstWeekday","vcDateWeekNumber","setDaysAsDisabled","disableWeekdays","disableAllDates","enableDates","createDate","locale","date","vcDate","vcDateMonth","vcDateWeekDay","role","displayDatesOutside","dateBtn","dateStyle","timeZone","vcDateBtn","innerText","enableWeekNumbers","addDate","onCreateDateEls","createDatesFromCurrentMonth","createDatesFromNextMonth","createDatesFromPrevMonth","createWeekNumbers","weekNumbersTitle","vcWeekNumbers","weekNumbersContent","weekNumber","vcWeekNumber","vcWeekYear","createDates","selectedYear","selectedMonth","vcDatesDisabled","setMonth","datesRow","g","layoutDefault","header","labels","navigation","headerContent","content","layoutMonths","layoutMultiple","grid","column","layoutYears","ArrowNext","arrowNext","ArrowPrev","arrowPrev","ControlTime","selectionTimeMode","time","selectingTime","DateRangeTooltip","onCreateDateRangeTooltip","dateRangeTooltip","Dates","dates","Month","month","Months","months","Week","WeekNumbers","weekNumbers","Year","Years","years","components","getComponent","parseLayout","parseMultipleLayout","displayMonthsCount","fill","createLayouts","default","layouts","calendar","vc","vcType","application","vcGrid","vcColumn","setVisibilityArrows","visibility","handleDefaultType","monthsToSwitch","dateMin","dateMax","setFullYear","handleYearType","displayYear","visibilityArrows","visibilityHandler","long","visibilityTitle","setYearModifier","aria","selectedProperty","getColumnID","currentValue","columnID","createMonthEl","monthsMonth","vcMonthsMonth","ariaDisabled","createMonths","vcYear","vcMonth","short","onCreateMonthEls","TimeInput","TimeRange","handleActions","hour","minute","selectedHours","selectedMinutes","selectedKeeping","onChangeTime","onChangeToInput","transformTime24","AM","PM","handleClickKeepingTime","btnKeeping","transformTime12","updateInputAndRange","updateKeepingTime$1","handleInput$1","updateInputAndTime","updateKeepingTime","handleRange","handleMouseOver","handleMouseOut","handleTime","timeMaxHour","timeMinHour","timeMaxMinute","timeMinMinute","createTime","timeControls","timeContent","timeHour","timeMinute","timeKeeping","timeRanges","timeRange","timeStepHour","timeStepMinute","createWeek","weekdays","titleShort","titleLong","isWeekend","onClickWeekDay","weekDay","vcWeekDay","vcWeekDayOff","createYearEl","yearsYear","vcYearsYear","createYears","onCreateYearEls","trackChangesHTMLElement","MutationObserver","attributeName","haveListener","check","setTheme","vcTheme","trackChangesThemeInSystemSettings","selectedTheme","addListener","detectTheme","themeAttrDetect","handleTheme","media","capitalizeFirstLetter","getLocaleWeekday","weekday","getLocaleMonth","getLocale","create","handleArrowKeys","localName","ArrowUp","ArrowDown","ArrowLeft","ArrowRight","handleMonth","handleClickArrow","vcArrow","onClickArrow","resolveToggle","canToggleSelection","enableDateToggle","handleSelectDate","createDateRangeTooltip","vcDateRangeTooltip","self","lastDateEl","isHovering","rangeMin","rangeMax","tooltipEl","addHoverEffect","vcDateHover","removeHoverEffect","handleHoverDatesEvent","handleHoverSelectedDatesRangeEvent","optimizedHoverHandler","optimizedHandleHoverDatesEvent","optimizedHandleHoverSelectedDatesRangeEvent","handleCancelSelectionDates","handleMouseLeave","updateDisabledDates","disableDatesPast","handleSelectDateRange","disableDatesGaps","updateDateModifier","handleClickDate","single","onClickDate","enableMonthChangeOnDayClick","current","typeClick","getValue","handleMultipleYearSelection","handleMultipleMonthSelection","handleItemClick","onClickYear","onClickMonth","handleClickType","onClickTitle","handleClickMonthOrYear","handleClickWeekNumber","onClickWeekNumber","handleClickWeekDay","handleClick","initMonthsCount","getLocalDate","getTimezoneOffset","resolveDate","initRange","displayDisabledDates","initSelectedDates","displayClosestValidDate","setInitialContext","initSelectedMonthYear","enableJumpToSelectedDate","initTime","selectedTime","initAllVariables","createToInput","vcInput","onInit","canOpenOnFocus","handleInput","inputModeInit","shiftKey","init","onUpdate","replaceProperties","isArray","findBestPickerPosition","setPosition","vcPosition","click","positionToInput","capture","onShow","inputHour","inputMinute","rangeHour","rangeMinute","OptionsCalendar","_Calendar","memoizedElements","queryAndMemoize","Calendar","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateFormat","displayElement","inline","positionElement","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","getSelectedDates","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","attributeFilter","vcpTheme","_handleDateClick","firstDate","_parseDate","_maybeHideAfterSelection","dateStr","day","_formatDate","Intl","DateTimeFormat","format","toLocaleDateString","separator","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","showEvent","currentDialog","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconSpan","_resolveIcon","textSpan","toggleContent","overflowItem","customIconElement","iconClone","iconHtml","outerHTML","cssValue","navWidth","itemsToOverflow","_moveToOverflow","overflowCount","usedWidth","overflowThreshold","sum","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","Drawer","_swipeHelper","_initSwipe","swipeConfig","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_pointerActive","_pointerIndex","_setupInput","_renderSlots","_render","setValue","_sanitize","_checkComplete","_selectSlot","_firstEmptyIndex","_onInput","_onBeforeInput","_onFocus","_onPointerDown","_onSelectionChange","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","slot","_handleInput","_handleBeforeInput","_handlePointerDown","sanitized","_afterValueChange","inputType","char","selectionStart","chars","selectionEnd","splice","_slotIndexFromPoint","clamped","setSelectionRange","isFocused","caret","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","_handleChipKeydown","lastChip","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","remainingChips","focusIndex","targetChip","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","area","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","ul","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elementName","attributeList","allowedAttributes","extraClass","sanitize","sanitizeFn","template","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","isInTheDom","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_hasNewContent","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","arrowX","arrowY","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","stops","gridTemplateColumns","stop","tick","gridColumnStart","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_SCROLLEND","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","SCROLL_IDLE_TIMEOUT","RESIZE_DEBOUNCE","smoothScroll","topMargin","ScrollSpy","_sections","_linkBySection","_sectionByLink","_intersecting","_activeTarget","_lastActive","_atBottom","_rootElement","_sentinel","_sentinelObserver","_pendingNavigation","_settleTimeout","_settleHandler","_scrollIdleHandler","_resizeHandler","_resizeTimeout","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","_setUpSentinel","_maybeAddResizeListener","_teardownSentinel","_disarmSettle","_removeResizeListener","_getDerivedRootMargin","_onIntersect","_computeActive","_process","_parseTopMargin","unit","endsWith","percent","rootHeight","_usesPixelMargin","sentinel","cssText","_onSentinel","_isOverflowing","scroller","scrollingElement","_rebuildObserver","currentTop","pageYOffset","_settleNavigation","hash","_armSettle","_getSettleTarget","_onSettle","history","replaceState","targetLinks","seen","anchor","decodeFragment","_clearActiveClass","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","altKey","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","_execute"],"sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../node_modules/vanilla-calendar-pro/index.mjs","../../js/src/datepicker.js","../../js/src/dialog-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...instanceMap.keys()][0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll',\n  'scrollend'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsely appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [...Element.prototype.querySelectorAll.call(element, selector)]\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [...element.children].filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { isRTL, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\n\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  const firstChar = placement[0];\n  return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rlPlacement : lrPlacement;\n      return isStart ? lrPlacement : rlPlacement;\n    case 'left':\n    case 'right':\n      return isStart ? tbPlacement : btPlacement;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  const side = getSide(placement);\n  return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n    ...platform,\n    detectOverflow\n  };\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let resetCount = 0;\n  const middlewareData = {};\n  for (let i = 0; i < middleware.length; i++) {\n    const currentMiddleware = middleware[i];\n    if (!currentMiddleware) {\n      continue;\n    }\n    const {\n      name,\n      fn\n    } = currentMiddleware;\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform: platformWithDetectOverflow,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData[name] = {\n      ...middlewareData[name],\n      ...data\n    };\n    if (reset && resetCount < MAX_RESET_COUNT) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n          if (!ignoreCrossAxisOverflow ||\n          // We leave the current main axis only if every placement on that axis\n          // overflows the main axis.\n          overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n            // Try next placement and re-run the lifecycle.\n            return {\n              data: {\n                index: nextIndex,\n                overflows: overflowsData\n              },\n              reset: {\n                placement: nextPlacement\n              }\n            };\n          }\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects,\n        platform\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await platform.detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = originSides.has(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        platform\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = originSides.has(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n  return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n  var _ref;\n  return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n  if (!hasWindow()) {\n    return false;\n  }\n  return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n  if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n  return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n  try {\n    if (element.matches(':popover-open')) {\n      return true;\n    }\n  } catch (_e) {\n    // no-op\n  }\n  try {\n    return element.matches(':modal');\n  } catch (_e) {\n    return false;\n  }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n  const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n  return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else if (isTopLayer(currentNode)) {\n      return null;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  return null;\n}\nfunction isWebKit() {\n  if (isWebKitValue == null) {\n    isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n  }\n  return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n  return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n  return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.scrollX,\n    scrollTop: element.scrollY\n  };\n}\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n  var _node$ownerDocument2;\n  if (list === void 0) {\n    list = [];\n  }\n  if (traverseIframes === void 0) {\n    traverseIframes = true;\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    const frameElement = getFrameElement(win);\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n  } else {\n    return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n  }\n}\nfunction getFrameElement(win) {\n  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n  const win = getWindow(element);\n  if (!isWebKit() || !win.visualViewport) {\n    return noOffsets;\n  }\n  return {\n    x: win.visualViewport.offsetLeft,\n    y: win.visualViewport.offsetTop\n  };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n  if (isFixed === void 0) {\n    isFixed = false;\n  }\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n    return false;\n  }\n  return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentWin = win;\n    let currentIFrame = getFrameElement(currentWin);\n    while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle$1(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentWin = getWindow(currentIFrame);\n      currentIFrame = getFrameElement(currentWin);\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n  const leftScroll = getNodeScroll(element).scrollLeft;\n  if (!rect) {\n    return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n  }\n  return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n  const htmlRect = documentElement.getBoundingClientRect();\n  const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n  const y = htmlRect.top + scroll.scrollTop;\n  return {\n    x,\n    y\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isFixed = strategy === 'fixed';\n  const documentElement = getDocumentElement(offsetParent);\n  const topLayer = elements ? isTopLayer(elements.floating) : false;\n  if (offsetParent === documentElement || topLayer && isFixed) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createCoords(1);\n  const offsets = createCoords(0);\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n  };\n}\n\nfunction getClientRects(element) {\n  return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isWebKit();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  const windowScrollbarX = getWindowScrollBarX(html);\n  // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n  // visual width of the <html> but this is not considered in the size\n  // of `html.clientWidth`.\n  if (windowScrollbarX <= 0) {\n    const doc = html.ownerDocument;\n    const body = doc.body;\n    const bodyStyles = getComputedStyle(body);\n    const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n    const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n    if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n      width -= clippingStableScrollbarWidth;\n    }\n  } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n    // If the <body> scrollbar is on the left, the width needs to be extended\n    // by the scrollbar amount so there isn't extra space on the right.\n    width += windowScrollbarX;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y,\n      width: clippingAncestor.width,\n      height: clippingAncestor.height\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n  let top = firstRect.top;\n  let right = firstRect.right;\n  let bottom = firstRect.bottom;\n  let left = firstRect.left;\n  for (let i = 1; i < clippingAncestors.length; i++) {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n    top = max(rect.top, top);\n    right = min(rect.right, right);\n    bottom = min(rect.bottom, bottom);\n    left = max(rect.left, left);\n  }\n  return {\n    width: right - left,\n    height: bottom - top,\n    x: left,\n    y: top\n  };\n}\n\nfunction getDimensions(element) {\n  const {\n    width,\n    height\n  } = getCssDimensions(element);\n  return {\n    width,\n    height\n  };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createCoords(0);\n\n  // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n  // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n  function setLeftRTLScrollbarOffset() {\n    offsets.x = getWindowScrollBarX(documentElement);\n  }\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isOffsetParentAnElement) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      setLeftRTLScrollbarOffset();\n    }\n  }\n  if (isFixed && !isOffsetParentAnElement && documentElement) {\n    setLeftRTLScrollbarOffset();\n  }\n  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n  return {\n    x,\n    y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nfunction isStaticPositioned(element) {\n  return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  let rawOffsetParent = element.offsetParent;\n\n  // Firefox returns the <html> element as the offsetParent if it's non-static,\n  // while Chrome and Safari return the <body> element. The <body> element must\n  // be used to perform the correct calculations even if the <html> element is\n  // non-static.\n  if (getDocumentElement(element) === rawOffsetParent) {\n    rawOffsetParent = rawOffsetParent.ownerDocument.body;\n  }\n  return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const win = getWindow(element);\n  if (isTopLayer(element)) {\n    return win;\n  }\n  if (!isHTMLElement(element)) {\n    let svgOffsetParent = getParentNode(element);\n    while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n      if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n        return svgOffsetParent;\n      }\n      svgOffsetParent = getParentNode(svgOffsetParent);\n    }\n    return win;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n    return win;\n  }\n  return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n  const getDimensionsFn = this.getDimensions;\n  const floatingDimensions = await getDimensionsFn(data.floating);\n  return {\n    reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n    floating: {\n      x: 0,\n      y: 0,\n      width: floatingDimensions.width,\n      height: floatingDimensions.height\n    }\n  };\n};\n\nfunction isRTL(element) {\n  return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  getDocumentElement,\n  getClippingRect,\n  getOffsetParent,\n  getElementRects,\n  getClientRects,\n  getDimensions,\n  getScale,\n  isElement,\n  isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n  return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    var _io;\n    clearTimeout(timeoutId);\n    (_io = io) == null || _io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const elementRectForRootMargin = element.getBoundingClientRect();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = elementRectForRootMargin;\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          // If the reference is clipped, the ratio is 0. Throttle the refresh\n          // to prevent an infinite loop of updates.\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 1000);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n        // It's possible that even though the ratio is reported as 1, the\n        // element is not actually fully within the IntersectionObserver's root\n        // area anymore. This can happen under performance constraints. This may\n        // be a bug in the browser's IntersectionObserver implementation. To\n        // work around this, we compare the element's bounding rect now with\n        // what it was at the time we created the IntersectionObserver. If they\n        // are not equal then the element moved, so we refresh.\n        refresh();\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (_e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          var _resizeObserver;\n          (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    if (floating) {\n      resizeObserver.observe(floating);\n    }\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    var _resizeObserver2;\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo == null || cleanupIo();\n    (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // menu wrapper\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Don't auto-close when interacting with a form inside the menu — clicks\n      // on a form's labels, buttons, etc. (not just inputs) should keep it open.\n      const formAncestor = event.target.closest?.('form')\n      const isInsideMenuForm = Boolean(formAncestor) && instance._menu.contains(formAncestor)\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName) || isInsideMenuForm)) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // Treat contenteditable hosts (e.g. rich-text editors) like inputs so the\n    // menu doesn't hijack their arrow keys.\n    const isInput = /input|textarea/i.test(event.target.tagName) || event.target.isContentEditable\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items.at(-1)\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/*! name: vanilla-calendar-pro v3.1.0 | url: https://github.com/uvarov-frontend/vanilla-calendar-pro */\nvar __defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__spreadValues=(e,t)=>{for(var n in t||(t={}))__hasOwnProp.call(t,n)&&__defNormalProp(e,n,t[n]);if(__getOwnPropSymbols)for(var n of __getOwnPropSymbols(t))__propIsEnum.call(t,n)&&__defNormalProp(e,n,t[n]);return e},__spreadProps=(e,t)=>__defProps(e,__getOwnPropDescs(t)),__publicField=(e,t,n)=>(__defNormalProp(e,\"symbol\"!=typeof t?t+\"\":t,n),n);const errorMessages={notFoundSelector:e=>`${e} is not found, check the first argument passed to new Calendar.`,notInit:'The calendar has not been initialized, please initialize it using the \"init()\" method first.',notLocale:\"You specified an incorrect language label or did not specify the required number of values ​​for «locale.weekdays» or «locale.months».\",incorrectTime:\"The value of the time property can be: false, 12 or 24.\",incorrectMonthsCount:\"For the «multiple» calendar type, the «displayMonthsCount» parameter can have a value from 2 to 12, and for all others it cannot be greater than 1.\"},setContext=(e,t,n)=>{e.context[t]=n},destroy=e=>{var t,n,a,o,l;if(!e.context.isInit)throw new Error(errorMessages.notInit);e.inputMode?(null==(t=e.context.mainElement.parentElement)||t.removeChild(e.context.mainElement),null==(a=null==(n=e.context.inputElement)?void 0:n.replaceWith)||a.call(n,e.context.originalElement),setContext(e,\"inputElement\",void 0)):null==(l=(o=e.context.mainElement).replaceWith)||l.call(o,e.context.originalElement),setContext(e,\"mainElement\",e.context.originalElement),e.onDestroy&&e.onDestroy(e)},skipOpenOnFocus=new WeakSet,shouldSkipOpenOnFocus=e=>skipOpenOnFocus.has(e),setSkipOpenOnFocus=e=>{skipOpenOnFocus.add(e)},clearSkipOpenOnFocus=e=>{skipOpenOnFocus.delete(e)},PREV_TABINDEX_ATTR=\"data-vc-prev-tabindex\",isFocusable=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),storePrevTabIndex=e=>{if(e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(\"tabindex\");e.setAttribute(PREV_TABINDEX_ATTR,null!=t?t:\"\")},restorePrevTabIndex=e=>{if(!e.hasAttribute(PREV_TABINDEX_ATTR))return;const t=e.getAttribute(PREV_TABINDEX_ATTR);\"\"===t||null===t?e.removeAttribute(\"tabindex\"):e.setAttribute(\"tabindex\",t),e.removeAttribute(PREV_TABINDEX_ATTR)},disableTabbing=e=>{isFocusable(e)&&(storePrevTabIndex(e),e.tabIndex=-1);const t=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>isFocusable(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;t.nextNode();){const e=t.currentNode;storePrevTabIndex(e),e.tabIndex=-1}},restoreTabbing=e=>{restorePrevTabIndex(e),e.querySelectorAll(`[${PREV_TABINDEX_ATTR}]`).forEach(restorePrevTabIndex)},hide=e=>{if(e.context.isShowInInputMode&&e.context.currentType){if(e.context.mainElement.dataset.vcCalendarHidden=\"\",setContext(e,\"isShowInInputMode\",!1),e.inputMode&&disableTabbing(e.context.mainElement),e.context.cleanupHandlers[0]&&(e.context.cleanupHandlers.forEach((e=>e())),setContext(e,\"cleanupHandlers\",[])),e.inputMode&&e.context.inputElement&&e.context.mainElement.contains(document.activeElement)){(\"function\"==typeof e.openOnFocus||!0===e.openOnFocus)&&setSkipOpenOnFocus(e),e.context.inputElement.focus()}e.onHide&&e.onHide(e)}};function getOffset(e){if(!e||!e.getBoundingClientRect)return{top:0,bottom:0,left:0,right:0};const t=e.getBoundingClientRect(),n=document.documentElement;return{bottom:t.bottom,right:t.right,top:t.top+window.scrollY-n.clientTop,left:t.left+window.scrollX-n.clientLeft}}function getViewportDimensions(){return{vw:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0),vh:Math.max(document.documentElement.clientHeight||0,window.innerHeight||0)}}function getWindowScrollPosition(){return{left:window.scrollX||document.documentElement.scrollLeft||0,top:window.scrollY||document.documentElement.scrollTop||0}}function calculateAvailableSpace(e){const{top:t,left:n}=getWindowScrollPosition(),{top:a,left:o}=getOffset(e),{vh:l,vw:s}=getViewportDimensions(),i=a-t,r=o-n;return{top:i,bottom:l-(i+e.clientHeight),left:r,right:s-(r+e.clientWidth)}}function getAvailablePosition(e,t,n=5){const a={top:!0,bottom:!0,left:!0,right:!0},o=[];if(!t||!e)return{canShow:a,parentPositions:o};const{bottom:l,top:s}=calculateAvailableSpace(e),{top:i,left:r}=getOffset(e),{height:c,width:d}=t.getBoundingClientRect(),{vh:u,vw:m}=getViewportDimensions(),p=m/2,h=u/2;return[{condition:i<h,position:\"top\"},{condition:i>h,position:\"bottom\"},{condition:r<p,position:\"left\"},{condition:r>p,position:\"right\"}].forEach((({condition:e,position:t})=>{e&&o.push(t)})),Object.assign(a,{top:c<=s-n,bottom:c<=l-n,left:d<=r,right:d<=m-r}),{canShow:a,parentPositions:o}}const handleDay=(e,t,n,a)=>{var o;const l=a.querySelector(`[data-vc-date=\"${t}\"]`),s=null==l?void 0:l.querySelector(\"[data-vc-date-btn]\");if(!l||!s)return;if((null==n?void 0:n.modifier)&&s.classList.add(...n.modifier.trim().split(\" \")),!(null==n?void 0:n.html))return;const i=document.createElement(\"div\");i.className=e.styles.datePopup,i.dataset.vcDatePopup=\"\",i.innerHTML=e.sanitizerHTML(n.html),s.ariaExpanded=\"true\",s.ariaLabel=`${s.ariaLabel}, ${null==(o=null==i?void 0:i.textContent)?void 0:o.replace(/^\\s+|\\s+(?=\\s)|\\s+$/g,\"\").replace(/&nbsp;/g,\" \")}`,l.appendChild(i),requestAnimationFrame((()=>{if(!i)return;const{canShow:e}=getAvailablePosition(l,i),t=e.bottom?l.offsetHeight:-i.offsetHeight,n=e.left&&!e.right?l.offsetWidth-i.offsetWidth/2:!e.left&&e.right?i.offsetWidth/2:0;Object.assign(i.style,{left:`${n}px`,top:`${t}px`})}))},createDatePopup=(e,t)=>{var n;e.popups&&(null==(n=Object.entries(e.popups))||n.forEach((([n,a])=>handleDay(e,n,a,t))))},getDate=e=>new Date(`${e}T00:00:00`),getDateString=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,\"0\")}-${String(e.getDate()).padStart(2,\"0\")}`,parseDates=e=>e.reduce(((e,t)=>{if(t instanceof Date||\"number\"==typeof t){const n=t instanceof Date?t:new Date(t);e.push(n.toISOString().substring(0,10))}else t.match(/^(\\d{4}-\\d{2}-\\d{2})$/g)?e.push(t):t.replace(/(\\d{4}-\\d{2}-\\d{2}).*?(\\d{4}-\\d{2}-\\d{2})/g,((t,n,a)=>{const o=getDate(n),l=getDate(a),s=new Date(o.getTime());for(;s<=l;s.setDate(s.getDate()+1))e.push(getDateString(s));return t}));return e}),[]),updateAttribute=(e,t,n,a=\"\")=>{t?e.setAttribute(n,a):e.getAttribute(n)===a&&e.removeAttribute(n)},setDateModifier=(e,t,n,a,o,l,s)=>{var i,r,c,d;const u=getDate(e.context.displayDateMin)>getDate(l)||getDate(e.context.displayDateMax)<getDate(l)||(null==(i=e.context.disableDates)?void 0:i.includes(l))||!e.selectionMonthsMode&&\"current\"!==s||!e.selectionYearsMode&&getDate(l).getFullYear()!==t;updateAttribute(n,u,\"data-vc-date-disabled\"),a&&updateAttribute(a,u,\"aria-disabled\",\"true\"),a&&updateAttribute(a,u,\"tabindex\",\"-1\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"data-vc-date-today\"),updateAttribute(n,!e.disableToday&&e.context.dateToday===l,\"aria-current\",\"date\"),updateAttribute(n,null==(r=e.selectedWeekends)?void 0:r.includes(o),\"data-vc-date-weekend\");const m=(null==(c=e.selectedHolidays)?void 0:c[0])?parseDates(e.selectedHolidays):[];if(updateAttribute(n,m.includes(l),\"data-vc-date-holiday\"),(null==(d=e.context.selectedDates)?void 0:d.includes(l))?(n.setAttribute(\"data-vc-date-selected\",\"\"),a&&a.setAttribute(\"aria-selected\",\"true\"),e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode&&(e.context.selectedDates[0]===l&&e.context.selectedDates[e.context.selectedDates.length-1]===l?n.setAttribute(\"data-vc-date-selected\",\"first-and-last\"):e.context.selectedDates[0]===l?n.setAttribute(\"data-vc-date-selected\",\"first\"):e.context.selectedDates[e.context.selectedDates.length-1]===l&&n.setAttribute(\"data-vc-date-selected\",\"last\"),e.context.selectedDates[0]!==l&&e.context.selectedDates[e.context.selectedDates.length-1]!==l&&n.setAttribute(\"data-vc-date-selected\",\"middle\"))):n.hasAttribute(\"data-vc-date-selected\")&&(n.removeAttribute(\"data-vc-date-selected\"),a&&a.removeAttribute(\"aria-selected\")),!e.context.disableDates.includes(l)&&e.enableEdgeDatesOnly&&e.context.selectedDates.length>1&&\"multiple-ranged\"===e.selectionDatesMode){const t=getDate(e.context.selectedDates[0]),a=getDate(e.context.selectedDates[e.context.selectedDates.length-1]),o=getDate(l);updateAttribute(n,o>t&&o<a,\"data-vc-date-selected\",\"middle\")}},getLocaleString=(e,t,n)=>new Date(`${e}T00:00:00.000Z`).toLocaleString(t,n),getWeekNumber=(e,t)=>{const n=getDate(e),a=(n.getDay()-t+7)%7;n.setDate(n.getDate()+4-a);const o=new Date(n.getFullYear(),0,1),l=Math.ceil(((+n-+o)/864e5+1)/7);return{year:n.getFullYear(),week:l}},addWeekNumberForDate=(e,t,n)=>{const a=getWeekNumber(n,e.firstWeekday);a&&(t.dataset.vcDateWeekNumber=String(a.week))},setDaysAsDisabled=(e,t,n)=>{var a,o,l,s,i;const r=null==(a=e.disableWeekdays)?void 0:a.includes(n),c=e.disableAllDates&&!!(null==(o=e.context.enableDates)?void 0:o[0]);!r&&!c||(null==(l=e.context.enableDates)?void 0:l.includes(t))||(null==(s=e.context.disableDates)?void 0:s.includes(t))||(e.context.disableDates.push(t),null==(i=e.context.disableDates)||i.sort(((e,t)=>+new Date(e)-+new Date(t))))},createDate=(e,t,n,a,o,l)=>{const s=getDate(o).getDay(),i=\"string\"==typeof e.locale&&e.locale.length?e.locale:\"en\",r=document.createElement(\"div\");let c;r.className=e.styles.date,r.dataset.vcDate=o,r.dataset.vcDateMonth=l,r.dataset.vcDateWeekDay=String(s),r.role=\"gridcell\",(\"current\"===l||e.displayDatesOutside)&&(c=document.createElement(\"button\"),c.className=e.styles.dateBtn,c.type=\"button\",c.ariaLabel=getLocaleString(o,i,{dateStyle:\"long\",timeZone:\"UTC\"}),c.dataset.vcDateBtn=\"\",c.innerText=String(a),r.appendChild(c)),e.enableWeekNumbers&&addWeekNumberForDate(e,r,o),setDaysAsDisabled(e,o,s),setDateModifier(e,t,r,c,s,o,l),n.addDate(r),e.onCreateDateEls&&e.onCreateDateEls(e,r)},createDatesFromCurrentMonth=(e,t,n,a,o)=>{for(let l=1;l<=n;l++){const n=new Date(a,o,l);createDate(e,a,t,l,getDateString(n),\"current\")}},createDatesFromNextMonth=(e,t,n,a,o)=>{const l=o+1===12?a+1:a,s=o+1===12?\"01\":o+2<10?`0${o+2}`:o+2;for(let o=1;o<=n;o++){const n=o<10?`0${o}`:String(o);createDate(e,a,t,o,`${l}-${s}-${n}`,\"next\")}},createDatesFromPrevMonth=(e,t,n,a,o)=>{let l=new Date(n,a,0).getDate()-(o-1);const s=0===a?n-1:n,i=0===a?12:a<10?`0${a}`:a;for(let a=o;a>0;a--,l++){createDate(e,n,t,l,`${s}-${i}-${l}`,\"prev\")}},createWeekNumbers=(e,t,n,a,o)=>{if(!e.enableWeekNumbers)return;a.textContent=\"\";const l=document.createElement(\"b\");l.className=e.styles.weekNumbersTitle,l.innerText=\"#\",l.dataset.vcWeekNumbers=\"title\",a.appendChild(l);const s=document.createElement(\"div\");s.className=e.styles.weekNumbersContent,s.dataset.vcWeekNumbers=\"content\",a.appendChild(s);const i=document.createElement(\"button\");i.type=\"button\",i.className=e.styles.weekNumber;const r=o.querySelectorAll(\"[data-vc-date]\"),c=Math.ceil((t+n)/7);for(let t=0;t<c;t++){const n=r[0===t?6:7*t].dataset.vcDate,a=getWeekNumber(n,e.firstWeekday);if(!a)return;const o=i.cloneNode(!0);o.innerText=String(a.week),o.dataset.vcWeekNumber=String(a.week),o.dataset.vcWeekYear=String(a.year),o.role=\"rowheader\",o.ariaLabel=`${a.week}`,s.appendChild(o)}},createDates=e=>{const t=new Date(e.context.selectedYear,e.context.selectedMonth,1),n=e.context.mainElement.querySelectorAll('[data-vc=\"dates\"]'),a=e.context.mainElement.querySelectorAll('[data-vc-week=\"numbers\"]');n.forEach(((n,o)=>{e.selectionDatesMode||(n.dataset.vcDatesDisabled=\"\"),n.textContent=\"\";const l=new Date(t);l.setMonth(l.getMonth()+o);const s=l.getMonth(),i=l.getFullYear(),r=(new Date(i,s,1).getDay()-e.firstWeekday+7)%7,c=new Date(i,s+1,0).getDate(),d=r+c,u=Math.ceil(d/7),m=7*u-d,p=[];for(let t=0;t<u;t++){const t=document.createElement(\"div\");t.className=e.styles.datesRow,t.setAttribute(\"data-vc-dates\",\"row\"),t.setAttribute(\"role\",\"row\"),p.push(t)}let h=0,v=0;const g={addDate:e=>{p[h].appendChild(e),v++,v>=7&&(h++,v=0)}};createDatesFromPrevMonth(e,g,i,s,r),createDatesFromCurrentMonth(e,g,c,i,s),createDatesFromNextMonth(e,g,m,i,s);for(const e of p)n.appendChild(e);createDatePopup(e,n),createWeekNumbers(e,r,c,a[o],n)}))},layoutDefault=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <#WeekNumbers />\\n    <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n      <#Week />\\n      <#Dates />\\n      <#DateRangeTooltip />\\n    </div>\\n  </div>\\n  <#ControlTime />\\n`,layoutMonths=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Months />\\n    </div>\\n  </div>\\n`,layoutMultiple=e=>`\\n  <div class=\"${e.styles.controls}\" data-vc=\"controls\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [month] />\\n    <#ArrowNext [month] />\\n  </div>\\n  <div class=\"${e.styles.grid}\" data-vc=\"grid\">\\n    <#Multiple>\\n      <div class=\"${e.styles.column}\" data-vc=\"column\" role=\"region\">\\n        <div class=\"${e.styles.header}\" data-vc=\"header\">\\n          <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n            <#Month />\\n            <#Year />\\n          </div>\\n        </div>\\n        <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n          <#WeekNumbers />\\n          <div class=\"${e.styles.content}\" data-vc=\"content\" role=\"grid\">\\n            <#Week />\\n            <#Dates />\\n          </div>\\n        </div>\\n      </div>\\n    <#/Multiple>\\n    <#DateRangeTooltip />\\n  </div>\\n  <#ControlTime />\\n`,layoutYears=e=>`\\n  <div class=\"${e.styles.header}\" data-vc=\"header\" role=\"toolbar\" aria-label=\"${e.labels.navigation}\">\\n    <#ArrowPrev [year] />\\n    <div class=\"${e.styles.headerContent}\" data-vc-header=\"content\">\\n      <#Month />\\n      <#Year />\\n    </div>\\n    <#ArrowNext [year] />\\n  </div>\\n  <div class=\"${e.styles.wrapper}\" data-vc=\"wrapper\">\\n    <div class=\"${e.styles.content}\" data-vc=\"content\">\\n      <#Years />\\n    </div>\\n  </div>\\n`,ArrowNext=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowNext}\" data-vc-arrow=\"next\" aria-label=\"${e.labels.arrowNext[t]}\"></button>`,ArrowPrev=(e,t)=>`<button type=\"button\" class=\"${e.styles.arrowPrev}\" data-vc-arrow=\"prev\" aria-label=\"${e.labels.arrowPrev[t]}\"></button>`,ControlTime=e=>e.selectionTimeMode?`<div class=\"${e.styles.time}\" data-vc=\"time\" role=\"group\" aria-label=\"${e.labels.selectingTime}\"></div>`:\"\",DateRangeTooltip=e=>e.onCreateDateRangeTooltip?`<div class=\"${e.styles.dateRangeTooltip}\" data-vc-date-range-tooltip=\"hidden\"></div>`:\"\",Dates=e=>`<div class=\"${e.styles.dates}\" data-vc=\"dates\" aria-live=\"assertive\" aria-label=\"${e.labels.dates}\" ${\"multiple\"===e.type?\"aria-multiselectable\":\"\"}></div>`,Month=e=>`<button type=\"button\" class=\"${e.styles.month}\" data-vc=\"month\"></button>`,Months=e=>`<div class=\"${e.styles.months}\" data-vc=\"months\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.months}\"></div>`,Week=e=>`<div class=\"${e.styles.week}\" data-vc=\"week\" role=\"row\" aria-label=\"${e.labels.week}\"></div>`,WeekNumbers=e=>e.enableWeekNumbers?`<div class=\"${e.styles.weekNumbers}\" data-vc-week=\"numbers\" role=\"row\" aria-label=\"${e.labels.weekNumber}\"></div>`:\"\",Year=e=>`<button type=\"button\" class=\"${e.styles.year}\" data-vc=\"year\"></button>`,Years=e=>`<div class=\"${e.styles.years}\" data-vc=\"years\" role=\"grid\" aria-live=\"assertive\" aria-label=\"${e.labels.years}\"></div>`,components={ArrowNext:ArrowNext,ArrowPrev:ArrowPrev,ControlTime:ControlTime,Dates:Dates,DateRangeTooltip:DateRangeTooltip,Month:Month,Months:Months,Week:Week,WeekNumbers:WeekNumbers,Year:Year,Years:Years},getComponent=e=>components[e],parseLayout=(e,t)=>t.replace(/[\\n\\t]/g,\"\").replace(/<#(?!\\/?Multiple)(.*?)>/g,((t,n)=>{const a=(n.match(/\\[(.*?)\\]/)||[])[1],o=n.replace(/[/\\s\\n\\t]|\\[(.*?)\\]/g,\"\"),l=getComponent(o),s=l?l(e,null!=a?a:null):\"\";return e.sanitizerHTML(s)})).replace(/[\\n\\t]/g,\"\"),parseMultipleLayout=(e,t)=>t.replace(new RegExp(\"<#Multiple>(.*?)<#\\\\/Multiple>\",\"gs\"),((t,n)=>{const a=Array(e.context.displayMonthsCount).fill(n).join(\"\");return e.sanitizerHTML(a)})).replace(/[\\n\\t]/g,\"\"),createLayouts=(e,t)=>{const n={default:layoutDefault,month:layoutMonths,year:layoutYears,multiple:layoutMultiple};if(Object.keys(n).forEach((t=>{const a=t;e.layouts[a].length||(e.layouts[a]=n[a](e))})),e.context.mainElement.className=e.styles.calendar,e.context.mainElement.dataset.vc=\"calendar\",e.context.mainElement.dataset.vcType=e.context.currentType,e.context.mainElement.role=\"application\",e.context.mainElement.tabIndex=0,e.context.mainElement.ariaLabel=e.labels.application,\"multiple\"!==e.context.currentType){if(\"multiple\"===e.type&&t){const n=e.context.mainElement.querySelector('[data-vc=\"controls\"]'),a=e.context.mainElement.querySelector('[data-vc=\"grid\"]'),o=t.closest('[data-vc=\"column\"]');return n&&n.remove(),a&&(a.dataset.vcGrid=\"hidden\"),o&&(o.dataset.vcColumn=e.context.currentType),void(o&&(o.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))))}e.context.mainElement.innerHTML=e.sanitizerHTML(parseLayout(e,e.layouts[e.context.currentType]))}else e.context.mainElement.innerHTML=e.sanitizerHTML(parseMultipleLayout(e,parseLayout(e,e.layouts[e.context.currentType])))},setVisibilityArrows=(e,t,n,a)=>{e.style.visibility=n?\"hidden\":\"\",t.style.visibility=a?\"hidden\":\"\"},handleDefaultType=(e,t,n)=>{const a=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1))),o=new Date(a.getTime()),l=new Date(a.getTime());o.setMonth(o.getMonth()-e.monthsToSwitch),l.setMonth(l.getMonth()+e.monthsToSwitch);const s=getDate(e.context.dateMin),i=getDate(e.context.dateMax);e.selectionYearsMode||(s.setFullYear(a.getFullYear()),i.setFullYear(a.getFullYear()));const r=!e.selectionMonthsMode||o.getFullYear()<s.getFullYear()||o.getFullYear()===s.getFullYear()&&o.getMonth()<s.getMonth(),c=!e.selectionMonthsMode||l.getFullYear()>i.getFullYear()||l.getFullYear()===i.getFullYear()&&l.getMonth()>i.getMonth()-(e.context.displayMonthsCount-1);setVisibilityArrows(t,n,r,c)},handleYearType=(e,t,n)=>{const a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=!!(a.getFullYear()&&e.context.displayYear-7<=a.getFullYear()),s=!!(o.getFullYear()&&e.context.displayYear+7>=o.getFullYear());setVisibilityArrows(t,n,l,s)},visibilityArrows=e=>{if(\"month\"===e.context.currentType)return;const t=e.context.mainElement.querySelector('[data-vc-arrow=\"prev\"]'),n=e.context.mainElement.querySelector('[data-vc-arrow=\"next\"]');if(!t||!n)return;({default:()=>handleDefaultType(e,t,n),year:()=>handleYearType(e,t,n)})[\"multiple\"===e.context.currentType?\"default\":e.context.currentType]()},visibilityHandler=(e,t,n,a,o)=>{const l=new Date(a.setFullYear(e.context.selectedYear,e.context.selectedMonth+n)).getFullYear(),s=new Date(a.setMonth(e.context.selectedMonth+n)).getMonth(),i=e.context.locale.months.long[s],r=t.closest('[data-vc=\"column\"]');r&&(r.ariaLabel=`${i} ${l}`);const c={month:{id:s,label:i},year:{id:l,label:l}};t.innerText=String(c[o].label),t.dataset[`vc${o.charAt(0).toUpperCase()+o.slice(1)}`]=String(c[o].id),t.ariaLabel=`${e.labels[o]} ${c[o].label}`;const d={month:e.selectionMonthsMode,year:e.selectionYearsMode},u=!1===d[o]||\"only-arrows\"===d[o];u&&(t.tabIndex=-1),t.disabled=u},visibilityTitle=e=>{const t=e.context.mainElement.querySelectorAll('[data-vc=\"month\"]'),n=e.context.mainElement.querySelectorAll('[data-vc=\"year\"]'),a=new Date(e.context.selectedYear,e.context.selectedMonth,1);[t,n].forEach((t=>null==t?void 0:t.forEach(((t,n)=>visibilityHandler(e,t,n,a,t.dataset.vc)))))},setYearModifier=(e,t,n,a,o)=>{var l;const s={month:\"[data-vc-months-month]\",year:\"[data-vc-years-year]\"},i={month:{selected:\"data-vc-months-month-selected\",aria:\"aria-selected\",value:\"vcMonthsMonth\",selectedProperty:\"selectedMonth\"},year:{selected:\"data-vc-years-year-selected\",aria:\"aria-selected\",value:\"vcYearsYear\",selectedProperty:\"selectedYear\"}};o&&(null==(l=e.context.mainElement.querySelectorAll(s[n]))||l.forEach((e=>{e.removeAttribute(i[n].selected),e.removeAttribute(i[n].aria)})),setContext(e,i[n].selectedProperty,Number(t.dataset[i[n].value])),visibilityTitle(e),\"year\"===n&&visibilityArrows(e)),a&&(t.setAttribute(i[n].selected,\"\"),t.setAttribute(i[n].aria,\"true\"))},getColumnID=(e,t)=>{var n;if(\"multiple\"!==e.type)return{currentValue:null,columnID:0};const a=e.context.mainElement.querySelectorAll('[data-vc=\"column\"]'),o=Array.from(a).findIndex((e=>e.closest(`[data-vc-column=\"${t}\"]`)));return{currentValue:o>=0?Number(null==(n=a[o].querySelector(`[data-vc=\"${t}\"]`))?void 0:n.getAttribute(`data-vc-${t}`)):null,columnID:Math.max(o,0)}},createMonthEl=(e,t,n,a,o,l,s)=>{const i=t.cloneNode(!1);return i.className=e.styles.monthsMonth,i.innerText=a,i.ariaLabel=o,i.role=\"gridcell\",i.dataset.vcMonthsMonth=`${s}`,l&&(i.ariaDisabled=\"true\"),l&&(i.tabIndex=-1),i.disabled=l,setYearModifier(e,i,\"month\",n===s,!1),i},createMonths=(e,t)=>{var n,a;const o=null==(n=null==t?void 0:t.closest('[data-vc=\"header\"]'))?void 0:n.querySelector('[data-vc=\"year\"]'),l=o?Number(o.dataset.vcYear):e.context.selectedYear,s=(null==t?void 0:t.dataset.vcMonth)?Number(t.dataset.vcMonth):e.context.selectedMonth;setContext(e,\"currentType\",\"month\"),createLayouts(e,t),visibilityTitle(e);const i=e.context.mainElement.querySelector('[data-vc=\"months\"]');if(!e.selectionMonthsMode||!i)return;const r=e.monthsToSwitch>1?e.context.locale.months.long.map(((t,n)=>s-e.monthsToSwitch*n)).concat(e.context.locale.months.long.map(((t,n)=>s+e.monthsToSwitch*n))).filter((e=>e>=0&&e<=12)):Array.from(Array(12).keys()),c=document.createElement(\"button\");c.type=\"button\";for(let t=0;t<12;t++){const n=getDate(e.context.dateMin),a=getDate(e.context.dateMax),o=e.context.displayMonthsCount-1,{columnID:d}=getColumnID(e,\"month\"),u=l<=n.getFullYear()&&t<n.getMonth()+d||l>=a.getFullYear()&&t>a.getMonth()-o+d||l>a.getFullYear()||t!==s&&!r.includes(t),m=createMonthEl(e,c,s,e.context.locale.months.short[t],e.context.locale.months.long[t],u,t);i.appendChild(m),e.onCreateMonthEls&&e.onCreateMonthEls(e,m)}null==(a=e.context.mainElement.querySelector(\"[data-vc-months-month]:not([disabled])\"))||a.focus()},TimeInput=(e,t,n,a,o)=>`\\n  <label class=\"${t}\" data-vc-time-input=\"${e}\">\\n    <input type=\"text\" name=\"${e}\" maxlength=\"2\" aria-label=\"${n[`input${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${a}\" ${o?\"disabled\":\"\"}>\\n  </label>\\n`,TimeRange=(e,t,n,a,o,l,s)=>`\\n  <label class=\"${t}\" data-vc-time-range=\"${e}\">\\n    <input type=\"range\" name=\"${e}\" min=\"${a}\" max=\"${o}\" step=\"${l}\" aria-label=\"${n[`range${e.charAt(0).toUpperCase()+e.slice(1)}`]}\" value=\"${s}\">\\n  </label>\\n`,handleActions=(e,t,n,a)=>{({hour:()=>setContext(e,\"selectedHours\",n),minute:()=>setContext(e,\"selectedMinutes\",n)})[a](),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${e.context.selectedKeeping?` ${e.context.selectedKeeping}`:\"\"}`),e.onChangeTime&&e.onChangeTime(e,t,!1),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t)},transformTime24=(e,t)=>{var n;return(null==(n={0:{AM:\"00\",PM:\"12\"},1:{AM:\"01\",PM:\"13\"},2:{AM:\"02\",PM:\"14\"},3:{AM:\"03\",PM:\"15\"},4:{AM:\"04\",PM:\"16\"},5:{AM:\"05\",PM:\"17\"},6:{AM:\"06\",PM:\"18\"},7:{AM:\"07\",PM:\"19\"},8:{AM:\"08\",PM:\"20\"},9:{AM:\"09\",PM:\"21\"},10:{AM:\"10\",PM:\"22\"},11:{AM:\"11\",PM:\"23\"},12:{AM:\"00\",PM:\"12\"}}[Number(e)])?void 0:n[t])||String(e)},handleClickKeepingTime=(e,t,n,a,o)=>{const l=l=>{const s=\"AM\"===e.context.selectedKeeping?\"PM\":\"AM\",i=transformTime24(e.context.selectedHours,s);Number(i)<=a&&Number(i)>=o?(setContext(e,\"selectedKeeping\",s),n.value=i,handleActions(e,l,e.context.selectedHours,\"hour\"),t.ariaLabel=`${e.labels.btnKeeping} ${e.context.selectedKeeping}`,t.innerText=e.context.selectedKeeping):e.onChangeTime&&e.onChangeTime(e,l,!0)};return t.addEventListener(\"click\",l),()=>{t.removeEventListener(\"click\",l)}},transformTime12=e=>({0:\"12\",13:\"01\",14:\"02\",15:\"03\",16:\"04\",17:\"05\",18:\"06\",19:\"07\",20:\"08\",21:\"09\",22:\"10\",23:\"11\"}[Number(e)]||String(e)),updateInputAndRange=(e,t,n,a)=>{e.value=n,t.value=a},updateKeepingTime$1=(e,t,n)=>{t&&n&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleInput$1=(e,t,n,a,o,l,s)=>{const i={hour:(i,r,c)=>{if(!e.selectionTimeMode)return;({12:()=>{if(!e.context.selectedKeeping)return;const d=Number(transformTime24(r,e.context.selectedKeeping));if(!(d<=l&&d>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,transformTime12(r),transformTime24(r,e.context.selectedKeeping)),i>12&&updateKeepingTime$1(e,a,\"PM\"),handleActions(e,c,transformTime12(r),o)},24:()=>{if(!(i<=l&&i>=s))return updateInputAndRange(n,t,e.context.selectedHours,e.context.selectedHours),void(e.onChangeTime&&e.onChangeTime(e,c,!0));updateInputAndRange(n,t,r,r),handleActions(e,c,r,o)}})[e.selectionTimeMode]()},minute:(a,i,r)=>{if(!(a<=l&&a>=s))return n.value=e.context.selectedMinutes,void(e.onChangeTime&&e.onChangeTime(e,r,!0));n.value=i,t.value=i,handleActions(e,r,i,o)}},r=e=>{const t=Number(n.value),a=n.value.padStart(2,\"0\");i[o]&&i[o](t,a,e)};return n.addEventListener(\"change\",r),()=>{n.removeEventListener(\"change\",r)}},updateInputAndTime=(e,t,n,a,o)=>{t.value=o,handleActions(e,n,o,a)},updateKeepingTime=(e,t,n)=>{t&&(setContext(e,\"selectedKeeping\",n),t.innerText=n)},handleRange=(e,t,n,a,o)=>{const l=l=>{const s=Number(t.value),i=t.value.padStart(2,\"0\"),r=\"hour\"===o,c=24===e.selectionTimeMode,d=s>0&&s<12;r&&!c&&updateKeepingTime(e,a,0===s||d?\"AM\":\"PM\"),updateInputAndTime(e,n,l,o,!r||c||d?i:transformTime12(t.value))};return t.addEventListener(\"input\",l),()=>{t.removeEventListener(\"input\",l)}},handleMouseOver=e=>e.setAttribute(\"data-vc-input-focus\",\"\"),handleMouseOut=e=>e.removeAttribute(\"data-vc-input-focus\"),handleTime=(e,t)=>{const n=t.querySelector('[data-vc-time-range=\"hour\"] input[name=\"hour\"]'),a=t.querySelector('[data-vc-time-range=\"minute\"] input[name=\"minute\"]'),o=t.querySelector('[data-vc-time-input=\"hour\"] input[name=\"hour\"]'),l=t.querySelector('[data-vc-time-input=\"minute\"] input[name=\"minute\"]'),s=t.querySelector('[data-vc-time=\"keeping\"]');if(!(n&&a&&o&&l))return;const i=e=>{e.target===n&&handleMouseOver(o),e.target===a&&handleMouseOver(l)},r=e=>{e.target===n&&handleMouseOut(o),e.target===a&&handleMouseOut(l)};return t.addEventListener(\"mouseover\",i),t.addEventListener(\"mouseout\",r),handleInput$1(e,n,o,s,\"hour\",e.timeMaxHour,e.timeMinHour),handleInput$1(e,a,l,s,\"minute\",e.timeMaxMinute,e.timeMinMinute),handleRange(e,n,o,s,\"hour\"),handleRange(e,a,l,s,\"minute\"),s&&handleClickKeepingTime(e,s,n,e.timeMaxHour,e.timeMinHour),()=>{t.removeEventListener(\"mouseover\",i),t.removeEventListener(\"mouseout\",r)}},createTime=e=>{const t=e.context.mainElement.querySelector('[data-vc=\"time\"]');if(!e.selectionTimeMode||!t)return;const[n,a]=[e.timeMinHour,e.timeMaxHour],[o,l]=[e.timeMinMinute,e.timeMaxMinute],s=e.context.selectedKeeping?transformTime24(e.context.selectedHours,e.context.selectedKeeping):e.context.selectedHours,i=\"range\"===e.timeControls;var r;t.innerHTML=e.sanitizerHTML(`\\n    <div class=\"${e.styles.timeContent}\" data-vc-time=\"content\">\\n      ${TimeInput(\"hour\",e.styles.timeHour,e.labels,e.context.selectedHours,i)}\\n      ${TimeInput(\"minute\",e.styles.timeMinute,e.labels,e.context.selectedMinutes,i)}\\n      ${12===e.selectionTimeMode?(r=e.context.selectedKeeping,`<button type=\"button\" class=\"${e.styles.timeKeeping}\" aria-label=\"${e.labels.btnKeeping} ${r}\" data-vc-time=\"keeping\" ${i?\"disabled\":\"\"}>${r}</button>`):\"\"}\\n    </div>\\n    <div class=\"${e.styles.timeRanges}\" data-vc-time=\"ranges\">\\n      ${TimeRange(\"hour\",e.styles.timeRange,e.labels,n,a,e.timeStepHour,s)}\\n      ${TimeRange(\"minute\",e.styles.timeRange,e.labels,o,l,e.timeStepMinute,e.context.selectedMinutes)}\\n    </div>\\n  `),handleTime(e,t)},createWeek=e=>{const t=e.selectedWeekends?[...e.selectedWeekends]:[],n=[...e.context.locale.weekdays.long].reduce(((n,a,o)=>[...n,{id:o,titleShort:e.context.locale.weekdays.short[o],titleLong:a,isWeekend:t.includes(o)}]),[]),a=[...n.slice(e.firstWeekday),...n.slice(0,e.firstWeekday)];e.context.mainElement.querySelectorAll('[data-vc=\"week\"]').forEach((t=>{const n=e.onClickWeekDay?document.createElement(\"button\"):document.createElement(\"b\");e.onClickWeekDay&&(n.type=\"button\"),a.forEach((a=>{const o=n.cloneNode(!0);o.innerText=a.titleShort,o.className=e.styles.weekDay,o.role=\"columnheader\",o.ariaLabel=a.titleLong,o.dataset.vcWeekDay=String(a.id),a.isWeekend&&(o.dataset.vcWeekDayOff=\"\"),t.appendChild(o)}))}))},createYearEl=(e,t,n,a,o)=>{const l=t.cloneNode(!1);return l.className=e.styles.yearsYear,l.innerText=String(o),l.ariaLabel=String(o),l.role=\"gridcell\",l.dataset.vcYearsYear=`${o}`,a&&(l.ariaDisabled=\"true\"),a&&(l.tabIndex=-1),l.disabled=a,setYearModifier(e,l,\"year\",n===o,!1),l},createYears=(e,t)=>{var n;const a=(null==t?void 0:t.dataset.vcYear)?Number(t.dataset.vcYear):e.context.selectedYear;setContext(e,\"currentType\",\"year\"),createLayouts(e,t),visibilityTitle(e),visibilityArrows(e);const o=e.context.mainElement.querySelector('[data-vc=\"years\"]');if(!e.selectionYearsMode||!o)return;const l=\"multiple\"!==e.type||e.context.selectedYear===a?0:1,s=document.createElement(\"button\");s.type=\"button\";for(let t=e.context.displayYear-7;t<e.context.displayYear+8;t++){const n=t<getDate(e.context.dateMin).getFullYear()+l||t>getDate(e.context.dateMax).getFullYear(),i=createYearEl(e,s,a,n,t);o.appendChild(i),e.onCreateYearEls&&e.onCreateYearEls(e,i)}null==(n=e.context.mainElement.querySelector(\"[data-vc-years-year]:not([disabled])\"))||n.focus()},trackChangesHTMLElement=(e,t,n)=>{new MutationObserver((e=>{for(let a=0;a<e.length;a++){if(e[a].attributeName===t){n();break}}})).observe(e,{attributes:!0})},haveListener={value:!1,set:()=>haveListener.value=!0,check:()=>haveListener.value},setTheme=(e,t)=>e.dataset.vcTheme=t,trackChangesThemeInSystemSettings=(e,t)=>{if(setTheme(e.context.mainElement,t.matches?\"dark\":\"light\"),\"system\"!==e.selectedTheme||haveListener.check())return;const n=e=>{const t=document.querySelectorAll('[data-vc=\"calendar\"]');null==t||t.forEach((t=>setTheme(t,e.matches?\"dark\":\"light\")))};t.addEventListener?t.addEventListener(\"change\",n):t.addListener(n),haveListener.set()},detectTheme=(e,t)=>{const n=e.themeAttrDetect.length?document.querySelector(e.themeAttrDetect):null,a=e.themeAttrDetect.replace(/^.*\\[(.+)\\]/g,((e,t)=>t));if(!n||\"system\"===n.getAttribute(a))return void trackChangesThemeInSystemSettings(e,t);const o=n.getAttribute(a);o?(setTheme(e.context.mainElement,o),trackChangesHTMLElement(n,a,(()=>{const t=n.getAttribute(a);t&&setTheme(e.context.mainElement,t)}))):trackChangesThemeInSystemSettings(e,t)},handleTheme=e=>{\"not all\"!==window.matchMedia(\"(prefers-color-scheme)\").media?\"system\"===e.selectedTheme?detectTheme(e,window.matchMedia(\"(prefers-color-scheme: dark)\")):setTheme(e.context.mainElement,e.selectedTheme):setTheme(e.context.mainElement,\"light\")},capitalizeFirstLetter=e=>e.charAt(0).toUpperCase()+e.slice(1).replace(/\\./,\"\"),getLocaleWeekday=(e,t,n)=>{const a=new Date(`1978-01-0${t+1}T00:00:00.000Z`),o=a.toLocaleString(n,{weekday:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{weekday:\"long\",timeZone:\"UTC\"});e.context.locale.weekdays.short.push(capitalizeFirstLetter(o)),e.context.locale.weekdays.long.push(capitalizeFirstLetter(l))},getLocaleMonth=(e,t,n)=>{const a=new Date(`1978-${String(t+1).padStart(2,\"0\")}-01T00:00:00.000Z`),o=a.toLocaleString(n,{month:\"short\",timeZone:\"UTC\"}),l=a.toLocaleString(n,{month:\"long\",timeZone:\"UTC\"});e.context.locale.months.short.push(capitalizeFirstLetter(o)),e.context.locale.months.long.push(capitalizeFirstLetter(l))},getLocale=e=>{var t,n,a,o,l,s,i,r;if(!(e.context.locale.weekdays.short[6]&&e.context.locale.weekdays.long[6]&&e.context.locale.months.short[11]&&e.context.locale.months.long[11]))if(\"string\"==typeof e.locale){if(\"string\"==typeof e.locale&&!e.locale.length)throw new Error(errorMessages.notLocale);Array.from({length:7},((t,n)=>getLocaleWeekday(e,n,e.locale))),Array.from({length:12},((t,n)=>getLocaleMonth(e,n,e.locale)))}else{if(!((null==(n=null==(t=e.locale)?void 0:t.weekdays)?void 0:n.short[6])&&(null==(o=null==(a=e.locale)?void 0:a.weekdays)?void 0:o.long[6])&&(null==(s=null==(l=e.locale)?void 0:l.months)?void 0:s.short[11])&&(null==(r=null==(i=e.locale)?void 0:i.months)?void 0:r.long[11])))throw new Error(errorMessages.notLocale);setContext(e,\"locale\",__spreadValues({},e.locale))}},create=e=>{const t={default:()=>{createWeek(e),createDates(e)},multiple:()=>{createWeek(e),createDates(e)},month:()=>createMonths(e),year:()=>createYears(e)};handleTheme(e),getLocale(e),createLayouts(e),visibilityTitle(e),visibilityArrows(e),createTime(e),t[e.context.currentType]()},handleArrowKeys=e=>{const t=t=>{var n;const a=t.target;if(![\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key)||\"button\"!==a.localName)return;const o=Array.from(e.context.mainElement.querySelectorAll('[data-vc=\"calendar\"] button')),l=o.indexOf(a);if(-1===l)return;const s=(i=o[l]).hasAttribute(\"data-vc-date-btn\")?7:i.hasAttribute(\"data-vc-months-month\")?4:i.hasAttribute(\"data-vc-years-year\")?5:1;var i;const r=(0,{ArrowUp:()=>Math.max(0,l-s),ArrowDown:()=>Math.min(o.length-1,l+s),ArrowLeft:()=>Math.max(0,l-1),ArrowRight:()=>Math.min(o.length-1,l+1)}[t.key])();null==(n=o[r])||n.focus()};return e.context.mainElement.addEventListener(\"keydown\",t),()=>e.context.mainElement.removeEventListener(\"keydown\",t)},handleMonth=(e,t)=>{const n=getDate(getDateString(new Date(e.context.selectedYear,e.context.selectedMonth,1)));({prev:()=>n.setMonth(n.getMonth()-e.monthsToSwitch),next:()=>n.setMonth(n.getMonth()+e.monthsToSwitch)})[t](),setContext(e,\"selectedMonth\",n.getMonth()),setContext(e,\"selectedYear\",n.getFullYear()),visibilityTitle(e),visibilityArrows(e),createDates(e)},handleClickArrow=(e,t)=>{const n=t.target.closest(\"[data-vc-arrow]\");if(n){if([\"default\",\"multiple\"].includes(e.context.currentType))handleMonth(e,n.dataset.vcArrow);else if(\"year\"===e.context.currentType&&void 0!==e.context.displayYear){const a={prev:-15,next:15}[n.dataset.vcArrow];setContext(e,\"displayYear\",e.context.displayYear+a),createYears(e,t.target)}e.onClickArrow&&e.onClickArrow(e,t)}},resolveToggle=(e,t)=>void 0===t||(\"function\"==typeof t?t(e):t),canToggleSelection=e=>resolveToggle(e,e.enableDateToggle),handleSelectDate=(e,t,n)=>{const a=t.dataset.vcDate,o=t.closest(\"[data-vc-date][data-vc-date-selected]\"),l=canToggleSelection(e);if(o&&!l)return;const s=o?e.context.selectedDates.filter((e=>e!==a)):n?[...e.context.selectedDates,a]:[a];setContext(e,\"selectedDates\",s)},createDateRangeTooltip=(e,t,n)=>{if(!t)return;if(!n)return t.dataset.vcDateRangeTooltip=\"hidden\",void(t.textContent=\"\");const a=e.context.mainElement.getBoundingClientRect(),o=n.getBoundingClientRect();t.style.left=o.left-a.left+o.width/2+\"px\",t.style.top=o.bottom-a.top-o.height+\"px\",t.dataset.vcDateRangeTooltip=\"visible\",t.innerHTML=e.sanitizerHTML(e.onCreateDateRangeTooltip(e,n,t,o,a))},state={self:null,lastDateEl:null,isHovering:!1,rangeMin:void 0,rangeMax:void 0,tooltipEl:null,timeoutId:null},addHoverEffect=(e,t,n)=>{var a,o,l;if(!(null==(o=null==(a=state.self)?void 0:a.context)?void 0:o.selectedDates[0]))return;const s=getDateString(e);(null==(l=state.self.context.disableDates)?void 0:l.includes(s))||(state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${s}\"]`).forEach((e=>e.dataset.vcDateHover=\"\")),t.forEach((e=>e.dataset.vcDateHover=\"first\")),n.forEach((e=>{\"first\"===e.dataset.vcDateHover?e.dataset.vcDateHover=\"first-and-last\":e.dataset.vcDateHover=\"last\"})))},removeHoverEffect=()=>{var e,t;if(!(null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.mainElement))return;state.self.context.mainElement.querySelectorAll(\"[data-vc-date-hover]\").forEach((e=>e.removeAttribute(\"data-vc-date-hover\")))},handleHoverDatesEvent=e=>{var t,n;if(!e||!(null==(n=null==(t=state.self)?void 0:t.context)?void 0:n.selectedDates[0]))return;if(!e.closest('[data-vc=\"dates\"]'))return state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),void removeHoverEffect();const a=e.closest(\"[data-vc-date]\");if(!a||state.lastDateEl===a)return;state.lastDateEl=a,createDateRangeTooltip(state.self,state.tooltipEl,a),removeHoverEffect();const o=a.dataset.vcDate,l=getDate(state.self.context.selectedDates[0]),s=getDate(o),i=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${state.self.context.selectedDates[0]}\"]`),r=state.self.context.mainElement.querySelectorAll(`[data-vc-date=\"${o}\"]`),[c,d]=l<s?[i,r]:[r,i],[u,m]=l<s?[l,s]:[s,l];for(let e=new Date(u);e<=m;e.setDate(e.getDate()+1))addHoverEffect(e,c,d)},handleHoverSelectedDatesRangeEvent=e=>{const t=null==e?void 0:e.closest(\"[data-vc-date-selected]\");if(!t&&state.lastDateEl)return state.lastDateEl=null,void createDateRangeTooltip(state.self,state.tooltipEl,null);t&&state.lastDateEl!==t&&(state.lastDateEl=t,createDateRangeTooltip(state.self,state.tooltipEl,t))},optimizedHoverHandler=e=>t=>{const n=t.target;state.isHovering||(state.isHovering=!0,requestAnimationFrame((()=>{e(n),state.isHovering=!1})))},optimizedHandleHoverDatesEvent=optimizedHoverHandler(handleHoverDatesEvent),optimizedHandleHoverSelectedDatesRangeEvent=optimizedHoverHandler(handleHoverSelectedDatesRangeEvent),handleCancelSelectionDates=e=>{state.self&&\"Escape\"===e.key&&(state.lastDateEl=null,setContext(state.self,\"selectedDates\",[]),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect())},handleMouseLeave=()=>{null!==state.timeoutId&&clearTimeout(state.timeoutId),state.timeoutId=setTimeout((()=>{state.lastDateEl=null,createDateRangeTooltip(state.self,state.tooltipEl,null),removeHoverEffect()}),50)},updateDisabledDates=()=>{var e,t,n,a;if(!(null==(n=null==(t=null==(e=state.self)?void 0:e.context)?void 0:t.selectedDates)?void 0:n[0])||!(null==(a=state.self.context.disableDates)?void 0:a[0]))return;const o=getDate(state.self.context.selectedDates[0]),[l,s]=state.self.context.disableDates.map((e=>getDate(e))).reduce((([e,t],n)=>[o>=n?n:e,o<n&&null===t?n:t]),[null,null]);l&&setContext(state.self,\"displayDateMin\",getDateString(new Date(l.setDate(l.getDate()+1)))),s&&setContext(state.self,\"displayDateMax\",getDateString(new Date(s.setDate(s.getDate()-1))));state.self.disableDatesPast&&!state.self.disableAllDates&&getDate(state.self.context.displayDateMin)<getDate(state.self.context.dateToday)&&setContext(state.self,\"displayDateMin\",state.self.context.dateToday)},handleSelectDateRange=(e,t)=>{state.self=e,state.lastDateEl=t,removeHoverEffect(),e.disableDatesGaps&&(state.rangeMin=state.rangeMin?state.rangeMin:e.context.displayDateMin,state.rangeMax=state.rangeMax?state.rangeMax:e.context.displayDateMax),e.onCreateDateRangeTooltip&&(state.tooltipEl=e.context.mainElement.querySelector(\"[data-vc-date-range-tooltip]\"));const n=null==t?void 0:t.dataset.vcDate;if(n){const t=1===e.context.selectedDates.length&&e.context.selectedDates[0].includes(n),a=t&&!canToggleSelection(e)?[n,n]:t&&canToggleSelection(e)?[]:e.context.selectedDates.length>1?[n]:[...e.context.selectedDates,n];setContext(e,\"selectedDates\",a),e.context.selectedDates.length>1&&e.context.selectedDates.sort(((e,t)=>+new Date(e)-+new Date(t)))}({set:()=>(e.disableDatesGaps&&updateDisabledDates(),createDateRangeTooltip(state.self,state.tooltipEl,t),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.addEventListener(\"keydown\",handleCancelSelectionDates),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates)}),reset:()=>{const[n,a]=[e.context.selectedDates[0],e.context.selectedDates[e.context.selectedDates.length-1]],o=e.context.selectedDates[0]!==e.context.selectedDates[e.context.selectedDates.length-1],l=parseDates([`${n}:${a}`]).filter((t=>!e.context.disableDates.includes(t))),s=o?e.enableEdgeDatesOnly?[n,a]:l:[e.context.selectedDates[0],e.context.selectedDates[0]];if(setContext(e,\"selectedDates\",s),e.disableDatesGaps&&(setContext(e,\"displayDateMin\",state.rangeMin),setContext(e,\"displayDateMax\",state.rangeMax)),state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverDatesEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),state.self.context.mainElement.removeEventListener(\"keydown\",handleCancelSelectionDates),e.onCreateDateRangeTooltip)return e.context.selectedDates[0]||(state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,null)),e.context.selectedDates[0]&&(state.self.context.mainElement.addEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.addEventListener(\"mouseleave\",handleMouseLeave),createDateRangeTooltip(state.self,state.tooltipEl,t)),()=>{state.self.context.mainElement.removeEventListener(\"mousemove\",optimizedHandleHoverSelectedDatesRangeEvent),state.self.context.mainElement.removeEventListener(\"mouseleave\",handleMouseLeave)}}})[1===e.context.selectedDates.length?\"set\":\"reset\"]()},updateDateModifier=e=>{e.context.mainElement.querySelectorAll(\"[data-vc-date]\").forEach((t=>{const n=t.querySelector(\"[data-vc-date-btn]\"),a=t.dataset.vcDate,o=getDate(a).getDay();setDateModifier(e,e.context.selectedYear,t,n,o,a,\"current\")}))},handleClickDate=(e,t)=>{var n;const a=t.target,o=a.closest(\"[data-vc-date-btn]\");if(!e.selectionDatesMode||![\"single\",\"multiple\",\"multiple-ranged\"].includes(e.selectionDatesMode)||!o)return;const l=o.closest(\"[data-vc-date]\");({single:()=>handleSelectDate(e,l,!1),multiple:()=>handleSelectDate(e,l,!0),\"multiple-ranged\":()=>handleSelectDateRange(e,l)})[e.selectionDatesMode](),null==(n=e.context.selectedDates)||n.sort(((e,t)=>+new Date(e)-+new Date(t))),e.onClickDate&&e.onClickDate(e,t),e.inputMode&&e.context.inputElement&&e.context.mainElement&&e.onChangeToInput&&e.onChangeToInput(e,t);const s=a.closest('[data-vc-date-month=\"prev\"]'),i=a.closest('[data-vc-date-month=\"next\"]');({prev:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"prev\"):updateDateModifier(e),next:()=>e.enableMonthChangeOnDayClick?handleMonth(e,\"next\"):updateDateModifier(e),current:()=>updateDateModifier(e)})[s?\"prev\":i?\"next\":\"current\"]()},typeClick=[\"month\",\"year\"],getValue=(e,t,n)=>{const{currentValue:a,columnID:o}=getColumnID(e,t);return\"month\"===e.context.currentType&&o>=0?n-o:\"year\"===e.context.currentType&&e.context.selectedYear!==a?n-1:n},handleMultipleYearSelection=(e,t)=>{const n=getValue(e,\"year\",Number(t.dataset.vcYearsYear)),a=getDate(e.context.dateMin),o=getDate(e.context.dateMax),l=e.context.displayMonthsCount-1,{columnID:s}=getColumnID(e,\"year\"),i=e.context.selectedMonth<a.getMonth()&&n<=a.getFullYear(),r=e.context.selectedMonth>o.getMonth()-l+s&&n>=o.getFullYear(),c=n<a.getFullYear(),d=n>o.getFullYear(),u=i||c?a.getFullYear():r||d?o.getFullYear():n,m=i||c?a.getMonth():r||d?o.getMonth()-l+s:e.context.selectedMonth;setContext(e,\"selectedYear\",u),setContext(e,\"selectedMonth\",m)},handleMultipleMonthSelection=(e,t)=>{const n=t.closest('[data-vc-column=\"month\"]').querySelector('[data-vc=\"year\"]'),a=getValue(e,\"month\",Number(t.dataset.vcMonthsMonth)),o=Number(n.dataset.vcYear),l=getDate(e.context.dateMin),s=getDate(e.context.dateMax),i=a<l.getMonth()&&o<=l.getFullYear(),r=a>s.getMonth()&&o>=s.getFullYear();setContext(e,\"selectedYear\",o),setContext(e,\"selectedMonth\",i?l.getMonth():r?s.getMonth():a)},handleItemClick=(e,t,n,a)=>{var o;({year:()=>{if(\"multiple\"===e.type)return handleMultipleYearSelection(e,a);setContext(e,\"selectedYear\",Number(a.dataset.vcYearsYear))},month:()=>{if(\"multiple\"===e.type)return handleMultipleMonthSelection(e,a);setContext(e,\"selectedMonth\",Number(a.dataset.vcMonthsMonth))}})[n]();({year:()=>{var n;return null==(n=e.onClickYear)?void 0:n.call(e,e,t)},month:()=>{var n;return null==(n=e.onClickMonth)?void 0:n.call(e,e,t)}})[n](),e.context.currentType!==e.type?(setContext(e,\"currentType\",e.type),create(e),null==(o=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||o.focus()):setYearModifier(e,a,n,!0,!0)},handleClickType=(e,t,n)=>{var a;const o=t.target,l=o.closest(`[data-vc=\"${n}\"]`),s={year:()=>createYears(e,o),month:()=>createMonths(e,o)};if(l&&e.onClickTitle&&e.onClickTitle(e,t),l&&e.context.currentType!==n)return s[n]();const i=o.closest(`[data-vc-${n}s-${n}]`);if(i)return handleItemClick(e,t,n,i);const r=o.closest('[data-vc=\"grid\"]'),c=o.closest('[data-vc=\"column\"]');(e.context.currentType===n&&l||\"multiple\"===e.type&&e.context.currentType===n&&r&&!c)&&(setContext(e,\"currentType\",e.type),create(e),null==(a=e.context.mainElement.querySelector(`[data-vc=\"${n}\"]`))||a.focus())},handleClickMonthOrYear=(e,t)=>{const n={month:e.selectionMonthsMode,year:e.selectionYearsMode};typeClick.forEach((a=>{n[a]&&t.target&&handleClickType(e,t,a)}))},handleClickWeekNumber=(e,t)=>{if(!e.enableWeekNumbers||!e.onClickWeekNumber)return;const n=t.target.closest(\"[data-vc-week-number]\"),a=e.context.mainElement.querySelectorAll(\"[data-vc-date-week-number]\");if(!n||!a[0])return;const o=Number(n.innerText),l=Number(n.dataset.vcWeekYear),s=Array.from(a).filter((e=>Number(e.dataset.vcDateWeekNumber)===o));e.onClickWeekNumber(e,o,l,s,t)},handleClickWeekDay=(e,t)=>{if(!e.onClickWeekDay)return;const n=t.target.closest(\"[data-vc-week-day]\"),a=t.target.closest('[data-vc=\"column\"]'),o=a?a.querySelectorAll(\"[data-vc-date-week-day]\"):e.context.mainElement.querySelectorAll(\"[data-vc-date-week-day]\");if(!n||!o[0])return;const l=Number(n.dataset.vcWeekDay),s=Array.from(o).filter((e=>Number(e.dataset.vcDateWeekDay)===l));e.onClickWeekDay(e,l,s,t)},handleClick=e=>{const t=t=>{handleClickArrow(e,t),handleClickWeekDay(e,t),handleClickWeekNumber(e,t),handleClickDate(e,t),handleClickMonthOrYear(e,t)};return e.context.mainElement.addEventListener(\"click\",t),()=>e.context.mainElement.removeEventListener(\"click\",t)},initMonthsCount=e=>{if(\"multiple\"===e.type&&(e.displayMonthsCount<=1||e.displayMonthsCount>12))throw new Error(errorMessages.incorrectMonthsCount);if(\"multiple\"!==e.type&&e.displayMonthsCount>1)throw new Error(errorMessages.incorrectMonthsCount);setContext(e,\"displayMonthsCount\",e.displayMonthsCount?e.displayMonthsCount:\"multiple\"===e.type?2:1)},getLocalDate=()=>{const e=new Date;return new Date(e.getTime()-6e4*e.getTimezoneOffset()).toISOString().substring(0,10)},resolveDate=(e,t)=>\"today\"===e?getLocalDate():e instanceof Date||\"number\"==typeof e||\"string\"==typeof e?parseDates([e])[0]:t,initRange=e=>{var t,n,a;const o=resolveDate(e.dateMin,e.dateMin),l=resolveDate(e.dateMax,e.dateMax),s=resolveDate(e.displayDateMin,o),i=resolveDate(e.displayDateMax,l);setContext(e,\"dateToday\",resolveDate(e.dateToday,e.dateToday)),setContext(e,\"displayDateMin\",s?getDate(o)>=getDate(s)?o:s:o),setContext(e,\"displayDateMax\",i?getDate(l)<=getDate(i)?l:i:l);const r=e.disableDatesPast&&!e.disableAllDates&&getDate(s)<getDate(e.context.dateToday);setContext(e,\"displayDateMin\",r||e.disableAllDates?e.context.dateToday:s),setContext(e,\"displayDateMax\",e.disableAllDates?e.context.dateToday:i),setContext(e,\"disableDates\",e.disableDates[0]&&!e.disableAllDates?parseDates(e.disableDates):e.disableAllDates?[e.context.displayDateMin]:[]),e.context.disableDates.length>1&&e.context.disableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),setContext(e,\"enableDates\",e.enableDates[0]?parseDates(e.enableDates):[]),(null==(t=e.context.enableDates)?void 0:t[0])&&(null==(n=e.context.disableDates)?void 0:n[0])&&setContext(e,\"disableDates\",e.context.disableDates.filter((t=>!e.context.enableDates.includes(t)))),e.context.enableDates.length>1&&e.context.enableDates.sort(((e,t)=>+new Date(e)-+new Date(t))),(null==(a=e.context.enableDates)?void 0:a[0])&&e.disableAllDates&&(setContext(e,\"displayDateMin\",e.context.enableDates[0]),setContext(e,\"displayDateMax\",e.context.enableDates[e.context.enableDates.length-1])),setContext(e,\"dateMin\",e.displayDisabledDates?o:e.context.displayDateMin),setContext(e,\"dateMax\",e.displayDisabledDates?l:e.context.displayDateMax)},initSelectedDates=e=>{var t;setContext(e,\"selectedDates\",(null==(t=e.selectedDates)?void 0:t[0])?parseDates(e.selectedDates):[])},displayClosestValidDate=e=>{const t=t=>{const n=new Date(t);setInitialContext(e,n.getMonth(),n.getFullYear())};if(e.displayDateMin&&\"today\"!==e.displayDateMin&&(n=e.displayDateMin,a=new Date,new Date(n).getTime()>a.getTime())){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMin;return t(getDate(resolveDate(n,e.displayDateMin))),!0}var n,a;if(e.displayDateMax&&\"today\"!==e.displayDateMax&&((e,t)=>new Date(e).getTime()<t.getTime())(e.displayDateMax,new Date)){const n=e.selectedDates.length&&e.selectedDates[0]?parseDates(e.selectedDates)[0]:e.displayDateMax;return t(getDate(resolveDate(n,e.displayDateMax))),!0}return!1},setInitialContext=(e,t,n)=>{setContext(e,\"selectedMonth\",t),setContext(e,\"selectedYear\",n),setContext(e,\"displayYear\",n)},initSelectedMonthYear=e=>{var t;if(e.enableJumpToSelectedDate&&(null==(t=e.selectedDates)?void 0:t[0])&&void 0===e.selectedMonth&&void 0===e.selectedYear){const t=getDate(parseDates(e.selectedDates)[0]);return void setInitialContext(e,t.getMonth(),t.getFullYear())}if(displayClosestValidDate(e))return;const n=void 0!==e.selectedMonth&&Number(e.selectedMonth)>=0&&Number(e.selectedMonth)<12,a=void 0!==e.selectedYear&&Number(e.selectedYear)>=0&&Number(e.selectedYear)<=9999;setInitialContext(e,n?Number(e.selectedMonth):getDate(e.context.dateToday).getMonth(),a?Number(e.selectedYear):getDate(e.context.dateToday).getFullYear())},initTime=e=>{var t,n,a;if(!e.selectionTimeMode)return;if(![12,24].includes(e.selectionTimeMode))throw new Error(errorMessages.incorrectTime);const o=12===e.selectionTimeMode,l=o?/^(0[1-9]|1[0-2]):([0-5][0-9]) ?(AM|PM)?$/i:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;let[s,i,r]=null!=(a=null==(n=null==(t=e.selectedTime)?void 0:t.match(l))?void 0:n.slice(1))?a:[];s?o&&!r&&(r=\"AM\"):(s=o?transformTime12(String(e.timeMinHour)):String(e.timeMinHour),i=String(e.timeMinMinute),r=o?Number(transformTime12(String(e.timeMinHour)))>=12?\"PM\":\"AM\":null),setContext(e,\"selectedHours\",s.padStart(2,\"0\")),setContext(e,\"selectedMinutes\",i.padStart(2,\"0\")),setContext(e,\"selectedKeeping\",r),setContext(e,\"selectedTime\",`${e.context.selectedHours}:${e.context.selectedMinutes}${r?` ${r}`:\"\"}`)},initAllVariables=e=>{setContext(e,\"currentType\",e.type),initMonthsCount(e),initRange(e),initSelectedMonthYear(e),initSelectedDates(e),initTime(e)},reset=(e,{year:t,month:n,dates:a,time:o,locale:l},s=!0)=>{var i;const r={year:e.selectedYear,month:e.selectedMonth,dates:e.selectedDates,time:e.selectedTime};if(e.selectedYear=t?r.year:e.context.selectedYear,e.selectedMonth=n?r.month:e.context.selectedMonth,e.selectedTime=o?r.time:e.context.selectedTime,e.selectedDates=\"only-first\"===a&&(null==(i=e.context.selectedDates)?void 0:i[0])?[e.context.selectedDates[0]]:!0===a?r.dates:e.context.selectedDates,l){setContext(e,\"locale\",{months:{short:[],long:[]},weekdays:{short:[],long:[]}})}initAllVariables(e),s&&create(e),e.selectedYear=r.year,e.selectedMonth=r.month,e.selectedDates=r.dates,e.selectedTime=r.time,\"multiple-ranged\"===e.selectionDatesMode&&a&&handleSelectDateRange(e,null)},createToInput=e=>{const t=document.createElement(\"div\");return t.className=e.styles.calendar,t.dataset.vc=\"calendar\",t.dataset.vcInput=\"\",t.dataset.vcCalendarHidden=\"\",setContext(e,\"inputModeInit\",!0),setContext(e,\"isShowInInputMode\",!1),setContext(e,\"mainElement\",t),document.body.appendChild(e.context.mainElement),reset(e,{year:!0,month:!0,dates:!0,time:!0,locale:!0}),setTimeout((()=>show(e))),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e)},canOpenOnFocus=e=>resolveToggle(e,e.openOnFocus),handleInput=e=>{setContext(e,\"inputElement\",e.context.mainElement);const t=()=>{e.context.inputModeInit?setTimeout((()=>show(e))):createToInput(e)};e.context.inputElement.addEventListener(\"click\",t);const n=\"function\"==typeof e.openOnFocus||!0===e.openOnFocus,a=()=>{shouldSkipOpenOnFocus(e)?clearSkipOpenOnFocus(e):canOpenOnFocus(e)&&t()};n&&e.context.inputElement.addEventListener(\"focus\",a);const o=t=>{const n=\"Tab\"===t.key&&!t.shiftKey,a=[\"ArrowUp\",\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\"].includes(t.key);(n||a)&&(t=>{var n;if(!e.context.isShowInInputMode)return!1;if(document.activeElement!==e.context.inputElement)return!1;const a=e=>e.tabIndex>=0&&!e.hasAttribute(\"disabled\")&&\"true\"!==e.getAttribute(\"aria-disabled\"),o=null!=(n=document.createTreeWalker(e.context.mainElement,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>a(e)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}).nextNode())?n:a(e.context.mainElement)?e.context.mainElement:null;!o||o.tabIndex<0||(t.preventDefault(),o.focus())})(t)};return e.context.inputElement.addEventListener(\"keydown\",o),()=>{e.context.inputElement.removeEventListener(\"click\",t),n&&e.context.inputElement.removeEventListener(\"focus\",a),e.context.inputElement.removeEventListener(\"keydown\",o)}},init=e=>(setContext(e,\"originalElement\",e.context.mainElement.cloneNode(!0)),setContext(e,\"isInit\",!0),e.inputMode?handleInput(e):(initAllVariables(e),create(e),e.onInit&&e.onInit(e),handleArrowKeys(e),handleClick(e))),update=(e,t)=>{if(!e.context.isInit)throw new Error(errorMessages.notInit);reset(e,__spreadValues(__spreadValues({},{year:!0,month:!0,dates:!0,time:!0,locale:!0}),t),!(e.inputMode&&!e.context.inputModeInit)),e.onUpdate&&e.onUpdate(e)},replaceProperties=(e,t)=>{const n=Object.keys(t);for(let a=0;a<n.length;a++){const o=n[a];\"object\"!=typeof e[o]||\"object\"!=typeof t[o]||t[o]instanceof Date||Array.isArray(t[o])?void 0!==t[o]&&(e[o]=t[o]):replaceProperties(e[o],t[o])}},set=(e,t,n)=>{replaceProperties(e,t),e.context.isInit&&update(e,n)};function findBestPickerPosition(e,t){const n=\"left\";if(!t||!e)return n;const{canShow:a,parentPositions:o}=getAvailablePosition(e,t),l=a.left&&a.right;return(l&&a.bottom?\"center\":l&&a.top?[\"top\",\"center\"]:Array.isArray(o)?[\"bottom\"===o[0]?\"top\":\"bottom\",...o.slice(1)]:o)||n}const setPosition=(e,t,n)=>{if(!e)return;const a=\"auto\"===n?findBestPickerPosition(e,t):n,o={top:-t.offsetHeight,bottom:e.offsetHeight,left:0,center:e.offsetWidth/2-t.offsetWidth/2,right:e.offsetWidth-t.offsetWidth},l=Array.isArray(a)?a[0]:\"bottom\",s=Array.isArray(a)?a[1]:a;t.dataset.vcPosition=l;const{top:i,left:r}=getOffset(e),c=i+o[l];let d=r+o[s];const{vw:u}=getViewportDimensions();if(d+t.clientWidth>u){const e=window.innerWidth-document.body.clientWidth;d=u-t.clientWidth-e}else d<0&&(d=0);Object.assign(t.style,{left:`${d}px`,top:`${c}px`})},show=e=>{if(e.context.isShowInInputMode)return;if(!e.context.currentType)return void e.context.mainElement.click();setContext(e,\"cleanupHandlers\",[]),setContext(e,\"isShowInInputMode\",!0),e.inputMode&&restoreTabbing(e.context.mainElement),setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput),e.context.mainElement.removeAttribute(\"data-vc-calendar-hidden\");const t=()=>{setPosition(e.context.inputElement,e.context.mainElement,e.positionToInput)};window.addEventListener(\"resize\",t),e.context.cleanupHandlers.push((()=>window.removeEventListener(\"resize\",t)));const n=t=>{\"Escape\"===t.key&&hide(e)};document.addEventListener(\"keydown\",n),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"keydown\",n)));const a=t=>{t.target===e.context.inputElement||e.context.mainElement.contains(t.target)||hide(e)};document.addEventListener(\"click\",a,{capture:!0}),e.context.cleanupHandlers.push((()=>document.removeEventListener(\"click\",a,{capture:!0}))),e.onShow&&e.onShow(e)},labels={application:\"Calendar\",navigation:\"Calendar Navigation\",arrowNext:{month:\"Next month\",year:\"Next list of years\"},arrowPrev:{month:\"Previous month\",year:\"Previous list of years\"},month:\"Select month, current selected month:\",months:\"List of months\",year:\"Select year, current selected year:\",years:\"List of years\",week:\"Days of the week\",weekNumber:\"Numbers of weeks in a year\",dates:\"Dates in the current month\",selectingTime:\"Selecting a time \",inputHour:\"Hours\",inputMinute:\"Minutes\",rangeHour:\"Slider for selecting hours\",rangeMinute:\"Slider for selecting minutes\",btnKeeping:\"Switch AM/PM, current position:\"},styles={calendar:\"vc\",controls:\"vc-controls\",grid:\"vc-grid\",column:\"vc-column\",header:\"vc-header\",headerContent:\"vc-header__content\",month:\"vc-month\",year:\"vc-year\",arrowPrev:\"vc-arrow vc-arrow_prev\",arrowNext:\"vc-arrow vc-arrow_next\",wrapper:\"vc-wrapper\",content:\"vc-content\",months:\"vc-months\",monthsMonth:\"vc-months__month\",years:\"vc-years\",yearsYear:\"vc-years__year\",week:\"vc-week\",weekDay:\"vc-week__day\",weekNumbers:\"vc-week-numbers\",weekNumbersTitle:\"vc-week-numbers__title\",weekNumbersContent:\"vc-week-numbers__content\",weekNumber:\"vc-week-number\",dates:\"vc-dates\",datesRow:\"vc-dates__row\",date:\"vc-date\",dateBtn:\"vc-date__btn\",datePopup:\"vc-date__popup\",dateRangeTooltip:\"vc-date-range-tooltip\",time:\"vc-time\",timeContent:\"vc-time__content\",timeHour:\"vc-time__hour\",timeMinute:\"vc-time__minute\",timeKeeping:\"vc-time__keeping\",timeRanges:\"vc-time__ranges\",timeRange:\"vc-time__range\"};class OptionsCalendar{constructor(){__publicField(this,\"type\",\"default\"),__publicField(this,\"inputMode\",!1),__publicField(this,\"openOnFocus\",!0),__publicField(this,\"positionToInput\",\"left\"),__publicField(this,\"firstWeekday\",1),__publicField(this,\"monthsToSwitch\",1),__publicField(this,\"themeAttrDetect\",\"html[data-theme]\"),__publicField(this,\"locale\",\"en\"),__publicField(this,\"dateToday\",\"today\"),__publicField(this,\"dateMin\",\"1970-01-01\"),__publicField(this,\"dateMax\",\"2470-12-31\"),__publicField(this,\"displayDateMin\"),__publicField(this,\"displayDateMax\"),__publicField(this,\"displayDatesOutside\",!0),__publicField(this,\"displayDisabledDates\",!1),__publicField(this,\"displayMonthsCount\"),__publicField(this,\"disableDates\",[]),__publicField(this,\"disableAllDates\",!1),__publicField(this,\"disableDatesPast\",!1),__publicField(this,\"disableDatesGaps\",!1),__publicField(this,\"disableWeekdays\",[]),__publicField(this,\"disableToday\",!1),__publicField(this,\"enableDates\",[]),__publicField(this,\"enableEdgeDatesOnly\",!0),__publicField(this,\"enableDateToggle\",!0),__publicField(this,\"enableWeekNumbers\",!1),__publicField(this,\"enableMonthChangeOnDayClick\",!0),__publicField(this,\"enableJumpToSelectedDate\",!1),__publicField(this,\"selectionDatesMode\",\"single\"),__publicField(this,\"selectionMonthsMode\",!0),__publicField(this,\"selectionYearsMode\",!0),__publicField(this,\"selectionTimeMode\",!1),__publicField(this,\"selectedDates\",[]),__publicField(this,\"selectedMonth\"),__publicField(this,\"selectedYear\"),__publicField(this,\"selectedHolidays\",[]),__publicField(this,\"selectedWeekends\",[0,6]),__publicField(this,\"selectedTime\"),__publicField(this,\"selectedTheme\",\"system\"),__publicField(this,\"timeMinHour\",0),__publicField(this,\"timeMaxHour\",23),__publicField(this,\"timeMinMinute\",0),__publicField(this,\"timeMaxMinute\",59),__publicField(this,\"timeControls\",\"all\"),__publicField(this,\"timeStepHour\",1),__publicField(this,\"timeStepMinute\",1),__publicField(this,\"sanitizerHTML\",(e=>e)),__publicField(this,\"onClickDate\"),__publicField(this,\"onClickWeekDay\"),__publicField(this,\"onClickWeekNumber\"),__publicField(this,\"onClickTitle\"),__publicField(this,\"onClickMonth\"),__publicField(this,\"onClickYear\"),__publicField(this,\"onClickArrow\"),__publicField(this,\"onChangeTime\"),__publicField(this,\"onChangeToInput\"),__publicField(this,\"onCreateDateRangeTooltip\"),__publicField(this,\"onCreateDateEls\"),__publicField(this,\"onCreateMonthEls\"),__publicField(this,\"onCreateYearEls\"),__publicField(this,\"onInit\"),__publicField(this,\"onUpdate\"),__publicField(this,\"onDestroy\"),__publicField(this,\"onShow\"),__publicField(this,\"onHide\"),__publicField(this,\"popups\",{}),__publicField(this,\"labels\",__spreadValues({},labels)),__publicField(this,\"layouts\",{default:\"\",multiple:\"\",month:\"\",year:\"\"}),__publicField(this,\"styles\",__spreadValues({},styles))}}const _Calendar=class e extends OptionsCalendar{constructor(t,n){var a;super(),__publicField(this,\"init\",(()=>init(this))),__publicField(this,\"update\",(e=>update(this,e))),__publicField(this,\"destroy\",(()=>destroy(this))),__publicField(this,\"show\",(()=>show(this))),__publicField(this,\"hide\",(()=>hide(this))),__publicField(this,\"set\",((e,t)=>set(this,e,t))),__publicField(this,\"context\"),this.context=__spreadProps(__spreadValues({},this.context),{locale:{months:{short:[],long:[]},weekdays:{short:[],long:[]}}}),setContext(this,\"mainElement\",\"string\"==typeof t?null!=(a=e.memoizedElements.get(t))?a:this.queryAndMemoize(t):t),n&&replaceProperties(this,n)}queryAndMemoize(t){const n=document.querySelector(t);if(!n)throw new Error(errorMessages.notFoundSelector(t));return e.memoizedElements.set(t,n),n}};__publicField(_Calendar,\"memoizedElements\",new Map);let Calendar=_Calendar;export{Calendar};","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('shown'),\n        { relatedTarget }\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  dispose() {\n    // If disposed while still open, close the native <dialog> and restore body\n    // scroll. Otherwise `dialog-open` (overflow: hidden) would stay stuck on the\n    // body — e.g. when an SPA tears the component down mid-navigation.\n    if (this._element.open) {\n      this._closeAndCleanup()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      // Lock scroll on the root element (not <body>) so it lands on the same\n      // element that carries `scrollbar-gutter: stable`. Co-locating them keeps\n      // the gutter reserved while the scrollbar is hidden, so the page doesn't\n      // shift (and the ::backdrop covers the gutter instead of leaving a strip).\n      document.documentElement.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.documentElement.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, `keydown${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends DialogBase {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus({ preventScroll: true })\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._collapseBelow = 0\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\n      if (overflowItem) {\n        if (itemsToOverflow.length > 0) {\n          overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n        } else {\n          overflowItem.classList.add(CLASS_NAME_HIDDEN)\n        }\n      }\n\n      if (itemsToOverflow.length > 0) {\n        EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n          overflowCount: itemsToOverflow.length,\n          visibleCount: this._items.length - itemsToOverflow.length\n        })\n      }\n\n      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null,\n  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._deltaY = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    if (isVisible(this)) {\n      this.focus({ preventScroll: true })\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n    // Tracks whether focus was triggered by a click so we can respect the\n    // clicked slot instead of jumping to the first empty one\n    this._pointerActive = false\n    // Slot index from the most recent tap, applied once focus settles\n    this._pointerIndex = 0\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Select the first empty slot (or the last one when the value is full)\n    this._selectSlot(this._firstEmptyIndex())\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    EventHandler.off(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.off(document, 'selectionchange', this._onSelectionChange)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input`, `beforeinput`, and `selectionchange` are not in EventHandler's\n    // native-events list; we keep references so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onBeforeInput = event => this._handleBeforeInput(event)\n    this._onPointerDown = event => this._handlePointerDown(event)\n    this._onFocus = () => {\n      if (this._pointerActive) {\n        // A tap focused the input natively; position the caret on the clicked\n        // slot now that focus has settled (doing this before native focus would\n        // make iOS/iPadOS raise then immediately dismiss the keyboard)\n        this._pointerActive = false\n        this._selectSlot(this._pointerIndex)\n        this._render()\n        return\n      }\n\n      // Keyboard (Tab) focus lands on the first empty slot\n      this._selectSlot(this._firstEmptyIndex())\n      this._render()\n    }\n\n    this._onSync = () => this._render()\n    this._onSelectionChange = () => {\n      if (document.activeElement === this._input) {\n        this._render()\n      }\n    }\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n    EventHandler.on(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.on(document, 'selectionchange', this._onSelectionChange)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  // Bulk path: paste, SMS autofill, or a programmatic value change land here as\n  // a single multi-character `input` event. Single keystrokes are handled by\n  // `_handleBeforeInput` (overwrite semantics) and never reach this method.\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    // Place the caret on the first empty slot after a paste/autofill\n    if (document.activeElement === this._input) {\n      this._selectSlot(this._firstEmptyIndex())\n    }\n\n    this._afterValueChange()\n  }\n\n  // Intercept single-character typing and backspace so each slot is overwritten\n  // in place rather than inserting and shifting the rest of the value. Anything\n  // else (paste, autofill, IME composition) falls through to `_handleInput`.\n  _handleBeforeInput(event) {\n    const { inputType, data } = event\n\n    if (inputType === 'insertText' && data && data.length === 1) {\n      event.preventDefault()\n\n      const char = this._sanitize(data)\n      if (!char) {\n        return\n      }\n\n      const index = Math.min(this._input.selectionStart ?? 0, this._length - 1)\n      const chars = [...this._input.value]\n      chars[index] = char\n      this._input.value = chars.join('').slice(0, this._length)\n\n      this._selectSlot(index + 1)\n      this._afterValueChange()\n      return\n    }\n\n    if (inputType === 'deleteContentBackward') {\n      event.preventDefault()\n\n      const start = this._input.selectionStart ?? 0\n      const end = this._input.selectionEnd ?? start\n      const chars = [...this._input.value]\n\n      if (end > start) {\n        // A filled slot is selected: clear it and keep the caret in place\n        chars.splice(start, end - start)\n        this._input.value = chars.join('')\n        this._selectSlot(start)\n      } else if (start > 0) {\n        // Collapsed caret: remove the previous character and step back\n        chars.splice(start - 1, 1)\n        this._input.value = chars.join('')\n        this._selectSlot(start - 1)\n      }\n\n      this._afterValueChange()\n    }\n  }\n\n  _handlePointerDown(event) {\n    const index = this._slotIndexFromPoint(event.clientX)\n    if (index === null) {\n      return\n    }\n\n    // Don't let the caret land past the first empty slot\n    const target = Math.min(index, this._firstEmptyIndex())\n\n    if (document.activeElement === this._input) {\n      // Already focused (keyboard is up): take over caret placement from the\n      // browser. Safe to preventDefault here — it won't dismiss the keyboard.\n      event.preventDefault()\n      this._selectSlot(target)\n      this._render()\n      return\n    }\n\n    // Not yet focused: let the browser focus the input natively so the\n    // on-screen keyboard is raised by the user's tap. Position the caret in the\n    // focus handler once focus settles.\n    this._pointerActive = true\n    this._pointerIndex = target\n  }\n\n  // Map a viewport x-coordinate to the slot under it, clamped to the last slot\n  _slotIndexFromPoint(x) {\n    for (const [index, slot] of this._slots.entries()) {\n      if (x <= slot.getBoundingClientRect().right || index === this._slots.length - 1) {\n        return index\n      }\n    }\n\n    return null\n  }\n\n  _afterValueChange() {\n    this._render()\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n    this._checkComplete()\n  }\n\n  _firstEmptyIndex() {\n    return Math.min(this._input.value.length, this._length - 1)\n  }\n\n  // Represent the active slot as a selection: a filled slot is selected so the\n  // next keystroke overwrites it; an empty slot gets a collapsed caret.\n  _selectSlot(index) {\n    const clamped = Math.max(0, Math.min(index, this._length - 1))\n    const end = clamped < this._input.value.length ? clamped + 1 : clamped\n    this._input.setSelectionRange(clamped, end)\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.value = ''\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio\n * types — notably NOT `data:text/html`, which is an XSS vector.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L49\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z=]+$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [...createdDocument.body.querySelectorAll('*')]\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [...element.attributes]\n    const allowedAttributes = [...(allowList['*'] || []), ...(allowList[elementName] || [])]\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\nconst EVENT_KEYDOWN = 'keydown'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._keydownHandler = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    this._removeEscapeListener()\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      // Reset the transient hover/active state so a prevented (or not-in-DOM)\n      // show doesn't leave `_isHovered` stuck true — otherwise a click-triggered\n      // tip would hit the `_enter()` early-return on every later click and never\n      // reopen.\n      this._isHovered = false\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._removeEscapeListener()\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle()) || this._hasNewContent()\n  }\n\n  // Content supplied via setContent() (a `{ selector: content }` map) overrides\n  // the configured title/content when rendering, so it should also satisfy the\n  // show() gate — otherwise a tip whose content is only set via setContent()\n  // can never be shown.\n  _hasNewContent() {\n    return Boolean(this._newContent) && Object.values(this._newContent).some(Boolean)\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    // Coerce number/boolean title and content to strings. `data-bs-title=\"true\"`\n    // / `data-bs-content=\"false\"` are auto-converted to booleans by the data-API,\n    // which would otherwise fail the (null|string|element|function) type check.\n    if (typeof config.title === 'number' || typeof config.title === 'boolean') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number' || typeof config.content === 'boolean') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return Boolean(this._getTitle() || this._getContent()) || this._hasNewContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap range.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_SCROLLEND = `scrollend${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\n// How long (ms) to wait after the last scroll event before settling a pending\n// smooth-scroll navigation, when the native `scrollend` event is unavailable.\nconst SCROLL_IDLE_TIMEOUT = 100\n// Debounce (ms) for rebuilding the observer on resize (px activation lines only).\nconst RESIZE_DEBOUNCE = 100\n\nconst Default = {\n  // `rootMargin` is the raw IntersectionObserver root-box override. When set it\n  // takes precedence over `topMargin` and is passed straight to the observer.\n  // Leave it null and use `topMargin` for everyday use.\n  rootMargin: null,\n  smoothScroll: false,\n  target: null,\n  threshold: [0],\n  // Position of the activation line, measured from the top of the scroll root.\n  // The active section is the deepest one whose top has scrolled to/above it.\n  // Accepts a percentage (`12%`) or pixels (`96px`, e.g. below a sticky navbar).\n  topMargin: '12%'\n}\n\nconst DefaultType = {\n  rootMargin: '(string|null)',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array',\n  topMargin: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._sections = [] // observable section elements, in DOM order\n    this._linkBySection = new Map() // section element -> nav link\n    this._sectionByLink = new Map() // nav link -> section element (for smooth scroll)\n    this._intersecting = new Set() // sections currently crossing the activation line\n    this._activeTarget = null\n    this._lastActive = null // last activated section (keep-last across gaps)\n    this._atBottom = false\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n\n    this._observer = null\n    this._sentinel = null\n    this._sentinelObserver = null\n\n    this._pendingNavigation = null\n    this._settleTimeout = null\n    this._settleHandler = null\n    this._scrollIdleHandler = null\n\n    this._resizeHandler = null\n    this._resizeTimeout = null\n\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    // (Re)build the activation observer.\n    this._observer?.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n\n    // Detect the bottom-of-page case (a short last section whose top never\n    // reaches the activation line) natively, via a dedicated sentinel observer.\n    this._setUpSentinel()\n\n    // A px activation line doesn't track viewport height the way `%` does, so\n    // rebuild the observer (debounced) on resize when px units are in play.\n    this._maybeAddResizeListener()\n  }\n\n  dispose() {\n    this._observer?.disconnect()\n    this._teardownSentinel()\n    this._disarmSettle()\n    this._removeResizeListener()\n    EventHandler.off(this._config.target, EVENT_CLICK)\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  // --- Detection (IntersectionObserver-driven) -----------------------------\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin ?? this._getDerivedRootMargin()\n    }\n\n    return new IntersectionObserver(entries => this._onIntersect(entries), options)\n  }\n\n  _onIntersect(entries) {\n    for (const entry of entries) {\n      if (entry.isIntersecting) {\n        this._intersecting.add(entry.target)\n      } else {\n        this._intersecting.delete(entry.target)\n      }\n    }\n\n    this._computeActive()\n  }\n\n  // Single source of truth for active selection, derived only from IO state —\n  // no per-frame layout reads. The active section is the deepest (DOM-order)\n  // one currently crossing the activation line; in a gap we keep the last one;\n  // above the first section the first stays active; at the very bottom the last\n  // section wins.\n  _computeActive() {\n    // Guard against observer callbacks that outlive a disposed/detached instance.\n    if (!this._element?.isConnected || this._sections.length === 0) {\n      return\n    }\n\n    let active = null\n\n    if (this._atBottom) {\n      active = this._sections.at(-1)\n    } else {\n      for (const section of this._sections) {\n        if (this._intersecting.has(section)) {\n          active = section\n        }\n      }\n\n      // No section crosses the line: keep the last active (content gap), or fall\n      // back to the first section at the top of the page.\n      active ||= this._lastActive ?? this._sections.at(0)\n    }\n\n    if (!active) {\n      return\n    }\n\n    this._lastActive = active\n    const link = this._linkBySection.get(active)\n    if (link) {\n      this._process(link)\n    }\n  }\n\n  // Single source of truth for the `topMargin` option: its numeric value and\n  // whether it's expressed as a percentage of the root height or in pixels.\n  _parseTopMargin() {\n    const value = String(this._config.topMargin)\n    return {\n      value: Number.parseFloat(value) || 0,\n      unit: value.endsWith('%') ? '%' : 'px'\n    }\n  }\n\n  // Collapse the observer root to a strip from the top down to the activation\n  // line, so a section is \"intersecting\" exactly while it crosses that line.\n  _getDerivedRootMargin() {\n    const { value, unit } = this._parseTopMargin()\n    let percent = value\n\n    // Express a pixel activation line as a percentage of the root height.\n    if (unit === 'px') {\n      const rootHeight = this._rootElement ?\n        this._rootElement.clientHeight :\n        (document.documentElement.clientHeight || window.innerHeight)\n      percent = rootHeight ? (value / rootHeight) * 100 : 12\n    }\n\n    // Clamp so the bottom inset stays a valid (non-negative) rootMargin even if\n    // the line sits outside the root box.\n    const bottom = Math.min(Math.max(100 - percent, 0), 100)\n    return `0px 0px -${bottom}% 0px`\n  }\n\n  // Whether the activation line is derived from a pixel `topMargin` (in which\n  // case it must be recomputed on resize). An explicit `rootMargin` is owned by\n  // the caller, and a `%` topMargin is recomputed by the browser automatically.\n  _usesPixelMargin() {\n    return !this._config.rootMargin && this._parseTopMargin().unit === 'px'\n  }\n\n  // --- Bottom sentinel -----------------------------------------------------\n\n  _setUpSentinel() {\n    this._teardownSentinel()\n\n    if (this._sections.length === 0) {\n      return\n    }\n\n    const sentinel = document.createElement('div')\n    sentinel.setAttribute('aria-hidden', 'true')\n    sentinel.style.cssText = 'position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;'\n    this._element.append(sentinel)\n    this._sentinel = sentinel\n\n    this._sentinelObserver = new IntersectionObserver(entries => this._onSentinel(entries), {\n      root: this._rootElement,\n      threshold: [0]\n    })\n    this._sentinelObserver.observe(sentinel)\n  }\n\n  _onSentinel(entries) {\n    const entry = entries.at(-1)\n    // Only treat the sentinel as \"bottom reached\" when content actually\n    // overflows; otherwise everything is visible and there's nothing to spy.\n    this._atBottom = Boolean(entry?.isIntersecting) && this._isOverflowing()\n    this._computeActive()\n  }\n\n  _isOverflowing() {\n    const scroller = this._rootElement || document.scrollingElement || document.documentElement\n    return scroller.scrollHeight > scroller.clientHeight\n  }\n\n  _teardownSentinel() {\n    this._sentinelObserver?.disconnect()\n    this._sentinelObserver = null\n    this._sentinel?.remove()\n    this._sentinel = null\n    this._atBottom = false\n  }\n\n  // --- Resize (px activation lines only) -----------------------------------\n\n  _maybeAddResizeListener() {\n    this._removeResizeListener()\n\n    if (!this._usesPixelMargin()) {\n      return\n    }\n\n    this._resizeHandler = () => {\n      clearTimeout(this._resizeTimeout)\n      this._resizeTimeout = setTimeout(() => this._rebuildObserver(), RESIZE_DEBOUNCE)\n    }\n\n    EventHandler.on(window, EVENT_RESIZE, this._resizeHandler)\n  }\n\n  _removeResizeListener() {\n    clearTimeout(this._resizeTimeout)\n    this._resizeTimeout = null\n\n    if (this._resizeHandler) {\n      EventHandler.off(window, EVENT_RESIZE, this._resizeHandler)\n      this._resizeHandler = null\n    }\n  }\n\n  _rebuildObserver() {\n    if (!this._observer) {\n      return\n    }\n\n    this._observer.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n  }\n\n  // --- Smooth-scroll settle (hash + focus) ---------------------------------\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // Unregister any previous listener so refresh() doesn't stack them.\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const link = event.target.closest(SELECTOR_TARGET_LINKS)\n      const section = link && this._sectionByLink.get(link)\n      if (!section || !this._element) {\n        return\n      }\n\n      event.preventDefault()\n\n      const root = this._rootElement || window\n      const height = section.offsetTop - this._element.offsetTop\n      const currentTop = this._rootElement ?\n        this._rootElement.scrollTop :\n        (window.scrollY ?? window.pageYOffset)\n      const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)').matches\n\n      // If we're already there (or motion is reduced), there will be no scroll\n      // — and thus no `scrollend` — to wait for, so settle immediately. This\n      // avoids a stuck pending navigation that never restores hash/focus.\n      if (reduceMotion || Math.abs(currentTop - height) <= 2) {\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'auto' })\n        } else {\n          root.scrollTop = height\n        }\n\n        this._settleNavigation(link.hash, section)\n        return\n      }\n\n      // Defer the URL-hash and focus updates until the scroll settles, so we\n      // don't thrash the address bar mid-animation (and so the native hash\n      // navigation we just prevented is restored once we arrive).\n      this._pendingNavigation = { hash: link.hash, section }\n      this._armSettle()\n\n      if (root.scrollTo) {\n        root.scrollTo({ top: height, behavior: 'smooth' })\n      } else {\n        root.scrollTop = height\n      }\n    })\n  }\n\n  // Arm a one-shot settle for the in-flight smooth scroll. `scrollend` is the\n  // primary signal; a transient scroll-idle timer covers engines without it.\n  // Both are removed on settle, so a later unrelated scroll can't replay it.\n  _armSettle() {\n    this._disarmSettle()\n\n    const target = this._getSettleTarget()\n\n    this._settleHandler = () => this._onSettle()\n    this._scrollIdleHandler = () => {\n      clearTimeout(this._settleTimeout)\n      this._settleTimeout = setTimeout(() => this._onSettle(), SCROLL_IDLE_TIMEOUT)\n    }\n\n    EventHandler.on(target, EVENT_SCROLLEND, this._settleHandler)\n    EventHandler.on(target, EVENT_SCROLL, this._scrollIdleHandler)\n  }\n\n  _disarmSettle() {\n    clearTimeout(this._settleTimeout)\n    this._settleTimeout = null\n\n    const target = this._getSettleTarget()\n    if (this._settleHandler) {\n      EventHandler.off(target, EVENT_SCROLLEND, this._settleHandler)\n      this._settleHandler = null\n    }\n\n    if (this._scrollIdleHandler) {\n      EventHandler.off(target, EVENT_SCROLL, this._scrollIdleHandler)\n      this._scrollIdleHandler = null\n    }\n  }\n\n  _getSettleTarget() {\n    return this._rootElement || document\n  }\n\n  _onSettle() {\n    this._disarmSettle()\n\n    if (!this._pendingNavigation) {\n      return\n    }\n\n    const { hash, section } = this._pendingNavigation\n    this._settleNavigation(hash, section)\n  }\n\n  _settleNavigation(hash, section) {\n    this._pendingNavigation = null\n\n    // Restore the URL hash (without adding a history entry) now that we've\n    // arrived, and move focus to the section for keyboard/AT users.\n    if (window.history?.replaceState) {\n      window.history.replaceState(null, '', hash)\n    }\n\n    if (!section.hasAttribute('tabindex')) {\n      section.setAttribute('tabindex', '-1')\n    }\n\n    section.focus({ preventScroll: true })\n  }\n\n  // --- Targets / observables ----------------------------------------------\n\n  _initializeTargetsAndObservables() {\n    this._sections = []\n    this._linkBySection = new Map()\n    this._sectionByLink = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n    const seen = new Set()\n\n    for (const anchor of targetLinks) {\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      // Resolve by id (decoded) rather than building a CSS selector, so any\n      // literal id works — dots, slashes, colons, and percent-encoded chars —\n      // without escaping.\n      const id = decodeFragment(anchor.hash.slice(1))\n      if (!id) {\n        continue\n      }\n\n      const section = document.getElementById(id)\n      // ensure the section exists, is scoped to this element, and is visible\n      if (!section || !this._element.contains(section) || !isVisible(section)) {\n        continue\n      }\n\n      this._sectionByLink.set(anchor, section)\n      this._linkBySection.set(section, anchor) // last link wins for a section\n\n      if (!seen.has(section)) {\n        seen.add(section)\n        this._sections.push(section)\n      }\n    }\n\n    // Keep sections in top-to-bottom order so \"deepest\" selection is\n    // well-defined. Read once here (refresh/resize), never on the hot path.\n    this._sections.sort((a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top)\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n// Decode a URL fragment id, tolerating malformed escapes (returns it as-is).\nfunction decodeFragment(hash) {\n  try {\n    return decodeURIComponent(hash)\n  } catch {\n    return hash\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    // Don't hijack modifier+arrow shortcuts (e.g. Alt+Left/Right for browser\n    // history navigation); only the bare keys drive tablist navigation.\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = event.key === HOME_KEY ? children[0] : children.at(-1)\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
index f1015a5891f214c325f1949b065ad0c03d2ec3b8..9a398e15b94136b4538d09890ff3de1ba8892629 100644 (file)
@@ -4917,7 +4917,7 @@ const SELECTOR_DATA_OTP = '[data-bs-otp]';
 const SELECTOR_INPUT$1 = 'input';
 
 // Events that should refresh the active-slot highlight as the caret moves
-const SYNC_EVENTS = ['blur', 'keyup', 'click', 'select'];
+const SYNC_EVENTS = ['blur', 'keyup', 'select'];
 const CLASS_NAME_INPUT = 'otp-input';
 const CLASS_NAME_RENDERED = 'otp-rendered';
 const CLASS_NAME_SLOTS = 'otp-slots';
@@ -4974,6 +4974,11 @@ class OtpInput extends BaseComponent {
     this._type = TYPES[this._config.type] || TYPES.numeric;
     this._length = this._resolveLength();
     this._slots = [];
+    // Tracks whether focus was triggered by a click so we can respect the
+    // clicked slot instead of jumping to the first empty one
+    this._pointerActive = false;
+    // Slot index from the most recent tap, applied once focus settles
+    this._pointerIndex = 0;
     this._setupInput();
     this._renderSlots();
     this._addEventListeners();
@@ -5007,14 +5012,16 @@ class OtpInput extends BaseComponent {
   }
   focus() {
     this._input.focus();
-    // Place the caret after the last entered character
-    const end = this._input.value.length;
-    this._input.setSelectionRange(end, end);
+    // Select the first empty slot (or the last one when the value is full)
+    this._selectSlot(this._firstEmptyIndex());
     this._render();
   }
   dispose() {
     EventHandler.off(this._input, 'input', this._onInput);
+    EventHandler.off(this._input, 'beforeinput', this._onBeforeInput);
     EventHandler.off(this._input, 'focus', this._onFocus);
+    EventHandler.off(this._input, 'pointerdown', this._onPointerDown);
+    EventHandler.off(document, 'selectionchange', this._onSelectionChange);
     for (const type of SYNC_EVENTS) {
       EventHandler.off(this._input, type, this._onSync);
     }
@@ -5086,30 +5093,152 @@ class OtpInput extends BaseComponent {
   }
   _addEventListeners() {
     // Listeners are attached with bare event names (not namespaced) because
-    // `input` is not in EventHandler's native-events list; we keep references
-    // so they can be removed on dispose.
+    // `input`, `beforeinput`, and `selectionchange` are not in EventHandler's
+    // native-events list; we keep references so they can be removed on dispose.
     this._onInput = () => this._handleInput();
-    this._onFocus = () => this.focus();
+    this._onBeforeInput = event => this._handleBeforeInput(event);
+    this._onPointerDown = event => this._handlePointerDown(event);
+    this._onFocus = () => {
+      if (this._pointerActive) {
+        // A tap focused the input natively; position the caret on the clicked
+        // slot now that focus has settled (doing this before native focus would
+        // make iOS/iPadOS raise then immediately dismiss the keyboard)
+        this._pointerActive = false;
+        this._selectSlot(this._pointerIndex);
+        this._render();
+        return;
+      }
+
+      // Keyboard (Tab) focus lands on the first empty slot
+      this._selectSlot(this._firstEmptyIndex());
+      this._render();
+    };
     this._onSync = () => this._render();
+    this._onSelectionChange = () => {
+      if (document.activeElement === this._input) {
+        this._render();
+      }
+    };
     EventHandler.on(this._input, 'input', this._onInput);
+    EventHandler.on(this._input, 'beforeinput', this._onBeforeInput);
     EventHandler.on(this._input, 'focus', this._onFocus);
+    EventHandler.on(this._input, 'pointerdown', this._onPointerDown);
+    EventHandler.on(document, 'selectionchange', this._onSelectionChange);
 
     // Keep the active-slot highlight in sync with the caret
     for (const type of SYNC_EVENTS) {
       EventHandler.on(this._input, type, this._onSync);
     }
   }
+
+  // Bulk path: paste, SMS autofill, or a programmatic value change land here as
+  // a single multi-character `input` event. Single keystrokes are handled by
+  // `_handleBeforeInput` (overwrite semantics) and never reach this method.
   _handleInput() {
     const sanitized = this._sanitize(this._input.value);
     if (sanitized !== this._input.value) {
       this._input.value = sanitized;
     }
+
+    // Place the caret on the first empty slot after a paste/autofill
+    if (document.activeElement === this._input) {
+      this._selectSlot(this._firstEmptyIndex());
+    }
+    this._afterValueChange();
+  }
+
+  // Intercept single-character typing and backspace so each slot is overwritten
+  // in place rather than inserting and shifting the rest of the value. Anything
+  // else (paste, autofill, IME composition) falls through to `_handleInput`.
+  _handleBeforeInput(event) {
+    const {
+      inputType,
+      data
+    } = event;
+    if (inputType === 'insertText' && data && data.length === 1) {
+      event.preventDefault();
+      const char = this._sanitize(data);
+      if (!char) {
+        return;
+      }
+      const index = Math.min(this._input.selectionStart ?? 0, this._length - 1);
+      const chars = [...this._input.value];
+      chars[index] = char;
+      this._input.value = chars.join('').slice(0, this._length);
+      this._selectSlot(index + 1);
+      this._afterValueChange();
+      return;
+    }
+    if (inputType === 'deleteContentBackward') {
+      event.preventDefault();
+      const start = this._input.selectionStart ?? 0;
+      const end = this._input.selectionEnd ?? start;
+      const chars = [...this._input.value];
+      if (end > start) {
+        // A filled slot is selected: clear it and keep the caret in place
+        chars.splice(start, end - start);
+        this._input.value = chars.join('');
+        this._selectSlot(start);
+      } else if (start > 0) {
+        // Collapsed caret: remove the previous character and step back
+        chars.splice(start - 1, 1);
+        this._input.value = chars.join('');
+        this._selectSlot(start - 1);
+      }
+      this._afterValueChange();
+    }
+  }
+  _handlePointerDown(event) {
+    const index = this._slotIndexFromPoint(event.clientX);
+    if (index === null) {
+      return;
+    }
+
+    // Don't let the caret land past the first empty slot
+    const target = Math.min(index, this._firstEmptyIndex());
+    if (document.activeElement === this._input) {
+      // Already focused (keyboard is up): take over caret placement from the
+      // browser. Safe to preventDefault here — it won't dismiss the keyboard.
+      event.preventDefault();
+      this._selectSlot(target);
+      this._render();
+      return;
+    }
+
+    // Not yet focused: let the browser focus the input natively so the
+    // on-screen keyboard is raised by the user's tap. Position the caret in the
+    // focus handler once focus settles.
+    this._pointerActive = true;
+    this._pointerIndex = target;
+  }
+
+  // Map a viewport x-coordinate to the slot under it, clamped to the last slot
+  _slotIndexFromPoint(x) {
+    for (const [index, slot] of this._slots.entries()) {
+      if (x <= slot.getBoundingClientRect().right || index === this._slots.length - 1) {
+        return index;
+      }
+    }
+    return null;
+  }
+  _afterValueChange() {
     this._render();
     EventHandler.trigger(this._element, EVENT_INPUT$1, {
       value: this._input.value
     });
     this._checkComplete();
   }
+  _firstEmptyIndex() {
+    return Math.min(this._input.value.length, this._length - 1);
+  }
+
+  // Represent the active slot as a selection: a filled slot is selected so the
+  // next keystroke overwrites it; an empty slot gets a collapsed caret.
+  _selectSlot(index) {
+    const clamped = Math.max(0, Math.min(index, this._length - 1));
+    const end = clamped < this._input.value.length ? clamped + 1 : clamped;
+    this._input.setSelectionRange(clamped, end);
+  }
   _sanitize(value) {
     return value.replace(this._type.filter, '').slice(0, this._length);
   }
index 7f8825448fcca5751c42416cb07ba9c423876cff..03faea93ae5831df158995203ecd0697671019bf 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"bootstrap.js","sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../js/src/datepicker.js","../../js/src/dialog-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...instanceMap.keys()][0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll',\n  'scrollend'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsely appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [...Element.prototype.querySelectorAll.call(element, selector)]\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [...element.children].filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { isRTL, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\n\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // menu wrapper\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Don't auto-close when interacting with a form inside the menu — clicks\n      // on a form's labels, buttons, etc. (not just inputs) should keep it open.\n      const formAncestor = event.target.closest?.('form')\n      const isInsideMenuForm = Boolean(formAncestor) && instance._menu.contains(formAncestor)\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName) || isInsideMenuForm)) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // Treat contenteditable hosts (e.g. rich-text editors) like inputs so the\n    // menu doesn't hijack their arrow keys.\n    const isInput = /input|textarea/i.test(event.target.tagName) || event.target.isContentEditable\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items.at(-1)\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('shown'),\n        { relatedTarget }\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  dispose() {\n    // If disposed while still open, close the native <dialog> and restore body\n    // scroll. Otherwise `dialog-open` (overflow: hidden) would stay stuck on the\n    // body — e.g. when an SPA tears the component down mid-navigation.\n    if (this._element.open) {\n      this._closeAndCleanup()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      // Lock scroll on the root element (not <body>) so it lands on the same\n      // element that carries `scrollbar-gutter: stable`. Co-locating them keeps\n      // the gutter reserved while the scrollbar is hidden, so the page doesn't\n      // shift (and the ::backdrop covers the gutter instead of leaving a strip).\n      document.documentElement.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.documentElement.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, `keydown${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends DialogBase {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus({ preventScroll: true })\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._collapseBelow = 0\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\n      if (overflowItem) {\n        if (itemsToOverflow.length > 0) {\n          overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n        } else {\n          overflowItem.classList.add(CLASS_NAME_HIDDEN)\n        }\n      }\n\n      if (itemsToOverflow.length > 0) {\n        EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n          overflowCount: itemsToOverflow.length,\n          visibleCount: this._items.length - itemsToOverflow.length\n        })\n      }\n\n      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null,\n  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._deltaY = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    if (isVisible(this)) {\n      this.focus({ preventScroll: true })\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.value = ''\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio\n * types — notably NOT `data:text/html`, which is an XSS vector.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L49\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z=]+$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [...createdDocument.body.querySelectorAll('*')]\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [...element.attributes]\n    const allowedAttributes = [...(allowList['*'] || []), ...(allowList[elementName] || [])]\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\nconst EVENT_KEYDOWN = 'keydown'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._keydownHandler = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    this._removeEscapeListener()\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      // Reset the transient hover/active state so a prevented (or not-in-DOM)\n      // show doesn't leave `_isHovered` stuck true — otherwise a click-triggered\n      // tip would hit the `_enter()` early-return on every later click and never\n      // reopen.\n      this._isHovered = false\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._removeEscapeListener()\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle()) || this._hasNewContent()\n  }\n\n  // Content supplied via setContent() (a `{ selector: content }` map) overrides\n  // the configured title/content when rendering, so it should also satisfy the\n  // show() gate — otherwise a tip whose content is only set via setContent()\n  // can never be shown.\n  _hasNewContent() {\n    return Boolean(this._newContent) && Object.values(this._newContent).some(Boolean)\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    // Coerce number/boolean title and content to strings. `data-bs-title=\"true\"`\n    // / `data-bs-content=\"false\"` are auto-converted to booleans by the data-API,\n    // which would otherwise fail the (null|string|element|function) type check.\n    if (typeof config.title === 'number' || typeof config.title === 'boolean') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number' || typeof config.content === 'boolean') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return Boolean(this._getTitle() || this._getContent()) || this._hasNewContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap range.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_SCROLLEND = `scrollend${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\n// How long (ms) to wait after the last scroll event before settling a pending\n// smooth-scroll navigation, when the native `scrollend` event is unavailable.\nconst SCROLL_IDLE_TIMEOUT = 100\n// Debounce (ms) for rebuilding the observer on resize (px activation lines only).\nconst RESIZE_DEBOUNCE = 100\n\nconst Default = {\n  // `rootMargin` is the raw IntersectionObserver root-box override. When set it\n  // takes precedence over `topMargin` and is passed straight to the observer.\n  // Leave it null and use `topMargin` for everyday use.\n  rootMargin: null,\n  smoothScroll: false,\n  target: null,\n  threshold: [0],\n  // Position of the activation line, measured from the top of the scroll root.\n  // The active section is the deepest one whose top has scrolled to/above it.\n  // Accepts a percentage (`12%`) or pixels (`96px`, e.g. below a sticky navbar).\n  topMargin: '12%'\n}\n\nconst DefaultType = {\n  rootMargin: '(string|null)',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array',\n  topMargin: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._sections = [] // observable section elements, in DOM order\n    this._linkBySection = new Map() // section element -> nav link\n    this._sectionByLink = new Map() // nav link -> section element (for smooth scroll)\n    this._intersecting = new Set() // sections currently crossing the activation line\n    this._activeTarget = null\n    this._lastActive = null // last activated section (keep-last across gaps)\n    this._atBottom = false\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n\n    this._observer = null\n    this._sentinel = null\n    this._sentinelObserver = null\n\n    this._pendingNavigation = null\n    this._settleTimeout = null\n    this._settleHandler = null\n    this._scrollIdleHandler = null\n\n    this._resizeHandler = null\n    this._resizeTimeout = null\n\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    // (Re)build the activation observer.\n    this._observer?.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n\n    // Detect the bottom-of-page case (a short last section whose top never\n    // reaches the activation line) natively, via a dedicated sentinel observer.\n    this._setUpSentinel()\n\n    // A px activation line doesn't track viewport height the way `%` does, so\n    // rebuild the observer (debounced) on resize when px units are in play.\n    this._maybeAddResizeListener()\n  }\n\n  dispose() {\n    this._observer?.disconnect()\n    this._teardownSentinel()\n    this._disarmSettle()\n    this._removeResizeListener()\n    EventHandler.off(this._config.target, EVENT_CLICK)\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  // --- Detection (IntersectionObserver-driven) -----------------------------\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin ?? this._getDerivedRootMargin()\n    }\n\n    return new IntersectionObserver(entries => this._onIntersect(entries), options)\n  }\n\n  _onIntersect(entries) {\n    for (const entry of entries) {\n      if (entry.isIntersecting) {\n        this._intersecting.add(entry.target)\n      } else {\n        this._intersecting.delete(entry.target)\n      }\n    }\n\n    this._computeActive()\n  }\n\n  // Single source of truth for active selection, derived only from IO state —\n  // no per-frame layout reads. The active section is the deepest (DOM-order)\n  // one currently crossing the activation line; in a gap we keep the last one;\n  // above the first section the first stays active; at the very bottom the last\n  // section wins.\n  _computeActive() {\n    // Guard against observer callbacks that outlive a disposed/detached instance.\n    if (!this._element?.isConnected || this._sections.length === 0) {\n      return\n    }\n\n    let active = null\n\n    if (this._atBottom) {\n      active = this._sections.at(-1)\n    } else {\n      for (const section of this._sections) {\n        if (this._intersecting.has(section)) {\n          active = section\n        }\n      }\n\n      // No section crosses the line: keep the last active (content gap), or fall\n      // back to the first section at the top of the page.\n      active ||= this._lastActive ?? this._sections.at(0)\n    }\n\n    if (!active) {\n      return\n    }\n\n    this._lastActive = active\n    const link = this._linkBySection.get(active)\n    if (link) {\n      this._process(link)\n    }\n  }\n\n  // Single source of truth for the `topMargin` option: its numeric value and\n  // whether it's expressed as a percentage of the root height or in pixels.\n  _parseTopMargin() {\n    const value = String(this._config.topMargin)\n    return {\n      value: Number.parseFloat(value) || 0,\n      unit: value.endsWith('%') ? '%' : 'px'\n    }\n  }\n\n  // Collapse the observer root to a strip from the top down to the activation\n  // line, so a section is \"intersecting\" exactly while it crosses that line.\n  _getDerivedRootMargin() {\n    const { value, unit } = this._parseTopMargin()\n    let percent = value\n\n    // Express a pixel activation line as a percentage of the root height.\n    if (unit === 'px') {\n      const rootHeight = this._rootElement ?\n        this._rootElement.clientHeight :\n        (document.documentElement.clientHeight || window.innerHeight)\n      percent = rootHeight ? (value / rootHeight) * 100 : 12\n    }\n\n    // Clamp so the bottom inset stays a valid (non-negative) rootMargin even if\n    // the line sits outside the root box.\n    const bottom = Math.min(Math.max(100 - percent, 0), 100)\n    return `0px 0px -${bottom}% 0px`\n  }\n\n  // Whether the activation line is derived from a pixel `topMargin` (in which\n  // case it must be recomputed on resize). An explicit `rootMargin` is owned by\n  // the caller, and a `%` topMargin is recomputed by the browser automatically.\n  _usesPixelMargin() {\n    return !this._config.rootMargin && this._parseTopMargin().unit === 'px'\n  }\n\n  // --- Bottom sentinel -----------------------------------------------------\n\n  _setUpSentinel() {\n    this._teardownSentinel()\n\n    if (this._sections.length === 0) {\n      return\n    }\n\n    const sentinel = document.createElement('div')\n    sentinel.setAttribute('aria-hidden', 'true')\n    sentinel.style.cssText = 'position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;'\n    this._element.append(sentinel)\n    this._sentinel = sentinel\n\n    this._sentinelObserver = new IntersectionObserver(entries => this._onSentinel(entries), {\n      root: this._rootElement,\n      threshold: [0]\n    })\n    this._sentinelObserver.observe(sentinel)\n  }\n\n  _onSentinel(entries) {\n    const entry = entries.at(-1)\n    // Only treat the sentinel as \"bottom reached\" when content actually\n    // overflows; otherwise everything is visible and there's nothing to spy.\n    this._atBottom = Boolean(entry?.isIntersecting) && this._isOverflowing()\n    this._computeActive()\n  }\n\n  _isOverflowing() {\n    const scroller = this._rootElement || document.scrollingElement || document.documentElement\n    return scroller.scrollHeight > scroller.clientHeight\n  }\n\n  _teardownSentinel() {\n    this._sentinelObserver?.disconnect()\n    this._sentinelObserver = null\n    this._sentinel?.remove()\n    this._sentinel = null\n    this._atBottom = false\n  }\n\n  // --- Resize (px activation lines only) -----------------------------------\n\n  _maybeAddResizeListener() {\n    this._removeResizeListener()\n\n    if (!this._usesPixelMargin()) {\n      return\n    }\n\n    this._resizeHandler = () => {\n      clearTimeout(this._resizeTimeout)\n      this._resizeTimeout = setTimeout(() => this._rebuildObserver(), RESIZE_DEBOUNCE)\n    }\n\n    EventHandler.on(window, EVENT_RESIZE, this._resizeHandler)\n  }\n\n  _removeResizeListener() {\n    clearTimeout(this._resizeTimeout)\n    this._resizeTimeout = null\n\n    if (this._resizeHandler) {\n      EventHandler.off(window, EVENT_RESIZE, this._resizeHandler)\n      this._resizeHandler = null\n    }\n  }\n\n  _rebuildObserver() {\n    if (!this._observer) {\n      return\n    }\n\n    this._observer.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n  }\n\n  // --- Smooth-scroll settle (hash + focus) ---------------------------------\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // Unregister any previous listener so refresh() doesn't stack them.\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const link = event.target.closest(SELECTOR_TARGET_LINKS)\n      const section = link && this._sectionByLink.get(link)\n      if (!section || !this._element) {\n        return\n      }\n\n      event.preventDefault()\n\n      const root = this._rootElement || window\n      const height = section.offsetTop - this._element.offsetTop\n      const currentTop = this._rootElement ?\n        this._rootElement.scrollTop :\n        (window.scrollY ?? window.pageYOffset)\n      const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)').matches\n\n      // If we're already there (or motion is reduced), there will be no scroll\n      // — and thus no `scrollend` — to wait for, so settle immediately. This\n      // avoids a stuck pending navigation that never restores hash/focus.\n      if (reduceMotion || Math.abs(currentTop - height) <= 2) {\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'auto' })\n        } else {\n          root.scrollTop = height\n        }\n\n        this._settleNavigation(link.hash, section)\n        return\n      }\n\n      // Defer the URL-hash and focus updates until the scroll settles, so we\n      // don't thrash the address bar mid-animation (and so the native hash\n      // navigation we just prevented is restored once we arrive).\n      this._pendingNavigation = { hash: link.hash, section }\n      this._armSettle()\n\n      if (root.scrollTo) {\n        root.scrollTo({ top: height, behavior: 'smooth' })\n      } else {\n        root.scrollTop = height\n      }\n    })\n  }\n\n  // Arm a one-shot settle for the in-flight smooth scroll. `scrollend` is the\n  // primary signal; a transient scroll-idle timer covers engines without it.\n  // Both are removed on settle, so a later unrelated scroll can't replay it.\n  _armSettle() {\n    this._disarmSettle()\n\n    const target = this._getSettleTarget()\n\n    this._settleHandler = () => this._onSettle()\n    this._scrollIdleHandler = () => {\n      clearTimeout(this._settleTimeout)\n      this._settleTimeout = setTimeout(() => this._onSettle(), SCROLL_IDLE_TIMEOUT)\n    }\n\n    EventHandler.on(target, EVENT_SCROLLEND, this._settleHandler)\n    EventHandler.on(target, EVENT_SCROLL, this._scrollIdleHandler)\n  }\n\n  _disarmSettle() {\n    clearTimeout(this._settleTimeout)\n    this._settleTimeout = null\n\n    const target = this._getSettleTarget()\n    if (this._settleHandler) {\n      EventHandler.off(target, EVENT_SCROLLEND, this._settleHandler)\n      this._settleHandler = null\n    }\n\n    if (this._scrollIdleHandler) {\n      EventHandler.off(target, EVENT_SCROLL, this._scrollIdleHandler)\n      this._scrollIdleHandler = null\n    }\n  }\n\n  _getSettleTarget() {\n    return this._rootElement || document\n  }\n\n  _onSettle() {\n    this._disarmSettle()\n\n    if (!this._pendingNavigation) {\n      return\n    }\n\n    const { hash, section } = this._pendingNavigation\n    this._settleNavigation(hash, section)\n  }\n\n  _settleNavigation(hash, section) {\n    this._pendingNavigation = null\n\n    // Restore the URL hash (without adding a history entry) now that we've\n    // arrived, and move focus to the section for keyboard/AT users.\n    if (window.history?.replaceState) {\n      window.history.replaceState(null, '', hash)\n    }\n\n    if (!section.hasAttribute('tabindex')) {\n      section.setAttribute('tabindex', '-1')\n    }\n\n    section.focus({ preventScroll: true })\n  }\n\n  // --- Targets / observables ----------------------------------------------\n\n  _initializeTargetsAndObservables() {\n    this._sections = []\n    this._linkBySection = new Map()\n    this._sectionByLink = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n    const seen = new Set()\n\n    for (const anchor of targetLinks) {\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      // Resolve by id (decoded) rather than building a CSS selector, so any\n      // literal id works — dots, slashes, colons, and percent-encoded chars —\n      // without escaping.\n      const id = decodeFragment(anchor.hash.slice(1))\n      if (!id) {\n        continue\n      }\n\n      const section = document.getElementById(id)\n      // ensure the section exists, is scoped to this element, and is visible\n      if (!section || !this._element.contains(section) || !isVisible(section)) {\n        continue\n      }\n\n      this._sectionByLink.set(anchor, section)\n      this._linkBySection.set(section, anchor) // last link wins for a section\n\n      if (!seen.has(section)) {\n        seen.add(section)\n        this._sections.push(section)\n      }\n    }\n\n    // Keep sections in top-to-bottom order so \"deepest\" selection is\n    // well-defined. Read once here (refresh/resize), never on the hot path.\n    this._sections.sort((a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top)\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n// Decode a URL fragment id, tolerating malformed escapes (returns it as-is).\nfunction decodeFragment(hash) {\n  try {\n    return decodeURIComponent(hash)\n  } catch {\n    return hash\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    // Don't hijack modifier+arrow shortcuts (e.g. Alt+Left/Right for browser\n    // history navigation); only the bare keys drive tablist navigation.\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = event.key === HOME_KEY ? children[0] : children.at(-1)\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","length","elementEvent","slice","keyHandlers","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","undefined","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","_element","_config","existingInstance","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","startEvent","activeInstance","dimension","_getDimension","complete","capitalizedDimension","scrollSize","selected","triggerArray","isOpen","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","minWidth","createBreakpointListeners","listeners","mql","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","offset","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","Menu","_openInstances","computePosition","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","showEvent","_moveMenuToContainer","_createFloating","body","focusVisible","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","wrapper","hideEvent","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","fallbackMap","bottom","defaultConfig","_getContainer","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","timeoutId","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","at","clearMenus","composedPath","isMenuTarget","formAncestor","isInsideMenuForm","dataApiKeydownHandler","isInput","isContentEditable","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","selectedItems","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","displayChild","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","shouldHide","dateStr","year","month","day","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","getTime","String","getDate","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","hidePreventedEvent","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","currentDialog","shouldSwap","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconHtml","_resolveIcon","iconSpan","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","overflowWidth","keepWidth","reduce","sum","usedWidth","overflowThreshold","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","useModal","_initSwipe","swipeConfig","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","end","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","addEvent","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeEvent","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","start","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","domParser","DOMParser","createdDocument","parseFromString","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_hasNewContent","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","sort","stops","gridTemplateColumns","stop","tick","gridColumnStart","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_SCROLLEND","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","SCROLL_IDLE_TIMEOUT","RESIZE_DEBOUNCE","rootMargin","smoothScroll","topMargin","ScrollSpy","_sections","_linkBySection","_sectionByLink","_intersecting","_activeTarget","_lastActive","_atBottom","_rootElement","overflowY","_sentinel","_sentinelObserver","_pendingNavigation","_settleTimeout","_settleHandler","_scrollIdleHandler","_resizeHandler","_resizeTimeout","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","_setUpSentinel","_maybeAddResizeListener","_teardownSentinel","_disarmSettle","_removeResizeListener","_getDerivedRootMargin","_onIntersect","_computeActive","_process","_parseTopMargin","unit","endsWith","percent","rootHeight","clientHeight","innerHeight","_usesPixelMargin","sentinel","cssText","_onSentinel","_isOverflowing","scroller","scrollingElement","scrollHeight","_rebuildObserver","height","offsetTop","currentTop","scrollTop","scrollY","pageYOffset","reduceMotion","_settleNavigation","hash","_armSettle","_getSettleTarget","_onSettle","history","replaceState","targetLinks","seen","anchor","decodeFragment","_clearActiveClass","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","altKey","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"bootstrap.js","sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../js/src/datepicker.js","../../js/src/dialog-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...instanceMap.keys()][0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll',\n  'scrollend'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsely appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [...Element.prototype.querySelectorAll.call(element, selector)]\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [...element.children].filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { isRTL, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\n\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // menu wrapper\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Don't auto-close when interacting with a form inside the menu — clicks\n      // on a form's labels, buttons, etc. (not just inputs) should keep it open.\n      const formAncestor = event.target.closest?.('form')\n      const isInsideMenuForm = Boolean(formAncestor) && instance._menu.contains(formAncestor)\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName) || isInsideMenuForm)) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // Treat contenteditable hosts (e.g. rich-text editors) like inputs so the\n    // menu doesn't hijack their arrow keys.\n    const isInput = /input|textarea/i.test(event.target.tagName) || event.target.isContentEditable\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items.at(-1)\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('shown'),\n        { relatedTarget }\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  dispose() {\n    // If disposed while still open, close the native <dialog> and restore body\n    // scroll. Otherwise `dialog-open` (overflow: hidden) would stay stuck on the\n    // body — e.g. when an SPA tears the component down mid-navigation.\n    if (this._element.open) {\n      this._closeAndCleanup()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      // Lock scroll on the root element (not <body>) so it lands on the same\n      // element that carries `scrollbar-gutter: stable`. Co-locating them keeps\n      // the gutter reserved while the scrollbar is hidden, so the page doesn't\n      // shift (and the ::backdrop covers the gutter instead of leaving a strip).\n      document.documentElement.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.documentElement.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, `keydown${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends DialogBase {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus({ preventScroll: true })\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._collapseBelow = 0\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\n      if (overflowItem) {\n        if (itemsToOverflow.length > 0) {\n          overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n        } else {\n          overflowItem.classList.add(CLASS_NAME_HIDDEN)\n        }\n      }\n\n      if (itemsToOverflow.length > 0) {\n        EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n          overflowCount: itemsToOverflow.length,\n          visibleCount: this._items.length - itemsToOverflow.length\n        })\n      }\n\n      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null,\n  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._deltaY = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    if (isVisible(this)) {\n      this.focus({ preventScroll: true })\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n    // Tracks whether focus was triggered by a click so we can respect the\n    // clicked slot instead of jumping to the first empty one\n    this._pointerActive = false\n    // Slot index from the most recent tap, applied once focus settles\n    this._pointerIndex = 0\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Select the first empty slot (or the last one when the value is full)\n    this._selectSlot(this._firstEmptyIndex())\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    EventHandler.off(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.off(document, 'selectionchange', this._onSelectionChange)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input`, `beforeinput`, and `selectionchange` are not in EventHandler's\n    // native-events list; we keep references so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onBeforeInput = event => this._handleBeforeInput(event)\n    this._onPointerDown = event => this._handlePointerDown(event)\n    this._onFocus = () => {\n      if (this._pointerActive) {\n        // A tap focused the input natively; position the caret on the clicked\n        // slot now that focus has settled (doing this before native focus would\n        // make iOS/iPadOS raise then immediately dismiss the keyboard)\n        this._pointerActive = false\n        this._selectSlot(this._pointerIndex)\n        this._render()\n        return\n      }\n\n      // Keyboard (Tab) focus lands on the first empty slot\n      this._selectSlot(this._firstEmptyIndex())\n      this._render()\n    }\n\n    this._onSync = () => this._render()\n    this._onSelectionChange = () => {\n      if (document.activeElement === this._input) {\n        this._render()\n      }\n    }\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n    EventHandler.on(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.on(document, 'selectionchange', this._onSelectionChange)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  // Bulk path: paste, SMS autofill, or a programmatic value change land here as\n  // a single multi-character `input` event. Single keystrokes are handled by\n  // `_handleBeforeInput` (overwrite semantics) and never reach this method.\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    // Place the caret on the first empty slot after a paste/autofill\n    if (document.activeElement === this._input) {\n      this._selectSlot(this._firstEmptyIndex())\n    }\n\n    this._afterValueChange()\n  }\n\n  // Intercept single-character typing and backspace so each slot is overwritten\n  // in place rather than inserting and shifting the rest of the value. Anything\n  // else (paste, autofill, IME composition) falls through to `_handleInput`.\n  _handleBeforeInput(event) {\n    const { inputType, data } = event\n\n    if (inputType === 'insertText' && data && data.length === 1) {\n      event.preventDefault()\n\n      const char = this._sanitize(data)\n      if (!char) {\n        return\n      }\n\n      const index = Math.min(this._input.selectionStart ?? 0, this._length - 1)\n      const chars = [...this._input.value]\n      chars[index] = char\n      this._input.value = chars.join('').slice(0, this._length)\n\n      this._selectSlot(index + 1)\n      this._afterValueChange()\n      return\n    }\n\n    if (inputType === 'deleteContentBackward') {\n      event.preventDefault()\n\n      const start = this._input.selectionStart ?? 0\n      const end = this._input.selectionEnd ?? start\n      const chars = [...this._input.value]\n\n      if (end > start) {\n        // A filled slot is selected: clear it and keep the caret in place\n        chars.splice(start, end - start)\n        this._input.value = chars.join('')\n        this._selectSlot(start)\n      } else if (start > 0) {\n        // Collapsed caret: remove the previous character and step back\n        chars.splice(start - 1, 1)\n        this._input.value = chars.join('')\n        this._selectSlot(start - 1)\n      }\n\n      this._afterValueChange()\n    }\n  }\n\n  _handlePointerDown(event) {\n    const index = this._slotIndexFromPoint(event.clientX)\n    if (index === null) {\n      return\n    }\n\n    // Don't let the caret land past the first empty slot\n    const target = Math.min(index, this._firstEmptyIndex())\n\n    if (document.activeElement === this._input) {\n      // Already focused (keyboard is up): take over caret placement from the\n      // browser. Safe to preventDefault here — it won't dismiss the keyboard.\n      event.preventDefault()\n      this._selectSlot(target)\n      this._render()\n      return\n    }\n\n    // Not yet focused: let the browser focus the input natively so the\n    // on-screen keyboard is raised by the user's tap. Position the caret in the\n    // focus handler once focus settles.\n    this._pointerActive = true\n    this._pointerIndex = target\n  }\n\n  // Map a viewport x-coordinate to the slot under it, clamped to the last slot\n  _slotIndexFromPoint(x) {\n    for (const [index, slot] of this._slots.entries()) {\n      if (x <= slot.getBoundingClientRect().right || index === this._slots.length - 1) {\n        return index\n      }\n    }\n\n    return null\n  }\n\n  _afterValueChange() {\n    this._render()\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n    this._checkComplete()\n  }\n\n  _firstEmptyIndex() {\n    return Math.min(this._input.value.length, this._length - 1)\n  }\n\n  // Represent the active slot as a selection: a filled slot is selected so the\n  // next keystroke overwrites it; an empty slot gets a collapsed caret.\n  _selectSlot(index) {\n    const clamped = Math.max(0, Math.min(index, this._length - 1))\n    const end = clamped < this._input.value.length ? clamped + 1 : clamped\n    this._input.setSelectionRange(clamped, end)\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.value = ''\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio\n * types — notably NOT `data:text/html`, which is an XSS vector.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L49\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z=]+$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [...createdDocument.body.querySelectorAll('*')]\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [...element.attributes]\n    const allowedAttributes = [...(allowList['*'] || []), ...(allowList[elementName] || [])]\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\nconst EVENT_KEYDOWN = 'keydown'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._keydownHandler = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    this._removeEscapeListener()\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      // Reset the transient hover/active state so a prevented (or not-in-DOM)\n      // show doesn't leave `_isHovered` stuck true — otherwise a click-triggered\n      // tip would hit the `_enter()` early-return on every later click and never\n      // reopen.\n      this._isHovered = false\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._removeEscapeListener()\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle()) || this._hasNewContent()\n  }\n\n  // Content supplied via setContent() (a `{ selector: content }` map) overrides\n  // the configured title/content when rendering, so it should also satisfy the\n  // show() gate — otherwise a tip whose content is only set via setContent()\n  // can never be shown.\n  _hasNewContent() {\n    return Boolean(this._newContent) && Object.values(this._newContent).some(Boolean)\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    // Coerce number/boolean title and content to strings. `data-bs-title=\"true\"`\n    // / `data-bs-content=\"false\"` are auto-converted to booleans by the data-API,\n    // which would otherwise fail the (null|string|element|function) type check.\n    if (typeof config.title === 'number' || typeof config.title === 'boolean') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number' || typeof config.content === 'boolean') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return Boolean(this._getTitle() || this._getContent()) || this._hasNewContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap range.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_SCROLLEND = `scrollend${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\n// How long (ms) to wait after the last scroll event before settling a pending\n// smooth-scroll navigation, when the native `scrollend` event is unavailable.\nconst SCROLL_IDLE_TIMEOUT = 100\n// Debounce (ms) for rebuilding the observer on resize (px activation lines only).\nconst RESIZE_DEBOUNCE = 100\n\nconst Default = {\n  // `rootMargin` is the raw IntersectionObserver root-box override. When set it\n  // takes precedence over `topMargin` and is passed straight to the observer.\n  // Leave it null and use `topMargin` for everyday use.\n  rootMargin: null,\n  smoothScroll: false,\n  target: null,\n  threshold: [0],\n  // Position of the activation line, measured from the top of the scroll root.\n  // The active section is the deepest one whose top has scrolled to/above it.\n  // Accepts a percentage (`12%`) or pixels (`96px`, e.g. below a sticky navbar).\n  topMargin: '12%'\n}\n\nconst DefaultType = {\n  rootMargin: '(string|null)',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array',\n  topMargin: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._sections = [] // observable section elements, in DOM order\n    this._linkBySection = new Map() // section element -> nav link\n    this._sectionByLink = new Map() // nav link -> section element (for smooth scroll)\n    this._intersecting = new Set() // sections currently crossing the activation line\n    this._activeTarget = null\n    this._lastActive = null // last activated section (keep-last across gaps)\n    this._atBottom = false\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n\n    this._observer = null\n    this._sentinel = null\n    this._sentinelObserver = null\n\n    this._pendingNavigation = null\n    this._settleTimeout = null\n    this._settleHandler = null\n    this._scrollIdleHandler = null\n\n    this._resizeHandler = null\n    this._resizeTimeout = null\n\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    // (Re)build the activation observer.\n    this._observer?.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n\n    // Detect the bottom-of-page case (a short last section whose top never\n    // reaches the activation line) natively, via a dedicated sentinel observer.\n    this._setUpSentinel()\n\n    // A px activation line doesn't track viewport height the way `%` does, so\n    // rebuild the observer (debounced) on resize when px units are in play.\n    this._maybeAddResizeListener()\n  }\n\n  dispose() {\n    this._observer?.disconnect()\n    this._teardownSentinel()\n    this._disarmSettle()\n    this._removeResizeListener()\n    EventHandler.off(this._config.target, EVENT_CLICK)\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  // --- Detection (IntersectionObserver-driven) -----------------------------\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin ?? this._getDerivedRootMargin()\n    }\n\n    return new IntersectionObserver(entries => this._onIntersect(entries), options)\n  }\n\n  _onIntersect(entries) {\n    for (const entry of entries) {\n      if (entry.isIntersecting) {\n        this._intersecting.add(entry.target)\n      } else {\n        this._intersecting.delete(entry.target)\n      }\n    }\n\n    this._computeActive()\n  }\n\n  // Single source of truth for active selection, derived only from IO state —\n  // no per-frame layout reads. The active section is the deepest (DOM-order)\n  // one currently crossing the activation line; in a gap we keep the last one;\n  // above the first section the first stays active; at the very bottom the last\n  // section wins.\n  _computeActive() {\n    // Guard against observer callbacks that outlive a disposed/detached instance.\n    if (!this._element?.isConnected || this._sections.length === 0) {\n      return\n    }\n\n    let active = null\n\n    if (this._atBottom) {\n      active = this._sections.at(-1)\n    } else {\n      for (const section of this._sections) {\n        if (this._intersecting.has(section)) {\n          active = section\n        }\n      }\n\n      // No section crosses the line: keep the last active (content gap), or fall\n      // back to the first section at the top of the page.\n      active ||= this._lastActive ?? this._sections.at(0)\n    }\n\n    if (!active) {\n      return\n    }\n\n    this._lastActive = active\n    const link = this._linkBySection.get(active)\n    if (link) {\n      this._process(link)\n    }\n  }\n\n  // Single source of truth for the `topMargin` option: its numeric value and\n  // whether it's expressed as a percentage of the root height or in pixels.\n  _parseTopMargin() {\n    const value = String(this._config.topMargin)\n    return {\n      value: Number.parseFloat(value) || 0,\n      unit: value.endsWith('%') ? '%' : 'px'\n    }\n  }\n\n  // Collapse the observer root to a strip from the top down to the activation\n  // line, so a section is \"intersecting\" exactly while it crosses that line.\n  _getDerivedRootMargin() {\n    const { value, unit } = this._parseTopMargin()\n    let percent = value\n\n    // Express a pixel activation line as a percentage of the root height.\n    if (unit === 'px') {\n      const rootHeight = this._rootElement ?\n        this._rootElement.clientHeight :\n        (document.documentElement.clientHeight || window.innerHeight)\n      percent = rootHeight ? (value / rootHeight) * 100 : 12\n    }\n\n    // Clamp so the bottom inset stays a valid (non-negative) rootMargin even if\n    // the line sits outside the root box.\n    const bottom = Math.min(Math.max(100 - percent, 0), 100)\n    return `0px 0px -${bottom}% 0px`\n  }\n\n  // Whether the activation line is derived from a pixel `topMargin` (in which\n  // case it must be recomputed on resize). An explicit `rootMargin` is owned by\n  // the caller, and a `%` topMargin is recomputed by the browser automatically.\n  _usesPixelMargin() {\n    return !this._config.rootMargin && this._parseTopMargin().unit === 'px'\n  }\n\n  // --- Bottom sentinel -----------------------------------------------------\n\n  _setUpSentinel() {\n    this._teardownSentinel()\n\n    if (this._sections.length === 0) {\n      return\n    }\n\n    const sentinel = document.createElement('div')\n    sentinel.setAttribute('aria-hidden', 'true')\n    sentinel.style.cssText = 'position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;'\n    this._element.append(sentinel)\n    this._sentinel = sentinel\n\n    this._sentinelObserver = new IntersectionObserver(entries => this._onSentinel(entries), {\n      root: this._rootElement,\n      threshold: [0]\n    })\n    this._sentinelObserver.observe(sentinel)\n  }\n\n  _onSentinel(entries) {\n    const entry = entries.at(-1)\n    // Only treat the sentinel as \"bottom reached\" when content actually\n    // overflows; otherwise everything is visible and there's nothing to spy.\n    this._atBottom = Boolean(entry?.isIntersecting) && this._isOverflowing()\n    this._computeActive()\n  }\n\n  _isOverflowing() {\n    const scroller = this._rootElement || document.scrollingElement || document.documentElement\n    return scroller.scrollHeight > scroller.clientHeight\n  }\n\n  _teardownSentinel() {\n    this._sentinelObserver?.disconnect()\n    this._sentinelObserver = null\n    this._sentinel?.remove()\n    this._sentinel = null\n    this._atBottom = false\n  }\n\n  // --- Resize (px activation lines only) -----------------------------------\n\n  _maybeAddResizeListener() {\n    this._removeResizeListener()\n\n    if (!this._usesPixelMargin()) {\n      return\n    }\n\n    this._resizeHandler = () => {\n      clearTimeout(this._resizeTimeout)\n      this._resizeTimeout = setTimeout(() => this._rebuildObserver(), RESIZE_DEBOUNCE)\n    }\n\n    EventHandler.on(window, EVENT_RESIZE, this._resizeHandler)\n  }\n\n  _removeResizeListener() {\n    clearTimeout(this._resizeTimeout)\n    this._resizeTimeout = null\n\n    if (this._resizeHandler) {\n      EventHandler.off(window, EVENT_RESIZE, this._resizeHandler)\n      this._resizeHandler = null\n    }\n  }\n\n  _rebuildObserver() {\n    if (!this._observer) {\n      return\n    }\n\n    this._observer.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n  }\n\n  // --- Smooth-scroll settle (hash + focus) ---------------------------------\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // Unregister any previous listener so refresh() doesn't stack them.\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const link = event.target.closest(SELECTOR_TARGET_LINKS)\n      const section = link && this._sectionByLink.get(link)\n      if (!section || !this._element) {\n        return\n      }\n\n      event.preventDefault()\n\n      const root = this._rootElement || window\n      const height = section.offsetTop - this._element.offsetTop\n      const currentTop = this._rootElement ?\n        this._rootElement.scrollTop :\n        (window.scrollY ?? window.pageYOffset)\n      const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)').matches\n\n      // If we're already there (or motion is reduced), there will be no scroll\n      // — and thus no `scrollend` — to wait for, so settle immediately. This\n      // avoids a stuck pending navigation that never restores hash/focus.\n      if (reduceMotion || Math.abs(currentTop - height) <= 2) {\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'auto' })\n        } else {\n          root.scrollTop = height\n        }\n\n        this._settleNavigation(link.hash, section)\n        return\n      }\n\n      // Defer the URL-hash and focus updates until the scroll settles, so we\n      // don't thrash the address bar mid-animation (and so the native hash\n      // navigation we just prevented is restored once we arrive).\n      this._pendingNavigation = { hash: link.hash, section }\n      this._armSettle()\n\n      if (root.scrollTo) {\n        root.scrollTo({ top: height, behavior: 'smooth' })\n      } else {\n        root.scrollTop = height\n      }\n    })\n  }\n\n  // Arm a one-shot settle for the in-flight smooth scroll. `scrollend` is the\n  // primary signal; a transient scroll-idle timer covers engines without it.\n  // Both are removed on settle, so a later unrelated scroll can't replay it.\n  _armSettle() {\n    this._disarmSettle()\n\n    const target = this._getSettleTarget()\n\n    this._settleHandler = () => this._onSettle()\n    this._scrollIdleHandler = () => {\n      clearTimeout(this._settleTimeout)\n      this._settleTimeout = setTimeout(() => this._onSettle(), SCROLL_IDLE_TIMEOUT)\n    }\n\n    EventHandler.on(target, EVENT_SCROLLEND, this._settleHandler)\n    EventHandler.on(target, EVENT_SCROLL, this._scrollIdleHandler)\n  }\n\n  _disarmSettle() {\n    clearTimeout(this._settleTimeout)\n    this._settleTimeout = null\n\n    const target = this._getSettleTarget()\n    if (this._settleHandler) {\n      EventHandler.off(target, EVENT_SCROLLEND, this._settleHandler)\n      this._settleHandler = null\n    }\n\n    if (this._scrollIdleHandler) {\n      EventHandler.off(target, EVENT_SCROLL, this._scrollIdleHandler)\n      this._scrollIdleHandler = null\n    }\n  }\n\n  _getSettleTarget() {\n    return this._rootElement || document\n  }\n\n  _onSettle() {\n    this._disarmSettle()\n\n    if (!this._pendingNavigation) {\n      return\n    }\n\n    const { hash, section } = this._pendingNavigation\n    this._settleNavigation(hash, section)\n  }\n\n  _settleNavigation(hash, section) {\n    this._pendingNavigation = null\n\n    // Restore the URL hash (without adding a history entry) now that we've\n    // arrived, and move focus to the section for keyboard/AT users.\n    if (window.history?.replaceState) {\n      window.history.replaceState(null, '', hash)\n    }\n\n    if (!section.hasAttribute('tabindex')) {\n      section.setAttribute('tabindex', '-1')\n    }\n\n    section.focus({ preventScroll: true })\n  }\n\n  // --- Targets / observables ----------------------------------------------\n\n  _initializeTargetsAndObservables() {\n    this._sections = []\n    this._linkBySection = new Map()\n    this._sectionByLink = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n    const seen = new Set()\n\n    for (const anchor of targetLinks) {\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      // Resolve by id (decoded) rather than building a CSS selector, so any\n      // literal id works — dots, slashes, colons, and percent-encoded chars —\n      // without escaping.\n      const id = decodeFragment(anchor.hash.slice(1))\n      if (!id) {\n        continue\n      }\n\n      const section = document.getElementById(id)\n      // ensure the section exists, is scoped to this element, and is visible\n      if (!section || !this._element.contains(section) || !isVisible(section)) {\n        continue\n      }\n\n      this._sectionByLink.set(anchor, section)\n      this._linkBySection.set(section, anchor) // last link wins for a section\n\n      if (!seen.has(section)) {\n        seen.add(section)\n        this._sections.push(section)\n      }\n    }\n\n    // Keep sections in top-to-bottom order so \"deepest\" selection is\n    // well-defined. Read once here (refresh/resize), never on the hot path.\n    this._sections.sort((a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top)\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n// Decode a URL fragment id, tolerating malformed escapes (returns it as-is).\nfunction decodeFragment(hash) {\n  try {\n    return decodeURIComponent(hash)\n  } catch {\n    return hash\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    // Don't hijack modifier+arrow shortcuts (e.g. Alt+Left/Right for browser\n    // history navigation); only the bare keys drive tablist navigation.\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = event.key === HOME_KEY ? children[0] : children.at(-1)\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"names":["elementMap","Map","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","length","elementEvent","slice","keyHandlers","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","undefined","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","durationPadding","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","_element","_config","existingInstance","Data","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","closeEvent","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","slideEvent","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","opposite","fallback","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","startEvent","activeInstance","dimension","_getDimension","complete","capitalizedDimension","scrollSize","selected","triggerArray","isOpen","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","minWidth","createBreakpointListeners","listeners","mql","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","offset","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","Menu","_openInstances","computePosition","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","showEvent","_moveMenuToContainer","_createFloating","body","focusVisible","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","wrapper","hideEvent","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","result","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","fallbackMap","bottom","defaultConfig","_getContainer","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","timeoutId","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","isRtl","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","hasNeg","hasPos","_selectMenuItem","currentMenu","_handleSubmenuKeydown","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","targetItem","at","clearMenus","composedPath","isMenuTarget","formAncestor","isInsideMenuForm","dataApiKeydownHandler","isInput","isContentEditable","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","selectedItems","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","textContent","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","displayChild","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","shouldHide","dateStr","year","month","day","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","getTime","String","getDate","formatted","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","hidePreventedEvent","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","currentDialog","shouldSwap","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconHtml","_resolveIcon","iconSpan","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","overflowWidth","keepWidth","reduce","sum","usedWidth","overflowThreshold","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","useModal","_initSwipe","swipeConfig","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_pointerActive","_pointerIndex","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","_selectSlot","_firstEmptyIndex","_onInput","_onBeforeInput","_onFocus","_onPointerDown","_onSelectionChange","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","_handleBeforeInput","_handlePointerDown","sanitized","_afterValueChange","inputType","char","selectionStart","chars","start","end","selectionEnd","splice","_slotIndexFromPoint","clamped","setSelectionRange","isFocused","caret","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","addEvent","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","removeEvent","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","domParser","DOMParser","createdDocument","parseFromString","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","shadowRoot","isInTheDom","ownerDocument","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_hasNewContent","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","sort","stops","gridTemplateColumns","stop","tick","gridColumnStart","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_SCROLLEND","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","SCROLL_IDLE_TIMEOUT","RESIZE_DEBOUNCE","rootMargin","smoothScroll","topMargin","ScrollSpy","_sections","_linkBySection","_sectionByLink","_intersecting","_activeTarget","_lastActive","_atBottom","_rootElement","overflowY","_sentinel","_sentinelObserver","_pendingNavigation","_settleTimeout","_settleHandler","_scrollIdleHandler","_resizeHandler","_resizeTimeout","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","_setUpSentinel","_maybeAddResizeListener","_teardownSentinel","_disarmSettle","_removeResizeListener","_getDerivedRootMargin","_onIntersect","_computeActive","_process","_parseTopMargin","unit","endsWith","percent","rootHeight","clientHeight","innerHeight","_usesPixelMargin","sentinel","cssText","_onSentinel","_isOverflowing","scroller","scrollingElement","scrollHeight","_rebuildObserver","height","offsetTop","currentTop","scrollTop","scrollY","pageYOffset","reduceMotion","_settleNavigation","hash","_armSettle","_getSettleTarget","_onSettle","history","replaceState","targetLinks","seen","anchor","decodeFragment","_clearActiveClass","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","_deactivate","_activate","relatedElem","_toggleMenu","altKey","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","toggleEvent","_execute"],"mappings":"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"}
\ No newline at end of file
index 66e5913ee153cb83d3cc8bb41e98aba4dedcafe3..b97ce8a6921fd43e81cd566fd0954155afaf8c48 100644 (file)
@@ -3,5 +3,5 @@
   * Copyright 2011-2026 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
   */
-import{computePosition,autoUpdate,offset,flip,shift,arrow}from"@floating-ui/dom";import{Calendar}from"vanilla-calendar-pro";const elementMap=new Map,Data={set(e,t,n){elementMap.has(e)||elementMap.set(e,new Map);const s=elementMap.get(e);s.has(t)||0===s.size?s.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...s.keys()][0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,getAny:e=>elementMap.has(e)&&elementMap.get(e).values().next().value||null,remove(e,t){if(!elementMap.has(e))return;const n=elementMap.get(e);n.delete(t),0===n.size&&elementMap.delete(e)}},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll","scrollend"]);function makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(s){return hydrateObj(s,{delegateTarget:e}),n.oneOff&&EventHandler.off(e,s.type,t),t.apply(e,[s])}}function bootstrapDelegationHandler(e,t,n){return function s(i){const o=e.querySelectorAll(t);for(let{target:r}=i;r&&r!==this;r=r.parentNode)for(const l of o)if(l===r)return hydrateObj(i,{delegateTarget:r}),s.oneOff&&EventHandler.off(e,i.type,t,n),n.apply(r,[i])}}function findHandler(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function normalizeParameters(e,t,n){const s="string"==typeof t,i=s?n:t||n;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[s,i,o]}function addHandler(e,t,n,s,i){if("string"!=typeof t||!e)return;let[o,r,l]=normalizeParameters(t,n,s);if(t in customEvents){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};r=e(r)}const a=getElementEvents(e),c=a[l]||(a[l]={}),_=findHandler(c,r,o?n:null);if(_)return void(_.oneOff=_.oneOff&&i);const h=makeEventUid(r,t.replace(namespaceRegex,"")),u=o?bootstrapDelegationHandler(e,n,r):bootstrapHandler(e,r);u.delegationSelector=o?n:null,u.callable=r,u.oneOff=i,u.uidEvent=h,c[h]=u,e.addEventListener(l,u,o)}function removeHandler(e,t,n,s,i){const o=findHandler(t[n],s,i);o&&(e.removeEventListener(n,o,Boolean(i)),delete t[n][o.uidEvent])}function removeNamespacedHandlers(e,t,n,s){const i=t[n]||{};for(const[o,r]of Object.entries(i))o.includes(s)&&removeHandler(e,t,n,r.callable,r.delegationSelector)}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,n,s){addHandler(e,t,n,s,!1)},one(e,t,n,s){addHandler(e,t,n,s,!0)},off(e,t,n,s){if("string"!=typeof t||!e)return;const[i,o,r]=normalizeParameters(t,n,s),l=r!==t,a=getElementEvents(e),c=a[r]||{},_=t.startsWith(".");if(void 0===o){if(_)for(const n of Object.keys(a))removeNamespacedHandlers(e,a,n,t.slice(1));for(const[n,s]of Object.entries(c)){const i=n.replace(stripUidRegex,"");l&&!t.includes(i)||removeHandler(e,a,r,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,a,r,o,i?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const s=hydrateObj(new Event(t,{bubbles:!0,cancelable:!0}),n);return e.dispatchEvent(s),s}};function hydrateObj(e,t={}){for(const[n,s]of Object.entries(t))try{e[n]=s}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>s})}return e}function normalizeData(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const Manipulator={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${normalizeDataKey(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const s of n){let n=s.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=normalizeData(e.dataset[s])}return t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`))},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const s=Number.parseFloat(t),i=Number.parseFloat(n);return s||i?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement=e=>!(!e||"object"!=typeof e)&&void 0!==e.nodeType,getElement=e=>isElement(e)?e:"string"==typeof e&&e.length>0?document.querySelector(parseSelector(e)):null,isVisible=e=>{if(!isElement(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},isRTL=()=>"rtl"===document.documentElement.dir,execute=(e,t=[],n=e)=>"function"==typeof e?e.call(...t):n,executeAfterTransition=(e,t,n=!0)=>{if(!n)return void execute(e);const s=getTransitionDurationFromElement(t)+5;let i=!1;const o=({target:n})=>{n===t&&(i=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{i||triggerTransitionEnd(t)},s)},getNextActiveElement=(e,t,n,s)=>{const i=e.length;let o=e.indexOf(t);return-1===o?!n&&s?e[i-1]:e[0]:(o+=n?1:-1,s&&(o=(o+i)%i),e[Math.max(0,Math.min(o,i-1))])};class Config{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=isElement(t)?Manipulator.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...isElement(t)?Manipulator.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[n,s]of Object.entries(t)){const t=e[n],i=isElement(t)?"element":toType(t);if(!new RegExp(s).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${s}".`)}}}const VERSION="6.0.0-alpha1";class BaseComponent extends Config{constructor(e,t){if(super(),!(e=getElement(e)))return;this._element=e,this._config=this._getConfig(t);const n=Data.get(this._element,this.constructor.DATA_KEY);n&&n.dispose(),Data.set(this._element,this.constructor.DATA_KEY,this)}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){executeAfterTransition(()=>{this._element&&e()},t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>parseSelector(e)).join(","):null},SelectorEngine={find:(e,t=document.documentElement)=>[...Element.prototype.querySelectorAll.call(t,e)],findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[...e.children].filter(e=>e.matches(t)),parents(e,t){const n=[];let s=e.parentNode.closest(t);for(;s;)n.push(s),s=s.parentNode.closest(t);return n},closest:(e,t)=>Element.prototype.closest.call(e,t),prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(e){const t=getSelector(e);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(e){const t=getSelector(e);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(e){const t=getSelector(e);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,s=e.NAME;EventHandler.on(document,n,`[data-bs-dismiss="${s}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;const i=SelectorEngine.getElementFromSelector(this)||this.closest(`.${s}`);e.getOrCreateInstance(i)[t]()})},eventActionOnPlugin=(e,t,n,s,i=null)=>{eventAction(`${t}.${e.NAME}`,n,t=>{const n=t.targets.filter(Boolean).map(t=>e.getOrCreateInstance(t));"function"==typeof i&&i({...t,instances:n});for(const e of n)e[s]()})},eventAction=(e,t,n)=>{const s=`${t}:not(.disabled):not(:disabled)`;EventHandler.on(document,e,s,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault();const t=SelectorEngine.getSelectorFromElement(this),s=t?SelectorEngine.find(t):[this];n({targets:s,event:e})})},NAME$l="alert",DATA_KEY$h="bs.alert",EVENT_KEY$i=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$6="show";class Alert extends BaseComponent{static get NAME(){return NAME$l}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}}enableDismissTrigger(Alert,"close");const NAME$k="button",DATA_KEY$g="bs.button",EVENT_KEY$h=`.${DATA_KEY$g}`,DATA_API_KEY$c=".data-api",CLASS_NAME_ACTIVE$4="active",SELECTOR_DATA_TOGGLE$a='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$8=`click${EVENT_KEY$h}.data-api`;class Button extends BaseComponent{static get NAME(){return NAME$k}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}EventHandler.on(document,EVENT_CLICK_DATA_API$8,SELECTOR_DATA_TOGGLE$a,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$a);Button.getOrCreateInstance(t).toggle()});const NAME$j="carousel",DATA_KEY$f="bs.carousel",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$b=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$g}`,EVENT_SLID=`slid${EVENT_KEY$g}`,EVENT_KEYDOWN$2=`keydown${EVENT_KEY$g}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$g}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$g}`,EVENT_POINTERDOWN$1=`pointerdown${EVENT_KEY$g}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$g}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$g}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$3="active",CLASS_NAME_FADE$3="carousel-fade",CLASS_NAME_CENTER="carousel-center",CLASS_NAME_AUTO="carousel-auto",CLASS_NAME_CLONE="carousel-item-clone",CLASS_NAME_PAUSED="paused",CLASS_NAME_PLAYING="carousel-playing",PROPERTY_INTERVAL="--bs-carousel-interval",SCROLL_DURATION=300,ACTIVE_RATIO_TOLERANCE=.05,SELECTOR_ACTIVE=".active",SELECTOR_ITEM=`.carousel-item:not(.${CLASS_NAME_CLONE})`,SELECTOR_ACTIVE_ITEM=".active"+SELECTOR_ITEM,SELECTOR_INNER$1=".carousel-inner",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_PLAY_PAUSE=".carousel-control-play-pause",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_SLIDE_PREV='[data-bs-slide="prev"]',SELECTOR_DATA_SLIDE_NEXT='[data-bs-slide="next"]',SELECTOR_DATA_AUTOPLAY='[data-bs-autoplay="true"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},ENDS_STOP="stop",ENDS_WRAP="wrap",ENDS_LOOP="loop",Default$i={autoplay:!1,ends:ENDS_LOOP,interval:5e3,keyboard:!0,pause:"hover"},DefaultType$i={autoplay:"boolean",ends:"string",interval:"number",keyboard:"boolean",pause:"(string|boolean)"},easeInOutCubic=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2;class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._viewport=SelectorEngine.findOne(SELECTOR_INNER$1,this._element)||this._element,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._playPauseElement=SelectorEngine.findOne(SELECTOR_PLAY_PAUSE,this._element),this._prevControls=SelectorEngine.find('[data-bs-slide="prev"]',this._element),this._nextControls=SelectorEngine.find('[data-bs-slide="next"]',this._element),this._interval=null,this._observer=null,this._scrollFrame=null,this._looping=!1,this._visibility=new Map,this._playing=this._config.autoplay,this._activeIndex=this._initialActiveIndex(),this._addEventListeners(),this._observeItems(),this._refreshActiveState(),this._playing&&this.cycle(),this._updatePlayPauseControl()}static get Default(){return Default$i}static get DefaultType(){return DefaultType$i}static get NAME(){return NAME$j}next(){this.to(this._navIndex()+1)}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this.to(this._navIndex()-1)}pause(){this._clearInterval(),this._element.classList.remove("carousel-playing")}cycle(){this._clearInterval(),this._scheduleAutoplay(),this._element.classList.add("carousel-playing")}to(e){if(this._looping)return;const t=this._getItems(),n=Number.parseInt(e,10);if(this._config.ends===ENDS_LOOP&&!this._prefersReducedMotion()&&this._canLoop()){if(n>t.length-1)return void this._loopTransition(!0);if(n<0)return void this._loopTransition(!1)}const s=this._normalizeIndex(n,t.length),i=this._navIndex();null!==s&&s!==i&&(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[s],direction:this._direction(i,s),from:i,to:s}).defaultPrevented||(this._isFade()?this._fadeTo(s):this._scrollToIndex(s)))}dispose(){this._clearInterval(),this._observer&&this._observer.disconnect(),null!==this._scrollFrame&&cancelAnimationFrame(this._scrollFrame);for(const e of SelectorEngine.find(`.${CLASS_NAME_CLONE}`,this._viewport))e.remove();this._viewport.style.scrollSnapType="",EventHandler.off(this._viewport,EVENT_KEY$g),super.dispose()}_configAfterMerge(e){return[ENDS_STOP,ENDS_WRAP,ENDS_LOOP].includes(e.ends)||(e.ends=Default$i.ends),e}_initialActiveIndex(){const e=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element),t=e?this._getItems().indexOf(e):0;return Math.max(t,0)}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$2,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER$2,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),EventHandler.on(this._viewport,EVENT_POINTERDOWN$1,()=>this._pauseFromInteraction())}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._pauseFromInteraction(),"right"===t?this.prev():this.next())}_observeItems(){if(!this._isFade()&&"undefined"!=typeof IntersectionObserver){this._observer=new IntersectionObserver(e=>this._handleIntersection(e),{root:this._viewport,threshold:[0,.25,.5,.75,1]});for(const e of this._getItems())this._observer.observe(e)}}_handleIntersection(e){if(this._looping)return;for(const t of e)this._visibility.set(t.target,t.isIntersecting?t.intersectionRatio:0);const t=this._getItems().map(e=>this._visibility.get(e)??0),n=Math.max(...t);let s=this._activeIndex;n>0&&(s=t.findIndex(e=>e>=n-.05)),this._setActive(s),this._updateEndControls()}_navIndex(){if(this._isFade()||this._viewport.scrollWidth-this._viewport.clientWidth<=0)return this._activeIndex;let e=this._activeIndex,t=Number.POSITIVE_INFINITY;for(const[n,s]of this._getItems().entries()){const i=Math.abs(this._scrollDelta(s));i<t&&(t=i,e=n)}return e}_scrollToIndex(e){const t=this._getItems()[e];if(!t)return;const n=this._scrollDelta(t);if(Math.abs(n)<1)return;const s=this._viewport.scrollLeft+n;this._viewport.style.scrollSnapType="none",this._animateScroll(s,()=>{this._viewport.style.scrollSnapType="",this._observer||this._setActive(e),this._updateEndControls()})}_animateScroll(e,t){null!==this._scrollFrame&&(cancelAnimationFrame(this._scrollFrame),this._scrollFrame=null);const n=this._viewport.scrollLeft,s=e-n;if(this._prefersReducedMotion()||"undefined"==typeof requestAnimationFrame)return this._viewport.scrollTo({left:e,behavior:"instant"}),void t();let i=null;const o=r=>{null===i&&(i=r);const l=Math.min((r-i)/300,1);this._viewport.scrollTo({left:n+s*easeInOutCubic(l),behavior:"instant"}),l<1?this._scrollFrame=requestAnimationFrame(o):(this._viewport.scrollTo({left:e,behavior:"instant"}),this._scrollFrame=null,t())};this._scrollFrame=requestAnimationFrame(o)}_scrollDelta(e){const t=this._viewport.getBoundingClientRect(),n=e.getBoundingClientRect();if(this._element.classList.contains("carousel-center"))return n.left+n.width/2-(t.left+t.width/2);const s=Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart)||0;return isRTL()?n.right-(t.right-s):n.left-(t.left+s)}_loopTransition(e){const t=this._getItems(),n=t.length-1,s=this._activeIndex,i=e?0:n,o=this._loopDirection(e);if(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[i],direction:o,from:s,to:i}).defaultPrevented)return;this._looping=!0;const r=(e?t[0]:t[n]).cloneNode(!0);r.classList.add(CLASS_NAME_CLONE),r.classList.remove("active"),r.removeAttribute("id");for(const e of SelectorEngine.find("[id]",r))e.removeAttribute("id");r.setAttribute("aria-hidden","true"),r.inert=!0,this._viewport.style.scrollSnapType="none",e?this._viewport.append(r):(this._viewport.prepend(r),this._jumpScroll(this._scrollDelta(t[s]))),this._animateScroll(this._viewport.scrollLeft+this._scrollDelta(r),()=>{r.remove(),this._jumpScroll(this._scrollDelta(t[i])),this._activeIndex=i,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[i],direction:o,from:s,to:i}),this._viewport.style.scrollSnapType="",this._looping=!1})}_loopDirection(e){return isRTL()?e?"right":"left":e?"left":"right"}_jumpScroll(e){this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:e,top:0,behavior:"instant"})}_fadeTo(e){this._setActive(e)}_setActive(e){const t=this._getItems();if(e===this._activeIndex||!t[e])return;const n=this._activeIndex;this._activeIndex=e,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[e],direction:this._direction(n,e),from:n,to:e})}_refreshActiveState(){const e=this._getItems();for(const[t,n]of e.entries())n.classList.toggle("active",t===this._activeIndex);this._setActiveIndicatorElement(this._activeIndex),this._updateEndControls()}_updateEndControls(){if(this._config.ends!==ENDS_STOP)return;const e=this._viewport,t=e.scrollWidth-e.clientWidth;let n,s;if(t>0){const i=Math.abs(e.scrollLeft);n=i<=1,s=i>=t-1}else{const e=this._getItems().length-1;n=this._activeIndex<=0,s=this._activeIndex>=e}this._setControlsDisabled(this._prevControls,n),this._setControlsDisabled(this._nextControls,s)}_setControlsDisabled(e,t){for(const n of e)t&&n===document.activeElement&&((e===this._prevControls?this._nextControls:this._prevControls)[0]??this._viewport).focus({preventScroll:!0}),n.disabled=t}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t&&(t.classList.remove("active"),t.removeAttribute("aria-current"));const n=SelectorEngine.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add("active"),n.setAttribute("aria-current","true"))}_normalizeIndex(e,t){return Number.isNaN(e)||0===t?null:e<0?this._wrapsAround()?t-1:null:e>t-1?this._wrapsAround()?0:null:e}_wrapsAround(){return this._config.ends===ENDS_WRAP||this._config.ends===ENDS_LOOP}_canLoop(){if(this._isFade()||this._getItems().length<2)return!1;const e=getComputedStyle(this._element),t=t=>Number.parseFloat(e.getPropertyValue(t))||0;return 1===(t("--bs-carousel-items")||1)&&0===t("--bs-carousel-items-peek")&&!this._element.classList.contains("carousel-center")&&!this._element.classList.contains("carousel-auto")}_direction(e,t){const n=t>e;return isRTL()?n?"right":"left":n?"left":"right"}_scheduleAutoplay(e=this._activeIndex){const t=this._itemInterval(e);this._element.style.setProperty(PROPERTY_INTERVAL,`${t}ms`),this._interval=setTimeout(()=>{const e=this._upcomingIndex();this.nextWhenVisible(),null!==e?this._scheduleAutoplay(e):this.pause()},t)}_upcomingIndex(){return this._normalizeIndex(this._navIndex()+1,this._getItems().length)}_itemInterval(e=this._activeIndex){const t=this._getItems()[e],n=t?Number.parseInt(t.getAttribute("data-bs-interval"),10):Number.NaN;return Number.isNaN(n)?this._config.interval:n}_maybeEnableCycle(){this._playing&&this.cycle()}_pauseFromInteraction(){this._playing=!1,this.pause(),this._updatePlayPauseControl()}_togglePlayPause(){this._playing?this._pauseFromInteraction():(this._playing=!0,this.cycle(),this._updatePlayPauseControl())}_updatePlayPauseControl(){if(!this._playPauseElement)return;this._playPauseElement.classList.toggle("paused",!this._playing);const e=this._playPauseElement.getAttribute(this._playing?"data-bs-pause-label":"data-bs-play-label");e&&this._playPauseElement.setAttribute("aria-label",e)}_isFade(){return this._element.classList.contains("carousel-fade")}_prefersReducedMotion(){return"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearTimeout(this._interval),this._interval=null)}}EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_DATA_SLIDE,function(e){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;e.preventDefault();const n=Carousel.getOrCreateInstance(t);n._pauseFromInteraction();const s=this.getAttribute("data-bs-slide-to");s?n.to(s):"next"!==Manipulator.getDataAttribute(this,"slide")?n.prev():n.next()}),EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_PLAY_PAUSE,function(e){const t=SelectorEngine.getElementFromSelector(this);t&&t.classList.contains("carousel")&&(e.preventDefault(),Carousel.getOrCreateInstance(t)._togglePlayPause())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_AUTOPLAY);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$i="collapse",DATA_KEY$e="bs.collapse",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$a=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$f}`,EVENT_SHOWN$6=`shown${EVENT_KEY$f}`,EVENT_HIDE$6=`hide${EVENT_KEY$f}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$f}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$f}.data-api`,CLASS_NAME_SHOW$5="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=":scope .collapse .collapse",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$9='[data-bs-toggle="collapse"]',Default$h={parent:null,toggle:!0},DefaultType$h={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=SelectorEngine.find(SELECTOR_DATA_TOGGLE$9);for(const e of n){const t=SelectorEngine.getSelectorFromElement(e),n=SelectorEngine.find(t).filter(e=>e===this._element);null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(e=>e!==this._element).map(e=>Collapse.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_SHOW$7).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[t]="",EventHandler.trigger(this._element,EVENT_SHOWN$6)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$6).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");for(const e of this._triggerArray){const t=SelectorEngine.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$8)},this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=getElement(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$9);for(const t of e){const e=SelectorEngine.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$9,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()});const BREAKPOINTS={sm:576,md:768,lg:1024,xl:1280,"2xl":1536},parseResponsivePlacement=(e,t="bottom")=>{if(!e||!e.includes(":"))return null;const n=e.split(/\s+/),s={xs:t};for(const e of n)if(e.includes(":")){const[t,n]=e.split(":");void 0!==BREAKPOINTS[t]&&(s[t]=n)}else s.xs=e;return s},getResponsivePlacement=(e,t="bottom")=>{if(!e)return t;const n=window.innerWidth;let s=e.xs||t;const i=["sm","md","lg","xl","2xl"];for(const t of i)n>=BREAKPOINTS[t]&&e[t]&&(s=e[t]);return s},createBreakpointListeners=e=>{const t=[];for(const n of Object.keys(BREAKPOINTS)){const s=BREAKPOINTS[n],i=window.matchMedia(`(min-width: ${s}px)`);i.addEventListener("change",e),t.push({mql:i,handler:e})}return t},disposeBreakpointListeners=e=>{for(const{mql:t,handler:n}of e)t.removeEventListener("change",n)},NAME$h="menu",DATA_KEY$d="bs.menu",EVENT_KEY$e=".bs.menu",DATA_API_KEY$9=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$2="ArrowUp",ARROW_DOWN_KEY$2="ArrowDown",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",HOME_KEY$2="Home",END_KEY$2="End",ENTER_KEY$1="Enter",SPACE_KEY$1=" ",RIGHT_MOUSE_BUTTON=2,SUBMENU_CLOSE_DELAY=100,EVENT_HIDE$5="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$6="show.bs.menu",EVENT_SHOWN$5="shown.bs.menu",EVENT_CLICK_DATA_API$5="click.bs.menu.data-api",EVENT_KEYDOWN_DATA_API="keydown.bs.menu.data-api",EVENT_KEYUP_DATA_API="keyup.bs.menu.data-api",CLASS_NAME_SHOW$4="show",SELECTOR_DATA_TOGGLE$8='[data-bs-toggle="menu"]:not(.disabled):not(:disabled)',SELECTOR_MENU$2=".menu",SELECTOR_SUBMENU=".submenu",SELECTOR_SUBMENU_TOGGLE=".submenu > .menu-item",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS$1=".menu-item:not(.disabled):not(:disabled)",DEFAULT_PLACEMENT="bottom-start",SUBMENU_PLACEMENT="end-start",resolveLogicalPlacement=e=>isRTL()?e.replace(/^start(?=-|$)/,"right").replace(/^end(?=-|$)/,"left"):e.replace(/^start(?=-|$)/,"left").replace(/^end(?=-|$)/,"right"),triangleSign=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Default$g={autoClose:!0,boundary:"clippingParents",container:!1,display:"dynamic",offset:[0,2],floatingConfig:null,menu:null,placement:"bottom-start",reference:"toggle",strategy:"absolute",submenuTrigger:"both",submenuDelay:100},DefaultType$g={autoClose:"(boolean|string)",boundary:"(string|element)",container:"(string|element|boolean)",display:"string",offset:"(array|string|function)",floatingConfig:"(null|object|function)",menu:"(null|element)",placement:"string",reference:"(string|element|object)",strategy:"string",submenuTrigger:"string",submenuDelay:"number"};class Menu extends BaseComponent{static _openInstances=new Set;constructor(e,t){if(void 0===computePosition)throw new TypeError("Bootstrap's menus require Floating UI (https://floating-ui.com)");super(e,t),this._floatingCleanup=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this._parent=this._element.parentNode,this._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=this._config.menu||this._findMenu(),!this._config.menu&&this._menu&&(this._parent=this._findWrapper(this._menu)),this._isSubmenu=this._parent.classList?.contains("submenu"),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}static get NAME(){return"menu"}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$6,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of document.body.children)EventHandler.on(e,"mouseover",noop);this._element.focus({focusVisible:!1}),this._element.setAttribute("aria-expanded","true"),this._menu.classList.add("show"),this._element.classList.add("show"),this._parent&&this._parent.classList.add("show"),Menu._openInstances.add(this),EventHandler.trigger(this._element,EVENT_SHOWN$5,e)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._disposeFloating(),this._restoreMenuToOriginalParent(),this._disposeMediaQueryListeners(),this._closeAllSubmenus(),this._clearAllSubmenuTimeouts(),Menu._openInstances.delete(this),super.dispose()}update(){this._floatingCleanup&&this._updateFloatingPosition()}_findMenu(){const e=SelectorEngine.closest(this._element,":has(.menu)");return SelectorEngine.next(this._element,".menu")[0]||SelectorEngine.prev(this._element,".menu")[0]||SelectorEngine.findOne(".menu",e||this._parent)}_findWrapper(e){let t=this._element.parentNode;for(;t instanceof Element&&!t.contains(e);)t=t.parentNode;return t instanceof Element?t:this._element.parentNode}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$5,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.off(e,"mouseover",noop);this._disposeFloating(),this._restoreMenuToOriginalParent(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._parent&&this._parent.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"placement"),Manipulator.removeDataAttribute(this._menu,"display"),Menu._openInstances.delete(this),EventHandler.trigger(this._element,EVENT_HIDDEN$7,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!isElement(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${"menu".toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createFloating(){if("static"===this._config.display)return void Manipulator.setDataAttribute(this._menu,"display","static");let e=this._element;"parent"===this._config.reference?e=this._parent:isElement(this._config.reference)?e=getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference),this._updateFloatingPosition(e),this._floatingCleanup=autoUpdate(e,this._menu,()=>this._updateFloatingPosition(e))}async _updateFloatingPosition(e=null){if(!this._menu)return;e||(e="parent"===this._config.reference?this._parent:isElement(this._config.reference)?getElement(this._config.reference):"object"==typeof this._config.reference?this._config.reference:this._element);const t=this._getPlacement(),n=this._getFloatingMiddleware(),s=this._getFloatingConfig(t,n);await this._applyFloatingPosition(e,this._menu,s.placement,s.middleware,s.strategy)}_isShown(){return this._menu.classList.contains("show")}_getPlacement(){const e=this._responsivePlacements?getResponsivePlacement(this._responsivePlacements,"bottom-start"):this._config.placement;return resolveLogicalPlacement(e)}_parseResponsivePlacements(){this._responsivePlacements=parseResponsivePlacement(this._config.placement,"bottom-start"),this._responsivePlacements&&this._setupMediaQueryListeners()}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_getFloatingMiddleware(){const e=this._getOffset();return[offset("function"==typeof e?e:{mainAxis:e[1]||0,crossAxis:e[0]||0}),flip({fallbackPlacements:this._getFallbackPlacements()}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})]}_getFallbackPlacements(){return{bottom:["top","bottom-start","bottom-end","top-start","top-end"],"bottom-start":["top-start","bottom-end","top-end"],"bottom-end":["top-end","bottom-start","top-start"],top:["bottom","top-start","top-end","bottom-start","bottom-end"],"top-start":["bottom-start","top-end","bottom-end"],"top-end":["bottom-end","top-start","bottom-start"],right:["left","right-start","right-end","left-start","left-end"],"right-start":["left-start","right-end","left-end","top-start","bottom-start"],"right-end":["left-end","right-start","left-start","top-end","bottom-end"],left:["right","left-start","left-end","right-start","right-end"],"left-start":["right-start","left-end","right-end","top-start","bottom-start"],"left-end":["right-end","left-start","right-start","top-end","bottom-end"]}[this._getPlacement()]||["top","bottom","right","left"]}_getFloatingConfig(e,t){const n={placement:e,middleware:t,strategy:this._config.strategy};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null)}_getContainer(){const{container:e}=this._config;return!1===e?null:!0===e?document.body:getElement(e)}_moveMenuToContainer(){const e=this._getContainer();e&&this._menu&&this._menu.parentNode!==e&&e.append(this._menu)}_restoreMenuToOriginalParent(){this._menuOriginalParent&&this._menu&&this._menu.parentNode!==this._menuOriginalParent&&this._menuOriginalParent.append(this._menu)}async _applyFloatingPosition(e,t,n,s,i="absolute"){if(!t.isConnected)return null;const{x:o,y:r,placement:l}=await computePosition(e,t,{placement:n,middleware:s,strategy:i});return t.isConnected?(Object.assign(t.style,{position:i,left:`${o}px`,top:`${r}px`,margin:"0"}),Manipulator.setDataAttribute(t,"placement",l),l):null}_setupSubmenuListeners(){"hover"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||(EventHandler.on(this._menu,"mouseenter",".submenu > .menu-item",e=>{this._onSubmenuTriggerEnter(e)}),EventHandler.on(this._menu,"mouseleave",".submenu",e=>{this._onSubmenuLeave(e)}),EventHandler.on(this._menu,"mousemove",e=>{this._trackMousePosition(e)})),"click"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||EventHandler.on(this._menu,"click",".submenu > .menu-item",e=>{this._onSubmenuTriggerClick(e)})}_onSubmenuTriggerEnter(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;const n=t.closest(".submenu"),s=SelectorEngine.findOne(".menu",n);s&&(this._cancelSubmenuCloseTimeout(s),this._closeSiblingSubmenus(n),this._openSubmenu(t,s,n))}_onSubmenuLeave(e){const t=e.target.closest(".submenu"),n=SelectorEngine.findOne(".menu",t);n&&this._openSubmenus.has(n)&&(this._isMovingTowardSubmenu(e,n)||this._scheduleSubmenuClose(n,t))}_onSubmenuTriggerClick(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;e.preventDefault(),e.stopPropagation();const n=t.closest(".submenu"),s=SelectorEngine.findOne(".menu",n);s&&(this._openSubmenus.has(s)?this._closeSubmenu(s,n):(this._closeSiblingSubmenus(n),this._openSubmenu(t,s,n)))}_openSubmenu(e,t,n){if(this._openSubmenus.has(t))return;e.setAttribute("aria-expanded","true"),e.setAttribute("aria-haspopup","true"),t.style.opacity="0",t.classList.add("show"),n.classList.add("show");const s=this._createSubmenuFloating(e,t,n);this._openSubmenus.set(t,s),EventHandler.on(t,"mouseenter",()=>{this._cancelSubmenuCloseTimeout(t)})}_closeSubmenu(e,t){if(!this._openSubmenus.has(e))return;const n=SelectorEngine.find(".submenu .menu.show",e);for(const e of n){const t=e.closest(".submenu");this._closeSubmenu(e,t)}const s=SelectorEngine.findOne(".submenu > .menu-item",t),i=this._openSubmenus.get(e);i&&i(),this._openSubmenus.delete(e),EventHandler.off(e,"mouseenter"),s&&s.setAttribute("aria-expanded","false"),e.classList.remove("show"),t.classList.remove("show"),e.style.opacity=""}_closeAllSubmenus(){for(const[e]of this._openSubmenus){const t=e.closest(".submenu");this._closeSubmenu(e,t)}}_closeSiblingSubmenus(e){const t=e.parentNode,n=SelectorEngine.find(".submenu > .menu.show",t);for(const t of n){const n=t.closest(".submenu");n!==e&&this._closeSubmenu(t,n)}}_createSubmenuFloating(e,t,n){const s=n,i=resolveLogicalPlacement("end-start"),o=[offset({mainAxis:0,crossAxis:-4}),flip({fallbackPlacements:[resolveLogicalPlacement("start-start"),resolveLogicalPlacement("end-end"),resolveLogicalPlacement("start-end")]}),shift({padding:8})],r=()=>this._applyFloatingPosition(s,t,i,o).then(e=>(t.style.opacity="",e));return r(),autoUpdate(s,t,r)}_scheduleSubmenuClose(e,t){this._cancelSubmenuCloseTimeout(e);const n=setTimeout(()=>{this._closeSubmenu(e,t),this._submenuCloseTimeouts.delete(e)},this._config.submenuDelay);this._submenuCloseTimeouts.set(e,n)}_cancelSubmenuCloseTimeout(e){const t=this._submenuCloseTimeouts.get(e);t&&(clearTimeout(t),this._submenuCloseTimeouts.delete(e))}_clearAllSubmenuTimeouts(){for(const e of this._submenuCloseTimeouts.values())clearTimeout(e);this._submenuCloseTimeouts.clear()}_trackMousePosition(e){this._hoverIntentData={x:e.clientX,y:e.clientY,timestamp:Date.now()}}_isMovingTowardSubmenu(e,t){if(!this._hoverIntentData)return!1;const n=t.getBoundingClientRect(),s={x:e.clientX,y:e.clientY},i={x:this._hoverIntentData.x,y:this._hoverIntentData.y},o=isRTL()?n.right:n.left,r={x:o,y:n.top},l={x:o,y:n.bottom};return this._pointInTriangle(s,i,r,l)}_pointInTriangle(e,t,n,s){const i=triangleSign(e,t,n),o=triangleSign(e,n,s),r=triangleSign(e,s,t);return!((i<0||o<0||r<0)&&(i>0||o>0||r>0))}_selectMenuItem({key:e,target:t}){const n=t.closest(".menu")||this._menu,s=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,n).filter(e=>isVisible(e));s.length&&getNextActiveElement(s,t,e===ARROW_DOWN_KEY$2,!s.includes(t)).focus()}_handleSubmenuKeydown(e){const{key:t,target:n}=e,s=isRTL(),i=s?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=s?ARROW_RIGHT_KEY$1:ARROW_LEFT_KEY$1,r=n.closest(".submenu"),l=r&&n.matches(".submenu > .menu-item");if((t===ENTER_KEY$1||t===SPACE_KEY$1)&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===i&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===o){const t=n.closest(".menu"),s=t?.closest(".submenu");if(s){e.preventDefault(),e.stopPropagation();const n=SelectorEngine.findOne(".submenu > .menu-item",s);return this._closeSubmenu(t,s),n&&n.focus(),!0}}if(t===HOME_KEY$2||t===END_KEY$2){e.preventDefault(),e.stopPropagation();const s=n.closest(".menu"),i=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,s).filter(e=>isVisible(e));return i.length&&(t===HOME_KEY$2?i[0]:i.at(-1)).focus(),!0}return!1}static clearMenus(e){if(2!==e.button&&("keyup"!==e.type||"Tab"===e.key))for(const t of Menu._openInstances){if(!1===t._config.autoClose)continue;const n=e.composedPath(),s=n.includes(t._menu);if(n.includes(t._element)||"inside"===t._config.autoClose&&!s||"outside"===t._config.autoClose&&s)continue;const i=e.target.closest?.("form"),o=Boolean(i)&&t._menu.contains(i);if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)||o))continue;const r={relatedTarget:t._element};"click"===e.type&&(r.clickEvent=e),t._completeHide(r)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName)||e.target.isContentEditable,n="Escape"===e.key,s=[ARROW_UP_KEY$2,ARROW_DOWN_KEY$2].includes(e.key),i=[ARROW_LEFT_KEY$1,ARROW_RIGHT_KEY$1].includes(e.key),o=[HOME_KEY$2,END_KEY$2].includes(e.key),r=[ENTER_KEY$1,SPACE_KEY$1].includes(e.key),l=e.target.matches(".submenu > .menu-item");if(!(s||n||i||o||r&&l))return;if(t&&!n)return;const a=this.matches(SELECTOR_DATA_TOGGLE$8)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$8,e.delegateTarget.parentNode);if(!a)return;const c=Menu.getOrCreateInstance(a);if(!(i||o||r&&l)||!c._handleSubmenuKeydown(e)){if(s)return e.preventDefault(),e.stopPropagation(),c.show(),void c._selectMenuItem(e);if(n&&c._isShown()){e.preventDefault(),e.stopPropagation();const t=e.target.closest(".menu"),n=t?.closest(".submenu");if(n&&c._openSubmenus.size>0){const e=SelectorEngine.findOne(".submenu > .menu-item",n);return c._closeSubmenu(t,n),void(e&&e.focus())}c.hide(),a.focus()}}}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$8,Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,".menu",Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$5,Menu.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Menu.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_TOGGLE$8,function(e){e.preventDefault(),Menu.getOrCreateInstance(this).toggle()});const NAME$g="combobox",DATA_KEY$c="bs.combobox",EVENT_KEY$d=`.${DATA_KEY$c}`,DATA_API_KEY$8=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",HOME_KEY$1="Home",END_KEY$1="End",ENTER_KEY="Enter",SPACE_KEY=" ",EVENT_CHANGE$3=`change${EVENT_KEY$d}`,EVENT_SHOW$5=`show${EVENT_KEY$d}`,EVENT_SHOWN$4=`shown${EVENT_KEY$d}`,EVENT_HIDE$4=`hide${EVENT_KEY$d}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$d}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_SHOW$3="show",CLASS_NAME_SELECTED="selected",CLASS_NAME_PLACEHOLDER="combobox-placeholder",SELECTOR_DATA_TOGGLE$7='[data-bs-toggle="combobox"]',SELECTOR_MENU$1=".menu",SELECTOR_MENU_ITEM=".menu-item[data-bs-value]",SELECTOR_VISIBLE_ITEMS=".menu-item[data-bs-value]:not(.disabled):not(:disabled)",SELECTOR_VALUE=".combobox-value",SELECTOR_SEARCH_INPUT=".combobox-search-input",SELECTOR_NO_RESULTS=".combobox-no-results",Default$f={boundary:"clippingParents",multiple:!1,name:null,offset:[0,2],placeholder:"",placement:"bottom-start",search:!1,searchNormalize:!1},DefaultType$f={boundary:"(string|element)",multiple:"boolean",name:"(string|null)",offset:"(array|string|function)",placeholder:"string",placement:"string",search:"boolean",searchNormalize:"boolean"};class Combobox extends BaseComponent{constructor(e,t){super(e,t),this._toggle=this._element,this._menu=SelectorEngine.next(this._toggle,".menu")[0],this._valueDisplay=SelectorEngine.findOne(SELECTOR_VALUE,this._toggle),this._searchInput=SelectorEngine.findOne(SELECTOR_SEARCH_INPUT,this._menu),this._noResults=SelectorEngine.findOne(SELECTOR_NO_RESULTS,this._menu),this._hiddenInput=null,this._menuInstance=null,this._createHiddenInput(),this._createMenuInstance(),this._syncInitialSelection(),this._addEventListeners()}static get Default(){return Default$f}static get DefaultType(){return DefaultType$f}static get NAME(){return NAME$g}toggle(){return this._isShown()?this.hide():this.show()}show(){isDisabled(this._toggle)||this._isShown()||EventHandler.trigger(this._toggle,EVENT_SHOW$5).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$4))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$4).defaultPrevented||(this._menuInstance.hide(),EventHandler.trigger(this._toggle,EVENT_HIDDEN$6)))}dispose(){this._menuInstance&&(this._menuInstance.dispose(),this._menuInstance=null),this._hiddenInput&&(this._hiddenInput.remove(),this._hiddenInput=null),EventHandler.off(this._menu,EVENT_KEY$d),EventHandler.off(this._toggle,EVENT_KEY$d),super.dispose()}_isShown(){return this._menu.classList.contains("show")}_createHiddenInput(){const{name:e}=this._config;e&&(this._hiddenInput=document.createElement("input"),this._hiddenInput.type="hidden",this._hiddenInput.name=e,this._hiddenInput.value="",this._toggle.parentNode.insertBefore(this._hiddenInput,this._toggle))}_createMenuInstance(){this._menuInstance=new Menu(this._toggle,{menu:this._menu,autoClose:!this._config.multiple||"outside",boundary:this._config.boundary,offset:this._config.offset,placement:this._config.placement})}_syncInitialSelection(){this._getSelectedItems().length>0?(this._updateToggleText(),this._updateHiddenInput()):this._showPlaceholder()}_addEventListeners(){EventHandler.on(this._menu,"click",SELECTOR_MENU_ITEM,e=>{const t=e.target.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&(e.preventDefault(),e.stopPropagation(),this._selectItem(t))}),EventHandler.on(this._toggle,"keydown",e=>{this._handleToggleKeydown(e)}),EventHandler.on(this._menu,"keydown",e=>{this._handleMenuKeydown(e)}),this._searchInput&&(EventHandler.on(this._searchInput,"input",()=>{this._filterItems(this._searchInput.value)}),EventHandler.on(this._searchInput,"keydown",e=>{if("ArrowDown"===e.key){e.preventDefault();const t=this._getVisibleItems();t.length>0&&t[0].focus()}"Escape"===e.key&&(this.hide(),this._toggle.focus())}))}_selectItem(e){if(this._config.multiple)e.classList.toggle("selected"),e.setAttribute("aria-selected",e.classList.contains("selected"));else{const t=SelectorEngine.find(".selected",this._menu);for(const e of t)e.classList.remove("selected"),e.setAttribute("aria-selected","false");e.classList.add("selected"),e.setAttribute("aria-selected","true")}this._updateToggleText(),this._updateHiddenInput();const t=this._config.multiple?this._getSelectedItems().map(e=>e.dataset.bsValue):e.dataset.bsValue;EventHandler.trigger(this._toggle,EVENT_CHANGE$3,{value:t,item:e}),this._config.multiple||(this.hide(),this._toggle.focus())}_updateToggleText(){const e=this._getSelectedItems();if(0!==e.length)if(this._valueDisplay.classList.remove("combobox-placeholder"),this._config.multiple&&e.length>1)this._valueDisplay.textContent=`${e.length} selected`;else{const t=e[0],n=SelectorEngine.findOne(".menu-item-content > span:first-child",t);this._valueDisplay.textContent=n?n.textContent:t.textContent.trim()}else this._showPlaceholder()}_showPlaceholder(){const{placeholder:e}=this._config;e&&(this._valueDisplay.textContent=e,this._valueDisplay.classList.add("combobox-placeholder"))}_updateHiddenInput(){if(!this._hiddenInput)return;const e=this._getSelectedItems().map(e=>e.dataset.bsValue);this._hiddenInput.value=this._config.multiple?e.join(","):e[0]||""}_getSelectedItems(){return SelectorEngine.find(".selected",this._menu)}_getVisibleItems(){return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter(e=>isVisible(e))}_filterItems(e){const t=this._normalizeText(e.toLowerCase().trim()),n=SelectorEngine.find(SELECTOR_MENU_ITEM,this._menu);let s=0;for(const e of n){const n=this._normalizeText(e.textContent.toLowerCase().trim()),i=!t||n.includes(t);e.style.display=i?"":"none",i&&s++}this._noResults&&this._noResults.classList.toggle("d-none",s>0)}_normalizeText(e){return this._config.searchNormalize?e.normalize("NFD").replace(/[\u0300-\u036F]/g,""):e}_handleToggleKeydown(e){const{key:t}=e;if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault(),this._isShown()||this.show();const n=this._getVisibleItems();return void(n.length>0&&("ArrowDown"===t?n[0]:n.at(-1)).focus())}"Enter"!==t&&" "!==t||this._isShown()||(e.preventDefault(),this.show())}_handleMenuKeydown(e){const{key:t,target:n}=e;if("Escape"===t)return e.preventDefault(),e.stopPropagation(),this.hide(),void this._toggle.focus();if("Tab"===t)return void this.hide();const s=n.matches("input");if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault();const s=this._getVisibleItems();return void(s.length>0&&getNextActiveElement(s,n,"ArrowDown"===t,!s.includes(n)).focus())}if("Home"===t||"End"===t){e.preventDefault();const n=this._getVisibleItems();return void(n.length>0&&("Home"===t?n[0]:n.at(-1)).focus())}if(("Enter"===t||" "===t)&&!s){e.preventDefault();const t=n.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&this._selectItem(t)}}static jQueryInterface(e){return this.each(function(){const t=Combobox.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$7,function(e){e.preventDefault(),Combobox.getOrCreateInstance(this).toggle()}),EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE$7))Combobox.getOrCreateInstance(e)});const NAME$f="datepicker",DATA_KEY$b="bs.datepicker",EVENT_KEY$c=`.${DATA_KEY$b}`,DATA_API_KEY$7=".data-api",EVENT_CHANGE$2=`change${EVENT_KEY$c}`,EVENT_SHOW$4=`show${EVENT_KEY$c}`,EVENT_SHOWN$3=`shown${EVENT_KEY$c}`,EVENT_HIDE$3=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$c}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$c}.data-api`,SELECTOR_DATA_TOGGLE$6='[data-bs-toggle="datepicker"]',HIDE_DELAY=100,Default$e={datepickerTheme:null,dateMin:null,dateMax:null,dateFormat:null,displayElement:null,displayMonthsCount:1,firstWeekday:1,inline:!1,locale:"default",positionElement:null,selectedDates:[],selectionMode:"single",placement:"left",vcpOptions:{}},DefaultType$e={datepickerTheme:"(null|string)",dateMin:"(null|string|number|object)",dateMax:"(null|string|number|object)",dateFormat:"(null|object|function)",displayElement:"(null|string|element|boolean)",displayMonthsCount:"number",firstWeekday:"number",inline:"boolean",locale:"string",positionElement:"(null|string|element)",selectedDates:"array",selectionMode:"string",placement:"string",vcpOptions:"object"};class Datepicker extends BaseComponent{constructor(e,t){super(e,t),this._calendar=null,this._isShown=!1,this._initCalendar()}static get Default(){return Default$e}static get DefaultType(){return DefaultType$e}static get NAME(){return NAME$f}toggle(){if(!this._config.inline)return this._isShown?this.hide():this.show()}show(){this._config.inline||!this._calendar||isDisabled(this._element)||this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$4).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$3))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented||(this._calendar.hide(),this._isShown=!1,EventHandler.trigger(this._element,EVENT_HIDDEN$5)))}dispose(){this._themeObserver&&(this._themeObserver.disconnect(),this._themeObserver=null),this._calendar&&this._calendar.destroy(),this._calendar=null,super.dispose()}getSelectedDates(){const e=this._calendar?.context?.selectedDates;return e?[...e]:[]}setSelectedDates(e){this._calendar&&this._calendar.set({selectedDates:e})}_initCalendar(){this._isInput="INPUT"===this._element.tagName,this._isInline=this._config.inline,this._isInline&&!this._isInput&&(this._boundInput=this._element.querySelector('input[type="hidden"], input[name]')),this._positionElement=this._resolvePositionElement(),this._displayElement=this._resolveDisplayElement();const e=this._buildCalendarOptions();this._calendar=new Calendar(this._positionElement,e),this._calendar.init(),this._setupThemeObserver(),this._isInput&&this._element.value&&this._parseInputValue(),this._updateDisplayWithSelectedDates()}_updateDisplayWithSelectedDates(){const{selectedDates:e}=this._config;if(!e||0===e.length)return;const t=this._formatDateForInput(e);this._isInput&&(this._element.value=t),this._boundInput&&(this._boundInput.value=e.join(",")),this._displayElement&&(this._displayElement.textContent=t)}_resolvePositionElement(){let{positionElement:e}=this._config;if("string"==typeof e&&(e=document.querySelector(e)),!e&&this._isInput&&!this._isInline){const t=this._element.closest(".form-adorn");t&&(e=t)}return e||this._element}_resolveDisplayElement(){const{displayElement:e}=this._config;return"string"==typeof e?document.querySelector(e):!0===e||null===e&&!this._isInput&&!this._isInline?this._element.querySelector("[data-bs-datepicker-display]")||this._element:e}_getThemeAncestor(){return this._element.closest("[data-bs-theme]")}_getEffectiveTheme(){const{datepickerTheme:e}=this._config;if(e)return e;const t=this._getThemeAncestor();return t?.getAttribute("data-bs-theme")||null}_syncThemeAttribute(e){if(!e)return;const t=this._getEffectiveTheme();t?e.setAttribute("data-bs-theme",t):e.removeAttribute("data-bs-theme")}_setupThemeObserver(){const e=this._getThemeAncestor();e&&!this._config.datepickerTheme&&(this._themeObserver=new MutationObserver(()=>{this._syncThemeAttribute(this._calendar?.context?.mainElement)}),this._themeObserver.observe(e,{attributes:!0,attributeFilter:["data-bs-theme"]}))}_buildCalendarOptions(){const e=this._getEffectiveTheme(),t=e&&"auto"!==e?e:"system",n={...this._config.vcpOptions,inputMode:!this._isInline,positionToInput:this._config.placement,firstWeekday:this._config.firstWeekday,locale:this._config.locale,selectionDatesMode:this._config.selectionMode,selectedDates:this._config.selectedDates,displayMonthsCount:this._config.displayMonthsCount,type:this._config.displayMonthsCount>1?"multiple":"default",selectedTheme:t,themeAttrDetect:"[data-bs-theme]",onClickDate:(e,t)=>this._handleDateClick(e,t),onInit:e=>{this._syncThemeAttribute(e.context.mainElement)},onShow:()=>{this._isShown=!0,this._syncThemeAttribute(this._calendar.context.mainElement)},onHide:()=>{this._isShown=!1}};if(this._config.selectedDates.length>0){const e=this._parseDate(this._config.selectedDates[0]);n.selectedMonth=e.getMonth(),n.selectedYear=e.getFullYear()}return this._config.dateMin&&(n.dateMin=this._config.dateMin),this._config.dateMax&&(n.dateMax=this._config.dateMax),n}_handleDateClick(e,t){const n=[...e.context.selectedDates];if(n.length>0){const e=this._formatDateForInput(n);this._isInput&&(this._element.value=e),this._boundInput&&(this._boundInput.value=n.join(",")),this._displayElement&&(this._displayElement.textContent=e)}EventHandler.trigger(this._element,EVENT_CHANGE$2,{dates:n,event:t}),this._maybeHideAfterSelection(n)}_maybeHideAfterSelection(e){this._isInline||("single"===this._config.selectionMode&&e.length>0||"multiple-ranged"===this._config.selectionMode&&e.length>=2)&&setTimeout(()=>this.hide(),100)}_parseDate(e){const[t,n,s]=e.split("-");return new Date(t,n-1,s)}_formatDate(e){const t=this._parseDate(e),n="default"===this._config.locale?void 0:this._config.locale,{dateFormat:s}=this._config;return"function"==typeof s?s(t,n):s&&"object"==typeof s?new Intl.DateTimeFormat(n,s).format(t):t.toLocaleDateString(n)}_formatDateForInput(e){if(0===e.length)return"";if(1===e.length)return this._formatDate(e[0]);const t="multiple-ranged"===this._config.selectionMode?" – ":", ";return e.map(e=>this._formatDate(e)).join(t)}_parseInputValue(){const e=this._element.value.trim();if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime())){const e=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`;this._calendar.set({selectedDates:[e]})}}}EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$6,function(e){"INPUT"!==this.tagName&&"true"!==this.dataset.bsInline&&(e.preventDefault(),Datepicker.getOrCreateInstance(this).toggle())}),EventHandler.on(document,EVENT_FOCUSIN_DATA_API,SELECTOR_DATA_TOGGLE$6,function(){"INPUT"===this.tagName&&Datepicker.getOrCreateInstance(this).show()}),EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$c}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const CLASS_NAME_OPEN="dialog-open";class DialogBase extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._openedAsModal=!1,this._addDialogListeners()}static get NAME(){return"dialogbase"}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){if(this._element.open||this._isTransitioning)return;if(EventHandler.trigger(this._element,this.constructor.eventName("show"),{relatedTarget:e}).defaultPrevented)return;this._isTransitioning=!0,this._onBeforeShow();const{modal:t,preventBodyScroll:n}=this._getShowOptions();this._showElement({modal:t,preventBodyScroll:n}),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("shown"),{relatedTarget:e})},this._element,this._isAnimated())}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented||(this._isTransitioning=!0,this._hideElement(),this._queueCallback(()=>{this._element.open&&this._closeAndCleanup(),this._element.classList.remove("hiding"),this._onAfterHide(),this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("hidden"))},this._element,this._isAnimated())))}dispose(){this._element.open&&this._closeAndCleanup(),super.dispose()}_getShowOptions(){return{modal:!0,preventBodyScroll:!0}}_onBeforeShow(){}_onAfterHide(){}_isAnimated(){return!this._element.classList.contains(this._getInstantClassName())}_getInstantClassName(){return"dialog-instant"}_getStaticClassName(){return"dialog-static"}_onCancel(){}_showElement({modal:e=!0,preventBodyScroll:t=!0}={}){this._openedAsModal=e,e?this._element.showModal():this._element.show(),t&&document.documentElement.classList.add("dialog-open")}_hideElement(){this._hideChildComponents(),this._element.classList.add("hiding"),this._shouldDeferClose()||this._closeAndCleanup()}_closeAndCleanup(){this._element.close(),this._openedAsModal=!1,document.querySelector("dialog[open]:modal")||document.documentElement.classList.remove("dialog-open")}_shouldDeferClose(){return!1}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,this.constructor.eventName("hidePrevented")).defaultPrevented)return;const e=this._getStaticClassName();this._element.classList.add(e),this._queueCallback(()=>{this._element.classList.remove(e)},this._element)}_hideChildComponents(){for(const e of SelectorEngine.find('[data-bs-toggle="tooltip"], [data-bs-toggle="popover"]',this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}for(const e of SelectorEngine.find(".toast.show",this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}}_addDialogListeners(){const e=this.constructor.EVENT_KEY;EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(this._onCancel(),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,`keydown${e}`,e=>{"Escape"!==e.key||this._openedAsModal||(e.preventDefault(),this._config.keyboard&&(this._onCancel(),this.hide()))}),EventHandler.on(this._element,`click${e}`,e=>{e.target===this._element&&this._openedAsModal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}const NAME$e="dialog",DATA_KEY$a="bs.dialog",EVENT_KEY$b=`.${DATA_KEY$a}`,DATA_API_KEY$6=".data-api",EVENT_SHOW$3=`show${EVENT_KEY$b}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$b}`,EVENT_CANCEL=`cancel${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$b}.data-api`,CLASS_NAME_NONMODAL="dialog-nonmodal",CLASS_NAME_INSTANT="dialog-instant",CLASS_NAME_SWAP_IN="dialog-swap-in",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',Default$d={backdrop:!0,keyboard:!0,modal:!0},DefaultType$d={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends DialogBase{static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}handleUpdate(){}_getShowOptions(){return{modal:this._config.modal,preventBodyScroll:this._config.modal}}_onBeforeShow(){this._config.modal||this._element.classList.add("dialog-nonmodal")}_onAfterHide(){this._element.classList.remove("dialog-nonmodal")}_shouldDeferClose(){return this._isAnimated()}_onCancel(){EventHandler.trigger(this._element,EVENT_CANCEL)}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$5,function(e){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$3,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$4,()=>{isVisible(this)&&this.focus({preventScroll:!0})})});const n=Manipulator.getDataAttributes(this),s=this.closest("dialog[open]");if(s&&s!==t){const e=Dialog.getOrCreateInstance(t,n);t.classList.add("dialog-swap-in"),e.show(this),EventHandler.one(t,`shown${EVENT_KEY$b}`,()=>{t.classList.remove("dialog-swap-in")});const i=Dialog.getInstance(s);return void(i&&(s.classList.add("dialog-instant"),EventHandler.one(s,EVENT_HIDDEN$4,()=>{s.classList.remove("dialog-instant")}),i.hide()))}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$d="navoverflow",DATA_KEY$9="bs.navoverflow",EVENT_KEY$a=`.${DATA_KEY$9}`,EVENT_UPDATE=`update${EVENT_KEY$a}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$a}`,CLASS_NAME_OVERFLOW="nav-overflow",CLASS_NAME_OVERFLOW_MENU="nav-overflow-menu",CLASS_NAME_HIDDEN="d-none",SELECTOR_NAV_ITEM=".nav-item",SELECTOR_NAV_LINK=".nav-link",SELECTOR_OVERFLOW_TOGGLE=".nav-overflow-toggle",SELECTOR_OVERFLOW_MENU=".nav-overflow-menu",SELECTOR_CUSTOM_ICON="[data-bs-overflow-icon]",CLASS_NAME_KEEP="nav-overflow-keep",Default$c={collapseBelow:0,iconPlacement:"start",menuPlacement:"bottom-end",moreText:"More",moreIcon:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></svg>',threshold:0},DefaultType$c={collapseBelow:"(number|string)",iconPlacement:"string",menuPlacement:"string",moreText:"string",moreIcon:"string",threshold:"number"};class NavOverflow extends BaseComponent{constructor(e,t){super(e,t),this._items=[],this._overflowItems=[],this._overflowMenu=null,this._overflowToggle=null,this._resizeObserver=null,this._collapseBelow=0,this._isInitialized=!1,this._init()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}update(){this._calculateOverflow(),EventHandler.trigger(this._element,EVENT_UPDATE)}dispose(){this._resizeObserver&&this._resizeObserver.disconnect(),this._restoreItems(),this._overflowToggle&&this._overflowToggle.parentElement&&this._overflowToggle.parentElement.remove(),super.dispose()}_init(){this._element.classList.add("nav-overflow"),this._items=[...SelectorEngine.find(".nav-item",this._element)];for(const[e,t]of this._items.entries())t.dataset.bsNavOrder=e;this._collapseBelow=this._resolveCollapseBelow(),this._createOverflowMenu(),this._setupResizeObserver(),this._calculateOverflow(),this._isInitialized=!0}_createOverflowMenu(){if(this._overflowToggle=SelectorEngine.findOne(".nav-overflow-toggle",this._element),this._overflowToggle)return void(this._overflowMenu=SelectorEngine.findOne(".nav-overflow-menu",this._element));const e=`<span class="nav-overflow-icon">${this._resolveIcon()}</span>`,t=`<span class="nav-overflow-text">${this._config.moreText}</span>`,n="end"===this._config.iconPlacement?`${t}${e}`:`${e}${t}`,s=document.createElement("li");s.className="nav-item nav-overflow-item",s.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="${this._config.menuPlacement}" aria-expanded="false">\n        ${n}\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(s),this._overflowToggle=s.querySelector(".nav-overflow-toggle"),this._overflowMenu=s.querySelector(".nav-overflow-menu")}_resolveIcon(){const e=SelectorEngine.findOne(SELECTOR_CUSTOM_ICON,this._element);if(!e)return this._config.moreIcon;const t=e.cloneNode(!0);t.removeAttribute("data-bs-overflow-icon");const n=t.outerHTML;return e.remove(),n}_resolveCollapseBelow(){const e=this._config.collapseBelow;if("number"==typeof e)return e;if("string"==typeof e&&""!==e){const t=getComputedStyle(document.documentElement).getPropertyValue(`--bs-breakpoint-${e}`);return Number.parseFloat(t)||0}return 0}_setupResizeObserver(){"undefined"!=typeof ResizeObserver?(this._resizeObserver=new ResizeObserver(()=>{this._calculateOverflow()}),this._resizeObserver.observe(this._element)):EventHandler.on(window,"resize",()=>this._calculateOverflow())}_calculateOverflow(){this._restoreItems();const e=this._element.offsetWidth,t=this._overflowToggle?.closest(".nav-item");if(this._collapseBelow>0&&e<this._collapseBelow){const e=this._items.filter(e=>!e.classList.contains(CLASS_NAME_KEEP));return this._moveToOverflow(e),t&&(e.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),void(e.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:e.length,visibleCount:this._items.length-e.length}))}let n=0;const s=[],i=e-(t?.offsetWidth||0)-this._items.filter(e=>e.classList.contains(CLASS_NAME_KEEP)).reduce((e,t)=>e+t.offsetWidth,0)-10;for(const e of this._items)e.classList.contains(CLASS_NAME_KEEP)||(n+=e.offsetWidth,n>i&&s.push(e));if(this._items.length-s.length<this._config.threshold&&this._items.length>this._config.threshold){const e=this._items.slice(this._config.threshold).filter(e=>!e.classList.contains(CLASS_NAME_KEEP));s.length=0,s.push(...e)}this._moveToOverflow(s),t&&(s.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),s.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:s.length,visibleCount:this._items.length-s.length})}_moveToOverflow(e){if(this._overflowMenu){this._overflowMenu.innerHTML="",this._overflowItems=[];for(const t of e){const e=SelectorEngine.findOne(".nav-link",t);if(!e)continue;const n=e.cloneNode(!0);n.className="menu-item",e.classList.contains("active")&&n.classList.add("active"),(e.classList.contains("disabled")||e.hasAttribute("disabled"))&&n.classList.add("disabled"),this._overflowMenu.append(n),t.classList.add("d-none"),t.dataset.bsNavOverflow="true",this._overflowItems.push(t)}}}_restoreItems(){for(const e of this._items)e.classList.remove("d-none"),delete e.dataset.bsNavOverflow;this._overflowMenu&&(this._overflowMenu.innerHTML=""),this._overflowItems=[]}}EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find('[data-bs-toggle="nav-overflow"]'))NavOverflow.getOrCreateInstance(e)});const NAME$c="swipe",EVENT_KEY$9=".bs.swipe",EVENT_TOUCHSTART="touchstart.bs.swipe",EVENT_TOUCHMOVE="touchmove.bs.swipe",EVENT_TOUCHEND="touchend.bs.swipe",EVENT_POINTERDOWN="pointerdown.bs.swipe",EVENT_POINTERUP="pointerup.bs.swipe",POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$b={endCallback:null,leftCallback:null,rightCallback:null,upCallback:null,downCallback:null},DefaultType$b={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)",upCallback:"(function|null)",downCallback:"(function|null)"};class Swipe extends Config{constructor(e,t){super(),this._element=e,e&&Swipe.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._deltaY=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){if(!this._supportPointerEvents)return this._deltaX=e.touches[0].clientX,void(this._deltaY=e.touches[0].clientY);this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX,this._deltaY=e.clientY)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX,this._deltaY=e.clientY-this._deltaY),this._handleSwipe(),execute(this._config.endCallback)}_move(e){if(e.touches&&e.touches.length>1)return this._deltaX=0,void(this._deltaY=0);this._deltaX=e.touches[0].clientX-this._deltaX,this._deltaY=e.touches[0].clientY-this._deltaY}_handleSwipe(){const e=Math.abs(this._deltaX),t=Math.abs(this._deltaY);if(t>e&&t>40){const e=this._deltaY>0?"down":"up";return this._deltaX=0,this._deltaY=0,void execute("down"===e?this._config.downCallback:this._config.upCallback)}if(e>40){const t=e/this._deltaX;if(this._deltaX=0,this._deltaY=0,!t)return;return void execute(t>0?this._config.rightCallback:this._config.leftCallback)}this._deltaX=0,this._deltaY=0}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,e=>this._start(e)),EventHandler.on(this._element,EVENT_POINTERUP,e=>this._end(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,e=>this._start(e)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>this._move(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$b="drawer",DATA_KEY$8="bs.drawer",EVENT_KEY$8=`.${DATA_KEY$8}`,DATA_API_KEY$5=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$8}.data-api`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$8}`,EVENT_RESIZE$1=`resize${EVENT_KEY$8}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$8}.data-api`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="drawer"]',Default$a={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$a={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Drawer extends DialogBase{constructor(e,t){super(e,t),this._swipeHelper=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_getShowOptions(){return{modal:Boolean(this._config.backdrop)||!this._config.scroll,preventBodyScroll:!this._config.scroll}}_onBeforeShow(){this._initSwipe()}_getInstantClassName(){return"drawer-instant"}_getStaticClassName(){return"drawer-static"}_initSwipe(){if(this._swipeHelper||!Swipe.isSupported())return;const e={},t=this._element;t.classList.contains("drawer-bottom")?e.downCallback=()=>this.hide():t.classList.contains("drawer-top")?e.upCallback=()=>this.hide():t.classList.contains("drawer-end")?isRTL()?e.leftCallback=()=>this.hide():e.rightCallback=()=>this.hide():isRTL()?e.rightCallback=()=>this.hide():e.leftCallback=()=>this.hide(),this._swipeHelper=new Swipe(t,e)}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$4,function(e){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus({preventScroll:!0})});const n=SelectorEngine.findOne("dialog.drawer[open]");n&&n!==t&&Drawer.getInstance(n).hide(),Drawer.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find("dialog.drawer[open]"))Drawer.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE$1,()=>{for(const e of SelectorEngine.find('dialog[open][class*="\\:drawer"]'))"fixed"!==getComputedStyle(e).position&&Drawer.getOrCreateInstance(e).hide()}),enableDismissTrigger(Drawer);const NAME$a="strength",DATA_KEY$7="bs.strength",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$7}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$9={input:null,minLength:8,messages:{weak:"Weak",fair:"Fair",good:"Good",strong:"Strong"},weights:{minLength:1,extraLength:1,lowercase:1,uppercase:1,numbers:1,special:1,multipleSpecial:1,longPassword:1},thresholds:[2,4,6],scorer:null},DefaultType$9={input:"(string|element|null)",minLength:"number",messages:"object",weights:"object",thresholds:"array",scorer:"(function|null)"};class Strength extends BaseComponent{constructor(e,t){super(e,t),this._input=this._getInput(),this._segments=SelectorEngine.find(".strength-segment",this._element),this._textElement=SelectorEngine.findOne(".strength-text",this._element.parentElement),this._currentStrength=null,this._input&&(this._addEventListeners(),this._evaluate())}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}getStrength(){return this._currentStrength}evaluate(){this._evaluate()}_getInput(){if(this._config.input)return"string"==typeof this._config.input?SelectorEngine.findOne(this._config.input):this._config.input;const e=this._element.parentElement;return SelectorEngine.findOne('input[type="password"]',e)}_addEventListeners(){EventHandler.on(this._input,"input",()=>this._evaluate()),EventHandler.on(this._input,"change",()=>this._evaluate())}_evaluate(){const e=this._input.value,t=this._calculateScore(e),n=this._scoreToStrength(t);n!==this._currentStrength&&(this._currentStrength=n,this._updateUI(n,t),EventHandler.trigger(this._element,EVENT_STRENGTH_CHANGE,{strength:n,score:t,password:e.length>0?"***":""}))}_calculateScore(e){if(!e)return 0;if("function"==typeof this._config.scorer)return this._config.scorer(e);const{weights:t}=this._config;let n=0;return e.length>=this._config.minLength&&(n+=t.minLength),e.length>=this._config.minLength+4&&(n+=t.extraLength),/[a-z]/.test(e)&&(n+=t.lowercase),/[A-Z]/.test(e)&&(n+=t.uppercase),/\d/.test(e)&&(n+=t.numbers),/[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.special),/[!@#$%^&*(),.?":{}|<>].*[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.multipleSpecial),e.length>=16&&(n+=t.longPassword),n}_scoreToStrength(e){if(0===e)return null;const[t,n,s]=this._config.thresholds;return e<=t?"weak":e<=n?"fair":e<=s?"good":"strong"}_updateUI(e){e?this._element.dataset.bsStrength=e:delete this._element.dataset.bsStrength;const t=e?STRENGTH_LEVELS.indexOf(e):-1;for(const[e,n]of this._segments.entries())e<=t?n.classList.add("active"):n.classList.remove("active");if(this._textElement)if(e&&this._config.messages[e]){this._textElement.textContent=this._config.messages[e],this._textElement.dataset.bsStrength=e;const t={weak:"danger",fair:"warning",good:"info",strong:"success"};this._textElement.style.setProperty("--strength-color",`var(--${t[e]}-text)`)}else this._textElement.textContent="",delete this._textElement.dataset.bsStrength}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$7}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$9="otpInput",DATA_KEY$6="bs.otpInput",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$6}`,EVENT_INPUT$1=`input${EVENT_KEY$6}`,EVENT_DOMCONTENT_LOADED=`DOMContentLoaded${EVENT_KEY$6}.data-api`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT$1="input",SYNC_EVENTS=["blur","keyup","click","select"],CLASS_NAME_INPUT="otp-input",CLASS_NAME_RENDERED="otp-rendered",CLASS_NAME_SLOTS="otp-slots",CLASS_NAME_SLOT="otp-slot",CLASS_NAME_SLOT_FILLED="otp-slot-filled",CLASS_NAME_SLOT_ACTIVE="otp-slot-active",CLASS_NAME_SEPARATOR="otp-separator",MASK_CHARACTER="•",TYPES={numeric:{inputmode:"numeric",pattern:"[0-9]*",filter:/[^0-9]/g},alphanumeric:{inputmode:"text",pattern:"[A-Za-z0-9]*",filter:/[^A-Za-z0-9]/g},alpha:{inputmode:"text",pattern:"[A-Za-z]*",filter:/[^A-Za-z]/g}},Default$8={groups:null,length:null,mask:!1,separator:"·",type:"numeric"},DefaultType$8={groups:"(array|null)",length:"(number|null)",mask:"boolean",separator:"string",type:"string"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne("input",this._element),this._input&&(this._type=TYPES[this._config.type]||TYPES.numeric,this._length=this._resolveLength(),this._slots=[],this._setupInput(),this._renderSlots(),this._addEventListeners(),this._render())}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}getValue(){return this._input.value}setValue(e){this._input.value=this._sanitize(String(e)),this._render(),this._checkComplete()}clear(){this._input.value="",this._render(),this._input.focus()}focus(){this._input.focus();const e=this._input.value.length;this._input.setSelectionRange(e,e),this._render()}dispose(){EventHandler.off(this._input,"input",this._onInput),EventHandler.off(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.off(this._input,e,this._onSync);this._slotsContainer?.remove(),this._element.classList.remove("otp-rendered"),super.dispose()}_resolveLength(){if(this._config.length)return this._config.length;const e=Number.parseInt(this._input.getAttribute("maxlength"),10);return Number.isNaN(e)||e<1?6:e}_setupInput(){const e=this._input;"number"!==e.type&&"password"!==e.type||(e.type="text"),e.classList.add("otp-input"),e.setAttribute("maxlength",String(this._length)),e.setAttribute("inputmode",this._type.inputmode),e.setAttribute("pattern",this._type.pattern),e.getAttribute("autocomplete")||e.setAttribute("autocomplete","one-time-code"),e.value&&(e.value=this._sanitize(e.value))}_renderSlots(){const e=document.createElement("div");e.className="otp-slots",e.setAttribute("aria-hidden","true");const{groups:t}=this._config;let n=0,s=0;for(let i=0;i<this._length;i++){const o=document.createElement("div");if(o.className="otp-slot",e.append(o),this._slots.push(o),Array.isArray(t)&&t.length>0&&(s++,s===t[n]&&i<this._length-1)){const i=document.createElement("div");i.className="otp-separator",i.textContent=this._config.separator,e.append(i),n=Math.min(n+1,t.length-1),s=0}}this._slotsContainer=e,this._element.append(e),this._element.classList.add("otp-rendered")}_addEventListeners(){this._onInput=()=>this._handleInput(),this._onFocus=()=>this.focus(),this._onSync=()=>this._render(),EventHandler.on(this._input,"input",this._onInput),EventHandler.on(this._input,"focus",this._onFocus);for(const e of SYNC_EVENTS)EventHandler.on(this._input,e,this._onSync)}_handleInput(){const e=this._sanitize(this._input.value);e!==this._input.value&&(this._input.value=e),this._render(),EventHandler.trigger(this._element,EVENT_INPUT$1,{value:this._input.value}),this._checkComplete()}_sanitize(e){return e.replace(this._type.filter,"").slice(0,this._length)}_render(){const{value:e}=this._input,t=document.activeElement===this._input,n=Math.min(this._input.selectionStart??e.length,this._length-1);for(const[s,i]of this._slots.entries()){const o=e[s]??"";i.textContent=o&&this._config.mask?"•":o,i.classList.toggle("otp-slot-filled",Boolean(o)),i.classList.toggle("otp-slot-active",t&&s===n)}}_checkComplete(){const{value:e}=this._input;e.length===this._length&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,EVENT_DOMCONTENT_LOADED,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const NAME$8="chips",DATA_KEY$5="bs.chips",EVENT_KEY$5=".bs.chips",DATA_API_KEY$2=".data-api",EVENT_ADD="add.bs.chips",EVENT_REMOVE="remove.bs.chips",EVENT_CHANGE$1="change.bs.chips",EVENT_SELECT="select.bs.chips",SELECTOR_DATA_CHIPS="[data-bs-chips]",SELECTOR_GHOST_INPUT=".form-ghost",SELECTOR_CHIP=".chip",SELECTOR_CHIP_DISMISS=".chip-dismiss",CLASS_NAME_CHIP="chip",CLASS_NAME_CHIP_DISMISS="chip-dismiss",CLASS_NAME_ACTIVE$2="active",DEFAULT_DISMISS_ICON='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Default$7={separator:",",allowDuplicates:!1,maxChips:null,placeholder:"",dismissible:!0,dismissIcon:DEFAULT_DISMISS_ICON,createOnBlur:!0},DefaultType$7={separator:"(string|null)",allowDuplicates:"boolean",maxChips:"(number|null)",placeholder:"string",dismissible:"boolean",dismissIcon:"string",createOnBlur:"boolean"};class Chips extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne(".form-ghost",this._element),this._chips=[],this._selectedChips=new Set,this._anchorChip=null,this._input||this._createInput(),this._initializeExistingChips(),this._addEventListeners()}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}add(e){const t=String(e).trim();if(!t)return null;if(!this._config.allowDuplicates&&this._chips.includes(t))return null;if(null!==this._config.maxChips&&this._chips.length>=this._config.maxChips)return null;if(EventHandler.trigger(this._element,EVENT_ADD,{value:t,relatedTarget:this._input}).defaultPrevented)return null;const n=this._createChip(t);return this._element.insertBefore(n,this._input),this._chips.push(t),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),n}remove(e){let t,n;return"string"==typeof e?(n=e,t=this._findChipByValue(n)):(t=e,n=this._getChipValue(t)),!(!t||!n)&&(!EventHandler.trigger(this._element,EVENT_REMOVE,{value:n,chip:t,relatedTarget:this._input}).defaultPrevented&&(this._selectedChips.delete(t),this._anchorChip===t&&(this._anchorChip=null),t.remove(),this._chips=this._chips.filter(e=>e!==n),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),!0))}removeSelected(){const e=[...this._selectedChips];for(const t of e)this.remove(t);this._input?.focus()}getValues(){return[...this._chips]}getSelectedValues(){return[...this._selectedChips].map(e=>this._getChipValue(e))}clear(){const e=SelectorEngine.find(".chip",this._element);for(const t of e)t.remove();this._chips=[],this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:[]})}clearSelection(){for(const e of this._selectedChips)e.classList.remove("active");this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_SELECT,{selected:[]})}selectChip(e,t={}){const{addToSelection:n=!1,rangeSelect:s=!1}=t,i=this._getChipElements();if(i.includes(e)){if(s&&this._anchorChip){const t=i.indexOf(this._anchorChip),s=i.indexOf(e),o=Math.min(t,s),r=Math.max(t,s);n||this.clearSelection();for(let e=o;e<=r;e++)this._selectedChips.add(i[e]),i[e].classList.add("active")}else n?this._selectedChips.has(e)?(this._selectedChips.delete(e),e.classList.remove("active")):(this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e):(this.clearSelection(),this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e);EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}focus(){this._input?.focus()}_getChipElements(){return SelectorEngine.find(".chip",this._element)}_createInput(){const e=document.createElement("input");e.type="text",e.className="form-ghost",this._config.placeholder&&(e.placeholder=this._config.placeholder),this._element.append(e),this._input=e}_initializeExistingChips(){const e=SelectorEngine.find(".chip",this._element);for(const t of e){const e=this._getChipValue(t);e&&(this._chips.push(e),this._setupChip(t))}}_setupChip(e){e.setAttribute("tabindex","0"),this._config.dismissible&&!SelectorEngine.findOne(".chip-dismiss",e)&&e.append(this._createDismissButton())}_createChip(e){const t=document.createElement("span");return t.className="chip",t.dataset.bsChipValue=e,t.append(document.createTextNode(e)),this._setupChip(t),t}_createDismissButton(){const e=document.createElement("button");return e.type="button",e.className="chip-dismiss",e.setAttribute("aria-label","Remove"),e.setAttribute("tabindex","-1"),e.innerHTML=this._config.dismissIcon,e}_findChipByValue(e){return this._getChipElements().find(t=>this._getChipValue(t)===e)}_getChipValue(e){if(e.dataset.bsChipValue)return e.dataset.bsChipValue;const t=e.cloneNode(!0),n=SelectorEngine.findOne(".chip-dismiss",t);return n&&n.remove(),t.textContent?.trim()||""}_addEventListeners(){EventHandler.on(this._input,"keydown",e=>this._handleInputKeydown(e)),EventHandler.on(this._input,"input",e=>this._handleInput(e)),EventHandler.on(this._input,"paste",e=>this._handlePaste(e)),EventHandler.on(this._input,"focus",()=>this.clearSelection()),this._config.createOnBlur&&EventHandler.on(this._input,"blur",e=>{e.relatedTarget?.closest(".chip")||this._createChipFromInput()}),EventHandler.on(this._element,"click",".chip",e=>{if(e.target.closest(".chip-dismiss"))return;const t=e.target.closest(".chip");t&&(e.preventDefault(),this.selectChip(t,{addToSelection:e.metaKey||e.ctrlKey,rangeSelect:e.shiftKey}),t.focus())}),EventHandler.on(this._element,"click",".chip-dismiss",e=>{e.stopPropagation();const t=e.target.closest(".chip");t&&(this.remove(t),this._input?.focus())}),EventHandler.on(this._element,"keydown",".chip",e=>{this._handleChipKeydown(e)}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&(this.clearSelection(),this._input?.focus())})}_handleInputKeydown(e){const{key:t}=e;switch(t){case"Enter":e.preventDefault(),this._createChipFromInput();break;case"Backspace":case"Delete":if(""===this._input.value){e.preventDefault();const t=this._getChipElements();if(t.length>0){const e=t.at(-1);this.selectChip(e),e.focus()}}break;case"ArrowLeft":if(0===this._input.selectionStart&&0===this._input.selectionEnd){e.preventDefault();const t=this._getChipElements();if(t.length>0){const n=t.at(-1);e.shiftKey?this.selectChip(n,{addToSelection:!0}):this.selectChip(n),n.focus()}}break;case"Escape":this._input.value="",this.clearSelection(),this._input.blur()}}_handleChipKeydown(e){const{key:t}=e,n=e.target.closest(".chip");if(!n)return;const s=this._getChipElements(),i=s.indexOf(n);switch(t){case"Backspace":case"Delete":e.preventDefault(),this._handleChipDelete(i,s);break;case"ArrowLeft":e.preventDefault(),this._navigateChip(s,i,-1,e.shiftKey);break;case"ArrowRight":e.preventDefault(),this._navigateChip(s,i,1,e.shiftKey);break;case"Home":e.preventDefault(),this._navigateToEdge(s,0,e.shiftKey);break;case"End":case"Escape":e.preventDefault(),this.clearSelection(),this._input?.focus();break;case"a":this._handleSelectAll(e,s)}}_handleChipDelete(e,t){if(0===this._selectedChips.size)return;const n=Math.min(e,t.length-this._selectedChips.size-1);this.removeSelected();const s=this._getChipElements();if(s.length>0){const e=Math.max(0,Math.min(n,s.length-1));s[e].focus(),this.selectChip(s[e])}else this._input?.focus()}_navigateChip(e,t,n,s){const i=t+n;if(n<0&&i>=0){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else if(n>0&&i<e.length){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else n>0&&(this.clearSelection(),this._input?.focus())}_navigateToEdge(e,t,n){if(0===e.length)return;const s=e[t];this.selectChip(s,n?{rangeSelect:!0}:{}),s.focus()}_handleSelectAll(e,t){if(e.metaKey||e.ctrlKey){e.preventDefault();for(const e of t)this._selectedChips.add(e),e.classList.add("active");EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}_handleInput(e){const{value:t}=e.target,{separator:n}=this._config;if(n&&t.includes(n)){const e=t.split(n);for(const t of e.slice(0,-1))this.add(t.trim());this._input.value=e.at(-1)}}_handlePaste(e){const{separator:t}=this._config;if(!t)return;const n=(e.clipboardData||window.clipboardData).getData("text");if(n.includes(t)){e.preventDefault();const s=n.split(t);for(const e of s)this.add(e.trim())}}_createChipFromInput(){const e=this._input.value.trim();e&&(this.add(e),this._input.value="")}}EventHandler.on(document,"DOMContentLoaded.bs.chips.data-api",()=>{for(const e of SelectorEngine.find("[data-bs-chips]"))Chips.getOrCreateInstance(e)});const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,DATA_URL_PATTERN=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z=]+$/i,allowedAttribute=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!uriAttributes.has(n)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)||DATA_URL_PATTERN.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function sanitizeHtml(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const s=(new window.DOMParser).parseFromString(e,"text/html"),i=[...s.body.querySelectorAll("*")];for(const e of i){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const s=[...e.attributes],i=[...t["*"]||[],...t[n]||[]];for(const t of s)allowedAttribute(t,i)||e.removeAttribute(t.nodeName)}return s.body.innerHTML}const NAME$7="TemplateFactory",Default$6={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$6={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},DefaultContentType)}_setContent(e,t,n){const s=SelectorEngine.findOne(n,e);s&&((t=this._resolvePossibleFunction(t))?isElement(t)?this._putElementInTemplate(getElement(t),s):this._config.html?s.innerHTML=this._maybeSanitize(t):s.textContent=t:s.remove())}_maybeSanitize(e){return this._config.sanitize?sanitizeHtml(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return execute(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const NAME$6="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),ESCAPE_KEY="Escape",CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="tooltip"]',EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$3="click",EVENT_FOCUSIN$2="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER$1="mouseenter",EVENT_MOUSELEAVE="mouseleave",EVENT_KEYDOWN$1="keydown",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$5={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",floatingConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},DefaultType$5={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",floatingConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Tooltip extends BaseComponent{constructor(e,t){if(void 0===computePosition)throw new TypeError("Bootstrap's tooltips require Floating UI (https://floating-ui.com)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._floatingCleanup=null,this._keydownHandler=null,this._templateFactory=null,this._newContent=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this.tip=null,this._parseResponsivePlacements(),this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),this._removeEscapeListener(),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposeFloating(),this._disposeMediaQueryListeners(),super.dispose()}async show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.eventName("show")),t=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return void(this._isHovered=!1);this._disposeFloating();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));let{container:s}=this._config;const i=this._element.closest("dialog[open]");if(i&&s===document.body&&(s=i),this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(n),EventHandler.trigger(this._element,this.constructor.eventName("inserted"))),await this._createFloating(n),n.classList.add("show"),this._setEscapeListener(),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.on(e,"mouseover",noop);this._queueCallback(()=>{EventHandler.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._removeEscapeListener(),this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.off(e,"mouseover",noop);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposeFloating(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._floatingCleanup&&this.tip&&this._updateFloatingPosition()}_isWithContent(){return Boolean(this._getTitle())||this._hasNewContent()}_hasNewContent(){return Boolean(this._newContent)&&Object.values(this._newContent).some(Boolean)}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();t.classList.remove("fade","show"),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=getUID(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add("fade"),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposeFloating(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new TemplateFactory({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains("fade")}_isShown(){return this.tip&&this.tip.classList.contains("show")}_getPlacement(e){if(this._responsivePlacements){const e=getResponsivePlacement(this._responsivePlacements,"top");return AttachmentMap[e.toUpperCase()]||e}const t=execute(this._config.placement,[this,e,this._element]);return AttachmentMap[t.toUpperCase()]||t}_parseResponsivePlacements(){"string"==typeof this._config.placement?(this._responsivePlacements=parseResponsivePlacement(this._config.placement,"top"),this._responsivePlacements&&this._setupMediaQueryListeners()):this._responsivePlacements=null}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}async _createFloating(e){const t=this._getPlacement(e),n=e.querySelector(`.${this.constructor.NAME}-arrow`);await this._updateFloatingPosition(e,t,n),this._floatingCleanup=autoUpdate(this._element,e,()=>this._updateFloatingPosition(e,null,n))}async _updateFloatingPosition(e=this.tip,t=null,n=null){if(!e)return;t||(t=this._getPlacement(e)),n||(n=e.querySelector(`.${this.constructor.NAME}-arrow`));const s=this._getFloatingMiddleware(n),i=this._getFloatingConfig(t,s),{x:o,y:r,placement:l,middlewareData:a}=await computePosition(this._element,e,i);if(Object.assign(e.style,{position:"absolute",left:`${o}px`,top:`${r}px`}),n&&(n.style.position="absolute"),Manipulator.setDataAttribute(e,"placement",l),n&&a.arrow){const{x:e,y:t}=a.arrow,s=l.startsWith("top")||l.startsWith("bottom");Object.assign(n.style,{left:s&&null!==e?`${e}px`:"",top:s||null===t?"":`${t}px`,right:"",bottom:""})}}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_resolvePossibleFunction(e){return execute(e,[this._element,this._element])}_getFloatingMiddleware(e){const t=this._getOffset(),n=[offset("function"==typeof t?t:{mainAxis:t[1]||0,crossAxis:t[0]||0}),flip({fallbackPlacements:this._config.fallbackPlacements}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})];return e&&n.push(arrow({element:e})),n}_getFloatingConfig(e,t){const n={placement:e,middleware:t};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)EventHandler.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!(t._isShown()&&t._activeTrigger.click),t.toggle()});else if("manual"!==t){const e="hover"===t?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n="hover"===t?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");EventHandler.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0,t._enter()}),EventHandler.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler)}_setEscapeListener(){this._keydownHandler||(this._keydownHandler=e=>{"Escape"===e.key&&this._isShown()&&this.tip.isConnected&&(e.preventDefault(),e.stopPropagation(),this.hide())},this._element.ownerDocument.addEventListener("keydown",this._keydownHandler,!0))}_removeEscapeListener(){this._keydownHandler&&(this._element.ownerDocument.removeEventListener("keydown",this._keydownHandler,!0),this._keydownHandler=null)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);for(const e of Object.keys(t))DISALLOWED_ATTRIBUTES.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"!=typeof e.title&&"boolean"!=typeof e.title||(e.title=e.title.toString()),"number"!=typeof e.content&&"boolean"!=typeof e.content||(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null),this.tip&&(this.tip.remove(),this.tip=null)}}const initTooltip=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$3);t&&Tooltip.getOrCreateInstance(t)};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$5="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="popover"]',EVENT_CLICK$2="click",EVENT_FOCUSIN$1="focusin",EVENT_MOUSEENTER="mouseenter",Default$4={...Tooltip.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},DefaultType$4={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}_isWithContent(){return Boolean(this._getTitle()||this._getContent())||this._hasNewContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}}const initPopover=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$2);t&&("click"===e.type&&e.preventDefault(),Popover.getOrCreateInstance(t))};EventHandler.on(document,"click",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$2,initPopover);const NAME$4="range",DATA_KEY$4="bs.range",EVENT_KEY$4=".bs.range",DATA_API_KEY$1=".data-api",EVENT_CHANGED="changed.bs.range",EVENT_DOM_CONTENT_LOADED="DOMContentLoaded.bs.range.data-api",EVENT_INPUT="input",EVENT_CHANGE="change",SELECTOR_RANGE=".form-range",SELECTOR_INPUT=".form-range-input",CLASS_NAME_BUBBLE="form-range-bubble",CLASS_NAME_TICKS="form-range-ticks",CLASS_NAME_TICK="form-range-tick",CLASS_NAME_TICK_LABEL="form-range-tick-label",PROPERTY_FILL="--bs-range-fill",Default$3={bubble:!1,formatter:null},DefaultType$3={bubble:"(boolean|null)",formatter:"(function|null)"};class Range extends BaseComponent{constructor(e,t){super(e,t),this._element&&(this._input=SelectorEngine.findOne(SELECTOR_INPUT,this._element),this._input&&(this._bubble=null,this._bubbleText=null,this._ticks=null,this._updateHandler=()=>this._update(),this._config.bubble&&this._createBubble(),this._createTicks(),this._addEventListeners(),this._update()))}static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}update(){this._update()}dispose(){EventHandler.off(this._input,"input",this._updateHandler),EventHandler.off(this._input,"change",this._updateHandler),this._bubble?.remove(),this._ticks?.remove(),super.dispose()}_configAfterMerge(e){return null===e.bubble&&(e.bubble=!0),e}_addEventListeners(){EventHandler.on(this._input,"input",this._updateHandler),EventHandler.on(this._input,"change",this._updateHandler)}_min(){return""===this._input.min?0:Number.parseFloat(this._input.min)}_max(){return""===this._input.max?100:Number.parseFloat(this._input.max)}_value(){return Number.parseFloat(this._input.value)}_ratio(){const e=this._max()-this._min();return e>0?(this._value()-this._min())/e:0}_update(){this._element.style.setProperty(PROPERTY_FILL,`${this._ratio()}`),this._bubbleText&&(this._bubbleText.textContent=this._format(this._value())),EventHandler.trigger(this._input,EVENT_CHANGED,{value:this._value()})}_format(e){return"function"==typeof this._config.formatter?this._config.formatter(e):String(e)}_createBubble(){this._bubble=document.createElement("output"),this._bubble.className=`${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`,this._bubble.setAttribute("aria-hidden","true");const e=document.createElement("div");e.className="tooltip-arrow",this._bubbleText=document.createElement("div"),this._bubbleText.className="tooltip-inner",this._bubble.append(e,this._bubbleText),this._input.insertAdjacentElement("afterend",this._bubble)}_createTicks(){const e=this._input.getAttribute("list"),t=e?document.getElementById(e):null;if(!t)return;const n=this._min(),s=this._max()-n||1,i=[];for(const e of SelectorEngine.find("option",t)){const t=Number.parseFloat(e.value);if(!Number.isNaN(t)){const o=Math.min(Math.max((t-n)/s,0),1);i.push({ratio:o,label:e.label})}}if(0===i.length)return;i.sort((e,t)=>e.ratio-t.ratio),this._ticks=document.createElement("div"),this._ticks.className=CLASS_NAME_TICKS,this._ticks.setAttribute("aria-hidden","true");const o=[0,...i.map(e=>e.ratio),1];this._ticks.style.gridTemplateColumns=o.slice(1).map((e,t)=>e-o[t]+"fr").join(" ");for(const[e,t]of i.entries()){const n=document.createElement("span");if(n.className=CLASS_NAME_TICK,n.style.gridColumnStart=`${e+2}`,t.label){const e=document.createElement("span");e.className=CLASS_NAME_TICK_LABEL,e.textContent=t.label,n.append(e)}this._ticks.append(n)}this._element.append(this._ticks)}}EventHandler.on(document,EVENT_DOM_CONTENT_LOADED,()=>{for(const e of SelectorEngine.find(".form-range"))Range.getOrCreateInstance(e)});const NAME$3="scrollspy",DATA_KEY$3="bs.scrollspy",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$3}`,EVENT_CLICK$1=`click${EVENT_KEY$3}`,EVENT_SCROLL=`scroll${EVENT_KEY$3}`,EVENT_SCROLLEND=`scrollend${EVENT_KEY$3}`,EVENT_RESIZE=`resize${EVENT_KEY$3}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$3}.data-api`,CLASS_NAME_MENU_ITEM="menu-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .nav-item > .nav-link, .list-group-item",SELECTOR_MENU_TOGGLE$1='[data-bs-toggle="menu"]',SCROLL_IDLE_TIMEOUT=100,RESIZE_DEBOUNCE=100,Default$2={rootMargin:null,smoothScroll:!1,target:null,threshold:[0],topMargin:"12%"},DefaultType$2={rootMargin:"(string|null)",smoothScroll:"boolean",target:"element",threshold:"array",topMargin:"string"};class ScrollSpy extends BaseComponent{constructor(e,t){super(e,t),this._sections=[],this._linkBySection=new Map,this._sectionByLink=new Map,this._intersecting=new Set,this._activeTarget=null,this._lastActive=null,this._atBottom=!1,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._observer=null,this._sentinel=null,this._sentinelObserver=null,this._pendingNavigation=null,this._settleTimeout=null,this._settleHandler=null,this._scrollIdleHandler=null,this._resizeHandler=null,this._resizeTimeout=null,this.refresh()}static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?.disconnect(),this._intersecting.clear(),this._observer=this._getNewObserver();for(const e of this._sections)this._observer.observe(e);this._setUpSentinel(),this._maybeAddResizeListener()}dispose(){this._observer?.disconnect(),this._teardownSentinel(),this._disarmSettle(),this._removeResizeListener(),EventHandler.off(this._config.target,EVENT_CLICK$1),super.dispose()}_configAfterMerge(e){return e.target=getElement(e.target)||document.body,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin??this._getDerivedRootMargin()};return new IntersectionObserver(e=>this._onIntersect(e),e)}_onIntersect(e){for(const t of e)t.isIntersecting?this._intersecting.add(t.target):this._intersecting.delete(t.target);this._computeActive()}_computeActive(){if(!this._element?.isConnected||0===this._sections.length)return;let e=null;if(this._atBottom)e=this._sections.at(-1);else{for(const t of this._sections)this._intersecting.has(t)&&(e=t);e||=this._lastActive??this._sections.at(0)}if(!e)return;this._lastActive=e;const t=this._linkBySection.get(e);t&&this._process(t)}_parseTopMargin(){const e=String(this._config.topMargin);return{value:Number.parseFloat(e)||0,unit:e.endsWith("%")?"%":"px"}}_getDerivedRootMargin(){const{value:e,unit:t}=this._parseTopMargin();let n=e;if("px"===t){const t=this._rootElement?this._rootElement.clientHeight:document.documentElement.clientHeight||window.innerHeight;n=t?e/t*100:12}return`0px 0px -${Math.min(Math.max(100-n,0),100)}% 0px`}_usesPixelMargin(){return!this._config.rootMargin&&"px"===this._parseTopMargin().unit}_setUpSentinel(){if(this._teardownSentinel(),0===this._sections.length)return;const e=document.createElement("div");e.setAttribute("aria-hidden","true"),e.style.cssText="position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;",this._element.append(e),this._sentinel=e,this._sentinelObserver=new IntersectionObserver(e=>this._onSentinel(e),{root:this._rootElement,threshold:[0]}),this._sentinelObserver.observe(e)}_onSentinel(e){const t=e.at(-1);this._atBottom=Boolean(t?.isIntersecting)&&this._isOverflowing(),this._computeActive()}_isOverflowing(){const e=this._rootElement||document.scrollingElement||document.documentElement;return e.scrollHeight>e.clientHeight}_teardownSentinel(){this._sentinelObserver?.disconnect(),this._sentinelObserver=null,this._sentinel?.remove(),this._sentinel=null,this._atBottom=!1}_maybeAddResizeListener(){this._removeResizeListener(),this._usesPixelMargin()&&(this._resizeHandler=()=>{clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(()=>this._rebuildObserver(),100)},EventHandler.on(window,EVENT_RESIZE,this._resizeHandler))}_removeResizeListener(){clearTimeout(this._resizeTimeout),this._resizeTimeout=null,this._resizeHandler&&(EventHandler.off(window,EVENT_RESIZE,this._resizeHandler),this._resizeHandler=null)}_rebuildObserver(){if(this._observer){this._observer.disconnect(),this._intersecting.clear(),this._observer=this._getNewObserver();for(const e of this._sections)this._observer.observe(e)}}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK$1),EventHandler.on(this._config.target,EVENT_CLICK$1,"[href]",e=>{const t=e.target.closest("[href]"),n=t&&this._sectionByLink.get(t);if(!n||!this._element)return;e.preventDefault();const s=this._rootElement||window,i=n.offsetTop-this._element.offsetTop,o=this._rootElement?this._rootElement.scrollTop:window.scrollY??window.pageYOffset;if(matchMedia("(prefers-reduced-motion: reduce)").matches||Math.abs(o-i)<=2)return s.scrollTo?s.scrollTo({top:i,behavior:"auto"}):s.scrollTop=i,void this._settleNavigation(t.hash,n);this._pendingNavigation={hash:t.hash,section:n},this._armSettle(),s.scrollTo?s.scrollTo({top:i,behavior:"smooth"}):s.scrollTop=i}))}_armSettle(){this._disarmSettle();const e=this._getSettleTarget();this._settleHandler=()=>this._onSettle(),this._scrollIdleHandler=()=>{clearTimeout(this._settleTimeout),this._settleTimeout=setTimeout(()=>this._onSettle(),100)},EventHandler.on(e,EVENT_SCROLLEND,this._settleHandler),EventHandler.on(e,EVENT_SCROLL,this._scrollIdleHandler)}_disarmSettle(){clearTimeout(this._settleTimeout),this._settleTimeout=null;const e=this._getSettleTarget();this._settleHandler&&(EventHandler.off(e,EVENT_SCROLLEND,this._settleHandler),this._settleHandler=null),this._scrollIdleHandler&&(EventHandler.off(e,EVENT_SCROLL,this._scrollIdleHandler),this._scrollIdleHandler=null)}_getSettleTarget(){return this._rootElement||document}_onSettle(){if(this._disarmSettle(),!this._pendingNavigation)return;const{hash:e,section:t}=this._pendingNavigation;this._settleNavigation(e,t)}_settleNavigation(e,t){this._pendingNavigation=null,window.history?.replaceState&&window.history.replaceState(null,"",e),t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus({preventScroll:!0})}_initializeTargetsAndObservables(){this._sections=[],this._linkBySection=new Map,this._sectionByLink=new Map;const e=SelectorEngine.find("[href]",this._config.target),t=new Set;for(const n of e){if(!n.hash||isDisabled(n))continue;const e=decodeFragment(n.hash.slice(1));if(!e)continue;const s=document.getElementById(e);s&&this._element.contains(s)&&isVisible(s)&&(this._sectionByLink.set(n,s),this._linkBySection.set(s,n),t.has(s)||(t.add(s),this._sections.push(s)))}this._sections.sort((e,t)=>e.getBoundingClientRect().top-t.getBoundingClientRect().top)}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add("active"),this._activateParents(e),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("menu-item")){const t=e.closest(".menu")?.previousElementSibling;return void(t?.matches(SELECTOR_MENU_TOGGLE$1)&&t.classList.add("active"))}for(const t of SelectorEngine.parents(e,".nav, .list-group"))for(const e of SelectorEngine.prev(t,SELECTOR_LINK_ITEMS))e.classList.add("active")}_clearActiveClass(e){e.classList.remove("active");const t=SelectorEngine.find("[href].active",e);for(const e of t)e.classList.remove("active")}}function decodeFragment(e){try{return decodeURIComponent(e)}catch{return e}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(e)});const NAME$2="tab",DATA_KEY$2="bs.tab",EVENT_KEY$2=".bs.tab",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab",EVENT_KEYDOWN="keydown.bs.tab",EVENT_LOAD_DATA_API="load.bs.tab",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",SELECTOR_MENU_TOGGLE='[data-bs-toggle="menu"]',SELECTOR_MENU=".menu",NOT_SELECTOR_MENU_TOGGLE=`:not(${SELECTOR_MENU_TOGGLE})`,SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER=`.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`,SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="tab"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"]';class Tab extends BaseComponent{constructor(e){super(e),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),n=t?EventHandler.trigger(t,EVENT_HIDE$1,{relatedTarget:e}):null;EventHandler.trigger(e,EVENT_SHOW$1,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add("active"),this._activate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleMenu(e,!0),EventHandler.trigger(e,EVENT_SHOWN$1,{relatedTarget:t})):e.classList.add("show")},e,e.classList.contains("fade")))}_deactivate(e,t){e&&(e.classList.remove("active"),e.blur(),this._deactivate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleMenu(e,!1),EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:t})):e.classList.remove("show")},e,e.classList.contains("fade")))}_keydown(e){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(e.key))return;if(e.altKey||e.ctrlKey||e.metaKey)return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(e=>!isDisabled(e));let n;if([HOME_KEY,END_KEY].includes(e.key))n=e.key===HOME_KEY?t[0]:t.at(-1);else{const s=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(e.key);n=getNextActiveElement(t,e.target,s,!0)}n&&(n.focus({preventScroll:!0}),Tab.getOrCreateInstance(n).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=SelectorEngine.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleMenu(e,t){const n=this._getOuterElement(e),s=SelectorEngine.findOne(SELECTOR_MENU_TOGGLE,n);if(!s)return;const i=SelectorEngine.findOne(".menu",n);s.classList.toggle("active",t),i&&i.classList.toggle("show",t),s.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains("active")}_getInnerElement(e){return e.matches(SELECTOR_INNER_ELEM)?e:SelectorEngine.findOne(SELECTOR_INNER_ELEM,e)}_getOuterElement(e){return e.closest(SELECTOR_OUTER)||e}}EventHandler.on(document,"click.bs.tab",SELECTOR_DATA_TOGGLE$1,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()}),EventHandler.on(window,"load.bs.tab",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(e)});const NAME$1="toast",DATA_KEY$1="bs.toast",EVENT_KEY$1=".bs.toast",EVENT_MOUSEOVER="mouseover.bs.toast",EVENT_MOUSEOUT="mouseout.bs.toast",EVENT_FOCUSIN="focusin.bs.toast",EVENT_FOCUSOUT="focusout.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType$1={animation:"boolean",autohide:"boolean",delay:"number"},Default$1={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$1}show(){EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show","showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing","show"),EventHandler.trigger(this._element,EVENT_HIDDEN)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove("show"),super.dispose()}isShown(){return this._element.classList.contains("show")}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,e=>this._onInteraction(e,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}}enableDismissTrigger(Toast);const NAME="toggler",DATA_KEY="bs.toggler",EVENT_KEY=`.${DATA_KEY}`,EVENT_TOGGLE=`toggle${EVENT_KEY}`,EVENT_TOGGLED=`toggled${EVENT_KEY}`,EVENT_CLICK="click",SELECTOR_DATA_TOGGLE='[data-bs-toggle="toggler"]',DefaultType={attribute:"string",value:"(string|number|boolean)"},Default={attribute:"class",value:null};class Toggler extends BaseComponent{static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}toggle(){EventHandler.trigger(this._element,EVENT_TOGGLE).defaultPrevented||(this._execute(),EventHandler.trigger(this._element,EVENT_TOGGLED))}_execute(){const{attribute:e,value:t}=this._config;"id"!==e&&("class"!==e?this._element.getAttribute(e)!==String(t)?this._element.setAttribute(e,t):this._element.removeAttribute(e):this._element.classList.toggle(t))}}eventActionOnPlugin(Toggler,"click",SELECTOR_DATA_TOGGLE,"toggle");export{Alert,Button,Carousel,Chips,Collapse,Combobox,Datepicker,Dialog,Drawer,Menu,NavOverflow,OtpInput,Popover,Range,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
+import{computePosition,autoUpdate,offset,flip,shift,arrow}from"@floating-ui/dom";import{Calendar}from"vanilla-calendar-pro";const elementMap=new Map,Data={set(e,t,n){elementMap.has(e)||elementMap.set(e,new Map);const s=elementMap.get(e);s.has(t)||0===s.size?s.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...s.keys()][0]}.`)},get:(e,t)=>elementMap.has(e)&&elementMap.get(e).get(t)||null,getAny:e=>elementMap.has(e)&&elementMap.get(e).values().next().value||null,remove(e,t){if(!elementMap.has(e))return;const n=elementMap.get(e);n.delete(t),0===n.size&&elementMap.delete(e)}},namespaceRegex=/[^.]*(?=\..*)\.|.*/,stripNameRegex=/\..*/,stripUidRegex=/::\d+$/,eventRegistry={};let uidEvent=1;const customEvents={mouseenter:"mouseover",mouseleave:"mouseout"},nativeEvents=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll","scrollend"]);function makeEventUid(e,t){return t&&`${t}::${uidEvent++}`||e.uidEvent||uidEvent++}function getElementEvents(e){const t=makeEventUid(e);return e.uidEvent=t,eventRegistry[t]=eventRegistry[t]||{},eventRegistry[t]}function bootstrapHandler(e,t){return function n(s){return hydrateObj(s,{delegateTarget:e}),n.oneOff&&EventHandler.off(e,s.type,t),t.apply(e,[s])}}function bootstrapDelegationHandler(e,t,n){return function s(i){const o=e.querySelectorAll(t);for(let{target:r}=i;r&&r!==this;r=r.parentNode)for(const l of o)if(l===r)return hydrateObj(i,{delegateTarget:r}),s.oneOff&&EventHandler.off(e,i.type,t,n),n.apply(r,[i])}}function findHandler(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function normalizeParameters(e,t,n){const s="string"==typeof t,i=s?n:t||n;let o=getTypeEvent(e);return nativeEvents.has(o)||(o=e),[s,i,o]}function addHandler(e,t,n,s,i){if("string"!=typeof t||!e)return;let[o,r,l]=normalizeParameters(t,n,s);if(t in customEvents){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};r=e(r)}const a=getElementEvents(e),c=a[l]||(a[l]={}),_=findHandler(c,r,o?n:null);if(_)return void(_.oneOff=_.oneOff&&i);const h=makeEventUid(r,t.replace(namespaceRegex,"")),u=o?bootstrapDelegationHandler(e,n,r):bootstrapHandler(e,r);u.delegationSelector=o?n:null,u.callable=r,u.oneOff=i,u.uidEvent=h,c[h]=u,e.addEventListener(l,u,o)}function removeHandler(e,t,n,s,i){const o=findHandler(t[n],s,i);o&&(e.removeEventListener(n,o,Boolean(i)),delete t[n][o.uidEvent])}function removeNamespacedHandlers(e,t,n,s){const i=t[n]||{};for(const[o,r]of Object.entries(i))o.includes(s)&&removeHandler(e,t,n,r.callable,r.delegationSelector)}function getTypeEvent(e){return e=e.replace(stripNameRegex,""),customEvents[e]||e}const EventHandler={on(e,t,n,s){addHandler(e,t,n,s,!1)},one(e,t,n,s){addHandler(e,t,n,s,!0)},off(e,t,n,s){if("string"!=typeof t||!e)return;const[i,o,r]=normalizeParameters(t,n,s),l=r!==t,a=getElementEvents(e),c=a[r]||{},_=t.startsWith(".");if(void 0===o){if(_)for(const n of Object.keys(a))removeNamespacedHandlers(e,a,n,t.slice(1));for(const[n,s]of Object.entries(c)){const i=n.replace(stripUidRegex,"");l&&!t.includes(i)||removeHandler(e,a,r,s.callable,s.delegationSelector)}}else{if(!Object.keys(c).length)return;removeHandler(e,a,r,o,i?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const s=hydrateObj(new Event(t,{bubbles:!0,cancelable:!0}),n);return e.dispatchEvent(s),s}};function hydrateObj(e,t={}){for(const[n,s]of Object.entries(t))try{e[n]=s}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>s})}return e}function normalizeData(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function normalizeDataKey(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const Manipulator={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${normalizeDataKey(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${normalizeDataKey(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const s of n){let n=s.replace(/^bs/,"");n=n.charAt(0).toLowerCase()+n.slice(1),t[n]=normalizeData(e.dataset[s])}return t},getDataAttribute:(e,t)=>normalizeData(e.getAttribute(`data-bs-${normalizeDataKey(t)}`))},MAX_UID=1e6,MILLISECONDS_MULTIPLIER=1e3,TRANSITION_END="transitionend",parseSelector=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),toType=e=>null==e?`${e}`:Object.prototype.toString.call(e).match(/\s([a-z]+)/i)[1].toLowerCase(),getUID=e=>{do{e+=Math.floor(1e6*Math.random())}while(document.getElementById(e));return e},getTransitionDurationFromElement=e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const s=Number.parseFloat(t),i=Number.parseFloat(n);return s||i?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0},triggerTransitionEnd=e=>{e.dispatchEvent(new Event(TRANSITION_END))},isElement=e=>!(!e||"object"!=typeof e)&&void 0!==e.nodeType,getElement=e=>isElement(e)?e:"string"==typeof e&&e.length>0?document.querySelector(parseSelector(e)):null,isVisible=e=>{if(!isElement(e)||0===e.getClientRects().length)return!1;const t="visible"===getComputedStyle(e).getPropertyValue("visibility"),n=e.closest("details:not([open])");if(!n)return t;if(n!==e){const t=e.closest("summary");if(t&&t.parentNode!==n)return!1;if(null===t)return!1}return t},isDisabled=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),findShadowRoot=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?findShadowRoot(e.parentNode):null},noop=()=>{},reflow=e=>{e.offsetHeight},isRTL=()=>"rtl"===document.documentElement.dir,execute=(e,t=[],n=e)=>"function"==typeof e?e.call(...t):n,executeAfterTransition=(e,t,n=!0)=>{if(!n)return void execute(e);const s=getTransitionDurationFromElement(t)+5;let i=!1;const o=({target:n})=>{n===t&&(i=!0,t.removeEventListener(TRANSITION_END,o),execute(e))};t.addEventListener(TRANSITION_END,o),setTimeout(()=>{i||triggerTransitionEnd(t)},s)},getNextActiveElement=(e,t,n,s)=>{const i=e.length;let o=e.indexOf(t);return-1===o?!n&&s?e[i-1]:e[0]:(o+=n?1:-1,s&&(o=(o+i)%i),e[Math.max(0,Math.min(o,i-1))])};class Config{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=isElement(t)?Manipulator.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...isElement(t)?Manipulator.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[n,s]of Object.entries(t)){const t=e[n],i=isElement(t)?"element":toType(t);if(!new RegExp(s).test(i))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${i}" but expected type "${s}".`)}}}const VERSION="6.0.0-alpha1";class BaseComponent extends Config{constructor(e,t){if(super(),!(e=getElement(e)))return;this._element=e,this._config=this._getConfig(t);const n=Data.get(this._element,this.constructor.DATA_KEY);n&&n.dispose(),Data.set(this._element,this.constructor.DATA_KEY,this)}dispose(){Data.remove(this._element,this.constructor.DATA_KEY),EventHandler.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){executeAfterTransition(()=>{this._element&&e()},t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return Data.get(getElement(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return VERSION}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const getSelector=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?n.trim():null}return t?t.split(",").map(e=>parseSelector(e)).join(","):null},SelectorEngine={find:(e,t=document.documentElement)=>[...Element.prototype.querySelectorAll.call(t,e)],findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[...e.children].filter(e=>e.matches(t)),parents(e,t){const n=[];let s=e.parentNode.closest(t);for(;s;)n.push(s),s=s.parentNode.closest(t);return n},closest:(e,t)=>Element.prototype.closest.call(e,t),prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!isDisabled(e)&&isVisible(e))},getSelectorFromElement(e){const t=getSelector(e);return t&&SelectorEngine.findOne(t)?t:null},getElementFromSelector(e){const t=getSelector(e);return t?SelectorEngine.findOne(t):null},getMultipleElementsFromSelector(e){const t=getSelector(e);return t?SelectorEngine.find(t):[]}},enableDismissTrigger=(e,t="hide")=>{const n=`click.dismiss${e.EVENT_KEY}`,s=e.NAME;EventHandler.on(document,n,`[data-bs-dismiss="${s}"]`,function(n){if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),isDisabled(this))return;const i=SelectorEngine.getElementFromSelector(this)||this.closest(`.${s}`);e.getOrCreateInstance(i)[t]()})},eventActionOnPlugin=(e,t,n,s,i=null)=>{eventAction(`${t}.${e.NAME}`,n,t=>{const n=t.targets.filter(Boolean).map(t=>e.getOrCreateInstance(t));"function"==typeof i&&i({...t,instances:n});for(const e of n)e[s]()})},eventAction=(e,t,n)=>{const s=`${t}:not(.disabled):not(:disabled)`;EventHandler.on(document,e,s,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault();const t=SelectorEngine.getSelectorFromElement(this),s=t?SelectorEngine.find(t):[this];n({targets:s,event:e})})},NAME$l="alert",DATA_KEY$h="bs.alert",EVENT_KEY$i=".bs.alert",EVENT_CLOSE="close.bs.alert",EVENT_CLOSED="closed.bs.alert",CLASS_NAME_FADE$4="fade",CLASS_NAME_SHOW$6="show";class Alert extends BaseComponent{static get NAME(){return NAME$l}close(){if(EventHandler.trigger(this._element,EVENT_CLOSE).defaultPrevented)return;this._element.classList.remove("show");const e=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,e)}_destroyElement(){this._element.remove(),EventHandler.trigger(this._element,EVENT_CLOSED),this.dispose()}}enableDismissTrigger(Alert,"close");const NAME$k="button",DATA_KEY$g="bs.button",EVENT_KEY$h=`.${DATA_KEY$g}`,DATA_API_KEY$c=".data-api",CLASS_NAME_ACTIVE$4="active",SELECTOR_DATA_TOGGLE$a='[data-bs-toggle="button"]',EVENT_CLICK_DATA_API$8=`click${EVENT_KEY$h}.data-api`;class Button extends BaseComponent{static get NAME(){return NAME$k}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}}EventHandler.on(document,EVENT_CLICK_DATA_API$8,SELECTOR_DATA_TOGGLE$a,e=>{e.preventDefault();const t=e.target.closest(SELECTOR_DATA_TOGGLE$a);Button.getOrCreateInstance(t).toggle()});const NAME$j="carousel",DATA_KEY$f="bs.carousel",EVENT_KEY$g=`.${DATA_KEY$f}`,DATA_API_KEY$b=".data-api",ARROW_LEFT_KEY$2="ArrowLeft",ARROW_RIGHT_KEY$2="ArrowRight",DIRECTION_LEFT="left",DIRECTION_RIGHT="right",EVENT_SLIDE=`slide${EVENT_KEY$g}`,EVENT_SLID=`slid${EVENT_KEY$g}`,EVENT_KEYDOWN$2=`keydown${EVENT_KEY$g}`,EVENT_MOUSEENTER$2=`mouseenter${EVENT_KEY$g}`,EVENT_MOUSELEAVE$1=`mouseleave${EVENT_KEY$g}`,EVENT_POINTERDOWN$1=`pointerdown${EVENT_KEY$g}`,EVENT_LOAD_DATA_API$3=`load${EVENT_KEY$g}.data-api`,EVENT_CLICK_DATA_API$7=`click${EVENT_KEY$g}.data-api`,CLASS_NAME_CAROUSEL="carousel",CLASS_NAME_ACTIVE$3="active",CLASS_NAME_FADE$3="carousel-fade",CLASS_NAME_CENTER="carousel-center",CLASS_NAME_AUTO="carousel-auto",CLASS_NAME_CLONE="carousel-item-clone",CLASS_NAME_PAUSED="paused",CLASS_NAME_PLAYING="carousel-playing",PROPERTY_INTERVAL="--bs-carousel-interval",SCROLL_DURATION=300,ACTIVE_RATIO_TOLERANCE=.05,SELECTOR_ACTIVE=".active",SELECTOR_ITEM=`.carousel-item:not(.${CLASS_NAME_CLONE})`,SELECTOR_ACTIVE_ITEM=".active"+SELECTOR_ITEM,SELECTOR_INNER$1=".carousel-inner",SELECTOR_INDICATORS=".carousel-indicators",SELECTOR_PLAY_PAUSE=".carousel-control-play-pause",SELECTOR_DATA_SLIDE="[data-bs-slide], [data-bs-slide-to]",SELECTOR_DATA_SLIDE_PREV='[data-bs-slide="prev"]',SELECTOR_DATA_SLIDE_NEXT='[data-bs-slide="next"]',SELECTOR_DATA_AUTOPLAY='[data-bs-autoplay="true"]',KEY_TO_DIRECTION={[ARROW_LEFT_KEY$2]:"right",[ARROW_RIGHT_KEY$2]:"left"},ENDS_STOP="stop",ENDS_WRAP="wrap",ENDS_LOOP="loop",Default$i={autoplay:!1,ends:ENDS_LOOP,interval:5e3,keyboard:!0,pause:"hover"},DefaultType$i={autoplay:"boolean",ends:"string",interval:"number",keyboard:"boolean",pause:"(string|boolean)"},easeInOutCubic=e=>e<.5?4*e*e*e:1-(-2*e+2)**3/2;class Carousel extends BaseComponent{constructor(e,t){super(e,t),this._viewport=SelectorEngine.findOne(SELECTOR_INNER$1,this._element)||this._element,this._indicatorsElement=SelectorEngine.findOne(SELECTOR_INDICATORS,this._element),this._playPauseElement=SelectorEngine.findOne(SELECTOR_PLAY_PAUSE,this._element),this._prevControls=SelectorEngine.find('[data-bs-slide="prev"]',this._element),this._nextControls=SelectorEngine.find('[data-bs-slide="next"]',this._element),this._interval=null,this._observer=null,this._scrollFrame=null,this._looping=!1,this._visibility=new Map,this._playing=this._config.autoplay,this._activeIndex=this._initialActiveIndex(),this._addEventListeners(),this._observeItems(),this._refreshActiveState(),this._playing&&this.cycle(),this._updatePlayPauseControl()}static get Default(){return Default$i}static get DefaultType(){return DefaultType$i}static get NAME(){return NAME$j}next(){this.to(this._navIndex()+1)}nextWhenVisible(){"visible"===document.visibilityState&&isVisible(this._element)&&this.next()}prev(){this.to(this._navIndex()-1)}pause(){this._clearInterval(),this._element.classList.remove("carousel-playing")}cycle(){this._clearInterval(),this._scheduleAutoplay(),this._element.classList.add("carousel-playing")}to(e){if(this._looping)return;const t=this._getItems(),n=Number.parseInt(e,10);if(this._config.ends===ENDS_LOOP&&!this._prefersReducedMotion()&&this._canLoop()){if(n>t.length-1)return void this._loopTransition(!0);if(n<0)return void this._loopTransition(!1)}const s=this._normalizeIndex(n,t.length),i=this._navIndex();null!==s&&s!==i&&(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[s],direction:this._direction(i,s),from:i,to:s}).defaultPrevented||(this._isFade()?this._fadeTo(s):this._scrollToIndex(s)))}dispose(){this._clearInterval(),this._observer&&this._observer.disconnect(),null!==this._scrollFrame&&cancelAnimationFrame(this._scrollFrame);for(const e of SelectorEngine.find(`.${CLASS_NAME_CLONE}`,this._viewport))e.remove();this._viewport.style.scrollSnapType="",EventHandler.off(this._viewport,EVENT_KEY$g),super.dispose()}_configAfterMerge(e){return[ENDS_STOP,ENDS_WRAP,ENDS_LOOP].includes(e.ends)||(e.ends=Default$i.ends),e}_initialActiveIndex(){const e=SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM,this._element),t=e?this._getItems().indexOf(e):0;return Math.max(t,0)}_addEventListeners(){this._config.keyboard&&EventHandler.on(this._element,EVENT_KEYDOWN$2,e=>this._keydown(e)),"hover"===this._config.pause&&(EventHandler.on(this._element,EVENT_MOUSEENTER$2,()=>this.pause()),EventHandler.on(this._element,EVENT_MOUSELEAVE$1,()=>this._maybeEnableCycle())),EventHandler.on(this._viewport,EVENT_POINTERDOWN$1,()=>this._pauseFromInteraction())}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=KEY_TO_DIRECTION[e.key];t&&(e.preventDefault(),this._pauseFromInteraction(),"right"===t?this.prev():this.next())}_observeItems(){if(!this._isFade()&&"undefined"!=typeof IntersectionObserver){this._observer=new IntersectionObserver(e=>this._handleIntersection(e),{root:this._viewport,threshold:[0,.25,.5,.75,1]});for(const e of this._getItems())this._observer.observe(e)}}_handleIntersection(e){if(this._looping)return;for(const t of e)this._visibility.set(t.target,t.isIntersecting?t.intersectionRatio:0);const t=this._getItems().map(e=>this._visibility.get(e)??0),n=Math.max(...t);let s=this._activeIndex;n>0&&(s=t.findIndex(e=>e>=n-.05)),this._setActive(s),this._updateEndControls()}_navIndex(){if(this._isFade()||this._viewport.scrollWidth-this._viewport.clientWidth<=0)return this._activeIndex;let e=this._activeIndex,t=Number.POSITIVE_INFINITY;for(const[n,s]of this._getItems().entries()){const i=Math.abs(this._scrollDelta(s));i<t&&(t=i,e=n)}return e}_scrollToIndex(e){const t=this._getItems()[e];if(!t)return;const n=this._scrollDelta(t);if(Math.abs(n)<1)return;const s=this._viewport.scrollLeft+n;this._viewport.style.scrollSnapType="none",this._animateScroll(s,()=>{this._viewport.style.scrollSnapType="",this._observer||this._setActive(e),this._updateEndControls()})}_animateScroll(e,t){null!==this._scrollFrame&&(cancelAnimationFrame(this._scrollFrame),this._scrollFrame=null);const n=this._viewport.scrollLeft,s=e-n;if(this._prefersReducedMotion()||"undefined"==typeof requestAnimationFrame)return this._viewport.scrollTo({left:e,behavior:"instant"}),void t();let i=null;const o=r=>{null===i&&(i=r);const l=Math.min((r-i)/300,1);this._viewport.scrollTo({left:n+s*easeInOutCubic(l),behavior:"instant"}),l<1?this._scrollFrame=requestAnimationFrame(o):(this._viewport.scrollTo({left:e,behavior:"instant"}),this._scrollFrame=null,t())};this._scrollFrame=requestAnimationFrame(o)}_scrollDelta(e){const t=this._viewport.getBoundingClientRect(),n=e.getBoundingClientRect();if(this._element.classList.contains("carousel-center"))return n.left+n.width/2-(t.left+t.width/2);const s=Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart)||0;return isRTL()?n.right-(t.right-s):n.left-(t.left+s)}_loopTransition(e){const t=this._getItems(),n=t.length-1,s=this._activeIndex,i=e?0:n,o=this._loopDirection(e);if(EventHandler.trigger(this._element,EVENT_SLIDE,{relatedTarget:t[i],direction:o,from:s,to:i}).defaultPrevented)return;this._looping=!0;const r=(e?t[0]:t[n]).cloneNode(!0);r.classList.add(CLASS_NAME_CLONE),r.classList.remove("active"),r.removeAttribute("id");for(const e of SelectorEngine.find("[id]",r))e.removeAttribute("id");r.setAttribute("aria-hidden","true"),r.inert=!0,this._viewport.style.scrollSnapType="none",e?this._viewport.append(r):(this._viewport.prepend(r),this._jumpScroll(this._scrollDelta(t[s]))),this._animateScroll(this._viewport.scrollLeft+this._scrollDelta(r),()=>{r.remove(),this._jumpScroll(this._scrollDelta(t[i])),this._activeIndex=i,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[i],direction:o,from:s,to:i}),this._viewport.style.scrollSnapType="",this._looping=!1})}_loopDirection(e){return isRTL()?e?"right":"left":e?"left":"right"}_jumpScroll(e){this._viewport.style.scrollSnapType="none",this._viewport.scrollBy({left:e,top:0,behavior:"instant"})}_fadeTo(e){this._setActive(e)}_setActive(e){const t=this._getItems();if(e===this._activeIndex||!t[e])return;const n=this._activeIndex;this._activeIndex=e,this._refreshActiveState(),EventHandler.trigger(this._element,EVENT_SLID,{relatedTarget:t[e],direction:this._direction(n,e),from:n,to:e})}_refreshActiveState(){const e=this._getItems();for(const[t,n]of e.entries())n.classList.toggle("active",t===this._activeIndex);this._setActiveIndicatorElement(this._activeIndex),this._updateEndControls()}_updateEndControls(){if(this._config.ends!==ENDS_STOP)return;const e=this._viewport,t=e.scrollWidth-e.clientWidth;let n,s;if(t>0){const i=Math.abs(e.scrollLeft);n=i<=1,s=i>=t-1}else{const e=this._getItems().length-1;n=this._activeIndex<=0,s=this._activeIndex>=e}this._setControlsDisabled(this._prevControls,n),this._setControlsDisabled(this._nextControls,s)}_setControlsDisabled(e,t){for(const n of e)t&&n===document.activeElement&&((e===this._prevControls?this._nextControls:this._prevControls)[0]??this._viewport).focus({preventScroll:!0}),n.disabled=t}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const t=SelectorEngine.findOne(".active",this._indicatorsElement);t&&(t.classList.remove("active"),t.removeAttribute("aria-current"));const n=SelectorEngine.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add("active"),n.setAttribute("aria-current","true"))}_normalizeIndex(e,t){return Number.isNaN(e)||0===t?null:e<0?this._wrapsAround()?t-1:null:e>t-1?this._wrapsAround()?0:null:e}_wrapsAround(){return this._config.ends===ENDS_WRAP||this._config.ends===ENDS_LOOP}_canLoop(){if(this._isFade()||this._getItems().length<2)return!1;const e=getComputedStyle(this._element),t=t=>Number.parseFloat(e.getPropertyValue(t))||0;return 1===(t("--bs-carousel-items")||1)&&0===t("--bs-carousel-items-peek")&&!this._element.classList.contains("carousel-center")&&!this._element.classList.contains("carousel-auto")}_direction(e,t){const n=t>e;return isRTL()?n?"right":"left":n?"left":"right"}_scheduleAutoplay(e=this._activeIndex){const t=this._itemInterval(e);this._element.style.setProperty(PROPERTY_INTERVAL,`${t}ms`),this._interval=setTimeout(()=>{const e=this._upcomingIndex();this.nextWhenVisible(),null!==e?this._scheduleAutoplay(e):this.pause()},t)}_upcomingIndex(){return this._normalizeIndex(this._navIndex()+1,this._getItems().length)}_itemInterval(e=this._activeIndex){const t=this._getItems()[e],n=t?Number.parseInt(t.getAttribute("data-bs-interval"),10):Number.NaN;return Number.isNaN(n)?this._config.interval:n}_maybeEnableCycle(){this._playing&&this.cycle()}_pauseFromInteraction(){this._playing=!1,this.pause(),this._updatePlayPauseControl()}_togglePlayPause(){this._playing?this._pauseFromInteraction():(this._playing=!0,this.cycle(),this._updatePlayPauseControl())}_updatePlayPauseControl(){if(!this._playPauseElement)return;this._playPauseElement.classList.toggle("paused",!this._playing);const e=this._playPauseElement.getAttribute(this._playing?"data-bs-pause-label":"data-bs-play-label");e&&this._playPauseElement.setAttribute("aria-label",e)}_isFade(){return this._element.classList.contains("carousel-fade")}_prefersReducedMotion(){return"undefined"!=typeof window&&"function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}_getItems(){return SelectorEngine.find(SELECTOR_ITEM,this._element)}_clearInterval(){this._interval&&(clearTimeout(this._interval),this._interval=null)}}EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_DATA_SLIDE,function(e){const t=SelectorEngine.getElementFromSelector(this);if(!t||!t.classList.contains("carousel"))return;e.preventDefault();const n=Carousel.getOrCreateInstance(t);n._pauseFromInteraction();const s=this.getAttribute("data-bs-slide-to");s?n.to(s):"next"!==Manipulator.getDataAttribute(this,"slide")?n.prev():n.next()}),EventHandler.on(document,EVENT_CLICK_DATA_API$7,SELECTOR_PLAY_PAUSE,function(e){const t=SelectorEngine.getElementFromSelector(this);t&&t.classList.contains("carousel")&&(e.preventDefault(),Carousel.getOrCreateInstance(t)._togglePlayPause())}),EventHandler.on(window,EVENT_LOAD_DATA_API$3,()=>{const e=SelectorEngine.find(SELECTOR_DATA_AUTOPLAY);for(const t of e)Carousel.getOrCreateInstance(t)});const NAME$i="collapse",DATA_KEY$e="bs.collapse",EVENT_KEY$f=`.${DATA_KEY$e}`,DATA_API_KEY$a=".data-api",EVENT_SHOW$7=`show${EVENT_KEY$f}`,EVENT_SHOWN$6=`shown${EVENT_KEY$f}`,EVENT_HIDE$6=`hide${EVENT_KEY$f}`,EVENT_HIDDEN$8=`hidden${EVENT_KEY$f}`,EVENT_CLICK_DATA_API$6=`click${EVENT_KEY$f}.data-api`,CLASS_NAME_SHOW$5="show",CLASS_NAME_COLLAPSE="collapse",CLASS_NAME_COLLAPSING="collapsing",CLASS_NAME_COLLAPSED="collapsed",CLASS_NAME_DEEPER_CHILDREN=":scope .collapse .collapse",CLASS_NAME_HORIZONTAL="collapse-horizontal",WIDTH="width",HEIGHT="height",SELECTOR_ACTIVES=".collapse.show, .collapse.collapsing",SELECTOR_DATA_TOGGLE$9='[data-bs-toggle="collapse"]',Default$h={parent:null,toggle:!0},DefaultType$h={parent:"(null|element)",toggle:"boolean"};class Collapse extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._triggerArray=[];const n=SelectorEngine.find(SELECTOR_DATA_TOGGLE$9);for(const e of n){const t=SelectorEngine.getSelectorFromElement(e),n=SelectorEngine.find(t).filter(e=>e===this._element);null!==t&&n.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Default$h}static get DefaultType(){return DefaultType$h}static get NAME(){return NAME$i}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let e=[];if(this._config.parent&&(e=this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(e=>e!==this._element).map(e=>Collapse.getOrCreateInstance(e,{toggle:!1}))),e.length&&e[0]._isTransitioning)return;if(EventHandler.trigger(this._element,EVENT_SHOW$7).defaultPrevented)return;for(const t of e)t.hide();const t=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const n=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[t]="",EventHandler.trigger(this._element,EVENT_SHOWN$6)},this._element,!0),this._element.style[t]=`${this._element[n]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(EventHandler.trigger(this._element,EVENT_HIDE$6).defaultPrevented)return;const e=this._getDimension();this._element.style[e]=`${this._element.getBoundingClientRect()[e]}px`,reflow(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");for(const e of this._triggerArray){const t=SelectorEngine.getElementFromSelector(e);t&&!this._isShown(t)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[e]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),EventHandler.trigger(this._element,EVENT_HIDDEN$8)},this._element,!0)}_isShown(e=this._element){return e.classList.contains("show")}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=getElement(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?WIDTH:HEIGHT}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$9);for(const t of e){const e=SelectorEngine.getElementFromSelector(t);e&&this._addAriaAndCollapsedClass([t],this._isShown(e))}}_getFirstLevelChildren(e){const t=SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN,this._config.parent);return SelectorEngine.find(e,this._config.parent).filter(e=>!t.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}}EventHandler.on(document,EVENT_CLICK_DATA_API$6,SELECTOR_DATA_TOGGLE$9,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of SelectorEngine.getMultipleElementsFromSelector(this))Collapse.getOrCreateInstance(e,{toggle:!1}).toggle()});const BREAKPOINTS={sm:576,md:768,lg:1024,xl:1280,"2xl":1536},parseResponsivePlacement=(e,t="bottom")=>{if(!e||!e.includes(":"))return null;const n=e.split(/\s+/),s={xs:t};for(const e of n)if(e.includes(":")){const[t,n]=e.split(":");void 0!==BREAKPOINTS[t]&&(s[t]=n)}else s.xs=e;return s},getResponsivePlacement=(e,t="bottom")=>{if(!e)return t;const n=window.innerWidth;let s=e.xs||t;const i=["sm","md","lg","xl","2xl"];for(const t of i)n>=BREAKPOINTS[t]&&e[t]&&(s=e[t]);return s},createBreakpointListeners=e=>{const t=[];for(const n of Object.keys(BREAKPOINTS)){const s=BREAKPOINTS[n],i=window.matchMedia(`(min-width: ${s}px)`);i.addEventListener("change",e),t.push({mql:i,handler:e})}return t},disposeBreakpointListeners=e=>{for(const{mql:t,handler:n}of e)t.removeEventListener("change",n)},NAME$h="menu",DATA_KEY$d="bs.menu",EVENT_KEY$e=".bs.menu",DATA_API_KEY$9=".data-api",ESCAPE_KEY$2="Escape",TAB_KEY$1="Tab",ARROW_UP_KEY$2="ArrowUp",ARROW_DOWN_KEY$2="ArrowDown",ARROW_LEFT_KEY$1="ArrowLeft",ARROW_RIGHT_KEY$1="ArrowRight",HOME_KEY$2="Home",END_KEY$2="End",ENTER_KEY$1="Enter",SPACE_KEY$1=" ",RIGHT_MOUSE_BUTTON=2,SUBMENU_CLOSE_DELAY=100,EVENT_HIDE$5="hide.bs.menu",EVENT_HIDDEN$7="hidden.bs.menu",EVENT_SHOW$6="show.bs.menu",EVENT_SHOWN$5="shown.bs.menu",EVENT_CLICK_DATA_API$5="click.bs.menu.data-api",EVENT_KEYDOWN_DATA_API="keydown.bs.menu.data-api",EVENT_KEYUP_DATA_API="keyup.bs.menu.data-api",CLASS_NAME_SHOW$4="show",SELECTOR_DATA_TOGGLE$8='[data-bs-toggle="menu"]:not(.disabled):not(:disabled)',SELECTOR_MENU$2=".menu",SELECTOR_SUBMENU=".submenu",SELECTOR_SUBMENU_TOGGLE=".submenu > .menu-item",SELECTOR_NAVBAR_NAV=".navbar-nav",SELECTOR_VISIBLE_ITEMS$1=".menu-item:not(.disabled):not(:disabled)",DEFAULT_PLACEMENT="bottom-start",SUBMENU_PLACEMENT="end-start",resolveLogicalPlacement=e=>isRTL()?e.replace(/^start(?=-|$)/,"right").replace(/^end(?=-|$)/,"left"):e.replace(/^start(?=-|$)/,"left").replace(/^end(?=-|$)/,"right"),triangleSign=(e,t,n)=>(e.x-n.x)*(t.y-n.y)-(t.x-n.x)*(e.y-n.y),Default$g={autoClose:!0,boundary:"clippingParents",container:!1,display:"dynamic",offset:[0,2],floatingConfig:null,menu:null,placement:"bottom-start",reference:"toggle",strategy:"absolute",submenuTrigger:"both",submenuDelay:100},DefaultType$g={autoClose:"(boolean|string)",boundary:"(string|element)",container:"(string|element|boolean)",display:"string",offset:"(array|string|function)",floatingConfig:"(null|object|function)",menu:"(null|element)",placement:"string",reference:"(string|element|object)",strategy:"string",submenuTrigger:"string",submenuDelay:"number"};class Menu extends BaseComponent{static _openInstances=new Set;constructor(e,t){if(void 0===computePosition)throw new TypeError("Bootstrap's menus require Floating UI (https://floating-ui.com)");super(e,t),this._floatingCleanup=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this._parent=this._element.parentNode,this._openSubmenus=new Map,this._submenuCloseTimeouts=new Map,this._hoverIntentData=null,this._menu=this._config.menu||this._findMenu(),!this._config.menu&&this._menu&&(this._parent=this._findWrapper(this._menu)),this._isSubmenu=this._parent.classList?.contains("submenu"),this._menuOriginalParent=this._menu?.parentNode,this._parseResponsivePlacements(),this._setupSubmenuListeners()}static get Default(){return Default$g}static get DefaultType(){return DefaultType$g}static get NAME(){return"menu"}toggle(){return this._isShown()?this.hide():this.show()}show(){if(isDisabled(this._element)||this._isShown())return;const e={relatedTarget:this._element};if(!EventHandler.trigger(this._element,EVENT_SHOW$6,e).defaultPrevented){if(this._moveMenuToContainer(),this._createFloating(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const e of document.body.children)EventHandler.on(e,"mouseover",noop);this._element.focus({focusVisible:!1}),this._element.setAttribute("aria-expanded","true"),this._menu.classList.add("show"),this._element.classList.add("show"),this._parent&&this._parent.classList.add("show"),Menu._openInstances.add(this),EventHandler.trigger(this._element,EVENT_SHOWN$5,e)}}hide(){if(isDisabled(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._disposeFloating(),this._restoreMenuToOriginalParent(),this._disposeMediaQueryListeners(),this._closeAllSubmenus(),this._clearAllSubmenuTimeouts(),Menu._openInstances.delete(this),super.dispose()}update(){this._floatingCleanup&&this._updateFloatingPosition()}_findMenu(){const e=SelectorEngine.closest(this._element,":has(.menu)");return SelectorEngine.next(this._element,".menu")[0]||SelectorEngine.prev(this._element,".menu")[0]||SelectorEngine.findOne(".menu",e||this._parent)}_findWrapper(e){let t=this._element.parentNode;for(;t instanceof Element&&!t.contains(e);)t=t.parentNode;return t instanceof Element?t:this._element.parentNode}_completeHide(e){if(!EventHandler.trigger(this._element,EVENT_HIDE$5,e).defaultPrevented){if(this._closeAllSubmenus(),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.off(e,"mouseover",noop);this._disposeFloating(),this._restoreMenuToOriginalParent(),this._menu.classList.remove("show"),this._element.classList.remove("show"),this._parent&&this._parent.classList.remove("show"),this._element.setAttribute("aria-expanded","false"),Manipulator.removeDataAttribute(this._menu,"placement"),Manipulator.removeDataAttribute(this._menu,"display"),Menu._openInstances.delete(this),EventHandler.trigger(this._element,EVENT_HIDDEN$7,e)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!isElement(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${"menu".toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createFloating(){if("static"===this._config.display)return void Manipulator.setDataAttribute(this._menu,"display","static");let e=this._element;"parent"===this._config.reference?e=this._parent:isElement(this._config.reference)?e=getElement(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference),this._updateFloatingPosition(e),this._floatingCleanup=autoUpdate(e,this._menu,()=>this._updateFloatingPosition(e))}async _updateFloatingPosition(e=null){if(!this._menu)return;e||(e="parent"===this._config.reference?this._parent:isElement(this._config.reference)?getElement(this._config.reference):"object"==typeof this._config.reference?this._config.reference:this._element);const t=this._getPlacement(),n=this._getFloatingMiddleware(),s=this._getFloatingConfig(t,n);await this._applyFloatingPosition(e,this._menu,s.placement,s.middleware,s.strategy)}_isShown(){return this._menu.classList.contains("show")}_getPlacement(){const e=this._responsivePlacements?getResponsivePlacement(this._responsivePlacements,"bottom-start"):this._config.placement;return resolveLogicalPlacement(e)}_parseResponsivePlacements(){this._responsivePlacements=parseResponsivePlacement(this._config.placement,"bottom-start"),this._responsivePlacements&&this._setupMediaQueryListeners()}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_getFloatingMiddleware(){const e=this._getOffset();return[offset("function"==typeof e?e:{mainAxis:e[1]||0,crossAxis:e[0]||0}),flip({fallbackPlacements:this._getFallbackPlacements()}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})]}_getFallbackPlacements(){return{bottom:["top","bottom-start","bottom-end","top-start","top-end"],"bottom-start":["top-start","bottom-end","top-end"],"bottom-end":["top-end","bottom-start","top-start"],top:["bottom","top-start","top-end","bottom-start","bottom-end"],"top-start":["bottom-start","top-end","bottom-end"],"top-end":["bottom-end","top-start","bottom-start"],right:["left","right-start","right-end","left-start","left-end"],"right-start":["left-start","right-end","left-end","top-start","bottom-start"],"right-end":["left-end","right-start","left-start","top-end","bottom-end"],left:["right","left-start","left-end","right-start","right-end"],"left-start":["right-start","left-end","right-end","top-start","bottom-start"],"left-end":["right-end","left-start","right-start","top-end","bottom-end"]}[this._getPlacement()]||["top","bottom","right","left"]}_getFloatingConfig(e,t){const n={placement:e,middleware:t,strategy:this._config.strategy};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null)}_getContainer(){const{container:e}=this._config;return!1===e?null:!0===e?document.body:getElement(e)}_moveMenuToContainer(){const e=this._getContainer();e&&this._menu&&this._menu.parentNode!==e&&e.append(this._menu)}_restoreMenuToOriginalParent(){this._menuOriginalParent&&this._menu&&this._menu.parentNode!==this._menuOriginalParent&&this._menuOriginalParent.append(this._menu)}async _applyFloatingPosition(e,t,n,s,i="absolute"){if(!t.isConnected)return null;const{x:o,y:r,placement:l}=await computePosition(e,t,{placement:n,middleware:s,strategy:i});return t.isConnected?(Object.assign(t.style,{position:i,left:`${o}px`,top:`${r}px`,margin:"0"}),Manipulator.setDataAttribute(t,"placement",l),l):null}_setupSubmenuListeners(){"hover"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||(EventHandler.on(this._menu,"mouseenter",".submenu > .menu-item",e=>{this._onSubmenuTriggerEnter(e)}),EventHandler.on(this._menu,"mouseleave",".submenu",e=>{this._onSubmenuLeave(e)}),EventHandler.on(this._menu,"mousemove",e=>{this._trackMousePosition(e)})),"click"!==this._config.submenuTrigger&&"both"!==this._config.submenuTrigger||EventHandler.on(this._menu,"click",".submenu > .menu-item",e=>{this._onSubmenuTriggerClick(e)})}_onSubmenuTriggerEnter(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;const n=t.closest(".submenu"),s=SelectorEngine.findOne(".menu",n);s&&(this._cancelSubmenuCloseTimeout(s),this._closeSiblingSubmenus(n),this._openSubmenu(t,s,n))}_onSubmenuLeave(e){const t=e.target.closest(".submenu"),n=SelectorEngine.findOne(".menu",t);n&&this._openSubmenus.has(n)&&(this._isMovingTowardSubmenu(e,n)||this._scheduleSubmenuClose(n,t))}_onSubmenuTriggerClick(e){const t=e.target.closest(".submenu > .menu-item");if(!t)return;e.preventDefault(),e.stopPropagation();const n=t.closest(".submenu"),s=SelectorEngine.findOne(".menu",n);s&&(this._openSubmenus.has(s)?this._closeSubmenu(s,n):(this._closeSiblingSubmenus(n),this._openSubmenu(t,s,n)))}_openSubmenu(e,t,n){if(this._openSubmenus.has(t))return;e.setAttribute("aria-expanded","true"),e.setAttribute("aria-haspopup","true"),t.style.opacity="0",t.classList.add("show"),n.classList.add("show");const s=this._createSubmenuFloating(e,t,n);this._openSubmenus.set(t,s),EventHandler.on(t,"mouseenter",()=>{this._cancelSubmenuCloseTimeout(t)})}_closeSubmenu(e,t){if(!this._openSubmenus.has(e))return;const n=SelectorEngine.find(".submenu .menu.show",e);for(const e of n){const t=e.closest(".submenu");this._closeSubmenu(e,t)}const s=SelectorEngine.findOne(".submenu > .menu-item",t),i=this._openSubmenus.get(e);i&&i(),this._openSubmenus.delete(e),EventHandler.off(e,"mouseenter"),s&&s.setAttribute("aria-expanded","false"),e.classList.remove("show"),t.classList.remove("show"),e.style.opacity=""}_closeAllSubmenus(){for(const[e]of this._openSubmenus){const t=e.closest(".submenu");this._closeSubmenu(e,t)}}_closeSiblingSubmenus(e){const t=e.parentNode,n=SelectorEngine.find(".submenu > .menu.show",t);for(const t of n){const n=t.closest(".submenu");n!==e&&this._closeSubmenu(t,n)}}_createSubmenuFloating(e,t,n){const s=n,i=resolveLogicalPlacement("end-start"),o=[offset({mainAxis:0,crossAxis:-4}),flip({fallbackPlacements:[resolveLogicalPlacement("start-start"),resolveLogicalPlacement("end-end"),resolveLogicalPlacement("start-end")]}),shift({padding:8})],r=()=>this._applyFloatingPosition(s,t,i,o).then(e=>(t.style.opacity="",e));return r(),autoUpdate(s,t,r)}_scheduleSubmenuClose(e,t){this._cancelSubmenuCloseTimeout(e);const n=setTimeout(()=>{this._closeSubmenu(e,t),this._submenuCloseTimeouts.delete(e)},this._config.submenuDelay);this._submenuCloseTimeouts.set(e,n)}_cancelSubmenuCloseTimeout(e){const t=this._submenuCloseTimeouts.get(e);t&&(clearTimeout(t),this._submenuCloseTimeouts.delete(e))}_clearAllSubmenuTimeouts(){for(const e of this._submenuCloseTimeouts.values())clearTimeout(e);this._submenuCloseTimeouts.clear()}_trackMousePosition(e){this._hoverIntentData={x:e.clientX,y:e.clientY,timestamp:Date.now()}}_isMovingTowardSubmenu(e,t){if(!this._hoverIntentData)return!1;const n=t.getBoundingClientRect(),s={x:e.clientX,y:e.clientY},i={x:this._hoverIntentData.x,y:this._hoverIntentData.y},o=isRTL()?n.right:n.left,r={x:o,y:n.top},l={x:o,y:n.bottom};return this._pointInTriangle(s,i,r,l)}_pointInTriangle(e,t,n,s){const i=triangleSign(e,t,n),o=triangleSign(e,n,s),r=triangleSign(e,s,t);return!((i<0||o<0||r<0)&&(i>0||o>0||r>0))}_selectMenuItem({key:e,target:t}){const n=t.closest(".menu")||this._menu,s=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,n).filter(e=>isVisible(e));s.length&&getNextActiveElement(s,t,e===ARROW_DOWN_KEY$2,!s.includes(t)).focus()}_handleSubmenuKeydown(e){const{key:t,target:n}=e,s=isRTL(),i=s?ARROW_LEFT_KEY$1:ARROW_RIGHT_KEY$1,o=s?ARROW_RIGHT_KEY$1:ARROW_LEFT_KEY$1,r=n.closest(".submenu"),l=r&&n.matches(".submenu > .menu-item");if((t===ENTER_KEY$1||t===SPACE_KEY$1)&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===i&&l){e.preventDefault(),e.stopPropagation();const t=SelectorEngine.findOne(".menu",r);return t&&(this._closeSiblingSubmenus(r),this._openSubmenu(n,t,r),requestAnimationFrame(()=>{const e=SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS$1,t);e&&e.focus()})),!0}if(t===o){const t=n.closest(".menu"),s=t?.closest(".submenu");if(s){e.preventDefault(),e.stopPropagation();const n=SelectorEngine.findOne(".submenu > .menu-item",s);return this._closeSubmenu(t,s),n&&n.focus(),!0}}if(t===HOME_KEY$2||t===END_KEY$2){e.preventDefault(),e.stopPropagation();const s=n.closest(".menu"),i=SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS$1}`,s).filter(e=>isVisible(e));return i.length&&(t===HOME_KEY$2?i[0]:i.at(-1)).focus(),!0}return!1}static clearMenus(e){if(2!==e.button&&("keyup"!==e.type||"Tab"===e.key))for(const t of Menu._openInstances){if(!1===t._config.autoClose)continue;const n=e.composedPath(),s=n.includes(t._menu);if(n.includes(t._element)||"inside"===t._config.autoClose&&!s||"outside"===t._config.autoClose&&s)continue;const i=e.target.closest?.("form"),o=Boolean(i)&&t._menu.contains(i);if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)||o))continue;const r={relatedTarget:t._element};"click"===e.type&&(r.clickEvent=e),t._completeHide(r)}}static dataApiKeydownHandler(e){const t=/input|textarea/i.test(e.target.tagName)||e.target.isContentEditable,n="Escape"===e.key,s=[ARROW_UP_KEY$2,ARROW_DOWN_KEY$2].includes(e.key),i=[ARROW_LEFT_KEY$1,ARROW_RIGHT_KEY$1].includes(e.key),o=[HOME_KEY$2,END_KEY$2].includes(e.key),r=[ENTER_KEY$1,SPACE_KEY$1].includes(e.key),l=e.target.matches(".submenu > .menu-item");if(!(s||n||i||o||r&&l))return;if(t&&!n)return;const a=this.matches(SELECTOR_DATA_TOGGLE$8)?this:SelectorEngine.prev(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.next(this,SELECTOR_DATA_TOGGLE$8)[0]||SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$8,e.delegateTarget.parentNode);if(!a)return;const c=Menu.getOrCreateInstance(a);if(!(i||o||r&&l)||!c._handleSubmenuKeydown(e)){if(s)return e.preventDefault(),e.stopPropagation(),c.show(),void c._selectMenuItem(e);if(n&&c._isShown()){e.preventDefault(),e.stopPropagation();const t=e.target.closest(".menu"),n=t?.closest(".submenu");if(n&&c._openSubmenus.size>0){const e=SelectorEngine.findOne(".submenu > .menu-item",n);return c._closeSubmenu(t,n),void(e&&e.focus())}c.hide(),a.focus()}}}}EventHandler.on(document,EVENT_KEYDOWN_DATA_API,SELECTOR_DATA_TOGGLE$8,Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_KEYDOWN_DATA_API,".menu",Menu.dataApiKeydownHandler),EventHandler.on(document,EVENT_CLICK_DATA_API$5,Menu.clearMenus),EventHandler.on(document,EVENT_KEYUP_DATA_API,Menu.clearMenus),EventHandler.on(document,EVENT_CLICK_DATA_API$5,SELECTOR_DATA_TOGGLE$8,function(e){e.preventDefault(),Menu.getOrCreateInstance(this).toggle()});const NAME$g="combobox",DATA_KEY$c="bs.combobox",EVENT_KEY$d=`.${DATA_KEY$c}`,DATA_API_KEY$8=".data-api",ESCAPE_KEY$1="Escape",TAB_KEY="Tab",ARROW_UP_KEY$1="ArrowUp",ARROW_DOWN_KEY$1="ArrowDown",HOME_KEY$1="Home",END_KEY$1="End",ENTER_KEY="Enter",SPACE_KEY=" ",EVENT_CHANGE$3=`change${EVENT_KEY$d}`,EVENT_SHOW$5=`show${EVENT_KEY$d}`,EVENT_SHOWN$4=`shown${EVENT_KEY$d}`,EVENT_HIDE$4=`hide${EVENT_KEY$d}`,EVENT_HIDDEN$6=`hidden${EVENT_KEY$d}`,EVENT_CLICK_DATA_API$4=`click${EVENT_KEY$d}.data-api`,CLASS_NAME_SHOW$3="show",CLASS_NAME_SELECTED="selected",CLASS_NAME_PLACEHOLDER="combobox-placeholder",SELECTOR_DATA_TOGGLE$7='[data-bs-toggle="combobox"]',SELECTOR_MENU$1=".menu",SELECTOR_MENU_ITEM=".menu-item[data-bs-value]",SELECTOR_VISIBLE_ITEMS=".menu-item[data-bs-value]:not(.disabled):not(:disabled)",SELECTOR_VALUE=".combobox-value",SELECTOR_SEARCH_INPUT=".combobox-search-input",SELECTOR_NO_RESULTS=".combobox-no-results",Default$f={boundary:"clippingParents",multiple:!1,name:null,offset:[0,2],placeholder:"",placement:"bottom-start",search:!1,searchNormalize:!1},DefaultType$f={boundary:"(string|element)",multiple:"boolean",name:"(string|null)",offset:"(array|string|function)",placeholder:"string",placement:"string",search:"boolean",searchNormalize:"boolean"};class Combobox extends BaseComponent{constructor(e,t){super(e,t),this._toggle=this._element,this._menu=SelectorEngine.next(this._toggle,".menu")[0],this._valueDisplay=SelectorEngine.findOne(SELECTOR_VALUE,this._toggle),this._searchInput=SelectorEngine.findOne(SELECTOR_SEARCH_INPUT,this._menu),this._noResults=SelectorEngine.findOne(SELECTOR_NO_RESULTS,this._menu),this._hiddenInput=null,this._menuInstance=null,this._createHiddenInput(),this._createMenuInstance(),this._syncInitialSelection(),this._addEventListeners()}static get Default(){return Default$f}static get DefaultType(){return DefaultType$f}static get NAME(){return NAME$g}toggle(){return this._isShown()?this.hide():this.show()}show(){isDisabled(this._toggle)||this._isShown()||EventHandler.trigger(this._toggle,EVENT_SHOW$5).defaultPrevented||(this._menuInstance.show(),this._searchInput&&(this._searchInput.value="",this._filterItems(""),requestAnimationFrame(()=>this._searchInput.focus())),EventHandler.trigger(this._toggle,EVENT_SHOWN$4))}hide(){this._isShown()&&(EventHandler.trigger(this._toggle,EVENT_HIDE$4).defaultPrevented||(this._menuInstance.hide(),EventHandler.trigger(this._toggle,EVENT_HIDDEN$6)))}dispose(){this._menuInstance&&(this._menuInstance.dispose(),this._menuInstance=null),this._hiddenInput&&(this._hiddenInput.remove(),this._hiddenInput=null),EventHandler.off(this._menu,EVENT_KEY$d),EventHandler.off(this._toggle,EVENT_KEY$d),super.dispose()}_isShown(){return this._menu.classList.contains("show")}_createHiddenInput(){const{name:e}=this._config;e&&(this._hiddenInput=document.createElement("input"),this._hiddenInput.type="hidden",this._hiddenInput.name=e,this._hiddenInput.value="",this._toggle.parentNode.insertBefore(this._hiddenInput,this._toggle))}_createMenuInstance(){this._menuInstance=new Menu(this._toggle,{menu:this._menu,autoClose:!this._config.multiple||"outside",boundary:this._config.boundary,offset:this._config.offset,placement:this._config.placement})}_syncInitialSelection(){this._getSelectedItems().length>0?(this._updateToggleText(),this._updateHiddenInput()):this._showPlaceholder()}_addEventListeners(){EventHandler.on(this._menu,"click",SELECTOR_MENU_ITEM,e=>{const t=e.target.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&(e.preventDefault(),e.stopPropagation(),this._selectItem(t))}),EventHandler.on(this._toggle,"keydown",e=>{this._handleToggleKeydown(e)}),EventHandler.on(this._menu,"keydown",e=>{this._handleMenuKeydown(e)}),this._searchInput&&(EventHandler.on(this._searchInput,"input",()=>{this._filterItems(this._searchInput.value)}),EventHandler.on(this._searchInput,"keydown",e=>{if("ArrowDown"===e.key){e.preventDefault();const t=this._getVisibleItems();t.length>0&&t[0].focus()}"Escape"===e.key&&(this.hide(),this._toggle.focus())}))}_selectItem(e){if(this._config.multiple)e.classList.toggle("selected"),e.setAttribute("aria-selected",e.classList.contains("selected"));else{const t=SelectorEngine.find(".selected",this._menu);for(const e of t)e.classList.remove("selected"),e.setAttribute("aria-selected","false");e.classList.add("selected"),e.setAttribute("aria-selected","true")}this._updateToggleText(),this._updateHiddenInput();const t=this._config.multiple?this._getSelectedItems().map(e=>e.dataset.bsValue):e.dataset.bsValue;EventHandler.trigger(this._toggle,EVENT_CHANGE$3,{value:t,item:e}),this._config.multiple||(this.hide(),this._toggle.focus())}_updateToggleText(){const e=this._getSelectedItems();if(0!==e.length)if(this._valueDisplay.classList.remove("combobox-placeholder"),this._config.multiple&&e.length>1)this._valueDisplay.textContent=`${e.length} selected`;else{const t=e[0],n=SelectorEngine.findOne(".menu-item-content > span:first-child",t);this._valueDisplay.textContent=n?n.textContent:t.textContent.trim()}else this._showPlaceholder()}_showPlaceholder(){const{placeholder:e}=this._config;e&&(this._valueDisplay.textContent=e,this._valueDisplay.classList.add("combobox-placeholder"))}_updateHiddenInput(){if(!this._hiddenInput)return;const e=this._getSelectedItems().map(e=>e.dataset.bsValue);this._hiddenInput.value=this._config.multiple?e.join(","):e[0]||""}_getSelectedItems(){return SelectorEngine.find(".selected",this._menu)}_getVisibleItems(){return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS,this._menu).filter(e=>isVisible(e))}_filterItems(e){const t=this._normalizeText(e.toLowerCase().trim()),n=SelectorEngine.find(SELECTOR_MENU_ITEM,this._menu);let s=0;for(const e of n){const n=this._normalizeText(e.textContent.toLowerCase().trim()),i=!t||n.includes(t);e.style.display=i?"":"none",i&&s++}this._noResults&&this._noResults.classList.toggle("d-none",s>0)}_normalizeText(e){return this._config.searchNormalize?e.normalize("NFD").replace(/[\u0300-\u036F]/g,""):e}_handleToggleKeydown(e){const{key:t}=e;if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault(),this._isShown()||this.show();const n=this._getVisibleItems();return void(n.length>0&&("ArrowDown"===t?n[0]:n.at(-1)).focus())}"Enter"!==t&&" "!==t||this._isShown()||(e.preventDefault(),this.show())}_handleMenuKeydown(e){const{key:t,target:n}=e;if("Escape"===t)return e.preventDefault(),e.stopPropagation(),this.hide(),void this._toggle.focus();if("Tab"===t)return void this.hide();const s=n.matches("input");if("ArrowDown"===t||"ArrowUp"===t){e.preventDefault();const s=this._getVisibleItems();return void(s.length>0&&getNextActiveElement(s,n,"ArrowDown"===t,!s.includes(n)).focus())}if("Home"===t||"End"===t){e.preventDefault();const n=this._getVisibleItems();return void(n.length>0&&("Home"===t?n[0]:n.at(-1)).focus())}if(("Enter"===t||" "===t)&&!s){e.preventDefault();const t=n.closest(SELECTOR_MENU_ITEM);t&&!isDisabled(t)&&this._selectItem(t)}}static jQueryInterface(e){return this.each(function(){const t=Combobox.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}EventHandler.on(document,EVENT_CLICK_DATA_API$4,SELECTOR_DATA_TOGGLE$7,function(e){e.preventDefault(),Combobox.getOrCreateInstance(this).toggle()}),EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE$7))Combobox.getOrCreateInstance(e)});const NAME$f="datepicker",DATA_KEY$b="bs.datepicker",EVENT_KEY$c=`.${DATA_KEY$b}`,DATA_API_KEY$7=".data-api",EVENT_CHANGE$2=`change${EVENT_KEY$c}`,EVENT_SHOW$4=`show${EVENT_KEY$c}`,EVENT_SHOWN$3=`shown${EVENT_KEY$c}`,EVENT_HIDE$3=`hide${EVENT_KEY$c}`,EVENT_HIDDEN$5=`hidden${EVENT_KEY$c}`,EVENT_CLICK_DATA_API$3=`click${EVENT_KEY$c}.data-api`,EVENT_FOCUSIN_DATA_API=`focusin${EVENT_KEY$c}.data-api`,SELECTOR_DATA_TOGGLE$6='[data-bs-toggle="datepicker"]',HIDE_DELAY=100,Default$e={datepickerTheme:null,dateMin:null,dateMax:null,dateFormat:null,displayElement:null,displayMonthsCount:1,firstWeekday:1,inline:!1,locale:"default",positionElement:null,selectedDates:[],selectionMode:"single",placement:"left",vcpOptions:{}},DefaultType$e={datepickerTheme:"(null|string)",dateMin:"(null|string|number|object)",dateMax:"(null|string|number|object)",dateFormat:"(null|object|function)",displayElement:"(null|string|element|boolean)",displayMonthsCount:"number",firstWeekday:"number",inline:"boolean",locale:"string",positionElement:"(null|string|element)",selectedDates:"array",selectionMode:"string",placement:"string",vcpOptions:"object"};class Datepicker extends BaseComponent{constructor(e,t){super(e,t),this._calendar=null,this._isShown=!1,this._initCalendar()}static get Default(){return Default$e}static get DefaultType(){return DefaultType$e}static get NAME(){return NAME$f}toggle(){if(!this._config.inline)return this._isShown?this.hide():this.show()}show(){this._config.inline||!this._calendar||isDisabled(this._element)||this._isShown||EventHandler.trigger(this._element,EVENT_SHOW$4).defaultPrevented||(this._calendar.show(),this._isShown=!0,EventHandler.trigger(this._element,EVENT_SHOWN$3))}hide(){this._config.inline||this._calendar&&this._isShown&&(EventHandler.trigger(this._element,EVENT_HIDE$3).defaultPrevented||(this._calendar.hide(),this._isShown=!1,EventHandler.trigger(this._element,EVENT_HIDDEN$5)))}dispose(){this._themeObserver&&(this._themeObserver.disconnect(),this._themeObserver=null),this._calendar&&this._calendar.destroy(),this._calendar=null,super.dispose()}getSelectedDates(){const e=this._calendar?.context?.selectedDates;return e?[...e]:[]}setSelectedDates(e){this._calendar&&this._calendar.set({selectedDates:e})}_initCalendar(){this._isInput="INPUT"===this._element.tagName,this._isInline=this._config.inline,this._isInline&&!this._isInput&&(this._boundInput=this._element.querySelector('input[type="hidden"], input[name]')),this._positionElement=this._resolvePositionElement(),this._displayElement=this._resolveDisplayElement();const e=this._buildCalendarOptions();this._calendar=new Calendar(this._positionElement,e),this._calendar.init(),this._setupThemeObserver(),this._isInput&&this._element.value&&this._parseInputValue(),this._updateDisplayWithSelectedDates()}_updateDisplayWithSelectedDates(){const{selectedDates:e}=this._config;if(!e||0===e.length)return;const t=this._formatDateForInput(e);this._isInput&&(this._element.value=t),this._boundInput&&(this._boundInput.value=e.join(",")),this._displayElement&&(this._displayElement.textContent=t)}_resolvePositionElement(){let{positionElement:e}=this._config;if("string"==typeof e&&(e=document.querySelector(e)),!e&&this._isInput&&!this._isInline){const t=this._element.closest(".form-adorn");t&&(e=t)}return e||this._element}_resolveDisplayElement(){const{displayElement:e}=this._config;return"string"==typeof e?document.querySelector(e):!0===e||null===e&&!this._isInput&&!this._isInline?this._element.querySelector("[data-bs-datepicker-display]")||this._element:e}_getThemeAncestor(){return this._element.closest("[data-bs-theme]")}_getEffectiveTheme(){const{datepickerTheme:e}=this._config;if(e)return e;const t=this._getThemeAncestor();return t?.getAttribute("data-bs-theme")||null}_syncThemeAttribute(e){if(!e)return;const t=this._getEffectiveTheme();t?e.setAttribute("data-bs-theme",t):e.removeAttribute("data-bs-theme")}_setupThemeObserver(){const e=this._getThemeAncestor();e&&!this._config.datepickerTheme&&(this._themeObserver=new MutationObserver(()=>{this._syncThemeAttribute(this._calendar?.context?.mainElement)}),this._themeObserver.observe(e,{attributes:!0,attributeFilter:["data-bs-theme"]}))}_buildCalendarOptions(){const e=this._getEffectiveTheme(),t=e&&"auto"!==e?e:"system",n={...this._config.vcpOptions,inputMode:!this._isInline,positionToInput:this._config.placement,firstWeekday:this._config.firstWeekday,locale:this._config.locale,selectionDatesMode:this._config.selectionMode,selectedDates:this._config.selectedDates,displayMonthsCount:this._config.displayMonthsCount,type:this._config.displayMonthsCount>1?"multiple":"default",selectedTheme:t,themeAttrDetect:"[data-bs-theme]",onClickDate:(e,t)=>this._handleDateClick(e,t),onInit:e=>{this._syncThemeAttribute(e.context.mainElement)},onShow:()=>{this._isShown=!0,this._syncThemeAttribute(this._calendar.context.mainElement)},onHide:()=>{this._isShown=!1}};if(this._config.selectedDates.length>0){const e=this._parseDate(this._config.selectedDates[0]);n.selectedMonth=e.getMonth(),n.selectedYear=e.getFullYear()}return this._config.dateMin&&(n.dateMin=this._config.dateMin),this._config.dateMax&&(n.dateMax=this._config.dateMax),n}_handleDateClick(e,t){const n=[...e.context.selectedDates];if(n.length>0){const e=this._formatDateForInput(n);this._isInput&&(this._element.value=e),this._boundInput&&(this._boundInput.value=n.join(",")),this._displayElement&&(this._displayElement.textContent=e)}EventHandler.trigger(this._element,EVENT_CHANGE$2,{dates:n,event:t}),this._maybeHideAfterSelection(n)}_maybeHideAfterSelection(e){this._isInline||("single"===this._config.selectionMode&&e.length>0||"multiple-ranged"===this._config.selectionMode&&e.length>=2)&&setTimeout(()=>this.hide(),100)}_parseDate(e){const[t,n,s]=e.split("-");return new Date(t,n-1,s)}_formatDate(e){const t=this._parseDate(e),n="default"===this._config.locale?void 0:this._config.locale,{dateFormat:s}=this._config;return"function"==typeof s?s(t,n):s&&"object"==typeof s?new Intl.DateTimeFormat(n,s).format(t):t.toLocaleDateString(n)}_formatDateForInput(e){if(0===e.length)return"";if(1===e.length)return this._formatDate(e[0]);const t="multiple-ranged"===this._config.selectionMode?" – ":", ";return e.map(e=>this._formatDate(e)).join(t)}_parseInputValue(){const e=this._element.value.trim();if(!e)return;const t=new Date(e);if(!Number.isNaN(t.getTime())){const e=`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`;this._calendar.set({selectedDates:[e]})}}}EventHandler.on(document,EVENT_CLICK_DATA_API$3,SELECTOR_DATA_TOGGLE$6,function(e){"INPUT"!==this.tagName&&"true"!==this.dataset.bsInline&&(e.preventDefault(),Datepicker.getOrCreateInstance(this).toggle())}),EventHandler.on(document,EVENT_FOCUSIN_DATA_API,SELECTOR_DATA_TOGGLE$6,function(){"INPUT"===this.tagName&&Datepicker.getOrCreateInstance(this).show()}),EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$c}.data-api`,()=>{for(const e of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE$6}[data-bs-inline="true"]`))Datepicker.getOrCreateInstance(e)});const CLASS_NAME_OPEN="dialog-open";class DialogBase extends BaseComponent{constructor(e,t){super(e,t),this._isTransitioning=!1,this._openedAsModal=!1,this._addDialogListeners()}static get NAME(){return"dialogbase"}toggle(e){return this._element.open?this.hide():this.show(e)}show(e){if(this._element.open||this._isTransitioning)return;if(EventHandler.trigger(this._element,this.constructor.eventName("show"),{relatedTarget:e}).defaultPrevented)return;this._isTransitioning=!0,this._onBeforeShow();const{modal:t,preventBodyScroll:n}=this._getShowOptions();this._showElement({modal:t,preventBodyScroll:n}),this._queueCallback(()=>{this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("shown"),{relatedTarget:e})},this._element,this._isAnimated())}hide(){this._element.open&&!this._isTransitioning&&(EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented||(this._isTransitioning=!0,this._hideElement(),this._queueCallback(()=>{this._element.open&&this._closeAndCleanup(),this._element.classList.remove("hiding"),this._onAfterHide(),this._isTransitioning=!1,EventHandler.trigger(this._element,this.constructor.eventName("hidden"))},this._element,this._isAnimated())))}dispose(){this._element.open&&this._closeAndCleanup(),super.dispose()}_getShowOptions(){return{modal:!0,preventBodyScroll:!0}}_onBeforeShow(){}_onAfterHide(){}_isAnimated(){return!this._element.classList.contains(this._getInstantClassName())}_getInstantClassName(){return"dialog-instant"}_getStaticClassName(){return"dialog-static"}_onCancel(){}_showElement({modal:e=!0,preventBodyScroll:t=!0}={}){this._openedAsModal=e,e?this._element.showModal():this._element.show(),t&&document.documentElement.classList.add("dialog-open")}_hideElement(){this._hideChildComponents(),this._element.classList.add("hiding"),this._shouldDeferClose()||this._closeAndCleanup()}_closeAndCleanup(){this._element.close(),this._openedAsModal=!1,document.querySelector("dialog[open]:modal")||document.documentElement.classList.remove("dialog-open")}_shouldDeferClose(){return!1}_triggerBackdropTransition(){if(EventHandler.trigger(this._element,this.constructor.eventName("hidePrevented")).defaultPrevented)return;const e=this._getStaticClassName();this._element.classList.add(e),this._queueCallback(()=>{this._element.classList.remove(e)},this._element)}_hideChildComponents(){for(const e of SelectorEngine.find('[data-bs-toggle="tooltip"], [data-bs-toggle="popover"]',this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}for(const e of SelectorEngine.find(".toast.show",this._element)){const t=Data.getAny(e);t&&"function"==typeof t.hide&&t.hide()}}_addDialogListeners(){const e=this.constructor.EVENT_KEY;EventHandler.on(this._element,"cancel",e=>{e.preventDefault(),this._config.keyboard?(this._onCancel(),this.hide()):this._triggerBackdropTransition()}),EventHandler.on(this._element,`keydown${e}`,e=>{"Escape"!==e.key||this._openedAsModal||(e.preventDefault(),this._config.keyboard&&(this._onCancel(),this.hide()))}),EventHandler.on(this._element,`click${e}`,e=>{e.target===this._element&&this._openedAsModal&&("static"!==this._config.backdrop?this.hide():this._triggerBackdropTransition())})}}const NAME$e="dialog",DATA_KEY$a="bs.dialog",EVENT_KEY$b=`.${DATA_KEY$a}`,DATA_API_KEY$6=".data-api",EVENT_SHOW$3=`show${EVENT_KEY$b}`,EVENT_HIDDEN$4=`hidden${EVENT_KEY$b}`,EVENT_CANCEL=`cancel${EVENT_KEY$b}`,EVENT_CLICK_DATA_API$2=`click${EVENT_KEY$b}.data-api`,CLASS_NAME_NONMODAL="dialog-nonmodal",CLASS_NAME_INSTANT="dialog-instant",CLASS_NAME_SWAP_IN="dialog-swap-in",SELECTOR_DATA_TOGGLE$5='[data-bs-toggle="dialog"]',Default$d={backdrop:!0,keyboard:!0,modal:!0},DefaultType$d={backdrop:"(boolean|string)",keyboard:"boolean",modal:"boolean"};class Dialog extends DialogBase{static get Default(){return Default$d}static get DefaultType(){return DefaultType$d}static get NAME(){return NAME$e}handleUpdate(){}_getShowOptions(){return{modal:this._config.modal,preventBodyScroll:this._config.modal}}_onBeforeShow(){this._config.modal||this._element.classList.add("dialog-nonmodal")}_onAfterHide(){this._element.classList.remove("dialog-nonmodal")}_shouldDeferClose(){return this._isAnimated()}_onCancel(){EventHandler.trigger(this._element,EVENT_CANCEL)}}EventHandler.on(document,EVENT_CLICK_DATA_API$2,SELECTOR_DATA_TOGGLE$5,function(e){const t=SelectorEngine.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&e.preventDefault(),EventHandler.one(t,EVENT_SHOW$3,e=>{e.defaultPrevented||EventHandler.one(t,EVENT_HIDDEN$4,()=>{isVisible(this)&&this.focus({preventScroll:!0})})});const n=Manipulator.getDataAttributes(this),s=this.closest("dialog[open]");if(s&&s!==t){const e=Dialog.getOrCreateInstance(t,n);t.classList.add("dialog-swap-in"),e.show(this),EventHandler.one(t,`shown${EVENT_KEY$b}`,()=>{t.classList.remove("dialog-swap-in")});const i=Dialog.getInstance(s);return void(i&&(s.classList.add("dialog-instant"),EventHandler.one(s,EVENT_HIDDEN$4,()=>{s.classList.remove("dialog-instant")}),i.hide()))}Dialog.getOrCreateInstance(t,n).toggle(this)}),enableDismissTrigger(Dialog);const NAME$d="navoverflow",DATA_KEY$9="bs.navoverflow",EVENT_KEY$a=`.${DATA_KEY$9}`,EVENT_UPDATE=`update${EVENT_KEY$a}`,EVENT_OVERFLOW=`overflow${EVENT_KEY$a}`,CLASS_NAME_OVERFLOW="nav-overflow",CLASS_NAME_OVERFLOW_MENU="nav-overflow-menu",CLASS_NAME_HIDDEN="d-none",SELECTOR_NAV_ITEM=".nav-item",SELECTOR_NAV_LINK=".nav-link",SELECTOR_OVERFLOW_TOGGLE=".nav-overflow-toggle",SELECTOR_OVERFLOW_MENU=".nav-overflow-menu",SELECTOR_CUSTOM_ICON="[data-bs-overflow-icon]",CLASS_NAME_KEEP="nav-overflow-keep",Default$c={collapseBelow:0,iconPlacement:"start",menuPlacement:"bottom-end",moreText:"More",moreIcon:'<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3"/></svg>',threshold:0},DefaultType$c={collapseBelow:"(number|string)",iconPlacement:"string",menuPlacement:"string",moreText:"string",moreIcon:"string",threshold:"number"};class NavOverflow extends BaseComponent{constructor(e,t){super(e,t),this._items=[],this._overflowItems=[],this._overflowMenu=null,this._overflowToggle=null,this._resizeObserver=null,this._collapseBelow=0,this._isInitialized=!1,this._init()}static get Default(){return Default$c}static get DefaultType(){return DefaultType$c}static get NAME(){return NAME$d}update(){this._calculateOverflow(),EventHandler.trigger(this._element,EVENT_UPDATE)}dispose(){this._resizeObserver&&this._resizeObserver.disconnect(),this._restoreItems(),this._overflowToggle&&this._overflowToggle.parentElement&&this._overflowToggle.parentElement.remove(),super.dispose()}_init(){this._element.classList.add("nav-overflow"),this._items=[...SelectorEngine.find(".nav-item",this._element)];for(const[e,t]of this._items.entries())t.dataset.bsNavOrder=e;this._collapseBelow=this._resolveCollapseBelow(),this._createOverflowMenu(),this._setupResizeObserver(),this._calculateOverflow(),this._isInitialized=!0}_createOverflowMenu(){if(this._overflowToggle=SelectorEngine.findOne(".nav-overflow-toggle",this._element),this._overflowToggle)return void(this._overflowMenu=SelectorEngine.findOne(".nav-overflow-menu",this._element));const e=`<span class="nav-overflow-icon">${this._resolveIcon()}</span>`,t=`<span class="nav-overflow-text">${this._config.moreText}</span>`,n="end"===this._config.iconPlacement?`${t}${e}`:`${e}${t}`,s=document.createElement("li");s.className="nav-item nav-overflow-item",s.innerHTML=`\n      <button class="nav-link nav-overflow-toggle" type="button" data-bs-toggle="menu" data-bs-placement="${this._config.menuPlacement}" aria-expanded="false">\n        ${n}\n      </button>\n      <div class="nav-overflow-menu menu"></div>\n    `,this._element.append(s),this._overflowToggle=s.querySelector(".nav-overflow-toggle"),this._overflowMenu=s.querySelector(".nav-overflow-menu")}_resolveIcon(){const e=SelectorEngine.findOne(SELECTOR_CUSTOM_ICON,this._element);if(!e)return this._config.moreIcon;const t=e.cloneNode(!0);t.removeAttribute("data-bs-overflow-icon");const n=t.outerHTML;return e.remove(),n}_resolveCollapseBelow(){const e=this._config.collapseBelow;if("number"==typeof e)return e;if("string"==typeof e&&""!==e){const t=getComputedStyle(document.documentElement).getPropertyValue(`--bs-breakpoint-${e}`);return Number.parseFloat(t)||0}return 0}_setupResizeObserver(){"undefined"!=typeof ResizeObserver?(this._resizeObserver=new ResizeObserver(()=>{this._calculateOverflow()}),this._resizeObserver.observe(this._element)):EventHandler.on(window,"resize",()=>this._calculateOverflow())}_calculateOverflow(){this._restoreItems();const e=this._element.offsetWidth,t=this._overflowToggle?.closest(".nav-item");if(this._collapseBelow>0&&e<this._collapseBelow){const e=this._items.filter(e=>!e.classList.contains(CLASS_NAME_KEEP));return this._moveToOverflow(e),t&&(e.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),void(e.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:e.length,visibleCount:this._items.length-e.length}))}let n=0;const s=[],i=e-(t?.offsetWidth||0)-this._items.filter(e=>e.classList.contains(CLASS_NAME_KEEP)).reduce((e,t)=>e+t.offsetWidth,0)-10;for(const e of this._items)e.classList.contains(CLASS_NAME_KEEP)||(n+=e.offsetWidth,n>i&&s.push(e));if(this._items.length-s.length<this._config.threshold&&this._items.length>this._config.threshold){const e=this._items.slice(this._config.threshold).filter(e=>!e.classList.contains(CLASS_NAME_KEEP));s.length=0,s.push(...e)}this._moveToOverflow(s),t&&(s.length>0?t.classList.remove("d-none"):t.classList.add("d-none")),s.length>0&&EventHandler.trigger(this._element,EVENT_OVERFLOW,{overflowCount:s.length,visibleCount:this._items.length-s.length})}_moveToOverflow(e){if(this._overflowMenu){this._overflowMenu.innerHTML="",this._overflowItems=[];for(const t of e){const e=SelectorEngine.findOne(".nav-link",t);if(!e)continue;const n=e.cloneNode(!0);n.className="menu-item",e.classList.contains("active")&&n.classList.add("active"),(e.classList.contains("disabled")||e.hasAttribute("disabled"))&&n.classList.add("disabled"),this._overflowMenu.append(n),t.classList.add("d-none"),t.dataset.bsNavOverflow="true",this._overflowItems.push(t)}}}_restoreItems(){for(const e of this._items)e.classList.remove("d-none"),delete e.dataset.bsNavOverflow;this._overflowMenu&&(this._overflowMenu.innerHTML=""),this._overflowItems=[]}}EventHandler.on(document,"DOMContentLoaded",()=>{for(const e of SelectorEngine.find('[data-bs-toggle="nav-overflow"]'))NavOverflow.getOrCreateInstance(e)});const NAME$c="swipe",EVENT_KEY$9=".bs.swipe",EVENT_TOUCHSTART="touchstart.bs.swipe",EVENT_TOUCHMOVE="touchmove.bs.swipe",EVENT_TOUCHEND="touchend.bs.swipe",EVENT_POINTERDOWN="pointerdown.bs.swipe",EVENT_POINTERUP="pointerup.bs.swipe",POINTER_TYPE_TOUCH="touch",POINTER_TYPE_PEN="pen",CLASS_NAME_POINTER_EVENT="pointer-event",SWIPE_THRESHOLD=40,Default$b={endCallback:null,leftCallback:null,rightCallback:null,upCallback:null,downCallback:null},DefaultType$b={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)",upCallback:"(function|null)",downCallback:"(function|null)"};class Swipe extends Config{constructor(e,t){super(),this._element=e,e&&Swipe.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._deltaY=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Default$b}static get DefaultType(){return DefaultType$b}static get NAME(){return NAME$c}dispose(){EventHandler.off(this._element,".bs.swipe")}_start(e){if(!this._supportPointerEvents)return this._deltaX=e.touches[0].clientX,void(this._deltaY=e.touches[0].clientY);this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX,this._deltaY=e.clientY)}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX,this._deltaY=e.clientY-this._deltaY),this._handleSwipe(),execute(this._config.endCallback)}_move(e){if(e.touches&&e.touches.length>1)return this._deltaX=0,void(this._deltaY=0);this._deltaX=e.touches[0].clientX-this._deltaX,this._deltaY=e.touches[0].clientY-this._deltaY}_handleSwipe(){const e=Math.abs(this._deltaX),t=Math.abs(this._deltaY);if(t>e&&t>40){const e=this._deltaY>0?"down":"up";return this._deltaX=0,this._deltaY=0,void execute("down"===e?this._config.downCallback:this._config.upCallback)}if(e>40){const t=e/this._deltaX;if(this._deltaX=0,this._deltaY=0,!t)return;return void execute(t>0?this._config.rightCallback:this._config.leftCallback)}this._deltaX=0,this._deltaY=0}_initEvents(){this._supportPointerEvents?(EventHandler.on(this._element,EVENT_POINTERDOWN,e=>this._start(e)),EventHandler.on(this._element,EVENT_POINTERUP,e=>this._end(e)),this._element.classList.add("pointer-event")):(EventHandler.on(this._element,EVENT_TOUCHSTART,e=>this._start(e)),EventHandler.on(this._element,EVENT_TOUCHMOVE,e=>this._move(e)),EventHandler.on(this._element,EVENT_TOUCHEND,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const NAME$b="drawer",DATA_KEY$8="bs.drawer",EVENT_KEY$8=`.${DATA_KEY$8}`,DATA_API_KEY$5=".data-api",EVENT_LOAD_DATA_API$2=`load${EVENT_KEY$8}.data-api`,EVENT_HIDDEN$3=`hidden${EVENT_KEY$8}`,EVENT_RESIZE$1=`resize${EVENT_KEY$8}`,EVENT_CLICK_DATA_API$1=`click${EVENT_KEY$8}.data-api`,SELECTOR_DATA_TOGGLE$4='[data-bs-toggle="drawer"]',Default$a={backdrop:!0,keyboard:!0,scroll:!1},DefaultType$a={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Drawer extends DialogBase{constructor(e,t){super(e,t),this._swipeHelper=null}static get Default(){return Default$a}static get DefaultType(){return DefaultType$a}static get NAME(){return NAME$b}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_getShowOptions(){return{modal:Boolean(this._config.backdrop)||!this._config.scroll,preventBodyScroll:!this._config.scroll}}_onBeforeShow(){this._initSwipe()}_getInstantClassName(){return"drawer-instant"}_getStaticClassName(){return"drawer-static"}_initSwipe(){if(this._swipeHelper||!Swipe.isSupported())return;const e={},t=this._element;t.classList.contains("drawer-bottom")?e.downCallback=()=>this.hide():t.classList.contains("drawer-top")?e.upCallback=()=>this.hide():t.classList.contains("drawer-end")?isRTL()?e.leftCallback=()=>this.hide():e.rightCallback=()=>this.hide():isRTL()?e.rightCallback=()=>this.hide():e.leftCallback=()=>this.hide(),this._swipeHelper=new Swipe(t,e)}}EventHandler.on(document,EVENT_CLICK_DATA_API$1,SELECTOR_DATA_TOGGLE$4,function(e){const t=SelectorEngine.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this))return;EventHandler.one(t,EVENT_HIDDEN$3,()=>{isVisible(this)&&this.focus({preventScroll:!0})});const n=SelectorEngine.findOne("dialog.drawer[open]");n&&n!==t&&Drawer.getInstance(n).hide(),Drawer.getOrCreateInstance(t).toggle(this)}),EventHandler.on(window,EVENT_LOAD_DATA_API$2,()=>{for(const e of SelectorEngine.find("dialog.drawer[open]"))Drawer.getOrCreateInstance(e).show()}),EventHandler.on(window,EVENT_RESIZE$1,()=>{for(const e of SelectorEngine.find('dialog[open][class*="\\:drawer"]'))"fixed"!==getComputedStyle(e).position&&Drawer.getOrCreateInstance(e).hide()}),enableDismissTrigger(Drawer);const NAME$a="strength",DATA_KEY$7="bs.strength",EVENT_KEY$7=`.${DATA_KEY$7}`,DATA_API_KEY$4=".data-api",EVENT_STRENGTH_CHANGE=`strengthChange${EVENT_KEY$7}`,SELECTOR_DATA_STRENGTH="[data-bs-strength]",STRENGTH_LEVELS=["weak","fair","good","strong"],Default$9={input:null,minLength:8,messages:{weak:"Weak",fair:"Fair",good:"Good",strong:"Strong"},weights:{minLength:1,extraLength:1,lowercase:1,uppercase:1,numbers:1,special:1,multipleSpecial:1,longPassword:1},thresholds:[2,4,6],scorer:null},DefaultType$9={input:"(string|element|null)",minLength:"number",messages:"object",weights:"object",thresholds:"array",scorer:"(function|null)"};class Strength extends BaseComponent{constructor(e,t){super(e,t),this._input=this._getInput(),this._segments=SelectorEngine.find(".strength-segment",this._element),this._textElement=SelectorEngine.findOne(".strength-text",this._element.parentElement),this._currentStrength=null,this._input&&(this._addEventListeners(),this._evaluate())}static get Default(){return Default$9}static get DefaultType(){return DefaultType$9}static get NAME(){return NAME$a}getStrength(){return this._currentStrength}evaluate(){this._evaluate()}_getInput(){if(this._config.input)return"string"==typeof this._config.input?SelectorEngine.findOne(this._config.input):this._config.input;const e=this._element.parentElement;return SelectorEngine.findOne('input[type="password"]',e)}_addEventListeners(){EventHandler.on(this._input,"input",()=>this._evaluate()),EventHandler.on(this._input,"change",()=>this._evaluate())}_evaluate(){const e=this._input.value,t=this._calculateScore(e),n=this._scoreToStrength(t);n!==this._currentStrength&&(this._currentStrength=n,this._updateUI(n,t),EventHandler.trigger(this._element,EVENT_STRENGTH_CHANGE,{strength:n,score:t,password:e.length>0?"***":""}))}_calculateScore(e){if(!e)return 0;if("function"==typeof this._config.scorer)return this._config.scorer(e);const{weights:t}=this._config;let n=0;return e.length>=this._config.minLength&&(n+=t.minLength),e.length>=this._config.minLength+4&&(n+=t.extraLength),/[a-z]/.test(e)&&(n+=t.lowercase),/[A-Z]/.test(e)&&(n+=t.uppercase),/\d/.test(e)&&(n+=t.numbers),/[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.special),/[!@#$%^&*(),.?":{}|<>].*[!@#$%^&*(),.?":{}|<>]/.test(e)&&(n+=t.multipleSpecial),e.length>=16&&(n+=t.longPassword),n}_scoreToStrength(e){if(0===e)return null;const[t,n,s]=this._config.thresholds;return e<=t?"weak":e<=n?"fair":e<=s?"good":"strong"}_updateUI(e){e?this._element.dataset.bsStrength=e:delete this._element.dataset.bsStrength;const t=e?STRENGTH_LEVELS.indexOf(e):-1;for(const[e,n]of this._segments.entries())e<=t?n.classList.add("active"):n.classList.remove("active");if(this._textElement)if(e&&this._config.messages[e]){this._textElement.textContent=this._config.messages[e],this._textElement.dataset.bsStrength=e;const t={weak:"danger",fair:"warning",good:"info",strong:"success"};this._textElement.style.setProperty("--strength-color",`var(--${t[e]}-text)`)}else this._textElement.textContent="",delete this._textElement.dataset.bsStrength}}EventHandler.on(document,`DOMContentLoaded${EVENT_KEY$7}.data-api`,()=>{for(const e of SelectorEngine.find("[data-bs-strength]"))Strength.getOrCreateInstance(e)});const NAME$9="otpInput",DATA_KEY$6="bs.otpInput",EVENT_KEY$6=`.${DATA_KEY$6}`,DATA_API_KEY$3=".data-api",EVENT_COMPLETE=`complete${EVENT_KEY$6}`,EVENT_INPUT$1=`input${EVENT_KEY$6}`,EVENT_DOMCONTENT_LOADED=`DOMContentLoaded${EVENT_KEY$6}.data-api`,SELECTOR_DATA_OTP="[data-bs-otp]",SELECTOR_INPUT$1="input",SYNC_EVENTS=["blur","keyup","select"],CLASS_NAME_INPUT="otp-input",CLASS_NAME_RENDERED="otp-rendered",CLASS_NAME_SLOTS="otp-slots",CLASS_NAME_SLOT="otp-slot",CLASS_NAME_SLOT_FILLED="otp-slot-filled",CLASS_NAME_SLOT_ACTIVE="otp-slot-active",CLASS_NAME_SEPARATOR="otp-separator",MASK_CHARACTER="•",TYPES={numeric:{inputmode:"numeric",pattern:"[0-9]*",filter:/[^0-9]/g},alphanumeric:{inputmode:"text",pattern:"[A-Za-z0-9]*",filter:/[^A-Za-z0-9]/g},alpha:{inputmode:"text",pattern:"[A-Za-z]*",filter:/[^A-Za-z]/g}},Default$8={groups:null,length:null,mask:!1,separator:"·",type:"numeric"},DefaultType$8={groups:"(array|null)",length:"(number|null)",mask:"boolean",separator:"string",type:"string"};class OtpInput extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne("input",this._element),this._input&&(this._type=TYPES[this._config.type]||TYPES.numeric,this._length=this._resolveLength(),this._slots=[],this._pointerActive=!1,this._pointerIndex=0,this._setupInput(),this._renderSlots(),this._addEventListeners(),this._render())}static get Default(){return Default$8}static get DefaultType(){return DefaultType$8}static get NAME(){return NAME$9}getValue(){return this._input.value}setValue(e){this._input.value=this._sanitize(String(e)),this._render(),this._checkComplete()}clear(){this._input.value="",this._render(),this._input.focus()}focus(){this._input.focus(),this._selectSlot(this._firstEmptyIndex()),this._render()}dispose(){EventHandler.off(this._input,"input",this._onInput),EventHandler.off(this._input,"beforeinput",this._onBeforeInput),EventHandler.off(this._input,"focus",this._onFocus),EventHandler.off(this._input,"pointerdown",this._onPointerDown),EventHandler.off(document,"selectionchange",this._onSelectionChange);for(const e of SYNC_EVENTS)EventHandler.off(this._input,e,this._onSync);this._slotsContainer?.remove(),this._element.classList.remove("otp-rendered"),super.dispose()}_resolveLength(){if(this._config.length)return this._config.length;const e=Number.parseInt(this._input.getAttribute("maxlength"),10);return Number.isNaN(e)||e<1?6:e}_setupInput(){const e=this._input;"number"!==e.type&&"password"!==e.type||(e.type="text"),e.classList.add("otp-input"),e.setAttribute("maxlength",String(this._length)),e.setAttribute("inputmode",this._type.inputmode),e.setAttribute("pattern",this._type.pattern),e.getAttribute("autocomplete")||e.setAttribute("autocomplete","one-time-code"),e.value&&(e.value=this._sanitize(e.value))}_renderSlots(){const e=document.createElement("div");e.className="otp-slots",e.setAttribute("aria-hidden","true");const{groups:t}=this._config;let n=0,s=0;for(let i=0;i<this._length;i++){const o=document.createElement("div");if(o.className="otp-slot",e.append(o),this._slots.push(o),Array.isArray(t)&&t.length>0&&(s++,s===t[n]&&i<this._length-1)){const i=document.createElement("div");i.className="otp-separator",i.textContent=this._config.separator,e.append(i),n=Math.min(n+1,t.length-1),s=0}}this._slotsContainer=e,this._element.append(e),this._element.classList.add("otp-rendered")}_addEventListeners(){this._onInput=()=>this._handleInput(),this._onBeforeInput=e=>this._handleBeforeInput(e),this._onPointerDown=e=>this._handlePointerDown(e),this._onFocus=()=>{if(this._pointerActive)return this._pointerActive=!1,this._selectSlot(this._pointerIndex),void this._render();this._selectSlot(this._firstEmptyIndex()),this._render()},this._onSync=()=>this._render(),this._onSelectionChange=()=>{document.activeElement===this._input&&this._render()},EventHandler.on(this._input,"input",this._onInput),EventHandler.on(this._input,"beforeinput",this._onBeforeInput),EventHandler.on(this._input,"focus",this._onFocus),EventHandler.on(this._input,"pointerdown",this._onPointerDown),EventHandler.on(document,"selectionchange",this._onSelectionChange);for(const e of SYNC_EVENTS)EventHandler.on(this._input,e,this._onSync)}_handleInput(){const e=this._sanitize(this._input.value);e!==this._input.value&&(this._input.value=e),document.activeElement===this._input&&this._selectSlot(this._firstEmptyIndex()),this._afterValueChange()}_handleBeforeInput(e){const{inputType:t,data:n}=e;if("insertText"===t&&n&&1===n.length){e.preventDefault();const t=this._sanitize(n);if(!t)return;const s=Math.min(this._input.selectionStart??0,this._length-1),i=[...this._input.value];return i[s]=t,this._input.value=i.join("").slice(0,this._length),this._selectSlot(s+1),void this._afterValueChange()}if("deleteContentBackward"===t){e.preventDefault();const t=this._input.selectionStart??0,n=this._input.selectionEnd??t,s=[...this._input.value];n>t?(s.splice(t,n-t),this._input.value=s.join(""),this._selectSlot(t)):t>0&&(s.splice(t-1,1),this._input.value=s.join(""),this._selectSlot(t-1)),this._afterValueChange()}}_handlePointerDown(e){const t=this._slotIndexFromPoint(e.clientX);if(null===t)return;const n=Math.min(t,this._firstEmptyIndex());if(document.activeElement===this._input)return e.preventDefault(),this._selectSlot(n),void this._render();this._pointerActive=!0,this._pointerIndex=n}_slotIndexFromPoint(e){for(const[t,n]of this._slots.entries())if(e<=n.getBoundingClientRect().right||t===this._slots.length-1)return t;return null}_afterValueChange(){this._render(),EventHandler.trigger(this._element,EVENT_INPUT$1,{value:this._input.value}),this._checkComplete()}_firstEmptyIndex(){return Math.min(this._input.value.length,this._length-1)}_selectSlot(e){const t=Math.max(0,Math.min(e,this._length-1)),n=t<this._input.value.length?t+1:t;this._input.setSelectionRange(t,n)}_sanitize(e){return e.replace(this._type.filter,"").slice(0,this._length)}_render(){const{value:e}=this._input,t=document.activeElement===this._input,n=Math.min(this._input.selectionStart??e.length,this._length-1);for(const[s,i]of this._slots.entries()){const o=e[s]??"";i.textContent=o&&this._config.mask?"•":o,i.classList.toggle("otp-slot-filled",Boolean(o)),i.classList.toggle("otp-slot-active",t&&s===n)}}_checkComplete(){const{value:e}=this._input;e.length===this._length&&EventHandler.trigger(this._element,EVENT_COMPLETE,{value:e})}}EventHandler.on(document,EVENT_DOMCONTENT_LOADED,()=>{for(const e of SelectorEngine.find("[data-bs-otp]"))OtpInput.getOrCreateInstance(e)});const NAME$8="chips",DATA_KEY$5="bs.chips",EVENT_KEY$5=".bs.chips",DATA_API_KEY$2=".data-api",EVENT_ADD="add.bs.chips",EVENT_REMOVE="remove.bs.chips",EVENT_CHANGE$1="change.bs.chips",EVENT_SELECT="select.bs.chips",SELECTOR_DATA_CHIPS="[data-bs-chips]",SELECTOR_GHOST_INPUT=".form-ghost",SELECTOR_CHIP=".chip",SELECTOR_CHIP_DISMISS=".chip-dismiss",CLASS_NAME_CHIP="chip",CLASS_NAME_CHIP_DISMISS="chip-dismiss",CLASS_NAME_ACTIVE$2="active",DEFAULT_DISMISS_ICON='<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><line x1="4" y1="4" x2="12" y2="12"/><line x1="12" y1="4" x2="4" y2="12"/></svg>',Default$7={separator:",",allowDuplicates:!1,maxChips:null,placeholder:"",dismissible:!0,dismissIcon:DEFAULT_DISMISS_ICON,createOnBlur:!0},DefaultType$7={separator:"(string|null)",allowDuplicates:"boolean",maxChips:"(number|null)",placeholder:"string",dismissible:"boolean",dismissIcon:"string",createOnBlur:"boolean"};class Chips extends BaseComponent{constructor(e,t){super(e,t),this._input=SelectorEngine.findOne(".form-ghost",this._element),this._chips=[],this._selectedChips=new Set,this._anchorChip=null,this._input||this._createInput(),this._initializeExistingChips(),this._addEventListeners()}static get Default(){return Default$7}static get DefaultType(){return DefaultType$7}static get NAME(){return NAME$8}add(e){const t=String(e).trim();if(!t)return null;if(!this._config.allowDuplicates&&this._chips.includes(t))return null;if(null!==this._config.maxChips&&this._chips.length>=this._config.maxChips)return null;if(EventHandler.trigger(this._element,EVENT_ADD,{value:t,relatedTarget:this._input}).defaultPrevented)return null;const n=this._createChip(t);return this._element.insertBefore(n,this._input),this._chips.push(t),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),n}remove(e){let t,n;return"string"==typeof e?(n=e,t=this._findChipByValue(n)):(t=e,n=this._getChipValue(t)),!(!t||!n)&&(!EventHandler.trigger(this._element,EVENT_REMOVE,{value:n,chip:t,relatedTarget:this._input}).defaultPrevented&&(this._selectedChips.delete(t),this._anchorChip===t&&(this._anchorChip=null),t.remove(),this._chips=this._chips.filter(e=>e!==n),EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:this.getValues()}),!0))}removeSelected(){const e=[...this._selectedChips];for(const t of e)this.remove(t);this._input?.focus()}getValues(){return[...this._chips]}getSelectedValues(){return[...this._selectedChips].map(e=>this._getChipValue(e))}clear(){const e=SelectorEngine.find(".chip",this._element);for(const t of e)t.remove();this._chips=[],this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_CHANGE$1,{values:[]})}clearSelection(){for(const e of this._selectedChips)e.classList.remove("active");this._selectedChips.clear(),this._anchorChip=null,EventHandler.trigger(this._element,EVENT_SELECT,{selected:[]})}selectChip(e,t={}){const{addToSelection:n=!1,rangeSelect:s=!1}=t,i=this._getChipElements();if(i.includes(e)){if(s&&this._anchorChip){const t=i.indexOf(this._anchorChip),s=i.indexOf(e),o=Math.min(t,s),r=Math.max(t,s);n||this.clearSelection();for(let e=o;e<=r;e++)this._selectedChips.add(i[e]),i[e].classList.add("active")}else n?this._selectedChips.has(e)?(this._selectedChips.delete(e),e.classList.remove("active")):(this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e):(this.clearSelection(),this._selectedChips.add(e),e.classList.add("active"),this._anchorChip=e);EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}focus(){this._input?.focus()}_getChipElements(){return SelectorEngine.find(".chip",this._element)}_createInput(){const e=document.createElement("input");e.type="text",e.className="form-ghost",this._config.placeholder&&(e.placeholder=this._config.placeholder),this._element.append(e),this._input=e}_initializeExistingChips(){const e=SelectorEngine.find(".chip",this._element);for(const t of e){const e=this._getChipValue(t);e&&(this._chips.push(e),this._setupChip(t))}}_setupChip(e){e.setAttribute("tabindex","0"),this._config.dismissible&&!SelectorEngine.findOne(".chip-dismiss",e)&&e.append(this._createDismissButton())}_createChip(e){const t=document.createElement("span");return t.className="chip",t.dataset.bsChipValue=e,t.append(document.createTextNode(e)),this._setupChip(t),t}_createDismissButton(){const e=document.createElement("button");return e.type="button",e.className="chip-dismiss",e.setAttribute("aria-label","Remove"),e.setAttribute("tabindex","-1"),e.innerHTML=this._config.dismissIcon,e}_findChipByValue(e){return this._getChipElements().find(t=>this._getChipValue(t)===e)}_getChipValue(e){if(e.dataset.bsChipValue)return e.dataset.bsChipValue;const t=e.cloneNode(!0),n=SelectorEngine.findOne(".chip-dismiss",t);return n&&n.remove(),t.textContent?.trim()||""}_addEventListeners(){EventHandler.on(this._input,"keydown",e=>this._handleInputKeydown(e)),EventHandler.on(this._input,"input",e=>this._handleInput(e)),EventHandler.on(this._input,"paste",e=>this._handlePaste(e)),EventHandler.on(this._input,"focus",()=>this.clearSelection()),this._config.createOnBlur&&EventHandler.on(this._input,"blur",e=>{e.relatedTarget?.closest(".chip")||this._createChipFromInput()}),EventHandler.on(this._element,"click",".chip",e=>{if(e.target.closest(".chip-dismiss"))return;const t=e.target.closest(".chip");t&&(e.preventDefault(),this.selectChip(t,{addToSelection:e.metaKey||e.ctrlKey,rangeSelect:e.shiftKey}),t.focus())}),EventHandler.on(this._element,"click",".chip-dismiss",e=>{e.stopPropagation();const t=e.target.closest(".chip");t&&(this.remove(t),this._input?.focus())}),EventHandler.on(this._element,"keydown",".chip",e=>{this._handleChipKeydown(e)}),EventHandler.on(this._element,"click",e=>{e.target===this._element&&(this.clearSelection(),this._input?.focus())})}_handleInputKeydown(e){const{key:t}=e;switch(t){case"Enter":e.preventDefault(),this._createChipFromInput();break;case"Backspace":case"Delete":if(""===this._input.value){e.preventDefault();const t=this._getChipElements();if(t.length>0){const e=t.at(-1);this.selectChip(e),e.focus()}}break;case"ArrowLeft":if(0===this._input.selectionStart&&0===this._input.selectionEnd){e.preventDefault();const t=this._getChipElements();if(t.length>0){const n=t.at(-1);e.shiftKey?this.selectChip(n,{addToSelection:!0}):this.selectChip(n),n.focus()}}break;case"Escape":this._input.value="",this.clearSelection(),this._input.blur()}}_handleChipKeydown(e){const{key:t}=e,n=e.target.closest(".chip");if(!n)return;const s=this._getChipElements(),i=s.indexOf(n);switch(t){case"Backspace":case"Delete":e.preventDefault(),this._handleChipDelete(i,s);break;case"ArrowLeft":e.preventDefault(),this._navigateChip(s,i,-1,e.shiftKey);break;case"ArrowRight":e.preventDefault(),this._navigateChip(s,i,1,e.shiftKey);break;case"Home":e.preventDefault(),this._navigateToEdge(s,0,e.shiftKey);break;case"End":case"Escape":e.preventDefault(),this.clearSelection(),this._input?.focus();break;case"a":this._handleSelectAll(e,s)}}_handleChipDelete(e,t){if(0===this._selectedChips.size)return;const n=Math.min(e,t.length-this._selectedChips.size-1);this.removeSelected();const s=this._getChipElements();if(s.length>0){const e=Math.max(0,Math.min(n,s.length-1));s[e].focus(),this.selectChip(s[e])}else this._input?.focus()}_navigateChip(e,t,n,s){const i=t+n;if(n<0&&i>=0){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else if(n>0&&i<e.length){const t=e[i];this.selectChip(t,s?{addToSelection:!0,rangeSelect:!0}:{}),t.focus()}else n>0&&(this.clearSelection(),this._input?.focus())}_navigateToEdge(e,t,n){if(0===e.length)return;const s=e[t];this.selectChip(s,n?{rangeSelect:!0}:{}),s.focus()}_handleSelectAll(e,t){if(e.metaKey||e.ctrlKey){e.preventDefault();for(const e of t)this._selectedChips.add(e),e.classList.add("active");EventHandler.trigger(this._element,EVENT_SELECT,{selected:this.getSelectedValues()})}}_handleInput(e){const{value:t}=e.target,{separator:n}=this._config;if(n&&t.includes(n)){const e=t.split(n);for(const t of e.slice(0,-1))this.add(t.trim());this._input.value=e.at(-1)}}_handlePaste(e){const{separator:t}=this._config;if(!t)return;const n=(e.clipboardData||window.clipboardData).getData("text");if(n.includes(t)){e.preventDefault();const s=n.split(t);for(const e of s)this.add(e.trim())}}_createChipFromInput(){const e=this._input.value.trim();e&&(this.add(e),this._input.value="")}}EventHandler.on(document,"DOMContentLoaded.bs.chips.data-api",()=>{for(const e of SelectorEngine.find("[data-bs-chips]"))Chips.getOrCreateInstance(e)});const ARIA_ATTRIBUTE_PATTERN=/^aria-[\w-]*$/i,DefaultAllowlist={"*":["class","dir","id","lang","role",ARIA_ATTRIBUTE_PATTERN],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},uriAttributes=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),SAFE_URL_PATTERN=/^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,DATA_URL_PATTERN=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z=]+$/i,allowedAttribute=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!uriAttributes.has(n)||Boolean(SAFE_URL_PATTERN.test(e.nodeValue)||DATA_URL_PATTERN.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))};function sanitizeHtml(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const s=(new window.DOMParser).parseFromString(e,"text/html"),i=[...s.body.querySelectorAll("*")];for(const e of i){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const s=[...e.attributes],i=[...t["*"]||[],...t[n]||[]];for(const t of s)allowedAttribute(t,i)||e.removeAttribute(t.nodeName)}return s.body.innerHTML}const NAME$7="TemplateFactory",Default$6={allowList:DefaultAllowlist,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},DefaultType$6={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},DefaultContentType={entry:"(string|element|function|null)",selector:"(string|element)"};class TemplateFactory extends Config{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Default$6}static get DefaultType(){return DefaultType$6}static get NAME(){return NAME$7}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},DefaultContentType)}_setContent(e,t,n){const s=SelectorEngine.findOne(n,e);s&&((t=this._resolvePossibleFunction(t))?isElement(t)?this._putElementInTemplate(getElement(t),s):this._config.html?s.innerHTML=this._maybeSanitize(t):s.textContent=t:s.remove())}_maybeSanitize(e){return this._config.sanitize?sanitizeHtml(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return execute(e,[void 0,this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const NAME$6="tooltip",DISALLOWED_ATTRIBUTES=new Set(["sanitize","allowList","sanitizeFn"]),ESCAPE_KEY="Escape",CLASS_NAME_FADE$2="fade",CLASS_NAME_MODAL="modal",CLASS_NAME_SHOW$2="show",SELECTOR_TOOLTIP_INNER=".tooltip-inner",SELECTOR_MODAL=".modal",SELECTOR_DATA_TOGGLE$3='[data-bs-toggle="tooltip"]',EVENT_MODAL_HIDE="hide.bs.modal",TRIGGER_HOVER="hover",TRIGGER_FOCUS="focus",TRIGGER_CLICK="click",TRIGGER_MANUAL="manual",EVENT_HIDE$2="hide",EVENT_HIDDEN$2="hidden",EVENT_SHOW$2="show",EVENT_SHOWN$2="shown",EVENT_INSERTED="inserted",EVENT_CLICK$3="click",EVENT_FOCUSIN$2="focusin",EVENT_FOCUSOUT$1="focusout",EVENT_MOUSEENTER$1="mouseenter",EVENT_MOUSELEAVE="mouseleave",EVENT_KEYDOWN$1="keydown",AttachmentMap={AUTO:"auto",TOP:"top",RIGHT:isRTL()?"left":"right",BOTTOM:"bottom",LEFT:isRTL()?"right":"left"},Default$5={allowList:DefaultAllowlist,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",floatingConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},DefaultType$5={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",floatingConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class Tooltip extends BaseComponent{constructor(e,t){if(void 0===computePosition)throw new TypeError("Bootstrap's tooltips require Floating UI (https://floating-ui.com)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._floatingCleanup=null,this._keydownHandler=null,this._templateFactory=null,this._newContent=null,this._mediaQueryListeners=[],this._responsivePlacements=null,this.tip=null,this._parseResponsivePlacements(),this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return Default$5}static get DefaultType(){return DefaultType$5}static get NAME(){return NAME$6}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),this._removeEscapeListener(),EventHandler.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposeFloating(),this._disposeMediaQueryListeners(),super.dispose()}async show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const e=EventHandler.trigger(this._element,this.constructor.eventName("show")),t=(findShadowRoot(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(e.defaultPrevented||!t)return void(this._isHovered=!1);this._disposeFloating();const n=this._getTipElement();this._element.setAttribute("aria-describedby",n.getAttribute("id"));let{container:s}=this._config;const i=this._element.closest("dialog[open]");if(i&&s===document.body&&(s=i),this._element.ownerDocument.documentElement.contains(this.tip)||(s.append(n),EventHandler.trigger(this._element,this.constructor.eventName("inserted"))),await this._createFloating(n),n.classList.add("show"),this._setEscapeListener(),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.on(e,"mouseover",noop);this._queueCallback(()=>{EventHandler.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!EventHandler.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._removeEscapeListener(),this._getTipElement().classList.remove("show"),"ontouchstart"in document.documentElement)for(const e of document.body.children)EventHandler.off(e,"mouseover",noop);this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposeFloating(),this._element.removeAttribute("aria-describedby"),EventHandler.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._floatingCleanup&&this.tip&&this._updateFloatingPosition()}_isWithContent(){return Boolean(this._getTitle())||this._hasNewContent()}_hasNewContent(){return Boolean(this._newContent)&&Object.values(this._newContent).some(Boolean)}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();t.classList.remove("fade","show"),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=getUID(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add("fade"),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposeFloating(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new TemplateFactory({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{[SELECTOR_TOOLTIP_INNER]:this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains("fade")}_isShown(){return this.tip&&this.tip.classList.contains("show")}_getPlacement(e){if(this._responsivePlacements){const e=getResponsivePlacement(this._responsivePlacements,"top");return AttachmentMap[e.toUpperCase()]||e}const t=execute(this._config.placement,[this,e,this._element]);return AttachmentMap[t.toUpperCase()]||t}_parseResponsivePlacements(){"string"==typeof this._config.placement?(this._responsivePlacements=parseResponsivePlacement(this._config.placement,"top"),this._responsivePlacements&&this._setupMediaQueryListeners()):this._responsivePlacements=null}_setupMediaQueryListeners(){this._disposeMediaQueryListeners(),this._mediaQueryListeners=createBreakpointListeners(()=>{this._isShown()&&this._updateFloatingPosition()})}_disposeMediaQueryListeners(){disposeBreakpointListeners(this._mediaQueryListeners),this._mediaQueryListeners=[]}async _createFloating(e){const t=this._getPlacement(e),n=e.querySelector(`.${this.constructor.NAME}-arrow`);await this._updateFloatingPosition(e,t,n),this._floatingCleanup=autoUpdate(this._element,e,()=>this._updateFloatingPosition(e,null,n))}async _updateFloatingPosition(e=this.tip,t=null,n=null){if(!e)return;t||(t=this._getPlacement(e)),n||(n=e.querySelector(`.${this.constructor.NAME}-arrow`));const s=this._getFloatingMiddleware(n),i=this._getFloatingConfig(t,s),{x:o,y:r,placement:l,middlewareData:a}=await computePosition(this._element,e,i);if(Object.assign(e.style,{position:"absolute",left:`${o}px`,top:`${r}px`}),n&&(n.style.position="absolute"),Manipulator.setDataAttribute(e,"placement",l),n&&a.arrow){const{x:e,y:t}=a.arrow,s=l.startsWith("top")||l.startsWith("bottom");Object.assign(n.style,{left:s&&null!==e?`${e}px`:"",top:s||null===t?"":`${t}px`,right:"",bottom:""})}}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?({placement:t,rects:n})=>e({placement:t,reference:n.reference,floating:n.floating},this._element):e}_resolvePossibleFunction(e){return execute(e,[this._element,this._element])}_getFloatingMiddleware(e){const t=this._getOffset(),n=[offset("function"==typeof t?t:{mainAxis:t[1]||0,crossAxis:t[0]||0}),flip({fallbackPlacements:this._config.fallbackPlacements}),shift({boundary:"clippingParents"===this._config.boundary?"clippingAncestors":this._config.boundary})];return e&&n.push(arrow({element:e})),n}_getFloatingConfig(e,t){const n={placement:e,middleware:t};return{...n,...execute(this._config.floatingConfig,[void 0,n])}}_setListeners(){const e=this._config.trigger.split(" ");for(const t of e)if("click"===t)EventHandler.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger.click=!(t._isShown()&&t._activeTrigger.click),t.toggle()});else if("manual"!==t){const e="hover"===t?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),n="hover"===t?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");EventHandler.on(this._element,e,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?"focus":"hover"]=!0,t._enter()}),EventHandler.on(this._element,n,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?"focus":"hover"]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},EventHandler.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler)}_setEscapeListener(){this._keydownHandler||(this._keydownHandler=e=>{"Escape"===e.key&&this._isShown()&&this.tip.isConnected&&(e.preventDefault(),e.stopPropagation(),this.hide())},this._element.ownerDocument.addEventListener("keydown",this._keydownHandler,!0))}_removeEscapeListener(){this._keydownHandler&&(this._element.ownerDocument.removeEventListener("keydown",this._keydownHandler,!0),this._keydownHandler=null)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=Manipulator.getDataAttributes(this._element);for(const e of Object.keys(t))DISALLOWED_ATTRIBUTES.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:getElement(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"!=typeof e.title&&"boolean"!=typeof e.title||(e.title=e.title.toString()),"number"!=typeof e.content&&"boolean"!=typeof e.content||(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposeFloating(){this._floatingCleanup&&(this._floatingCleanup(),this._floatingCleanup=null),this.tip&&(this.tip.remove(),this.tip=null)}}const initTooltip=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$3);t&&Tooltip.getOrCreateInstance(t)};EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$3,initTooltip),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$3,initTooltip);const NAME$5="popover",SELECTOR_TITLE=".popover-header",SELECTOR_CONTENT=".popover-body",SELECTOR_DATA_TOGGLE$2='[data-bs-toggle="popover"]',EVENT_CLICK$2="click",EVENT_FOCUSIN$1="focusin",EVENT_MOUSEENTER="mouseenter",Default$4={...Tooltip.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},DefaultType$4={...Tooltip.DefaultType,content:"(null|string|element|function)"};class Popover extends Tooltip{static get Default(){return Default$4}static get DefaultType(){return DefaultType$4}static get NAME(){return NAME$5}_isWithContent(){return Boolean(this._getTitle()||this._getContent())||this._hasNewContent()}_getContentForTemplate(){return{[SELECTOR_TITLE]:this._getTitle(),[SELECTOR_CONTENT]:this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}}const initPopover=e=>{const t=e.target.closest(SELECTOR_DATA_TOGGLE$2);t&&("click"===e.type&&e.preventDefault(),Popover.getOrCreateInstance(t))};EventHandler.on(document,"click",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"focusin",SELECTOR_DATA_TOGGLE$2,initPopover),EventHandler.on(document,"mouseenter",SELECTOR_DATA_TOGGLE$2,initPopover);const NAME$4="range",DATA_KEY$4="bs.range",EVENT_KEY$4=".bs.range",DATA_API_KEY$1=".data-api",EVENT_CHANGED="changed.bs.range",EVENT_DOM_CONTENT_LOADED="DOMContentLoaded.bs.range.data-api",EVENT_INPUT="input",EVENT_CHANGE="change",SELECTOR_RANGE=".form-range",SELECTOR_INPUT=".form-range-input",CLASS_NAME_BUBBLE="form-range-bubble",CLASS_NAME_TICKS="form-range-ticks",CLASS_NAME_TICK="form-range-tick",CLASS_NAME_TICK_LABEL="form-range-tick-label",PROPERTY_FILL="--bs-range-fill",Default$3={bubble:!1,formatter:null},DefaultType$3={bubble:"(boolean|null)",formatter:"(function|null)"};class Range extends BaseComponent{constructor(e,t){super(e,t),this._element&&(this._input=SelectorEngine.findOne(SELECTOR_INPUT,this._element),this._input&&(this._bubble=null,this._bubbleText=null,this._ticks=null,this._updateHandler=()=>this._update(),this._config.bubble&&this._createBubble(),this._createTicks(),this._addEventListeners(),this._update()))}static get Default(){return Default$3}static get DefaultType(){return DefaultType$3}static get NAME(){return NAME$4}update(){this._update()}dispose(){EventHandler.off(this._input,"input",this._updateHandler),EventHandler.off(this._input,"change",this._updateHandler),this._bubble?.remove(),this._ticks?.remove(),super.dispose()}_configAfterMerge(e){return null===e.bubble&&(e.bubble=!0),e}_addEventListeners(){EventHandler.on(this._input,"input",this._updateHandler),EventHandler.on(this._input,"change",this._updateHandler)}_min(){return""===this._input.min?0:Number.parseFloat(this._input.min)}_max(){return""===this._input.max?100:Number.parseFloat(this._input.max)}_value(){return Number.parseFloat(this._input.value)}_ratio(){const e=this._max()-this._min();return e>0?(this._value()-this._min())/e:0}_update(){this._element.style.setProperty(PROPERTY_FILL,`${this._ratio()}`),this._bubbleText&&(this._bubbleText.textContent=this._format(this._value())),EventHandler.trigger(this._input,EVENT_CHANGED,{value:this._value()})}_format(e){return"function"==typeof this._config.formatter?this._config.formatter(e):String(e)}_createBubble(){this._bubble=document.createElement("output"),this._bubble.className=`${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`,this._bubble.setAttribute("aria-hidden","true");const e=document.createElement("div");e.className="tooltip-arrow",this._bubbleText=document.createElement("div"),this._bubbleText.className="tooltip-inner",this._bubble.append(e,this._bubbleText),this._input.insertAdjacentElement("afterend",this._bubble)}_createTicks(){const e=this._input.getAttribute("list"),t=e?document.getElementById(e):null;if(!t)return;const n=this._min(),s=this._max()-n||1,i=[];for(const e of SelectorEngine.find("option",t)){const t=Number.parseFloat(e.value);if(!Number.isNaN(t)){const o=Math.min(Math.max((t-n)/s,0),1);i.push({ratio:o,label:e.label})}}if(0===i.length)return;i.sort((e,t)=>e.ratio-t.ratio),this._ticks=document.createElement("div"),this._ticks.className=CLASS_NAME_TICKS,this._ticks.setAttribute("aria-hidden","true");const o=[0,...i.map(e=>e.ratio),1];this._ticks.style.gridTemplateColumns=o.slice(1).map((e,t)=>e-o[t]+"fr").join(" ");for(const[e,t]of i.entries()){const n=document.createElement("span");if(n.className=CLASS_NAME_TICK,n.style.gridColumnStart=`${e+2}`,t.label){const e=document.createElement("span");e.className=CLASS_NAME_TICK_LABEL,e.textContent=t.label,n.append(e)}this._ticks.append(n)}this._element.append(this._ticks)}}EventHandler.on(document,EVENT_DOM_CONTENT_LOADED,()=>{for(const e of SelectorEngine.find(".form-range"))Range.getOrCreateInstance(e)});const NAME$3="scrollspy",DATA_KEY$3="bs.scrollspy",EVENT_KEY$3=`.${DATA_KEY$3}`,DATA_API_KEY=".data-api",EVENT_ACTIVATE=`activate${EVENT_KEY$3}`,EVENT_CLICK$1=`click${EVENT_KEY$3}`,EVENT_SCROLL=`scroll${EVENT_KEY$3}`,EVENT_SCROLLEND=`scrollend${EVENT_KEY$3}`,EVENT_RESIZE=`resize${EVENT_KEY$3}`,EVENT_LOAD_DATA_API$1=`load${EVENT_KEY$3}.data-api`,CLASS_NAME_MENU_ITEM="menu-item",CLASS_NAME_ACTIVE$1="active",SELECTOR_DATA_SPY='[data-bs-spy="scroll"]',SELECTOR_TARGET_LINKS="[href]",SELECTOR_NAV_LIST_GROUP=".nav, .list-group",SELECTOR_NAV_LINKS=".nav-link",SELECTOR_NAV_ITEMS=".nav-item",SELECTOR_LIST_ITEMS=".list-group-item",SELECTOR_LINK_ITEMS=".nav-link, .nav-item > .nav-link, .list-group-item",SELECTOR_MENU_TOGGLE$1='[data-bs-toggle="menu"]',SCROLL_IDLE_TIMEOUT=100,RESIZE_DEBOUNCE=100,Default$2={rootMargin:null,smoothScroll:!1,target:null,threshold:[0],topMargin:"12%"},DefaultType$2={rootMargin:"(string|null)",smoothScroll:"boolean",target:"element",threshold:"array",topMargin:"string"};class ScrollSpy extends BaseComponent{constructor(e,t){super(e,t),this._sections=[],this._linkBySection=new Map,this._sectionByLink=new Map,this._intersecting=new Set,this._activeTarget=null,this._lastActive=null,this._atBottom=!1,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._observer=null,this._sentinel=null,this._sentinelObserver=null,this._pendingNavigation=null,this._settleTimeout=null,this._settleHandler=null,this._scrollIdleHandler=null,this._resizeHandler=null,this._resizeTimeout=null,this.refresh()}static get Default(){return Default$2}static get DefaultType(){return DefaultType$2}static get NAME(){return NAME$3}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?.disconnect(),this._intersecting.clear(),this._observer=this._getNewObserver();for(const e of this._sections)this._observer.observe(e);this._setUpSentinel(),this._maybeAddResizeListener()}dispose(){this._observer?.disconnect(),this._teardownSentinel(),this._disarmSettle(),this._removeResizeListener(),EventHandler.off(this._config.target,EVENT_CLICK$1),super.dispose()}_configAfterMerge(e){return e.target=getElement(e.target)||document.body,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin??this._getDerivedRootMargin()};return new IntersectionObserver(e=>this._onIntersect(e),e)}_onIntersect(e){for(const t of e)t.isIntersecting?this._intersecting.add(t.target):this._intersecting.delete(t.target);this._computeActive()}_computeActive(){if(!this._element?.isConnected||0===this._sections.length)return;let e=null;if(this._atBottom)e=this._sections.at(-1);else{for(const t of this._sections)this._intersecting.has(t)&&(e=t);e||=this._lastActive??this._sections.at(0)}if(!e)return;this._lastActive=e;const t=this._linkBySection.get(e);t&&this._process(t)}_parseTopMargin(){const e=String(this._config.topMargin);return{value:Number.parseFloat(e)||0,unit:e.endsWith("%")?"%":"px"}}_getDerivedRootMargin(){const{value:e,unit:t}=this._parseTopMargin();let n=e;if("px"===t){const t=this._rootElement?this._rootElement.clientHeight:document.documentElement.clientHeight||window.innerHeight;n=t?e/t*100:12}return`0px 0px -${Math.min(Math.max(100-n,0),100)}% 0px`}_usesPixelMargin(){return!this._config.rootMargin&&"px"===this._parseTopMargin().unit}_setUpSentinel(){if(this._teardownSentinel(),0===this._sections.length)return;const e=document.createElement("div");e.setAttribute("aria-hidden","true"),e.style.cssText="position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;",this._element.append(e),this._sentinel=e,this._sentinelObserver=new IntersectionObserver(e=>this._onSentinel(e),{root:this._rootElement,threshold:[0]}),this._sentinelObserver.observe(e)}_onSentinel(e){const t=e.at(-1);this._atBottom=Boolean(t?.isIntersecting)&&this._isOverflowing(),this._computeActive()}_isOverflowing(){const e=this._rootElement||document.scrollingElement||document.documentElement;return e.scrollHeight>e.clientHeight}_teardownSentinel(){this._sentinelObserver?.disconnect(),this._sentinelObserver=null,this._sentinel?.remove(),this._sentinel=null,this._atBottom=!1}_maybeAddResizeListener(){this._removeResizeListener(),this._usesPixelMargin()&&(this._resizeHandler=()=>{clearTimeout(this._resizeTimeout),this._resizeTimeout=setTimeout(()=>this._rebuildObserver(),100)},EventHandler.on(window,EVENT_RESIZE,this._resizeHandler))}_removeResizeListener(){clearTimeout(this._resizeTimeout),this._resizeTimeout=null,this._resizeHandler&&(EventHandler.off(window,EVENT_RESIZE,this._resizeHandler),this._resizeHandler=null)}_rebuildObserver(){if(this._observer){this._observer.disconnect(),this._intersecting.clear(),this._observer=this._getNewObserver();for(const e of this._sections)this._observer.observe(e)}}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(EventHandler.off(this._config.target,EVENT_CLICK$1),EventHandler.on(this._config.target,EVENT_CLICK$1,"[href]",e=>{const t=e.target.closest("[href]"),n=t&&this._sectionByLink.get(t);if(!n||!this._element)return;e.preventDefault();const s=this._rootElement||window,i=n.offsetTop-this._element.offsetTop,o=this._rootElement?this._rootElement.scrollTop:window.scrollY??window.pageYOffset;if(matchMedia("(prefers-reduced-motion: reduce)").matches||Math.abs(o-i)<=2)return s.scrollTo?s.scrollTo({top:i,behavior:"auto"}):s.scrollTop=i,void this._settleNavigation(t.hash,n);this._pendingNavigation={hash:t.hash,section:n},this._armSettle(),s.scrollTo?s.scrollTo({top:i,behavior:"smooth"}):s.scrollTop=i}))}_armSettle(){this._disarmSettle();const e=this._getSettleTarget();this._settleHandler=()=>this._onSettle(),this._scrollIdleHandler=()=>{clearTimeout(this._settleTimeout),this._settleTimeout=setTimeout(()=>this._onSettle(),100)},EventHandler.on(e,EVENT_SCROLLEND,this._settleHandler),EventHandler.on(e,EVENT_SCROLL,this._scrollIdleHandler)}_disarmSettle(){clearTimeout(this._settleTimeout),this._settleTimeout=null;const e=this._getSettleTarget();this._settleHandler&&(EventHandler.off(e,EVENT_SCROLLEND,this._settleHandler),this._settleHandler=null),this._scrollIdleHandler&&(EventHandler.off(e,EVENT_SCROLL,this._scrollIdleHandler),this._scrollIdleHandler=null)}_getSettleTarget(){return this._rootElement||document}_onSettle(){if(this._disarmSettle(),!this._pendingNavigation)return;const{hash:e,section:t}=this._pendingNavigation;this._settleNavigation(e,t)}_settleNavigation(e,t){this._pendingNavigation=null,window.history?.replaceState&&window.history.replaceState(null,"",e),t.hasAttribute("tabindex")||t.setAttribute("tabindex","-1"),t.focus({preventScroll:!0})}_initializeTargetsAndObservables(){this._sections=[],this._linkBySection=new Map,this._sectionByLink=new Map;const e=SelectorEngine.find("[href]",this._config.target),t=new Set;for(const n of e){if(!n.hash||isDisabled(n))continue;const e=decodeFragment(n.hash.slice(1));if(!e)continue;const s=document.getElementById(e);s&&this._element.contains(s)&&isVisible(s)&&(this._sectionByLink.set(n,s),this._linkBySection.set(s,n),t.has(s)||(t.add(s),this._sections.push(s)))}this._sections.sort((e,t)=>e.getBoundingClientRect().top-t.getBoundingClientRect().top)}_process(e){this._activeTarget!==e&&(this._clearActiveClass(this._config.target),this._activeTarget=e,e.classList.add("active"),this._activateParents(e),EventHandler.trigger(this._element,EVENT_ACTIVATE,{relatedTarget:e}))}_activateParents(e){if(e.classList.contains("menu-item")){const t=e.closest(".menu")?.previousElementSibling;return void(t?.matches(SELECTOR_MENU_TOGGLE$1)&&t.classList.add("active"))}for(const t of SelectorEngine.parents(e,".nav, .list-group"))for(const e of SelectorEngine.prev(t,SELECTOR_LINK_ITEMS))e.classList.add("active")}_clearActiveClass(e){e.classList.remove("active");const t=SelectorEngine.find("[href].active",e);for(const e of t)e.classList.remove("active")}}function decodeFragment(e){try{return decodeURIComponent(e)}catch{return e}}EventHandler.on(window,EVENT_LOAD_DATA_API$1,()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_SPY))ScrollSpy.getOrCreateInstance(e)});const NAME$2="tab",DATA_KEY$2="bs.tab",EVENT_KEY$2=".bs.tab",EVENT_HIDE$1="hide.bs.tab",EVENT_HIDDEN$1="hidden.bs.tab",EVENT_SHOW$1="show.bs.tab",EVENT_SHOWN$1="shown.bs.tab",EVENT_CLICK_DATA_API="click.bs.tab",EVENT_KEYDOWN="keydown.bs.tab",EVENT_LOAD_DATA_API="load.bs.tab",ARROW_LEFT_KEY="ArrowLeft",ARROW_RIGHT_KEY="ArrowRight",ARROW_UP_KEY="ArrowUp",ARROW_DOWN_KEY="ArrowDown",HOME_KEY="Home",END_KEY="End",CLASS_NAME_ACTIVE="active",CLASS_NAME_FADE$1="fade",CLASS_NAME_SHOW$1="show",SELECTOR_MENU_TOGGLE='[data-bs-toggle="menu"]',SELECTOR_MENU=".menu",NOT_SELECTOR_MENU_TOGGLE=`:not(${SELECTOR_MENU_TOGGLE})`,SELECTOR_TAB_PANEL='.list-group, .nav, [role="tablist"]',SELECTOR_OUTER=".nav-item, .list-group-item",SELECTOR_INNER=`.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role="tab"]${NOT_SELECTOR_MENU_TOGGLE}`,SELECTOR_DATA_TOGGLE$1='[data-bs-toggle="tab"]',SELECTOR_INNER_ELEM=`${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE$1}`,SELECTOR_DATA_TOGGLE_ACTIVE='.active[data-bs-toggle="tab"]';class Tab extends BaseComponent{constructor(e){super(e),this._parent=this._element.closest(SELECTOR_TAB_PANEL),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),EventHandler.on(this._element,EVENT_KEYDOWN,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const e=this._element;if(this._elemIsActive(e))return;const t=this._getActiveElem(),n=t?EventHandler.trigger(t,EVENT_HIDE$1,{relatedTarget:e}):null;EventHandler.trigger(e,EVENT_SHOW$1,{relatedTarget:t}).defaultPrevented||n&&n.defaultPrevented||(this._deactivate(t,e),this._activate(e,t))}_activate(e,t){e&&(e.classList.add("active"),this._activate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.removeAttribute("tabindex"),e.setAttribute("aria-selected",!0),this._toggleMenu(e,!0),EventHandler.trigger(e,EVENT_SHOWN$1,{relatedTarget:t})):e.classList.add("show")},e,e.classList.contains("fade")))}_deactivate(e,t){e&&(e.classList.remove("active"),e.blur(),this._deactivate(SelectorEngine.getElementFromSelector(e)),this._queueCallback(()=>{"tab"===e.getAttribute("role")?(e.setAttribute("aria-selected",!1),e.setAttribute("tabindex","-1"),this._toggleMenu(e,!1),EventHandler.trigger(e,EVENT_HIDDEN$1,{relatedTarget:t})):e.classList.remove("show")},e,e.classList.contains("fade")))}_keydown(e){if(![ARROW_LEFT_KEY,ARROW_RIGHT_KEY,ARROW_UP_KEY,ARROW_DOWN_KEY,HOME_KEY,END_KEY].includes(e.key))return;if(e.altKey||e.ctrlKey||e.metaKey)return;e.stopPropagation(),e.preventDefault();const t=this._getChildren().filter(e=>!isDisabled(e));let n;if([HOME_KEY,END_KEY].includes(e.key))n=e.key===HOME_KEY?t[0]:t.at(-1);else{const s=[ARROW_RIGHT_KEY,ARROW_DOWN_KEY].includes(e.key);n=getNextActiveElement(t,e.target,s,!0)}n&&(n.focus({preventScroll:!0}),Tab.getOrCreateInstance(n).show())}_getChildren(){return SelectorEngine.find(SELECTOR_INNER_ELEM,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const t=SelectorEngine.getElementFromSelector(e);t&&(this._setAttributeIfNotExists(t,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(t,"aria-labelledby",`${e.id}`))}_toggleMenu(e,t){const n=this._getOuterElement(e),s=SelectorEngine.findOne(SELECTOR_MENU_TOGGLE,n);if(!s)return;const i=SelectorEngine.findOne(".menu",n);s.classList.toggle("active",t),i&&i.classList.toggle("show",t),s.setAttribute("aria-expanded",t)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains("active")}_getInnerElement(e){return e.matches(SELECTOR_INNER_ELEM)?e:SelectorEngine.findOne(SELECTOR_INNER_ELEM,e)}_getOuterElement(e){return e.closest(SELECTOR_OUTER)||e}}EventHandler.on(document,"click.bs.tab",SELECTOR_DATA_TOGGLE$1,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),isDisabled(this)||Tab.getOrCreateInstance(this).show()}),EventHandler.on(window,"load.bs.tab",()=>{for(const e of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE))Tab.getOrCreateInstance(e)});const NAME$1="toast",DATA_KEY$1="bs.toast",EVENT_KEY$1=".bs.toast",EVENT_MOUSEOVER="mouseover.bs.toast",EVENT_MOUSEOUT="mouseout.bs.toast",EVENT_FOCUSIN="focusin.bs.toast",EVENT_FOCUSOUT="focusout.bs.toast",EVENT_HIDE="hide.bs.toast",EVENT_HIDDEN="hidden.bs.toast",EVENT_SHOW="show.bs.toast",EVENT_SHOWN="shown.bs.toast",CLASS_NAME_FADE="fade",CLASS_NAME_HIDE="hide",CLASS_NAME_SHOW="show",CLASS_NAME_SHOWING="showing",DefaultType$1={animation:"boolean",autohide:"boolean",delay:"number"},Default$1={animation:!0,autohide:!0,delay:5e3};class Toast extends BaseComponent{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return Default$1}static get DefaultType(){return DefaultType$1}static get NAME(){return NAME$1}show(){EventHandler.trigger(this._element,EVENT_SHOW).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove("hide"),reflow(this._element),this._element.classList.add("show","showing"),this._queueCallback(()=>{this._element.classList.remove("showing"),EventHandler.trigger(this._element,EVENT_SHOWN),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(EventHandler.trigger(this._element,EVENT_HIDE).defaultPrevented||(this._element.classList.add("showing"),this._queueCallback(()=>{this._element.classList.add("hide"),this._element.classList.remove("showing","show"),EventHandler.trigger(this._element,EVENT_HIDDEN)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove("show"),super.dispose()}isShown(){return this._element.classList.contains("show")}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){EventHandler.on(this._element,EVENT_MOUSEOVER,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_MOUSEOUT,e=>this._onInteraction(e,!1)),EventHandler.on(this._element,EVENT_FOCUSIN,e=>this._onInteraction(e,!0)),EventHandler.on(this._element,EVENT_FOCUSOUT,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}}enableDismissTrigger(Toast);const NAME="toggler",DATA_KEY="bs.toggler",EVENT_KEY=`.${DATA_KEY}`,EVENT_TOGGLE=`toggle${EVENT_KEY}`,EVENT_TOGGLED=`toggled${EVENT_KEY}`,EVENT_CLICK="click",SELECTOR_DATA_TOGGLE='[data-bs-toggle="toggler"]',DefaultType={attribute:"string",value:"(string|number|boolean)"},Default={attribute:"class",value:null};class Toggler extends BaseComponent{static get Default(){return Default}static get DefaultType(){return DefaultType}static get NAME(){return NAME}toggle(){EventHandler.trigger(this._element,EVENT_TOGGLE).defaultPrevented||(this._execute(),EventHandler.trigger(this._element,EVENT_TOGGLED))}_execute(){const{attribute:e,value:t}=this._config;"id"!==e&&("class"!==e?this._element.getAttribute(e)!==String(t)?this._element.setAttribute(e,t):this._element.removeAttribute(e):this._element.classList.toggle(t))}}eventActionOnPlugin(Toggler,"click",SELECTOR_DATA_TOGGLE,"toggle");export{Alert,Button,Carousel,Chips,Collapse,Combobox,Datepicker,Dialog,Drawer,Menu,NavOverflow,OtpInput,Popover,Range,ScrollSpy,Strength,Tab,Toast,Toggler,Tooltip};
 //# sourceMappingURL=bootstrap.min.js.map
\ No newline at end of file
index 855b9c7d8c56bb80b99e99334c00b4a04e91cc9a..3d2a0349534f764aac58906c1de0e4cca2141ce0 100644 (file)
@@ -1 +1 @@
-{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","this","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","length","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","existingInstance","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","complete","selected","triggerArray","isOpen","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","undefined","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","createBreakpointListeners","listeners","minWidth","mql","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","offset","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","Menu","static","computePosition","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","body","focusVisible","_openInstances","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","wrapper","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","bottom","defaultConfig","_getContainer","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","timeoutId","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","at","clearMenus","composedPath","isMenuTarget","formAncestor","isInsideMenuForm","dataApiKeydownHandler","isInput","isContentEditable","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","dateStr","year","month","day","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","getTime","formatted","String","getDate","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","showEvent","currentDialog","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconSpan","_resolveIcon","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","iconHtml","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","usedWidth","overflowThreshold","reduce","sum","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","_initSwipe","swipeConfig","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","end","setSelectionRange","_onInput","_onFocus","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","sanitized","isFocused","caret","selectionStart","char","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","start","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","selectionEnd","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","isInTheDom","ownerDocument","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_hasNewContent","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","sort","stops","gridTemplateColumns","stop","tick","gridColumnStart","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_SCROLLEND","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","SCROLL_IDLE_TIMEOUT","RESIZE_DEBOUNCE","rootMargin","smoothScroll","topMargin","ScrollSpy","_sections","_linkBySection","_sectionByLink","_intersecting","_activeTarget","_lastActive","_atBottom","_rootElement","overflowY","_sentinel","_sentinelObserver","_pendingNavigation","_settleTimeout","_settleHandler","_scrollIdleHandler","_resizeHandler","_resizeTimeout","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","_setUpSentinel","_maybeAddResizeListener","_teardownSentinel","_disarmSettle","_removeResizeListener","_getDerivedRootMargin","_onIntersect","_computeActive","_process","_parseTopMargin","unit","endsWith","percent","rootHeight","clientHeight","innerHeight","_usesPixelMargin","sentinel","cssText","_onSentinel","_isOverflowing","scroller","scrollingElement","scrollHeight","_rebuildObserver","height","offsetTop","currentTop","scrollTop","scrollY","pageYOffset","_settleNavigation","hash","_armSettle","_getSettleTarget","_onSettle","history","replaceState","targetLinks","seen","anchor","decodeFragment","_clearActiveClass","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","altKey","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","_execute"],"sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../js/src/datepicker.js","../../js/src/dialog-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...instanceMap.keys()][0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll',\n  'scrollend'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsely appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [...Element.prototype.querySelectorAll.call(element, selector)]\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [...element.children].filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { isRTL, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\n\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // menu wrapper\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Don't auto-close when interacting with a form inside the menu — clicks\n      // on a form's labels, buttons, etc. (not just inputs) should keep it open.\n      const formAncestor = event.target.closest?.('form')\n      const isInsideMenuForm = Boolean(formAncestor) && instance._menu.contains(formAncestor)\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName) || isInsideMenuForm)) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // Treat contenteditable hosts (e.g. rich-text editors) like inputs so the\n    // menu doesn't hijack their arrow keys.\n    const isInput = /input|textarea/i.test(event.target.tagName) || event.target.isContentEditable\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items.at(-1)\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('shown'),\n        { relatedTarget }\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  dispose() {\n    // If disposed while still open, close the native <dialog> and restore body\n    // scroll. Otherwise `dialog-open` (overflow: hidden) would stay stuck on the\n    // body — e.g. when an SPA tears the component down mid-navigation.\n    if (this._element.open) {\n      this._closeAndCleanup()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      // Lock scroll on the root element (not <body>) so it lands on the same\n      // element that carries `scrollbar-gutter: stable`. Co-locating them keeps\n      // the gutter reserved while the scrollbar is hidden, so the page doesn't\n      // shift (and the ::backdrop covers the gutter instead of leaving a strip).\n      document.documentElement.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.documentElement.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, `keydown${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends DialogBase {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus({ preventScroll: true })\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._collapseBelow = 0\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\n      if (overflowItem) {\n        if (itemsToOverflow.length > 0) {\n          overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n        } else {\n          overflowItem.classList.add(CLASS_NAME_HIDDEN)\n        }\n      }\n\n      if (itemsToOverflow.length > 0) {\n        EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n          overflowCount: itemsToOverflow.length,\n          visibleCount: this._items.length - itemsToOverflow.length\n        })\n      }\n\n      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null,\n  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._deltaY = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    if (isVisible(this)) {\n      this.focus({ preventScroll: true })\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.value = ''\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio\n * types — notably NOT `data:text/html`, which is an XSS vector.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L49\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z=]+$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [...createdDocument.body.querySelectorAll('*')]\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [...element.attributes]\n    const allowedAttributes = [...(allowList['*'] || []), ...(allowList[elementName] || [])]\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\nconst EVENT_KEYDOWN = 'keydown'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._keydownHandler = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    this._removeEscapeListener()\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      // Reset the transient hover/active state so a prevented (or not-in-DOM)\n      // show doesn't leave `_isHovered` stuck true — otherwise a click-triggered\n      // tip would hit the `_enter()` early-return on every later click and never\n      // reopen.\n      this._isHovered = false\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._removeEscapeListener()\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle()) || this._hasNewContent()\n  }\n\n  // Content supplied via setContent() (a `{ selector: content }` map) overrides\n  // the configured title/content when rendering, so it should also satisfy the\n  // show() gate — otherwise a tip whose content is only set via setContent()\n  // can never be shown.\n  _hasNewContent() {\n    return Boolean(this._newContent) && Object.values(this._newContent).some(Boolean)\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    // Coerce number/boolean title and content to strings. `data-bs-title=\"true\"`\n    // / `data-bs-content=\"false\"` are auto-converted to booleans by the data-API,\n    // which would otherwise fail the (null|string|element|function) type check.\n    if (typeof config.title === 'number' || typeof config.title === 'boolean') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number' || typeof config.content === 'boolean') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return Boolean(this._getTitle() || this._getContent()) || this._hasNewContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap range.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_SCROLLEND = `scrollend${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\n// How long (ms) to wait after the last scroll event before settling a pending\n// smooth-scroll navigation, when the native `scrollend` event is unavailable.\nconst SCROLL_IDLE_TIMEOUT = 100\n// Debounce (ms) for rebuilding the observer on resize (px activation lines only).\nconst RESIZE_DEBOUNCE = 100\n\nconst Default = {\n  // `rootMargin` is the raw IntersectionObserver root-box override. When set it\n  // takes precedence over `topMargin` and is passed straight to the observer.\n  // Leave it null and use `topMargin` for everyday use.\n  rootMargin: null,\n  smoothScroll: false,\n  target: null,\n  threshold: [0],\n  // Position of the activation line, measured from the top of the scroll root.\n  // The active section is the deepest one whose top has scrolled to/above it.\n  // Accepts a percentage (`12%`) or pixels (`96px`, e.g. below a sticky navbar).\n  topMargin: '12%'\n}\n\nconst DefaultType = {\n  rootMargin: '(string|null)',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array',\n  topMargin: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._sections = [] // observable section elements, in DOM order\n    this._linkBySection = new Map() // section element -> nav link\n    this._sectionByLink = new Map() // nav link -> section element (for smooth scroll)\n    this._intersecting = new Set() // sections currently crossing the activation line\n    this._activeTarget = null\n    this._lastActive = null // last activated section (keep-last across gaps)\n    this._atBottom = false\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n\n    this._observer = null\n    this._sentinel = null\n    this._sentinelObserver = null\n\n    this._pendingNavigation = null\n    this._settleTimeout = null\n    this._settleHandler = null\n    this._scrollIdleHandler = null\n\n    this._resizeHandler = null\n    this._resizeTimeout = null\n\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    // (Re)build the activation observer.\n    this._observer?.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n\n    // Detect the bottom-of-page case (a short last section whose top never\n    // reaches the activation line) natively, via a dedicated sentinel observer.\n    this._setUpSentinel()\n\n    // A px activation line doesn't track viewport height the way `%` does, so\n    // rebuild the observer (debounced) on resize when px units are in play.\n    this._maybeAddResizeListener()\n  }\n\n  dispose() {\n    this._observer?.disconnect()\n    this._teardownSentinel()\n    this._disarmSettle()\n    this._removeResizeListener()\n    EventHandler.off(this._config.target, EVENT_CLICK)\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  // --- Detection (IntersectionObserver-driven) -----------------------------\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin ?? this._getDerivedRootMargin()\n    }\n\n    return new IntersectionObserver(entries => this._onIntersect(entries), options)\n  }\n\n  _onIntersect(entries) {\n    for (const entry of entries) {\n      if (entry.isIntersecting) {\n        this._intersecting.add(entry.target)\n      } else {\n        this._intersecting.delete(entry.target)\n      }\n    }\n\n    this._computeActive()\n  }\n\n  // Single source of truth for active selection, derived only from IO state —\n  // no per-frame layout reads. The active section is the deepest (DOM-order)\n  // one currently crossing the activation line; in a gap we keep the last one;\n  // above the first section the first stays active; at the very bottom the last\n  // section wins.\n  _computeActive() {\n    // Guard against observer callbacks that outlive a disposed/detached instance.\n    if (!this._element?.isConnected || this._sections.length === 0) {\n      return\n    }\n\n    let active = null\n\n    if (this._atBottom) {\n      active = this._sections.at(-1)\n    } else {\n      for (const section of this._sections) {\n        if (this._intersecting.has(section)) {\n          active = section\n        }\n      }\n\n      // No section crosses the line: keep the last active (content gap), or fall\n      // back to the first section at the top of the page.\n      active ||= this._lastActive ?? this._sections.at(0)\n    }\n\n    if (!active) {\n      return\n    }\n\n    this._lastActive = active\n    const link = this._linkBySection.get(active)\n    if (link) {\n      this._process(link)\n    }\n  }\n\n  // Single source of truth for the `topMargin` option: its numeric value and\n  // whether it's expressed as a percentage of the root height or in pixels.\n  _parseTopMargin() {\n    const value = String(this._config.topMargin)\n    return {\n      value: Number.parseFloat(value) || 0,\n      unit: value.endsWith('%') ? '%' : 'px'\n    }\n  }\n\n  // Collapse the observer root to a strip from the top down to the activation\n  // line, so a section is \"intersecting\" exactly while it crosses that line.\n  _getDerivedRootMargin() {\n    const { value, unit } = this._parseTopMargin()\n    let percent = value\n\n    // Express a pixel activation line as a percentage of the root height.\n    if (unit === 'px') {\n      const rootHeight = this._rootElement ?\n        this._rootElement.clientHeight :\n        (document.documentElement.clientHeight || window.innerHeight)\n      percent = rootHeight ? (value / rootHeight) * 100 : 12\n    }\n\n    // Clamp so the bottom inset stays a valid (non-negative) rootMargin even if\n    // the line sits outside the root box.\n    const bottom = Math.min(Math.max(100 - percent, 0), 100)\n    return `0px 0px -${bottom}% 0px`\n  }\n\n  // Whether the activation line is derived from a pixel `topMargin` (in which\n  // case it must be recomputed on resize). An explicit `rootMargin` is owned by\n  // the caller, and a `%` topMargin is recomputed by the browser automatically.\n  _usesPixelMargin() {\n    return !this._config.rootMargin && this._parseTopMargin().unit === 'px'\n  }\n\n  // --- Bottom sentinel -----------------------------------------------------\n\n  _setUpSentinel() {\n    this._teardownSentinel()\n\n    if (this._sections.length === 0) {\n      return\n    }\n\n    const sentinel = document.createElement('div')\n    sentinel.setAttribute('aria-hidden', 'true')\n    sentinel.style.cssText = 'position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;'\n    this._element.append(sentinel)\n    this._sentinel = sentinel\n\n    this._sentinelObserver = new IntersectionObserver(entries => this._onSentinel(entries), {\n      root: this._rootElement,\n      threshold: [0]\n    })\n    this._sentinelObserver.observe(sentinel)\n  }\n\n  _onSentinel(entries) {\n    const entry = entries.at(-1)\n    // Only treat the sentinel as \"bottom reached\" when content actually\n    // overflows; otherwise everything is visible and there's nothing to spy.\n    this._atBottom = Boolean(entry?.isIntersecting) && this._isOverflowing()\n    this._computeActive()\n  }\n\n  _isOverflowing() {\n    const scroller = this._rootElement || document.scrollingElement || document.documentElement\n    return scroller.scrollHeight > scroller.clientHeight\n  }\n\n  _teardownSentinel() {\n    this._sentinelObserver?.disconnect()\n    this._sentinelObserver = null\n    this._sentinel?.remove()\n    this._sentinel = null\n    this._atBottom = false\n  }\n\n  // --- Resize (px activation lines only) -----------------------------------\n\n  _maybeAddResizeListener() {\n    this._removeResizeListener()\n\n    if (!this._usesPixelMargin()) {\n      return\n    }\n\n    this._resizeHandler = () => {\n      clearTimeout(this._resizeTimeout)\n      this._resizeTimeout = setTimeout(() => this._rebuildObserver(), RESIZE_DEBOUNCE)\n    }\n\n    EventHandler.on(window, EVENT_RESIZE, this._resizeHandler)\n  }\n\n  _removeResizeListener() {\n    clearTimeout(this._resizeTimeout)\n    this._resizeTimeout = null\n\n    if (this._resizeHandler) {\n      EventHandler.off(window, EVENT_RESIZE, this._resizeHandler)\n      this._resizeHandler = null\n    }\n  }\n\n  _rebuildObserver() {\n    if (!this._observer) {\n      return\n    }\n\n    this._observer.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n  }\n\n  // --- Smooth-scroll settle (hash + focus) ---------------------------------\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // Unregister any previous listener so refresh() doesn't stack them.\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const link = event.target.closest(SELECTOR_TARGET_LINKS)\n      const section = link && this._sectionByLink.get(link)\n      if (!section || !this._element) {\n        return\n      }\n\n      event.preventDefault()\n\n      const root = this._rootElement || window\n      const height = section.offsetTop - this._element.offsetTop\n      const currentTop = this._rootElement ?\n        this._rootElement.scrollTop :\n        (window.scrollY ?? window.pageYOffset)\n      const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)').matches\n\n      // If we're already there (or motion is reduced), there will be no scroll\n      // — and thus no `scrollend` — to wait for, so settle immediately. This\n      // avoids a stuck pending navigation that never restores hash/focus.\n      if (reduceMotion || Math.abs(currentTop - height) <= 2) {\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'auto' })\n        } else {\n          root.scrollTop = height\n        }\n\n        this._settleNavigation(link.hash, section)\n        return\n      }\n\n      // Defer the URL-hash and focus updates until the scroll settles, so we\n      // don't thrash the address bar mid-animation (and so the native hash\n      // navigation we just prevented is restored once we arrive).\n      this._pendingNavigation = { hash: link.hash, section }\n      this._armSettle()\n\n      if (root.scrollTo) {\n        root.scrollTo({ top: height, behavior: 'smooth' })\n      } else {\n        root.scrollTop = height\n      }\n    })\n  }\n\n  // Arm a one-shot settle for the in-flight smooth scroll. `scrollend` is the\n  // primary signal; a transient scroll-idle timer covers engines without it.\n  // Both are removed on settle, so a later unrelated scroll can't replay it.\n  _armSettle() {\n    this._disarmSettle()\n\n    const target = this._getSettleTarget()\n\n    this._settleHandler = () => this._onSettle()\n    this._scrollIdleHandler = () => {\n      clearTimeout(this._settleTimeout)\n      this._settleTimeout = setTimeout(() => this._onSettle(), SCROLL_IDLE_TIMEOUT)\n    }\n\n    EventHandler.on(target, EVENT_SCROLLEND, this._settleHandler)\n    EventHandler.on(target, EVENT_SCROLL, this._scrollIdleHandler)\n  }\n\n  _disarmSettle() {\n    clearTimeout(this._settleTimeout)\n    this._settleTimeout = null\n\n    const target = this._getSettleTarget()\n    if (this._settleHandler) {\n      EventHandler.off(target, EVENT_SCROLLEND, this._settleHandler)\n      this._settleHandler = null\n    }\n\n    if (this._scrollIdleHandler) {\n      EventHandler.off(target, EVENT_SCROLL, this._scrollIdleHandler)\n      this._scrollIdleHandler = null\n    }\n  }\n\n  _getSettleTarget() {\n    return this._rootElement || document\n  }\n\n  _onSettle() {\n    this._disarmSettle()\n\n    if (!this._pendingNavigation) {\n      return\n    }\n\n    const { hash, section } = this._pendingNavigation\n    this._settleNavigation(hash, section)\n  }\n\n  _settleNavigation(hash, section) {\n    this._pendingNavigation = null\n\n    // Restore the URL hash (without adding a history entry) now that we've\n    // arrived, and move focus to the section for keyboard/AT users.\n    if (window.history?.replaceState) {\n      window.history.replaceState(null, '', hash)\n    }\n\n    if (!section.hasAttribute('tabindex')) {\n      section.setAttribute('tabindex', '-1')\n    }\n\n    section.focus({ preventScroll: true })\n  }\n\n  // --- Targets / observables ----------------------------------------------\n\n  _initializeTargetsAndObservables() {\n    this._sections = []\n    this._linkBySection = new Map()\n    this._sectionByLink = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n    const seen = new Set()\n\n    for (const anchor of targetLinks) {\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      // Resolve by id (decoded) rather than building a CSS selector, so any\n      // literal id works — dots, slashes, colons, and percent-encoded chars —\n      // without escaping.\n      const id = decodeFragment(anchor.hash.slice(1))\n      if (!id) {\n        continue\n      }\n\n      const section = document.getElementById(id)\n      // ensure the section exists, is scoped to this element, and is visible\n      if (!section || !this._element.contains(section) || !isVisible(section)) {\n        continue\n      }\n\n      this._sectionByLink.set(anchor, section)\n      this._linkBySection.set(section, anchor) // last link wins for a section\n\n      if (!seen.has(section)) {\n        seen.add(section)\n        this._sections.push(section)\n      }\n    }\n\n    // Keep sections in top-to-bottom order so \"deepest\" selection is\n    // well-defined. Read once here (refresh/resize), never on the hot path.\n    this._sections.sort((a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top)\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n// Decode a URL fragment id, tolerating malformed escapes (returns it as-is).\nfunction decodeFragment(hash) {\n  try {\n    return decodeURIComponent(hash)\n  } catch {\n    return hash\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    // Don't hijack modifier+arrow shortcuts (e.g. Alt+Left/Right for browser\n    // history navigation); only the bare keys drive tablist navigation.\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = event.key === HOME_KEY ? children[0] : children.at(-1)\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
+{"version":3,"names":["elementMap","Map","Data","set","element","key","instance","has","instanceMap","get","size","console","error","keys","getAny","values","next","value","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","makeEventUid","uid","getElementEvents","bootstrapHandler","fn","handler","event","hydrateObj","delegateTarget","oneOff","EventHandler","off","type","apply","bootstrapDelegationHandler","selector","domElements","querySelectorAll","target","this","parentNode","domElement","findHandler","events","callable","delegationSelector","Object","find","normalizeParameters","originalTypeEvent","delegationFunction","isDelegated","typeEvent","getTypeEvent","addHandler","wrapFunction","relatedTarget","contains","call","handlers","previousFunction","replace","addEventListener","removeHandler","removeEventListener","Boolean","removeNamespacedHandlers","namespace","storeElementEvent","handlerKey","entries","includes","on","one","inNamespace","isNamespace","startsWith","elementEvent","slice","keyHandlers","length","trigger","args","evt","Event","bubbles","cancelable","dispatchEvent","obj","meta","defineProperty","configurable","normalizeData","Number","toString","JSON","parse","decodeURIComponent","normalizeDataKey","chr","toLowerCase","Manipulator","setDataAttribute","setAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","bsKeys","dataset","filter","pureKey","charAt","getDataAttribute","getAttribute","MAX_UID","MILLISECONDS_MULTIPLIER","TRANSITION_END","parseSelector","window","CSS","escape","match","id","toType","object","prototype","getUID","prefix","Math","floor","random","document","getElementById","getTransitionDurationFromElement","transitionDuration","transitionDelay","getComputedStyle","floatTransitionDuration","parseFloat","floatTransitionDelay","split","triggerTransitionEnd","isElement","nodeType","getElement","querySelector","isVisible","getClientRects","elementIsVisible","getPropertyValue","closedDetails","closest","summary","isDisabled","Node","ELEMENT_NODE","classList","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","isRTL","dir","execute","possibleCallback","defaultValue","executeAfterTransition","callback","transitionElement","waitForTransition","emulatedDuration","called","setTimeout","getNextActiveElement","list","activeElement","shouldGetNext","isCycleAllowed","listLength","index","indexOf","max","min","Config","Default","DefaultType","NAME","Error","_getConfig","config","_mergeConfigObj","_configAfterMerge","_typeCheckConfig","jsonConfig","constructor","configTypes","property","expectedTypes","valueType","RegExp","test","TypeError","toUpperCase","VERSION","BaseComponent","super","_element","_config","existingInstance","DATA_KEY","dispose","EVENT_KEY","propertyName","getOwnPropertyNames","_queueCallback","isAnimated","getInstance","getOrCreateInstance","eventName","name","getSelector","hrefAttribute","trim","map","sel","join","SelectorEngine","Element","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","nextElementSibling","focusableChildren","focusables","el","getSelectorFromElement","getElementFromSelector","getMultipleElementsFromSelector","enableDismissTrigger","component","method","clickEvent","tagName","preventDefault","eventActionOnPlugin","Plugin","onEvent","stringSelector","eventAction","data","instances","targets","EVENT_CLOSE","EVENT_CLOSED","CLASS_NAME_FADE","CLASS_NAME_SHOW","Alert","close","defaultPrevented","_destroyElement","DATA_API_KEY","CLASS_NAME_ACTIVE","SELECTOR_DATA_TOGGLE","EVENT_CLICK_DATA_API","Button","toggle","button","ARROW_LEFT_KEY","ARROW_RIGHT_KEY","DIRECTION_LEFT","DIRECTION_RIGHT","EVENT_SLIDE","EVENT_SLID","EVENT_KEYDOWN","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_POINTERDOWN","EVENT_LOAD_DATA_API","CLASS_NAME_CAROUSEL","CLASS_NAME_CENTER","CLASS_NAME_AUTO","CLASS_NAME_CLONE","CLASS_NAME_PAUSED","CLASS_NAME_PLAYING","PROPERTY_INTERVAL","SCROLL_DURATION","ACTIVE_RATIO_TOLERANCE","SELECTOR_ACTIVE","SELECTOR_ITEM","SELECTOR_ACTIVE_ITEM","SELECTOR_INNER","SELECTOR_INDICATORS","SELECTOR_PLAY_PAUSE","SELECTOR_DATA_SLIDE","SELECTOR_DATA_SLIDE_PREV","SELECTOR_DATA_SLIDE_NEXT","SELECTOR_DATA_AUTOPLAY","KEY_TO_DIRECTION","ARROW_LEFT_KEY$2","ARROW_RIGHT_KEY$2","ENDS_STOP","ENDS_WRAP","ENDS_LOOP","autoplay","ends","interval","keyboard","pause","easeInOutCubic","progress","Carousel","_viewport","_indicatorsElement","_playPauseElement","_prevControls","_nextControls","_interval","_observer","_scrollFrame","_looping","_visibility","_playing","_activeIndex","_initialActiveIndex","_addEventListeners","_observeItems","_refreshActiveState","cycle","_updatePlayPauseControl","to","_navIndex","nextWhenVisible","visibilityState","_clearInterval","_scheduleAutoplay","add","items","_getItems","rawIndex","parseInt","_prefersReducedMotion","_canLoop","_loopTransition","targetIndex","_normalizeIndex","currentIndex","direction","_direction","from","_isFade","_fadeTo","_scrollToIndex","disconnect","cancelAnimationFrame","clone","style","scrollSnapType","active","_keydown","_maybeEnableCycle","_pauseFromInteraction","IntersectionObserver","_handleIntersection","threshold","item","observe","entry","isIntersecting","intersectionRatio","ratios","maxRatio","bestIndex","findIndex","ratio","_setActive","_updateEndControls","scrollWidth","clientWidth","smallestDelta","POSITIVE_INFINITY","itemIndex","delta","abs","_scrollDelta","left","targetLeft","scrollLeft","_animateScroll","onComplete","startLeft","distance","requestAnimationFrame","scrollTo","behavior","startTime","step","now","viewportRect","getBoundingClientRect","rect","width","padStart","scrollPaddingInlineStart","right","isNext","last","fromIndex","toIndex","_loopDirection","cloneNode","node","inert","append","prepend","_jumpScroll","scrollBy","top","_setActiveIndicatorElement","viewport","maxScroll","atStart","atEnd","_setControlsDisabled","controls","control","focus","preventScroll","newActive","isNaN","_wrapsAround","styles","num","_itemInterval","setProperty","upcoming","_upcomingIndex","NaN","_togglePlayPause","label","matchMedia","clearTimeout","carousel","slideIndex","carousels","EVENT_SHOW","EVENT_SHOWN","EVENT_HIDE","EVENT_HIDDEN","CLASS_NAME_COLLAPSE","CLASS_NAME_COLLAPSING","CLASS_NAME_COLLAPSED","CLASS_NAME_DEEPER_CHILDREN","CLASS_NAME_HORIZONTAL","WIDTH","HEIGHT","SELECTOR_ACTIVES","parent","Collapse","_isTransitioning","_triggerArray","toggleList","elem","filterElement","foundElement","_initializeChildren","_addAriaAndCollapsedClass","_isShown","hide","show","activeChildren","_getFirstLevelChildren","activeInstance","dimension","_getDimension","scrollSize","complete","selected","triggerArray","isOpen","BREAKPOINTS","sm","md","lg","xl","parseResponsivePlacement","placementString","defaultPlacement","parts","placements","xs","part","breakpoint","placement","undefined","getResponsivePlacement","responsivePlacements","viewportWidth","innerWidth","activePlacement","breakpointOrder","createBreakpointListeners","listeners","minWidth","mql","disposeBreakpointListeners","ESCAPE_KEY","TAB_KEY","ARROW_UP_KEY","ARROW_DOWN_KEY","HOME_KEY","END_KEY","ENTER_KEY","SPACE_KEY","RIGHT_MOUSE_BUTTON","SUBMENU_CLOSE_DELAY","EVENT_KEYDOWN_DATA_API","EVENT_KEYUP_DATA_API","SELECTOR_MENU","SELECTOR_SUBMENU","SELECTOR_SUBMENU_TOGGLE","SELECTOR_NAVBAR_NAV","SELECTOR_VISIBLE_ITEMS","DEFAULT_PLACEMENT","SUBMENU_PLACEMENT","resolveLogicalPlacement","triangleSign","p1","p2","p3","x","y","autoClose","boundary","container","display","offset","floatingConfig","menu","reference","strategy","submenuTrigger","submenuDelay","Menu","static","computePosition","_floatingCleanup","_mediaQueryListeners","_responsivePlacements","_parent","_openSubmenus","_submenuCloseTimeouts","_hoverIntentData","_menu","_findMenu","_findWrapper","_isSubmenu","_menuOriginalParent","_parseResponsivePlacements","_setupSubmenuListeners","_moveMenuToContainer","_createFloating","body","focusVisible","_openInstances","_completeHide","_disposeFloating","_restoreMenuToOriginalParent","_disposeMediaQueryListeners","_closeAllSubmenus","_clearAllSubmenuTimeouts","update","_updateFloatingPosition","wrapper","referenceElement","autoUpdate","_getPlacement","middleware","_getFloatingMiddleware","_getFloatingConfig","_applyFloatingPosition","_setupMediaQueryListeners","_getOffset","offsetConfig","rects","floating","offsetValue","mainAxis","crossAxis","flip","fallbackPlacements","_getFallbackPlacements","shift","bottom","defaultConfig","_getContainer","isConnected","finalPlacement","assign","position","margin","_onSubmenuTriggerEnter","_onSubmenuLeave","_trackMousePosition","_onSubmenuTriggerClick","submenuWrapper","submenu","_cancelSubmenuCloseTimeout","_closeSiblingSubmenus","_openSubmenu","_isMovingTowardSubmenu","_scheduleSubmenuClose","stopPropagation","_closeSubmenu","opacity","cleanup","_createSubmenuFloating","nestedSubmenus","nested","nestedWrapper","currentSubmenuWrapper","siblingSubmenus","siblingMenu","siblingWrapper","padding","updatePosition","then","timeoutId","clear","clientX","clientY","timestamp","Date","submenuRect","currentPos","lastPos","targetX","topCorner","bottomCorner","_pointInTriangle","point","v1","v2","v3","d1","d2","d3","_selectMenuItem","currentMenu","_handleSubmenuKeydown","isRtl","enterKey","exitKey","isSubmenuTrigger","firstItem","parentSubmenuWrapper","parentTrigger","at","clearMenus","composedPath","isMenuTarget","formAncestor","isInsideMenuForm","dataApiKeydownHandler","isInput","isContentEditable","isEscapeEvent","isUpOrDownEvent","isLeftOrRightEvent","isHomeOrEndEvent","isEnterOrSpaceEvent","getToggleButton","EVENT_CHANGE","CLASS_NAME_SELECTED","CLASS_NAME_PLACEHOLDER","SELECTOR_MENU_ITEM","SELECTOR_VALUE","SELECTOR_SEARCH_INPUT","SELECTOR_NO_RESULTS","multiple","placeholder","search","searchNormalize","Combobox","_toggle","_valueDisplay","_searchInput","_noResults","_hiddenInput","_menuInstance","_createHiddenInput","_createMenuInstance","_syncInitialSelection","_filterItems","createElement","insertBefore","_getSelectedItems","_updateToggleText","_updateHiddenInput","_showPlaceholder","_selectItem","_handleToggleKeydown","_handleMenuKeydown","_getVisibleItems","previouslySelected","bsValue","selectedItems","textContent","query","normalizedQuery","_normalizeText","visibleCount","text","normalize","jQueryInterface","each","EVENT_FOCUSIN_DATA_API","HIDE_DELAY","datepickerTheme","dateMin","dateMax","dateFormat","displayElement","displayMonthsCount","firstWeekday","inline","locale","positionElement","selectedDates","selectionMode","vcpOptions","Datepicker","_calendar","_initCalendar","_themeObserver","destroy","getSelectedDates","dates","context","setSelectedDates","_isInput","_isInline","_boundInput","_positionElement","_resolvePositionElement","_displayElement","_resolveDisplayElement","calendarOptions","_buildCalendarOptions","Calendar","init","_setupThemeObserver","_parseInputValue","_updateDisplayWithSelectedDates","formattedDate","_formatDateForInput","_getThemeAncestor","_getEffectiveTheme","_syncThemeAttribute","theme","MutationObserver","mainElement","attributeFilter","vcpTheme","inputMode","positionToInput","selectionDatesMode","selectedTheme","themeAttrDetect","onClickDate","self","_handleDateClick","onInit","onShow","onHide","firstDate","_parseDate","selectedMonth","getMonth","selectedYear","getFullYear","_maybeHideAfterSelection","dateStr","year","month","day","_formatDate","date","Intl","DateTimeFormat","format","toLocaleDateString","separator","d","getTime","formatted","String","getDate","bsInline","CLASS_NAME_OPEN","DialogBase","_openedAsModal","_addDialogListeners","open","_onBeforeShow","modal","preventBodyScroll","_getShowOptions","_showElement","_isAnimated","_hideElement","_closeAndCleanup","_onAfterHide","_getInstantClassName","_getStaticClassName","_onCancel","showModal","_hideChildComponents","_shouldDeferClose","_triggerBackdropTransition","staticClass","eventKey","backdrop","EVENT_CANCEL","CLASS_NAME_NONMODAL","CLASS_NAME_INSTANT","CLASS_NAME_SWAP_IN","Dialog","handleUpdate","showEvent","currentDialog","newDialog","currentInstance","EVENT_UPDATE","EVENT_OVERFLOW","CLASS_NAME_OVERFLOW","CLASS_NAME_OVERFLOW_MENU","CLASS_NAME_HIDDEN","SELECTOR_NAV_ITEM","SELECTOR_NAV_LINK","SELECTOR_OVERFLOW_TOGGLE","SELECTOR_OVERFLOW_MENU","SELECTOR_CUSTOM_ICON","CLASS_NAME_KEEP","collapseBelow","iconPlacement","menuPlacement","moreText","moreIcon","NavOverflow","_items","_overflowItems","_overflowMenu","_overflowToggle","_resizeObserver","_collapseBelow","_isInitialized","_init","_calculateOverflow","_restoreItems","parentElement","bsNavOrder","_resolveCollapseBelow","_createOverflowMenu","_setupResizeObserver","iconSpan","_resolveIcon","textSpan","toggleContent","overflowItem","className","innerHTML","customIconElement","iconClone","iconHtml","outerHTML","cssValue","ResizeObserver","navWidth","offsetWidth","itemsToOverflow","_moveToOverflow","overflowCount","usedWidth","overflowThreshold","reduce","sum","toMove","link","clonedLink","bsNavOverflow","EVENT_TOUCHSTART","EVENT_TOUCHMOVE","EVENT_TOUCHEND","EVENT_POINTERUP","POINTER_TYPE_TOUCH","POINTER_TYPE_PEN","CLASS_NAME_POINTER_EVENT","SWIPE_THRESHOLD","endCallback","leftCallback","rightCallback","upCallback","downCallback","Swipe","isSupported","_deltaX","_deltaY","_supportPointerEvents","PointerEvent","_initEvents","_start","touches","_eventIsPointerPenTouch","_end","_handleSwipe","_move","absDeltaX","absDeltaY","pointerType","navigator","maxTouchPoints","EVENT_RESIZE","scroll","Drawer","_swipeHelper","_initSwipe","swipeConfig","alreadyOpen","EVENT_STRENGTH_CHANGE","SELECTOR_DATA_STRENGTH","STRENGTH_LEVELS","input","minLength","messages","weak","fair","good","strong","weights","extraLength","lowercase","uppercase","numbers","special","multipleSpecial","longPassword","thresholds","scorer","Strength","_input","_getInput","_segments","_textElement","_currentStrength","_evaluate","getStrength","evaluate","password","score","_calculateScore","strength","_scoreToStrength","_updateUI","bsStrength","strengthIndex","segment","colorMap","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","alphanumeric","alpha","groups","mask","OtpInput","_type","_length","_resolveLength","_slots","_pointerActive","_pointerIndex","_setupInput","_renderSlots","_render","getValue","setValue","_sanitize","_checkComplete","_selectSlot","_firstEmptyIndex","_onInput","_onBeforeInput","_onFocus","_onPointerDown","_onSelectionChange","_onSync","_slotsContainer","maxLength","groupIndex","inGroup","i","slot","Array","isArray","_handleInput","_handleBeforeInput","_handlePointerDown","sanitized","_afterValueChange","inputType","char","selectionStart","chars","start","end","selectionEnd","splice","_slotIndexFromPoint","clamped","setSelectionRange","isFocused","caret","EVENT_ADD","EVENT_REMOVE","EVENT_SELECT","SELECTOR_DATA_CHIPS","SELECTOR_GHOST_INPUT","SELECTOR_CHIP","SELECTOR_CHIP_DISMISS","CLASS_NAME_CHIP","CLASS_NAME_CHIP_DISMISS","DEFAULT_DISMISS_ICON","allowDuplicates","maxChips","dismissible","dismissIcon","createOnBlur","Chips","_chips","_selectedChips","_anchorChip","_createInput","_initializeExistingChips","trimmedValue","chip","_createChip","getValues","chipOrValue","_findChipByValue","_getChipValue","v","removeSelected","chipsToRemove","getSelectedValues","chips","clearSelection","selectChip","options","addToSelection","rangeSelect","chipElements","_getChipElements","anchorIndex","chipIndex","existingChips","_setupChip","_createDismissButton","bsChipValue","createTextNode","dismiss","_handleInputKeydown","_handlePaste","_createChipFromInput","metaKey","ctrlKey","shiftKey","_handleChipKeydown","lastChip","blur","_handleChipDelete","_navigateChip","_navigateToEdge","_handleSelectAll","nextIndex","remainingChips","focusIndex","targetChip","c","pastedData","clipboardData","getData","ARIA_ATTRIBUTE_PATTERN","DefaultAllowlist","a","area","b","br","col","code","dd","div","dl","dt","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","u","ul","uriAttributes","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attribute","allowedAttributeList","attributeName","nodeName","nodeValue","attributeRegex","some","regex","sanitizeHtml","unsafeHtml","allowList","sanitizeFunction","createdDocument","DOMParser","parseFromString","elements","elementName","attributeList","allowedAttributes","content","extraClass","html","sanitize","sanitizeFn","template","DefaultContentType","TemplateFactory","getContent","_resolvePossibleFunction","hasContent","changeContent","_checkContent","toHtml","templateWrapper","_maybeSanitize","_setContent","arg","templateElement","_putElementInTemplate","DISALLOWED_ATTRIBUTES","CLASS_NAME_MODAL","SELECTOR_TOOLTIP_INNER","SELECTOR_MODAL","EVENT_MODAL_HIDE","TRIGGER_HOVER","TRIGGER_FOCUS","TRIGGER_CLICK","TRIGGER_MANUAL","EVENT_INSERTED","EVENT_CLICK","EVENT_FOCUSIN","EVENT_FOCUSOUT","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","animation","customClass","delay","title","Tooltip","_isEnabled","_timeout","_isHovered","_activeTrigger","_keydownHandler","_templateFactory","_newContent","tip","_setListeners","_fixTitle","enable","disable","toggleEnabled","_leave","_enter","_removeEscapeListener","_hideModalHandler","_isWithContent","isInTheDom","ownerDocument","_getTipElement","closestDialog","_setEscapeListener","_isWithActiveTrigger","_getTitle","_hasNewContent","_createTipElement","_getContentForTemplate","_getTemplateFactory","tipId","setContent","_initializeOnDelegatedTarget","_getDelegateConfig","arrowElement","middlewareData","arrow","arrowX","arrowY","isVertical","triggers","eventIn","eventOut","_setTimeout","timeout","dataAttributes","dataAttribute","initTooltip","SELECTOR_TITLE","SELECTOR_CONTENT","Popover","_getContent","initPopover","EVENT_CHANGED","EVENT_DOM_CONTENT_LOADED","SELECTOR_RANGE","CLASS_NAME_BUBBLE","CLASS_NAME_TICKS","CLASS_NAME_TICK","CLASS_NAME_TICK_LABEL","PROPERTY_FILL","bubble","formatter","Range","_bubble","_bubbleText","_ticks","_updateHandler","_update","_createBubble","_createTicks","_min","_max","_value","_ratio","_format","insertAdjacentElement","listId","datalist","points","option","sort","stops","gridTemplateColumns","stop","tick","gridColumnStart","EVENT_ACTIVATE","EVENT_SCROLL","EVENT_SCROLLEND","CLASS_NAME_MENU_ITEM","SELECTOR_DATA_SPY","SELECTOR_TARGET_LINKS","SELECTOR_NAV_LIST_GROUP","SELECTOR_NAV_LINKS","SELECTOR_NAV_ITEMS","SELECTOR_LIST_ITEMS","SELECTOR_LINK_ITEMS","SELECTOR_MENU_TOGGLE","SCROLL_IDLE_TIMEOUT","RESIZE_DEBOUNCE","rootMargin","smoothScroll","topMargin","ScrollSpy","_sections","_linkBySection","_sectionByLink","_intersecting","_activeTarget","_lastActive","_atBottom","_rootElement","overflowY","_sentinel","_sentinelObserver","_pendingNavigation","_settleTimeout","_settleHandler","_scrollIdleHandler","_resizeHandler","_resizeTimeout","refresh","_initializeTargetsAndObservables","_maybeEnableSmoothScroll","_getNewObserver","section","_setUpSentinel","_maybeAddResizeListener","_teardownSentinel","_disarmSettle","_removeResizeListener","_getDerivedRootMargin","_onIntersect","_computeActive","_process","_parseTopMargin","unit","endsWith","percent","rootHeight","clientHeight","innerHeight","_usesPixelMargin","sentinel","cssText","_onSentinel","_isOverflowing","scroller","scrollingElement","scrollHeight","_rebuildObserver","height","offsetTop","currentTop","scrollTop","scrollY","pageYOffset","_settleNavigation","hash","_armSettle","_getSettleTarget","_onSettle","history","replaceState","targetLinks","seen","anchor","decodeFragment","_clearActiveClass","_activateParents","menuToggle","listGroup","activeNodes","spy","NOT_SELECTOR_MENU_TOGGLE","SELECTOR_TAB_PANEL","SELECTOR_OUTER","SELECTOR_INNER_ELEM","SELECTOR_DATA_TOGGLE_ACTIVE","Tab","_setInitialAttributes","_getChildren","innerElem","_elemIsActive","_getActiveElem","hideEvent","_deactivate","_activate","relatedElem","_toggleMenu","altKey","nextActiveElement","_setAttributeIfNotExists","_setInitialAttributesOnChild","_getInnerElement","isActive","outerElem","_getOuterElement","_setInitialAttributesOnTargetPanel","EVENT_MOUSEOVER","EVENT_MOUSEOUT","CLASS_NAME_HIDE","CLASS_NAME_SHOWING","autohide","Toast","_hasMouseInteraction","_hasKeyboardInteraction","_clearTimeout","_maybeScheduleHide","isShown","_onInteraction","isInteracting","nextElement","EVENT_TOGGLE","EVENT_TOGGLED","Toggler","_execute"],"sources":["../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/dom/manipulator.js","../../js/src/util/index.js","../../js/src/util/config.js","../../js/src/base-component.js","../../js/src/dom/selector-engine.js","../../js/src/util/component-functions.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/util/floating-ui.js","../../js/src/menu.js","../../js/src/combobox.js","../../js/src/datepicker.js","../../js/src/dialog-base.js","../../js/src/dialog.js","../../js/src/nav-overflow.js","../../js/src/util/swipe.js","../../js/src/drawer.js","../../js/src/strength.js","../../js/src/otp-input.js","../../js/src/chips.js","../../js/src/util/sanitizer.js","../../js/src/util/template-factory.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/range.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/src/toggler.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst elementMap = new Map()\n\nexport default {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map())\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${[...instanceMap.keys()][0]}.`)\n      return\n    }\n\n    instanceMap.set(key, instance)\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null\n    }\n\n    return null\n  },\n\n  getAny(element) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).values().next().value || null\n    }\n\n    return null\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return\n    }\n\n    const instanceMap = elementMap.get(element)\n\n    instanceMap.delete(key)\n\n    // free up element references if there are no instances left for an element\n    if (instanceMap.size === 0) {\n      elementMap.delete(element)\n    }\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n}\n\nconst nativeEvents = new Set([\n  'click',\n  'dblclick',\n  'mouseup',\n  'mousedown',\n  'contextmenu',\n  'mousewheel',\n  'DOMMouseScroll',\n  'mouseover',\n  'mouseout',\n  'mousemove',\n  'selectstart',\n  'selectend',\n  'keydown',\n  'keypress',\n  'keyup',\n  'orientationchange',\n  'touchstart',\n  'touchmove',\n  'touchend',\n  'touchcancel',\n  'pointerdown',\n  'pointermove',\n  'pointerup',\n  'pointerleave',\n  'pointercancel',\n  'gesturestart',\n  'gesturechange',\n  'gestureend',\n  'focus',\n  'blur',\n  'change',\n  'reset',\n  'select',\n  'submit',\n  'focusin',\n  'focusout',\n  'load',\n  'unload',\n  'beforeunload',\n  'resize',\n  'move',\n  'DOMContentLoaded',\n  'readystatechange',\n  'error',\n  'abort',\n  'scroll',\n  'scrollend'\n])\n\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n  return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getElementEvents(element) {\n  const uid = makeEventUid(element)\n\n  element.uidEvent = uid\n  eventRegistry[uid] = eventRegistry[uid] || {}\n\n  return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    hydrateObj(event, { delegateTarget: element })\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn)\n    }\n\n    return fn.apply(element, [event])\n  }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector)\n\n    for (let { target } = event; target && target !== this; target = target.parentNode) {\n      for (const domElement of domElements) {\n        if (domElement !== target) {\n          continue\n        }\n\n        hydrateObj(event, { delegateTarget: target })\n\n        if (handler.oneOff) {\n          EventHandler.off(element, event.type, selector, fn)\n        }\n\n        return fn.apply(target, [event])\n      }\n    }\n  }\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n  return Object.values(events)\n    .find(event => event.callable === callable && event.delegationSelector === delegationSelector)\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n  const isDelegated = typeof handler === 'string'\n  const callable = isDelegated ? delegationFunction : (handler || delegationFunction)\n  let typeEvent = getTypeEvent(originalTypeEvent)\n\n  if (!nativeEvents.has(typeEvent)) {\n    typeEvent = originalTypeEvent\n  }\n\n  return [isDelegated, callable, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return\n  }\n\n  let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n\n  // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n  if (originalTypeEvent in customEvents) {\n    const wrapFunction = fn => {\n      return function (event) {\n        if (!event.relatedTarget || (event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget))) {\n          return fn.call(this, event)\n        }\n      }\n    }\n\n    callable = wrapFunction(callable)\n  }\n\n  const events = getElementEvents(element)\n  const handlers = events[typeEvent] || (events[typeEvent] = {})\n  const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null)\n\n  if (previousFunction) {\n    previousFunction.oneOff = previousFunction.oneOff && oneOff\n\n    return\n  }\n\n  const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''))\n  const fn = isDelegated ?\n    bootstrapDelegationHandler(element, handler, callable) :\n    bootstrapHandler(element, callable)\n\n  fn.delegationSelector = isDelegated ? handler : null\n  fn.callable = callable\n  fn.oneOff = oneOff\n  fn.uidEvent = uid\n  handlers[uid] = fn\n\n  element.addEventListener(typeEvent, fn, isDelegated)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n  if (!fn) {\n    return\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n  delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {}\n\n  for (const [handlerKey, event] of Object.entries(storeElementEvent)) {\n    if (handlerKey.includes(namespace)) {\n      removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n    }\n  }\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '')\n  return customEvents[event] || event\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, false)\n  },\n\n  one(element, event, handler, delegationFunction) {\n    addHandler(element, event, handler, delegationFunction, true)\n  },\n\n  off(element, originalTypeEvent, handler, delegationFunction) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return\n    }\n\n    const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction)\n    const inNamespace = typeEvent !== originalTypeEvent\n    const events = getElementEvents(element)\n    const storeElementEvent = events[typeEvent] || {}\n    const isNamespace = originalTypeEvent.startsWith('.')\n\n    if (typeof callable !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!Object.keys(storeElementEvent).length) {\n        return\n      }\n\n      removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null)\n      return\n    }\n\n    if (isNamespace) {\n      for (const elementEvent of Object.keys(events)) {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n      }\n    }\n\n    for (const [keyHandlers, event] of Object.entries(storeElementEvent)) {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        removeHandler(element, events, typeEvent, event.callable, event.delegationSelector)\n      }\n    }\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null\n    }\n\n    const evt = hydrateObj(new Event(event, { bubbles: true, cancelable: true }), args)\n    element.dispatchEvent(evt)\n    return evt\n  }\n}\n\nfunction hydrateObj(obj, meta = {}) {\n  for (const [key, value] of Object.entries(meta)) {\n    try {\n      obj[key] = value\n    } catch {\n      Object.defineProperty(obj, key, {\n        configurable: true,\n        get() {\n          return value\n        }\n      })\n    }\n  }\n\n  return obj\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(value) {\n  if (value === 'true') {\n    return true\n  }\n\n  if (value === 'false') {\n    return false\n  }\n\n  if (value === Number(value).toString()) {\n    return Number(value)\n  }\n\n  if (value === '' || value === 'null') {\n    return null\n  }\n\n  if (typeof value !== 'string') {\n    return value\n  }\n\n  try {\n    return JSON.parse(decodeURIComponent(value))\n  } catch {\n    return value\n  }\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {}\n    }\n\n    const attributes = {}\n    const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'))\n\n    for (const key of bsKeys) {\n      let pureKey = key.replace(/^bs/, '')\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1)\n      attributes[pureKey] = normalizeData(element.dataset[key])\n    }\n\n    return attributes\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n  }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n/**\n * Properly escape IDs selectors to handle weird IDs\n * @param {string} selector\n * @returns {string}\n */\nconst parseSelector = selector => {\n  if (selector && window.CSS && window.CSS.escape) {\n    // document.querySelector needs escaping to handle IDs (html5+) containing for instance /\n    selector = selector.replace(/#([^\\s\"#']+)/g, (match, id) => `#${CSS.escape(id)}`)\n  }\n\n  return selector\n}\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = object => {\n  if (object === null || object === undefined) {\n    return `${object}`\n  }\n\n  return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID)\n  } while (document.getElementById(prefix))\n\n  return prefix\n}\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0\n  }\n\n  // Get transition-duration of the element\n  let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n  const floatTransitionDuration = Number.parseFloat(transitionDuration)\n  const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n  // Return 0 if element or transition duration is not found\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0\n  }\n\n  // If multiple durations are defined, take the first\n  transitionDuration = transitionDuration.split(',')[0]\n  transitionDelay = transitionDelay.split(',')[0]\n\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = object => {\n  if (!object || typeof object !== 'object') {\n    return false\n  }\n\n  return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = object => {\n  if (isElement(object)) {\n    return object\n  }\n\n  if (typeof object === 'string' && object.length > 0) {\n    return document.querySelector(parseSelector(object))\n  }\n\n  return null\n}\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false\n  }\n\n  const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n  // Handle `details` element as its content may falsely appear visible when it is closed\n  const closedDetails = element.closest('details:not([open])')\n\n  if (!closedDetails) {\n    return elementIsVisible\n  }\n\n  if (closedDetails !== element) {\n    const summary = element.closest('summary')\n    if (summary && summary.parentNode !== closedDetails) {\n      return false\n    }\n\n    if (summary === null) {\n      return false\n    }\n  }\n\n  return elementIsVisible\n}\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null\n  }\n\n  // Can find the shadow root otherwise it'll return the document\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode()\n    return root instanceof ShadowRoot ? root : null\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element\n  }\n\n  // when we don't find a shadow root\n  if (!element.parentNode) {\n    return null\n  }\n\n  return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = element => {\n  element.offsetHeight // eslint-disable-line no-unused-expressions\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        for (const callback of DOMContentLoadedCallbacks) {\n          callback()\n        }\n      })\n    }\n\n    DOMContentLoadedCallbacks.push(callback)\n  } else {\n    callback()\n  }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst execute = (possibleCallback, args = [], defaultValue = possibleCallback) => {\n  return typeof possibleCallback === 'function' ? possibleCallback.call(...args) : defaultValue\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback)\n    return\n  }\n\n  const durationPadding = 5\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n  let called = false\n\n  const handler = ({ target }) => {\n    if (target !== transitionElement) {\n      return\n    }\n\n    called = true\n    transitionElement.removeEventListener(TRANSITION_END, handler)\n    execute(callback)\n  }\n\n  transitionElement.addEventListener(TRANSITION_END, handler)\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement)\n    }\n  }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  const listLength = list.length\n  let index = list.indexOf(activeElement)\n\n  // if the element does not exist in the list return an element\n  // depending on the direction and if cycle is allowed\n  if (index === -1) {\n    return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n  }\n\n  index += shouldGetNext ? 1 : -1\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n  execute,\n  executeAfterTransition,\n  findShadowRoot,\n  getElement,\n  getNextActiveElement,\n  getTransitionDurationFromElement,\n  getUID,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop,\n  onDOMContentLoaded,\n  parseSelector,\n  reflow,\n  triggerTransitionEnd,\n  toType\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Manipulator from '../dom/manipulator.js'\nimport { isElement, toType } from './index.js'\n\n/**\n * Class definition\n */\n\nclass Config {\n  // Getters\n  static get Default() {\n    return {}\n  }\n\n  static get DefaultType() {\n    return {}\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!')\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    return config\n  }\n\n  _mergeConfigObj(config, element) {\n    const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n    return {\n      ...this.constructor.Default,\n      ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n      ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n      ...(typeof config === 'object' ? config : {})\n    }\n  }\n\n  _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n    for (const [property, expectedTypes] of Object.entries(configTypes)) {\n      const value = config[property]\n      const valueType = isElement(value) ? 'element' : toType(value)\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(\n          `${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`\n        )\n      }\n    }\n  }\n}\n\nexport default Config\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport Config from './util/config.js'\nimport { executeAfterTransition, getElement } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst VERSION = '6.0.0-alpha1'\n\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n  constructor(element, config) {\n    super()\n\n    element = getElement(element)\n    if (!element) {\n      return\n    }\n\n    this._element = element\n    this._config = this._getConfig(config)\n\n    // Dispose any existing instance bound to this element before registering the new one,\n    // so its event listeners and timers are cleaned up instead of leaking\n    const existingInstance = Data.get(this._element, this.constructor.DATA_KEY)\n    if (existingInstance) {\n      existingInstance.dispose()\n    }\n\n    Data.set(this._element, this.constructor.DATA_KEY, this)\n  }\n\n  // Public\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY)\n    EventHandler.off(this._element, this.constructor.EVENT_KEY)\n\n    for (const propertyName of Object.getOwnPropertyNames(this)) {\n      this[propertyName] = null\n    }\n  }\n\n  // Private\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(() => {\n      // Don't run the completion callback if the instance was disposed mid-transition\n      if (!this._element) {\n        return\n      }\n\n      callback()\n    }, element, isAnimated)\n  }\n\n  _getConfig(config) {\n    config = this._mergeConfigObj(config, this._element)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  // Static\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY)\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null)\n  }\n\n  static get VERSION() {\n    return VERSION\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`\n  }\n\n  static eventName(name) {\n    return `${name}${this.EVENT_KEY}`\n  }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isDisabled, isVisible, parseSelector } from '../util/index.js'\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target')\n\n  if (!selector || selector === '#') {\n    let hrefAttribute = element.getAttribute('href')\n\n    // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n    if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n      return null\n    }\n\n    // Just in case some CMS puts out a full URL with the anchor appended\n    if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n      hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n    }\n\n    selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n  }\n\n  return selector ? selector.split(',').map(sel => parseSelector(sel)).join(',') : null\n}\n\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [...Element.prototype.querySelectorAll.call(element, selector)]\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector)\n  },\n\n  children(element, selector) {\n    return [...element.children].filter(child => child.matches(selector))\n  },\n\n  parents(element, selector) {\n    const parents = []\n    let ancestor = element.parentNode.closest(selector)\n\n    while (ancestor) {\n      parents.push(ancestor)\n      ancestor = ancestor.parentNode.closest(selector)\n    }\n\n    return parents\n  },\n\n  closest(element, selector) {\n    return Element.prototype.closest.call(element, selector)\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous]\n      }\n\n      previous = previous.previousElementSibling\n    }\n\n    return []\n  },\n\n  // TODO: this is now unused; remove later along with prev()\n  next(element, selector) {\n    let next = element.nextElementSibling\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next]\n      }\n\n      next = next.nextElementSibling\n    }\n\n    return []\n  },\n\n  focusableChildren(element) {\n    const focusables = [\n      'a',\n      'button',\n      'input',\n      'textarea',\n      'select',\n      'details',\n      '[tabindex]',\n      '[contenteditable=\"true\"]'\n    ].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',')\n\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el))\n  },\n\n  getSelectorFromElement(element) {\n    const selector = getSelector(element)\n\n    if (selector) {\n      return SelectorEngine.findOne(selector) ? selector : null\n    }\n\n    return null\n  },\n\n  getElementFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.findOne(selector) : null\n  },\n\n  getMultipleElementsFromSelector(element) {\n    const selector = getSelector(element)\n\n    return selector ? SelectorEngine.find(selector) : []\n  }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport SelectorEngine from '../dom/selector-engine.js'\nimport { isDisabled } from './index.js'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`\n  const name = component.NAME\n\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    if (isDisabled(this)) {\n      return\n    }\n\n    const target = SelectorEngine.getElementFromSelector(this) || this.closest(`.${name}`)\n    const instance = component.getOrCreateInstance(target)\n\n    // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n    instance[method]()\n  })\n}\n\nconst eventActionOnPlugin = (Plugin, onEvent, stringSelector, method, callback = null) => {\n  eventAction(`${onEvent}.${Plugin.NAME}`, stringSelector, data => {\n    const instances = data.targets.filter(Boolean).map(element => Plugin.getOrCreateInstance(element))\n    if (typeof callback === 'function') {\n      callback({ ...data, instances })\n    }\n\n    for (const instance of instances) {\n      instance[method]()\n    }\n  })\n}\n\nconst eventAction = (onEvent, stringSelector, callback) => {\n  const selector = `${stringSelector}:not(.disabled):not(:disabled)`\n  EventHandler.on(document, onEvent, selector, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault()\n    }\n\n    const selector = SelectorEngine.getSelectorFromElement(this)\n    const targets = selector ? SelectorEngine.find(selector) : [this]\n\n    callback({ targets, event })\n  })\n}\n\nexport {\n  enableDismissTrigger,\n  eventActionOnPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE)\n\n    if (closeEvent.defaultPrevented) {\n      return\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE)\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated)\n  }\n\n  // Private\n  _destroyElement() {\n    this._element.remove()\n    EventHandler.trigger(this._element, EVENT_CLOSED)\n    this.dispose()\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Alert, 'close')\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n  event.preventDefault()\n\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n  const data = Button.getOrCreateInstance(button)\n\n  data.toggle()\n})\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { isRTL, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\n\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'carousel-fade'\nconst CLASS_NAME_CENTER = 'carousel-center'\nconst CLASS_NAME_AUTO = 'carousel-auto'\nconst CLASS_NAME_CLONE = 'carousel-item-clone'\nconst CLASS_NAME_PAUSED = 'paused'\n// Added to the root while the autoplay timer is running, so CSS can fill the\n// active indicator like a progress bar over the current slide's interval.\nconst CLASS_NAME_PLAYING = 'carousel-playing'\n\n// Shipped (`--bs-`-prefixed) custom property the indicator fill animation reads\n// for its duration. The build prefixes every custom property, so the bare\n// `--carousel-interval` used in the SCSS source becomes this at runtime.\nconst PROPERTY_INTERVAL = '--bs-carousel-interval'\n\n// Duration (ms) of the JS-driven slide animation used for programmatic\n// navigation (prev/next, indicators, wrap, and loop). We step `scrollLeft`\n// ourselves over this window instead of calling `scrollBy({behavior:'smooth'})`,\n// because Safari mis-scales programmatic smooth scrolls under page zoom — a\n// one-slide jump sails well past the target (by the zoom factor) and the\n// restored snap then visibly yanks the slide back. Animating by hand is immune\n// to that and gives every jump a consistent duration.\nconst SCROLL_DURATION = 300\n\n// How far below the most-visible slide a slide's IntersectionRatio can be while\n// still counting as the active (left-most) slide. After a programmatic scroll\n// the viewport rests a sub-pixel past the snap offset, leaving the intended\n// slide a hair less visible than its fully-in neighbors; the tolerance prevents\n// that rounding from skipping the active index forward.\nconst ACTIVE_RATIO_TOLERANCE = 0.05\n\nconst SELECTOR_ACTIVE = '.active'\n// Exclude transient loop clones so index math, indicators, and active-slide\n// detection only ever see the real slides.\nconst SELECTOR_ITEM = `.carousel-item:not(.${CLASS_NAME_CLONE})`\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_INNER = '.carousel-inner'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_PLAY_PAUSE = '.carousel-control-play-pause'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_SLIDE_PREV = '[data-bs-slide=\"prev\"]'\nconst SELECTOR_DATA_SLIDE_NEXT = '[data-bs-slide=\"next\"]'\nconst SELECTOR_DATA_AUTOPLAY = '[data-bs-autoplay=\"true\"]'\n\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n}\n\nconst ENDS_STOP = 'stop'\nconst ENDS_WRAP = 'wrap'\nconst ENDS_LOOP = 'loop'\n\nconst Default = {\n  autoplay: false,\n  ends: ENDS_LOOP,\n  interval: 5000,\n  keyboard: true,\n  pause: 'hover'\n}\n\nconst DefaultType = {\n  autoplay: 'boolean',\n  ends: 'string',\n  interval: 'number',\n  keyboard: 'boolean',\n  pause: '(string|boolean)'\n}\n\n// Standard ease-in-out cubic, so the JS-driven scroll accelerates and\n// decelerates like a native smooth scroll rather than moving linearly.\nconst easeInOutCubic = progress => (progress < 0.5 ?\n  4 * progress * progress * progress :\n  1 - ((((-2 * progress) + 2) ** 3) / 2))\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // The scroll viewport. The browser owns sliding, dragging, momentum, and\n    // keyboard scrolling; this controller only layers on autoplay, the\n    // prev/next/indicator controls, and active-slide syncing.\n    this._viewport = SelectorEngine.findOne(SELECTOR_INNER, this._element) || this._element\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n    this._playPauseElement = SelectorEngine.findOne(SELECTOR_PLAY_PAUSE, this._element)\n    // Prev/next controls scoped to the carousel root (covers inline and stacked\n    // layouts). External controls placed outside `.carousel` aren't managed.\n    this._prevControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_PREV, this._element)\n    this._nextControls = SelectorEngine.find(SELECTOR_DATA_SLIDE_NEXT, this._element)\n\n    this._interval = null\n    this._observer = null\n    // rAF handle for the in-flight JS-driven scroll animation (see `_animateScroll`).\n    this._scrollFrame = null\n    // True while a seamless loop transition is animating, so the\n    // IntersectionObserver and re-entrant navigation don't interfere.\n    this._looping = false\n    this._visibility = new Map()\n    // Runtime autoplay intent. Starts from the `autoplay` option, but is turned\n    // off once the user takes control (clicks a control, uses the keyboard,\n    // swipes/drags, or presses pause) so we don't move content out from under\n    // them (WCAG 2.2.2 Pause, Stop, Hide).\n    this._playing = this._config.autoplay\n\n    this._activeIndex = this._initialActiveIndex()\n\n    this._addEventListeners()\n    this._observeItems()\n    this._refreshActiveState()\n\n    if (this._playing) {\n      this.cycle()\n    }\n\n    this._updatePlayPauseControl()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  next() {\n    this.to(this._navIndex() + 1)\n  }\n\n  nextWhenVisible() {\n    // Don't advance when the page or the carousel isn't visible\n    if (document.visibilityState === 'visible' && isVisible(this._element)) {\n      this.next()\n    }\n  }\n\n  prev() {\n    this.to(this._navIndex() - 1)\n  }\n\n  pause() {\n    this._clearInterval()\n    // Freeze the indicator progress fill; it resets to empty until cycling\n    // resumes and `_scheduleAutoplay` restarts it from scratch.\n    this._element.classList.remove(CLASS_NAME_PLAYING)\n  }\n\n  cycle() {\n    this._clearInterval()\n    this._scheduleAutoplay()\n    this._element.classList.add(CLASS_NAME_PLAYING)\n  }\n\n  to(index) {\n    // Ignore navigation while a seamless loop transition is animating\n    if (this._looping) {\n      return\n    }\n\n    const items = this._getItems()\n    const rawIndex = Number.parseInt(index, 10)\n\n    // Seamless loop: continue forward/backward into a transient clone instead of\n    // the visible `wrap` jump. Only the simple single-slide scroll layout\n    // qualifies, and reduced motion falls back to the plain wrap below.\n    if (this._config.ends === ENDS_LOOP && !this._prefersReducedMotion() && this._canLoop()) {\n      if (rawIndex > items.length - 1) {\n        this._loopTransition(true)\n        return\n      }\n\n      if (rawIndex < 0) {\n        this._loopTransition(false)\n        return\n      }\n    }\n\n    const targetIndex = this._normalizeIndex(rawIndex, items.length)\n    // Measure \"current\" from the live scroll position: `_activeIndex` updates\n    // asynchronously, so an indicator/control used mid-scroll must compare\n    // against where the viewport actually rests (`_navIndex` returns the tracked\n    // active index for fade/non-scrollable layouts).\n    const currentIndex = this._navIndex()\n\n    if (targetIndex === null || targetIndex === currentIndex) {\n      return\n    }\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[targetIndex],\n      direction: this._direction(currentIndex, targetIndex),\n      from: currentIndex,\n      to: targetIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    if (this._isFade()) {\n      this._fadeTo(targetIndex)\n      return\n    }\n\n    // Scroll mode: the IntersectionObserver fires `slid` and syncs state once\n    // the new slide settles into view.\n    this._scrollToIndex(targetIndex)\n  }\n\n  dispose() {\n    // Stop autoplay first: otherwise a pending timer would fire after the\n    // instance is torn down and throw on the now-null `_element`.\n    this._clearInterval()\n\n    if (this._observer) {\n      this._observer.disconnect()\n    }\n\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n    }\n\n    // Tidy up any in-flight loop transition: drop a stray clone and restore\n    // native snapping, so the viewport isn't left mid-animation.\n    for (const clone of SelectorEngine.find(`.${CLASS_NAME_CLONE}`, this._viewport)) {\n      clone.remove()\n    }\n\n    this._viewport.style.scrollSnapType = ''\n\n    // The pointerdown listener lives on the viewport (`.carousel-inner`), which\n    // `super.dispose()` doesn't clean up—it only drops listeners on `_element`.\n    EventHandler.off(this._viewport, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  // Normalize an unknown `ends` value so navigation and end-control logic can't\n  // disagree about whether the carousel wraps.\n  _configAfterMerge(config) {\n    if (![ENDS_STOP, ENDS_WRAP, ENDS_LOOP].includes(config.ends)) {\n      config.ends = Default.ends\n    }\n\n    return config\n  }\n\n  _initialActiveIndex() {\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n    const index = active ? this._getItems().indexOf(active) : 0\n    return Math.max(index, 0)\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n    }\n\n    // Dragging, swiping, or tapping the track is an explicit interaction\n    EventHandler.on(this._viewport, EVENT_POINTERDOWN, () => this._pauseFromInteraction())\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key]\n    if (direction) {\n      event.preventDefault()\n      this._pauseFromInteraction()\n      if (direction === DIRECTION_RIGHT) {\n        this.prev()\n      } else {\n        this.next()\n      }\n    }\n  }\n\n  _observeItems() {\n    // Fade mode stacks slides instead of scrolling, so there's nothing to observe\n    if (this._isFade() || typeof IntersectionObserver === 'undefined') {\n      return\n    }\n\n    this._observer = new IntersectionObserver(\n      entries => this._handleIntersection(entries),\n      { root: this._viewport, threshold: [0, 0.25, 0.5, 0.75, 1] }\n    )\n\n    for (const item of this._getItems()) {\n      this._observer.observe(item)\n    }\n  }\n\n  _handleIntersection(entries) {\n    // A loop transition deliberately scrolls onto a transient clone; ignore the\n    // visibility churn so it doesn't move the active index mid-animation.\n    if (this._looping) {\n      return\n    }\n\n    for (const entry of entries) {\n      this._visibility.set(entry.target, entry.isIntersecting ? entry.intersectionRatio : 0)\n    }\n\n    const items = this._getItems()\n    const ratios = items.map(item => this._visibility.get(item) ?? 0)\n    const maxRatio = Math.max(...ratios)\n\n    // Pick the left-most slide that's *near* fully visible rather than the strict\n    // global maximum. After a programmatic scroll the viewport rests ~1px past\n    // the target snap offset, so the intended left-most slide reports a ratio a\n    // hair below the deeper, fully-visible ones (e.g. 0.997 vs 1.0). A strict max\n    // would skip past it and inflate the active index by one, which breaks\n    // multi-item next/prev. The tolerance keeps the intended slide active while\n    // peeking slivers (well below the max) are still ignored.\n    let bestIndex = this._activeIndex\n\n    if (maxRatio > 0) {\n      bestIndex = ratios.findIndex(ratio => ratio >= maxRatio - ACTIVE_RATIO_TOLERANCE)\n    }\n\n    this._setActive(bestIndex)\n    // Keep the end controls in sync with the scroll position even when the\n    // active index doesn't change (e.g. the final stretch of a multi-item\n    // scroll, where the left-most slide is already the last reachable one).\n    this._updateEndControls()\n  }\n\n  // The index a `next()`/`prev()` step is measured from. Scroll layouts read it\n  // from the live scroll position instead of `this._activeIndex`, because the\n  // IntersectionObserver updates that asynchronously: after one step the index\n  // can still be stale, so the next step would compute the same target and\n  // silently no-op (the \"the button does nothing / can't reach the end slide\"\n  // symptom). Fade and non-scrollable layouts have no scroll position to read,\n  // so they keep using the tracked active index (also what the unit tests rely\n  // on when there's no real layout).\n  _navIndex() {\n    if (this._isFade() || (this._viewport.scrollWidth - this._viewport.clientWidth) <= 0) {\n      return this._activeIndex\n    }\n\n    let index = this._activeIndex\n    let smallestDelta = Number.POSITIVE_INFINITY\n\n    for (const [itemIndex, item] of this._getItems().entries()) {\n      // The slide currently resting at the active position has ~zero delta.\n      const delta = Math.abs(this._scrollDelta(item))\n      if (delta < smallestDelta) {\n        smallestDelta = delta\n        index = itemIndex\n      }\n    }\n\n    return index\n  }\n\n  _scrollToIndex(index) {\n    const item = this._getItems()[index]\n    if (!item) {\n      return\n    }\n\n    const left = this._scrollDelta(item)\n    if (Math.abs(left) < 1) {\n      return\n    }\n\n    // `scroll-snap-stop: always` would clamp a programmatic scroll to a single\n    // snap point, breaking multi-slide jumps (an indicator click, `to()`, or\n    // wrapping from the last slide back to the first). Suspend snapping while we\n    // animate, then restore it once we arrive so the slide rests precisely on the\n    // snap point (honouring peek/gap).\n    const targetLeft = this._viewport.scrollLeft + left\n    this._viewport.style.scrollSnapType = 'none'\n    this._animateScroll(targetLeft, () => {\n      this._viewport.style.scrollSnapType = ''\n      // Without IntersectionObserver nothing else fires `slid`/updates the active\n      // slide after a programmatic scroll, so do it here. With the observer\n      // present this is a no-op (it already moved the active index to `index`).\n      if (!this._observer) {\n        this._setActive(index)\n      }\n\n      // The IntersectionObserver doesn't fire once the viewport has stopped, so\n      // refresh the end controls here to catch the final settle landing exactly\n      // on the scroll extent (e.g. disabling `next` at the last view).\n      this._updateEndControls()\n    })\n  }\n\n  // Animate `this._viewport.scrollLeft` to `targetLeft` over `SCROLL_DURATION`,\n  // stepping the position ourselves each frame (the caller suspends snapping\n  // first and restores it in `onComplete`). This replaces\n  // `scrollBy({behavior:'smooth'})`, whose Safari page-zoom bug made programmatic\n  // jumps overshoot the target and snap back. Because we set every frame's\n  // absolute position with an instant scroll, the animation can't overshoot and\n  // every jump takes the same time, in every browser.\n  _animateScroll(targetLeft, onComplete) {\n    if (this._scrollFrame !== null) {\n      cancelAnimationFrame(this._scrollFrame)\n      this._scrollFrame = null\n    }\n\n    const startLeft = this._viewport.scrollLeft\n    const distance = targetLeft - startLeft\n\n    // Reduced motion (or no rAF, e.g. unit tests): jump straight to the target.\n    if (this._prefersReducedMotion() || typeof requestAnimationFrame === 'undefined') {\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      onComplete()\n      return\n    }\n\n    let startTime = null\n    const step = now => {\n      if (startTime === null) {\n        startTime = now\n      }\n\n      const progress = Math.min((now - startTime) / SCROLL_DURATION, 1)\n      // `'instant'` (not the default) because the viewport sets\n      // `scroll-behavior: smooth` in CSS; without it each step would itself\n      // animate and fight this loop.\n      this._viewport.scrollTo({ left: startLeft + (distance * easeInOutCubic(progress)), behavior: 'instant' })\n\n      if (progress < 1) {\n        this._scrollFrame = requestAnimationFrame(step)\n        return\n      }\n\n      // Land exactly on target, guarding against floating-point drift.\n      this._viewport.scrollTo({ left: targetLeft, behavior: 'instant' })\n      this._scrollFrame = null\n      onComplete()\n    }\n\n    this._scrollFrame = requestAnimationFrame(step)\n  }\n\n  // Horizontal distance to scroll the viewport so `element` rests where the\n  // active slide should sit. Scroll the viewport itself rather than calling\n  // `element.scrollIntoView()`: the latter scrolls *every* scrollable ancestor\n  // (including the page), so an autoplaying carousel below the fold would yank\n  // the whole page to itself on each tick. Using bounding rects keeps it\n  // direction-agnostic (works in RTL).\n  _scrollDelta(element) {\n    const viewportRect = this._viewport.getBoundingClientRect()\n    const rect = element.getBoundingClientRect()\n\n    if (this._element.classList.contains(CLASS_NAME_CENTER)) {\n      return (rect.left + (rect.width / 2)) - (viewportRect.left + (viewportRect.width / 2))\n    }\n\n    // Start alignment: rest the slide at the scroll-padding (peek) offset, which\n    // is exactly where scroll-snap will settle. Aligning flush to the edge\n    // instead would make the browser re-snap by `peek` once snapping is restored,\n    // producing a visible secondary nudge after the programmatic scroll.\n    const padStart = Number.parseFloat(getComputedStyle(this._viewport).scrollPaddingInlineStart) || 0\n\n    return isRTL() ?\n      rect.right - (viewportRect.right - padStart) :\n      rect.left - (viewportRect.left + padStart)\n  }\n\n  // Seamless loop: continue past an end into a one-off clone of the destination\n  // slide, then teleport to the real slide so there's no visible backward jump.\n  _loopTransition(isNext) {\n    const items = this._getItems()\n    const last = items.length - 1\n    const fromIndex = this._activeIndex\n    const toIndex = isNext ? 0 : last\n    const direction = this._loopDirection(isNext)\n\n    const slideEvent = EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget: items[toIndex],\n      direction,\n      from: fromIndex,\n      to: toIndex\n    })\n\n    if (slideEvent.defaultPrevented) {\n      return\n    }\n\n    this._looping = true\n\n    const clone = (isNext ? items[0] : items[last]).cloneNode(true)\n    clone.classList.add(CLASS_NAME_CLONE)\n    clone.classList.remove(CLASS_NAME_ACTIVE)\n    clone.removeAttribute('id')\n    // Also strip ids from the cloned subtree to avoid duplicate ids while the\n    // clone is on screen.\n    for (const node of SelectorEngine.find('[id]', clone)) {\n      node.removeAttribute('id')\n    }\n\n    clone.setAttribute('aria-hidden', 'true')\n    clone.inert = true\n\n    this._viewport.style.scrollSnapType = 'none'\n\n    if (isNext) {\n      this._viewport.append(clone)\n    } else {\n      this._viewport.prepend(clone)\n      // Prepending shifts the real slides to the right; instantly re-align the\n      // current slide so the insertion doesn't flash before we animate.\n      this._jumpScroll(this._scrollDelta(items[fromIndex]))\n    }\n\n    this._animateScroll(this._viewport.scrollLeft + this._scrollDelta(clone), () => {\n      // Teleport to the real destination without animation. JS runs to\n      // completion before the browser paints, so removing the clone and the\n      // compensating scroll land in a single frame (no visible flash).\n      clone.remove()\n      this._jumpScroll(this._scrollDelta(items[toIndex]))\n\n      this._activeIndex = toIndex\n      this._refreshActiveState()\n\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: items[toIndex],\n        direction,\n        from: fromIndex,\n        to: toIndex\n      })\n\n      this._viewport.style.scrollSnapType = ''\n      this._looping = false\n    })\n  }\n\n  _loopDirection(isNext) {\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  // Instant (non-animated) scroll with snapping suspended, used to teleport the\n  // viewport during a loop transition. `behavior: 'instant'` is required because\n  // the viewport sets `scroll-behavior: smooth` in CSS, and `'auto'` would defer\n  // to it and animate the teleport (a visible backward slide).\n  _jumpScroll(delta) {\n    this._viewport.style.scrollSnapType = 'none'\n    this._viewport.scrollBy({ left: delta, top: 0, behavior: 'instant' })\n  }\n\n  // Fade mode just swaps the active class; the CSS opacity transition on\n  // `.carousel-item` performs the crossfade over `--carousel-fade-duration` (and\n  // collapses to an instant swap under reduced motion, via the `transition`\n  // mixin). It deliberately avoids the View Transition API: a view transition\n  // crossfades a page snapshot over its own (shorter) duration while this CSS\n  // fade also runs underneath, so the two animations overlap and visibly stutter.\n  _fadeTo(index) {\n    this._setActive(index)\n  }\n\n  _setActive(index) {\n    const items = this._getItems()\n    if (index === this._activeIndex || !items[index]) {\n      return\n    }\n\n    const from = this._activeIndex\n\n    this._activeIndex = index\n    this._refreshActiveState()\n\n    EventHandler.trigger(this._element, EVENT_SLID, {\n      relatedTarget: items[index],\n      direction: this._direction(from, index),\n      from,\n      to: index\n    })\n  }\n\n  _refreshActiveState() {\n    const items = this._getItems()\n\n    for (const [index, item] of items.entries()) {\n      item.classList.toggle(CLASS_NAME_ACTIVE, index === this._activeIndex)\n    }\n\n    this._setActiveIndicatorElement(this._activeIndex)\n    this._updateEndControls()\n  }\n\n  _updateEndControls() {\n    // Only `ends: 'stop'` has real ends; under `wrap`/`loop` you can always\n    // advance, so disabling end controls would be meaningless. When stopping,\n    // disable the prev control at the start of the scroll range and the next\n    // control at the end so there are no dead end-buttons.\n    if (this._config.ends !== ENDS_STOP) {\n      return\n    }\n\n    const viewport = this._viewport\n    const maxScroll = viewport.scrollWidth - viewport.clientWidth\n\n    let atStart\n    let atEnd\n\n    if (maxScroll > 0) {\n      // Scrollable: measure the real scroll extent so this works for multi-item,\n      // peek, and variable-width layouts where the last slide can never become\n      // the left-most (active) one. `Math.abs` keeps it correct in RTL, where\n      // `scrollLeft` runs from 0 down to negative.\n      const progress = Math.abs(viewport.scrollLeft)\n      atStart = progress <= 1\n      atEnd = progress >= maxScroll - 1\n    } else {\n      // Not scrollable (or no layout yet, e.g. in unit tests): fall back to the\n      // active index for the single-slide case.\n      const last = this._getItems().length - 1\n      atStart = this._activeIndex <= 0\n      atEnd = this._activeIndex >= last\n    }\n\n    this._setControlsDisabled(this._prevControls, atStart)\n    this._setControlsDisabled(this._nextControls, atEnd)\n  }\n\n  _setControlsDisabled(controls, disabled) {\n    for (const control of controls) {\n      // a11y: if we're about to disable the focused control, move focus to the\n      // opposite (still-enabled) control so focus isn't lost.\n      if (disabled && control === document.activeElement) {\n        const opposite = controls === this._prevControls ? this._nextControls : this._prevControls\n        const fallback = opposite[0] ?? this._viewport\n        // `preventScroll` so moving focus doesn't yank the page/viewport to the\n        // newly-focused control mid-navigation.\n        fallback.focus({ preventScroll: true })\n      }\n\n      control.disabled = disabled\n    }\n  }\n\n  _setActiveIndicatorElement(index) {\n    if (!this._indicatorsElement) {\n      return\n    }\n\n    const active = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE)\n      active.removeAttribute('aria-current')\n    }\n\n    const newActive = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n    if (newActive) {\n      newActive.classList.add(CLASS_NAME_ACTIVE)\n      newActive.setAttribute('aria-current', 'true')\n    }\n  }\n\n  _normalizeIndex(index, length) {\n    if (Number.isNaN(index) || length === 0) {\n      return null\n    }\n\n    if (index < 0) {\n      return this._wrapsAround() ? length - 1 : null\n    }\n\n    if (index > length - 1) {\n      return this._wrapsAround() ? 0 : null\n    }\n\n    return index\n  }\n\n  // Whether navigating past an end wraps to the other end. `loop` continues\n  // seamlessly where it can (see `_canLoop`) and otherwise behaves like `wrap`.\n  _wrapsAround() {\n    return this._config.ends === ENDS_WRAP || this._config.ends === ENDS_LOOP\n  }\n\n  // Seamless looping is only supported for the simple single-slide scroll\n  // layout. Multi-item, peek, center, and variable-width layouts fall back to\n  // the plain `wrap` jump.\n  _canLoop() {\n    if (this._isFade() || this._getItems().length < 2) {\n      return false\n    }\n\n    const styles = getComputedStyle(this._element)\n    const num = name => Number.parseFloat(styles.getPropertyValue(name)) || 0\n\n    // These are the shipped, `--bs-`-prefixed custom properties (the build\n    // prefixes every custom property), not the bare names used in the SCSS source.\n    return (num('--bs-carousel-items') || 1) === 1 &&\n      num('--bs-carousel-items-peek') === 0 &&\n      !this._element.classList.contains(CLASS_NAME_CENTER) &&\n      !this._element.classList.contains(CLASS_NAME_AUTO)\n  }\n\n  _direction(from, to) {\n    const isNext = to > from\n    if (isRTL()) {\n      return isNext ? DIRECTION_RIGHT : DIRECTION_LEFT\n    }\n\n    return isNext ? DIRECTION_LEFT : DIRECTION_RIGHT\n  }\n\n  _scheduleAutoplay(index = this._activeIndex) {\n    const interval = this._itemInterval(index)\n    // Expose the wait so the active indicator's CSS fill matches it.\n    this._element.style.setProperty(PROPERTY_INTERVAL, `${interval}ms`)\n    this._interval = setTimeout(() => {\n      // Capture the slide the advance lands on *before* navigating: the active\n      // index only updates once the scroll settles (asynchronously), so reading\n      // it after `nextWhenVisible()` would schedule the next wait from the slide\n      // we're leaving — making per-item `data-bs-interval`s lag by one slide.\n      const upcoming = this._upcomingIndex()\n      this.nextWhenVisible()\n\n      // Nothing comes after the last slide when `ends: 'stop'`; stop cycling\n      // instead of re-arming a timer that can never advance.\n      if (upcoming === null) {\n        this.pause()\n        return\n      }\n\n      this._scheduleAutoplay(upcoming)\n    }, interval)\n  }\n\n  // The slide the next autoplay tick will rest on, derived from the live scroll\n  // position (which still reflects the current slide when the timer fires).\n  // Returns `null` when there's nowhere left to advance (`ends: stop` at the end).\n  _upcomingIndex() {\n    return this._normalizeIndex(this._navIndex() + 1, this._getItems().length)\n  }\n\n  _itemInterval(index = this._activeIndex) {\n    const item = this._getItems()[index]\n    const interval = item ? Number.parseInt(item.getAttribute('data-bs-interval'), 10) : Number.NaN\n    return Number.isNaN(interval) ? this._config.interval : interval\n  }\n\n  _maybeEnableCycle() {\n    if (!this._playing) {\n      return\n    }\n\n    this.cycle()\n  }\n\n  // Turn autoplay off for good once the user interacts with the carousel\n  _pauseFromInteraction() {\n    this._playing = false\n    this.pause()\n    this._updatePlayPauseControl()\n  }\n\n  _togglePlayPause() {\n    if (this._playing) {\n      this._pauseFromInteraction()\n      return\n    }\n\n    this._playing = true\n    this.cycle()\n    this._updatePlayPauseControl()\n  }\n\n  _updatePlayPauseControl() {\n    if (!this._playPauseElement) {\n      return\n    }\n\n    this._playPauseElement.classList.toggle(CLASS_NAME_PAUSED, !this._playing)\n\n    const label = this._playPauseElement.getAttribute(\n      this._playing ? 'data-bs-pause-label' : 'data-bs-play-label'\n    )\n\n    if (label) {\n      this._playPauseElement.setAttribute('aria-label', label)\n    }\n  }\n\n  _isFade() {\n    return this._element.classList.contains(CLASS_NAME_FADE)\n  }\n\n  _prefersReducedMotion() {\n    return typeof window !== 'undefined' &&\n      typeof window.matchMedia === 'function' &&\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches\n  }\n\n  _getItems() {\n    return SelectorEngine.find(SELECTOR_ITEM, this._element)\n  }\n\n  _clearInterval() {\n    if (this._interval) {\n      clearTimeout(this._interval)\n      this._interval = null\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  const carousel = Carousel.getOrCreateInstance(target)\n\n  // Manually cycling the carousel is an explicit interaction, so stop autoplay\n  carousel._pauseFromInteraction()\n\n  const slideIndex = this.getAttribute('data-bs-slide-to')\n\n  if (slideIndex) {\n    carousel.to(slideIndex)\n    return\n  }\n\n  if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n    carousel.next()\n    return\n  }\n\n  carousel.prev()\n})\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_PLAY_PAUSE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n    return\n  }\n\n  event.preventDefault()\n\n  Carousel.getOrCreateInstance(target)._togglePlayPause()\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_AUTOPLAY)\n\n  for (const carousel of carousels) {\n    Carousel.getOrCreateInstance(carousel)\n  }\n})\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement,\n  reflow\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\nconst Default = {\n  parent: null,\n  toggle: true\n}\n\nconst DefaultType = {\n  parent: '(null|element)',\n  toggle: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._triggerArray = []\n\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n    for (const elem of toggleList) {\n      const selector = SelectorEngine.getSelectorFromElement(elem)\n      const filterElement = SelectorEngine.find(selector)\n        .filter(foundElement => foundElement === this._element)\n\n      if (selector !== null && filterElement.length) {\n        this._triggerArray.push(elem)\n      }\n    }\n\n    this._initializeChildren()\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown())\n    }\n\n    if (this._config.toggle) {\n      this.toggle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._isShown()) {\n      this.hide()\n    } else {\n      this.show()\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return\n    }\n\n    let activeChildren = []\n\n    // find active children\n    if (this._config.parent) {\n      activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES)\n        .filter(element => element !== this._element)\n        .map(element => Collapse.getOrCreateInstance(element, { toggle: false }))\n    }\n\n    if (activeChildren.length && activeChildren[0]._isTransitioning) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    for (const activeInstance of activeChildren) {\n      activeInstance.hide()\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE)\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n    this._element.style[dimension] = 0\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true)\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n      this._element.style[dimension] = ''\n\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n    }\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n    const scrollSize = `scroll${capitalizedDimension}`\n\n    this._queueCallback(complete, this._element, true)\n    this._element.style[dimension] = `${this._element[scrollSize]}px`\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (startEvent.defaultPrevented) {\n      return\n    }\n\n    const dimension = this._getDimension()\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n    reflow(this._element)\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING)\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n    for (const trigger of this._triggerArray) {\n      const element = SelectorEngine.getElementFromSelector(trigger)\n\n      if (element && !this._isShown(element)) {\n        this._addAriaAndCollapsedClass([trigger], false)\n      }\n    }\n\n    this._isTransitioning = true\n\n    const complete = () => {\n      this._isTransitioning = false\n      this._element.classList.remove(CLASS_NAME_COLLAPSING)\n      this._element.classList.add(CLASS_NAME_COLLAPSE)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.style[dimension] = ''\n\n    this._queueCallback(complete, this._element, true)\n  }\n\n  // Private\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _configAfterMerge(config) {\n    config.toggle = Boolean(config.toggle) // Coerce string values\n    config.parent = getElement(config.parent)\n    return config\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return\n    }\n\n    const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE)\n\n    for (const element of children) {\n      const selected = SelectorEngine.getElementFromSelector(element)\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected))\n      }\n    }\n  }\n\n  _getFirstLevelChildren(selector) {\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent)\n    // remove children if greater depth\n    return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element))\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return\n    }\n\n    for (const element of triggerArray) {\n      element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen)\n      element.setAttribute('aria-expanded', isOpen)\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n    event.preventDefault()\n  }\n\n  for (const element of SelectorEngine.getMultipleElementsFromSelector(this)) {\n    Collapse.getOrCreateInstance(element, { toggle: false }).toggle()\n  }\n})\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/floating-ui.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isRTL } from './index.js'\n\n/**\n * Breakpoints for responsive placement (matches SCSS $breakpoints)\n */\nexport const BREAKPOINTS = {\n  sm: 576,\n  md: 768,\n  lg: 1024,\n  xl: 1280,\n  '2xl': 1536\n}\n\n/**\n * Default placement with RTL support\n */\nexport const getDefaultPlacement = (fallback = 'bottom') => {\n  if (fallback.includes('-start') || fallback.includes('-end')) {\n    const [side, alignment] = fallback.split('-')\n    const flippedAlignment = alignment === 'start' ? 'end' : 'start'\n    return isRTL() ? `${side}-${flippedAlignment}` : fallback\n  }\n\n  return fallback\n}\n\n/**\n * Parse a placement string that may contain responsive prefixes\n * Example: \"bottom-start md:top-end lg:right\" returns { xs: 'bottom-start', md: 'top-end', lg: 'right' }\n *\n * @param {string} placementString - The placement string to parse\n * @param {string} defaultPlacement - The default placement to use for xs/base\n * @returns {object|null} - Object with breakpoint keys and placement values, or null if not responsive\n */\nexport const parseResponsivePlacement = (placementString, defaultPlacement = 'bottom') => {\n  // Check if placement contains responsive prefixes (e.g., \"bottom-start md:top-end\")\n  if (!placementString || !placementString.includes(':')) {\n    return null\n  }\n\n  // Parse the placement string into breakpoint-keyed object\n  const parts = placementString.split(/\\s+/)\n  const placements = { xs: defaultPlacement } // Default fallback\n\n  for (const part of parts) {\n    if (part.includes(':')) {\n      // Responsive placement like \"md:top-end\"\n      const [breakpoint, placement] = part.split(':')\n      if (BREAKPOINTS[breakpoint] !== undefined) {\n        placements[breakpoint] = placement\n      }\n    } else {\n      // Base placement (no prefix = xs/default)\n      placements.xs = part\n    }\n  }\n\n  return placements\n}\n\n/**\n * Get the active placement for the current viewport width\n *\n * @param {object} responsivePlacements - Object with breakpoint keys and placement values\n * @param {string} defaultPlacement - Fallback placement\n * @returns {string} - The active placement for current viewport\n */\nexport const getResponsivePlacement = (responsivePlacements, defaultPlacement = 'bottom') => {\n  if (!responsivePlacements) {\n    return defaultPlacement\n  }\n\n  // Get current viewport width\n  const viewportWidth = window.innerWidth\n\n  // Find the largest breakpoint that matches\n  let activePlacement = responsivePlacements.xs || defaultPlacement\n\n  // Check breakpoints in order (sm, md, lg, xl, 2xl)\n  const breakpointOrder = ['sm', 'md', 'lg', 'xl', '2xl']\n\n  for (const breakpoint of breakpointOrder) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    if (viewportWidth >= minWidth && responsivePlacements[breakpoint]) {\n      activePlacement = responsivePlacements[breakpoint]\n    }\n  }\n\n  return activePlacement\n}\n\n/**\n * Create media query listeners for responsive placement changes\n *\n * @param {Function} callback - Callback to run when breakpoint changes\n * @returns {Array} - Array of { mql, handler } objects for cleanup\n */\nexport const createBreakpointListeners = callback => {\n  const listeners = []\n\n  for (const breakpoint of Object.keys(BREAKPOINTS)) {\n    const minWidth = BREAKPOINTS[breakpoint]\n    const mql = window.matchMedia(`(min-width: ${minWidth}px)`)\n\n    mql.addEventListener('change', callback)\n    listeners.push({ mql, handler: callback })\n  }\n\n  return listeners\n}\n\n/**\n * Clean up media query listeners\n *\n * @param {Array} listeners - Array of { mql, handler } objects\n */\nexport const disposeBreakpointListeners = listeners => {\n  for (const { mql, handler } of listeners) {\n    mql.removeEventListener('change', handler)\n  }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap menu.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  execute,\n  getElement,\n  getNextActiveElement,\n  isDisabled,\n  isElement,\n  isRTL,\n  isVisible,\n  noop\n} from './util/index.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'menu'\nconst DATA_KEY = 'bs.menu'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\nconst RIGHT_MOUSE_BUTTON = 2\n\nconst SUBMENU_CLOSE_DELAY = 100\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"menu\"]:not(.disabled):not(:disabled)'\n\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_SUBMENU = '.submenu'\nconst SELECTOR_SUBMENU_TOGGLE = '.submenu > .menu-item'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item:not(.disabled):not(:disabled)'\n\nconst DEFAULT_PLACEMENT = 'bottom-start'\nconst SUBMENU_PLACEMENT = 'end-start'\n\nconst resolveLogicalPlacement = placement => {\n  if (isRTL()) {\n    return placement.replace(/^start(?=-|$)/, 'right').replace(/^end(?=-|$)/, 'left')\n  }\n\n  return placement.replace(/^start(?=-|$)/, 'left').replace(/^end(?=-|$)/, 'right')\n}\n\nconst triangleSign = (p1, p2, p3) =>\n  ((p1.x - p3.x) * (p2.y - p3.y)) - ((p2.x - p3.x) * (p1.y - p3.y))\n\nconst Default = {\n  autoClose: true,\n  boundary: 'clippingParents',\n  container: false,\n  display: 'dynamic',\n  offset: [0, 2],\n  floatingConfig: null,\n  menu: null,\n  placement: DEFAULT_PLACEMENT,\n  reference: 'toggle',\n  strategy: 'absolute',\n  submenuTrigger: 'both',\n  submenuDelay: SUBMENU_CLOSE_DELAY\n}\n\nconst DefaultType = {\n  autoClose: '(boolean|string)',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  display: 'string',\n  offset: '(array|string|function)',\n  floatingConfig: '(null|object|function)',\n  menu: '(null|element)',\n  placement: 'string',\n  reference: '(string|element|object)',\n  strategy: 'string',\n  submenuTrigger: 'string',\n  submenuDelay: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass Menu extends BaseComponent {\n  static _openInstances = new Set()\n\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s menus require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    this._floatingCleanup = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n    this._parent = this._element.parentNode // menu wrapper\n    this._openSubmenus = new Map()\n    this._submenuCloseTimeouts = new Map()\n    this._hoverIntentData = null\n\n    this._menu = this._config.menu || this._findMenu()\n\n    // When the menu was discovered from the DOM, refine the wrapper to the closest\n    // ancestor that actually contains it, so the toggle doesn't have to be a direct\n    // sibling of `.menu` (e.g. when wrapped by web components). The wrapper still\n    // receives `.show` and acts as the `reference: 'parent'` positioning anchor.\n    if (!this._config.menu && this._menu) {\n      this._parent = this._findWrapper(this._menu)\n    }\n\n    this._isSubmenu = this._parent.classList?.contains('submenu')\n\n    this._menuOriginalParent = this._menu?.parentNode\n\n    this._parseResponsivePlacements()\n    this._setupSubmenuListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._moveMenuToContainer()\n    this._createFloating()\n\n    if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    this._element.focus({ focusVisible: false })\n    this._element.setAttribute('aria-expanded', 'true')\n\n    this._menu.classList.add(CLASS_NAME_SHOW)\n    this._element.classList.add(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.add(CLASS_NAME_SHOW)\n    }\n\n    Menu._openInstances.add(this)\n    EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown()) {\n      return\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    }\n\n    this._completeHide(relatedTarget)\n  }\n\n  dispose() {\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n    this._disposeMediaQueryListeners()\n    this._closeAllSubmenus()\n    this._clearAllSubmenuTimeouts()\n    Menu._openInstances.delete(this)\n    super.dispose()\n  }\n\n  update() {\n    if (this._floatingCleanup) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Private\n  _findMenu() {\n    // Fall back to the closest ancestor that contains a menu so the toggle can be\n    // nested deeper than a direct sibling of `.menu`.\n    const wrapper = SelectorEngine.closest(this._element, `:has(${SELECTOR_MENU})`)\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||\n      SelectorEngine.findOne(SELECTOR_MENU, wrapper || this._parent)\n  }\n\n  _findWrapper(menu) {\n    let wrapper = this._element.parentNode\n    while (wrapper instanceof Element && !wrapper.contains(menu)) {\n      wrapper = wrapper.parentNode\n    }\n\n    return wrapper instanceof Element ? wrapper : this._element.parentNode\n  }\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._closeAllSubmenus()\n\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._disposeFloating()\n    this._restoreMenuToOriginalParent()\n\n    this._menu.classList.remove(CLASS_NAME_SHOW)\n    this._element.classList.remove(CLASS_NAME_SHOW)\n\n    if (this._parent) {\n      this._parent.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    this._element.setAttribute('aria-expanded', 'false')\n    Manipulator.removeDataAttribute(this._menu, 'placement')\n    Manipulator.removeDataAttribute(this._menu, 'display')\n    Menu._openInstances.delete(this)\n    EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n  }\n\n  _getConfig(config) {\n    config = super._getConfig(config)\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) &&\n      typeof config.reference.getBoundingClientRect !== 'function'\n    ) {\n      throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n    }\n\n    return config\n  }\n\n  _createFloating() {\n    if (this._config.display === 'static') {\n      Manipulator.setDataAttribute(this._menu, 'display', 'static')\n      return\n    }\n\n    let referenceElement = this._element\n\n    if (this._config.reference === 'parent') {\n      referenceElement = this._parent\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference)\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference\n    }\n\n    this._updateFloatingPosition(referenceElement)\n\n    this._floatingCleanup = autoUpdate(\n      referenceElement,\n      this._menu,\n      () => this._updateFloatingPosition(referenceElement)\n    )\n  }\n\n  async _updateFloatingPosition(referenceElement = null) {\n    if (!this._menu) {\n      return\n    }\n\n    if (!referenceElement) {\n      if (this._config.reference === 'parent') {\n        referenceElement = this._parent\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference)\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference\n      } else {\n        referenceElement = this._element\n      }\n    }\n\n    const placement = this._getPlacement()\n    const middleware = this._getFloatingMiddleware()\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    await this._applyFloatingPosition(\n      referenceElement,\n      this._menu,\n      floatingConfig.placement,\n      floatingConfig.middleware,\n      floatingConfig.strategy\n    )\n  }\n\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement() {\n    const placement = this._responsivePlacements ?\n      getResponsivePlacement(this._responsivePlacements, DEFAULT_PLACEMENT) :\n      this._config.placement\n\n    return resolveLogicalPlacement(placement)\n  }\n\n  _parseResponsivePlacements() {\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, DEFAULT_PLACEMENT)\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  _getOffset() {\n    const { offset: offsetConfig } = this._config\n\n    if (typeof offsetConfig === 'string') {\n      return offsetConfig.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offsetConfig === 'function') {\n      return ({ placement, rects }) => {\n        const result = offsetConfig({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offsetConfig\n  }\n\n  _getFloatingMiddleware() {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      flip({\n        fallbackPlacements: this._getFallbackPlacements()\n      }),\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    return middleware\n  }\n\n  _getFallbackPlacements() {\n    const placement = this._getPlacement()\n\n    const fallbackMap = {\n      bottom: ['top', 'bottom-start', 'bottom-end', 'top-start', 'top-end'],\n      'bottom-start': ['top-start', 'bottom-end', 'top-end'],\n      'bottom-end': ['top-end', 'bottom-start', 'top-start'],\n      top: ['bottom', 'top-start', 'top-end', 'bottom-start', 'bottom-end'],\n      'top-start': ['bottom-start', 'top-end', 'bottom-end'],\n      'top-end': ['bottom-end', 'top-start', 'bottom-start'],\n      right: ['left', 'right-start', 'right-end', 'left-start', 'left-end'],\n      'right-start': ['left-start', 'right-end', 'left-end', 'top-start', 'bottom-start'],\n      'right-end': ['left-end', 'right-start', 'left-start', 'top-end', 'bottom-end'],\n      left: ['right', 'left-start', 'left-end', 'right-start', 'right-end'],\n      'left-start': ['right-start', 'left-end', 'right-end', 'top-start', 'bottom-start'],\n      'left-end': ['right-end', 'left-start', 'right-start', 'top-end', 'bottom-end']\n    }\n\n    return fallbackMap[placement] || ['top', 'bottom', 'right', 'left']\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware,\n      strategy: this._config.strategy\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n  }\n\n  _getContainer() {\n    const { container } = this._config\n    if (container === false) {\n      return null\n    }\n\n    return container === true ? document.body : getElement(container)\n  }\n\n  _moveMenuToContainer() {\n    const container = this._getContainer()\n    if (!container || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== container) {\n      container.append(this._menu)\n    }\n  }\n\n  _restoreMenuToOriginalParent() {\n    if (!this._menuOriginalParent || !this._menu) {\n      return\n    }\n\n    if (this._menu.parentNode !== this._menuOriginalParent) {\n      this._menuOriginalParent.append(this._menu)\n    }\n  }\n\n  async _applyFloatingPosition(reference, floating, placement, middleware, strategy = 'absolute') {\n    if (!floating.isConnected) {\n      return null\n    }\n\n    const { x, y, placement: finalPlacement } = await computePosition(\n      reference,\n      floating,\n      { placement, middleware, strategy }\n    )\n\n    if (!floating.isConnected) {\n      return null\n    }\n\n    Object.assign(floating.style, {\n      position: strategy,\n      left: `${x}px`,\n      top: `${y}px`,\n      margin: '0'\n    })\n\n    Manipulator.setDataAttribute(floating, 'placement', finalPlacement)\n    return finalPlacement\n  }\n\n  // -------------------------------------------------------------------------\n  // Submenu handling\n  // -------------------------------------------------------------------------\n\n  _setupSubmenuListeners() {\n    if (this._config.submenuTrigger === 'hover' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'mouseenter', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerEnter(event)\n      })\n\n      EventHandler.on(this._menu, 'mouseleave', SELECTOR_SUBMENU, event => {\n        this._onSubmenuLeave(event)\n      })\n\n      EventHandler.on(this._menu, 'mousemove', event => {\n        this._trackMousePosition(event)\n      })\n    }\n\n    if (this._config.submenuTrigger === 'click' || this._config.submenuTrigger === 'both') {\n      EventHandler.on(this._menu, 'click', SELECTOR_SUBMENU_TOGGLE, event => {\n        this._onSubmenuTriggerClick(event)\n      })\n    }\n  }\n\n  _onSubmenuTriggerEnter(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    this._cancelSubmenuCloseTimeout(submenu)\n    this._closeSiblingSubmenus(submenuWrapper)\n    this._openSubmenu(trigger, submenu, submenuWrapper)\n  }\n\n  _onSubmenuLeave(event) {\n    const submenuWrapper = event.target.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu || !this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    if (this._isMovingTowardSubmenu(event, submenu)) {\n      return\n    }\n\n    this._scheduleSubmenuClose(submenu, submenuWrapper)\n  }\n\n  _onSubmenuTriggerClick(event) {\n    const trigger = event.target.closest(SELECTOR_SUBMENU_TOGGLE)\n    if (!trigger) {\n      return\n    }\n\n    event.preventDefault()\n    event.stopPropagation()\n\n    const submenuWrapper = trigger.closest(SELECTOR_SUBMENU)\n    const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n    if (!submenu) {\n      return\n    }\n\n    if (this._openSubmenus.has(submenu)) {\n      this._closeSubmenu(submenu, submenuWrapper)\n    } else {\n      this._closeSiblingSubmenus(submenuWrapper)\n      this._openSubmenu(trigger, submenu, submenuWrapper)\n    }\n  }\n\n  _openSubmenu(trigger, submenu, submenuWrapper) {\n    if (this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    trigger.setAttribute('aria-expanded', 'true')\n    trigger.setAttribute('aria-haspopup', 'true')\n\n    // Keep the submenu transparent until Floating UI applies the first position, so\n    // it doesn't flash at its CSS fallback position (top: 0, over the parent menu)\n    // before being moved into place. `opacity` (unlike `visibility`/`display`) keeps\n    // the submenu measurable for flip/shift and focusable for keyboard navigation.\n    submenu.style.opacity = '0'\n    submenu.classList.add(CLASS_NAME_SHOW)\n    submenuWrapper.classList.add(CLASS_NAME_SHOW)\n\n    const cleanup = this._createSubmenuFloating(trigger, submenu, submenuWrapper)\n    this._openSubmenus.set(submenu, cleanup)\n\n    EventHandler.on(submenu, 'mouseenter', () => {\n      this._cancelSubmenuCloseTimeout(submenu)\n    })\n  }\n\n  _closeSubmenu(submenu, submenuWrapper) {\n    if (!this._openSubmenus.has(submenu)) {\n      return\n    }\n\n    const nestedSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, submenu)\n    for (const nested of nestedSubmenus) {\n      const nestedWrapper = nested.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(nested, nestedWrapper)\n    }\n\n    const trigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, submenuWrapper)\n\n    const cleanup = this._openSubmenus.get(submenu)\n    if (cleanup) {\n      cleanup()\n    }\n\n    this._openSubmenus.delete(submenu)\n    EventHandler.off(submenu, 'mouseenter')\n\n    if (trigger) {\n      trigger.setAttribute('aria-expanded', 'false')\n    }\n\n    submenu.classList.remove(CLASS_NAME_SHOW)\n    submenuWrapper.classList.remove(CLASS_NAME_SHOW)\n\n    // Keep the Floating UI position styles in place while the submenu fades out.\n    // Clearing them here would let the submenu snap back to its CSS fallback\n    // (`top: 0`, over the parent menu) for the duration of the close transition,\n    // causing it to flash over the parent. They get recomputed on the next open\n    // (and the opacity gate in `_openSubmenu` hides any stale position until then).\n    submenu.style.opacity = ''\n  }\n\n  _closeAllSubmenus() {\n    for (const [submenu] of this._openSubmenus) {\n      const submenuWrapper = submenu.closest(SELECTOR_SUBMENU)\n      this._closeSubmenu(submenu, submenuWrapper)\n    }\n  }\n\n  _closeSiblingSubmenus(currentSubmenuWrapper) {\n    const parent = currentSubmenuWrapper.parentNode\n    const siblingSubmenus = SelectorEngine.find(`${SELECTOR_SUBMENU} > ${SELECTOR_MENU}.${CLASS_NAME_SHOW}`, parent)\n\n    for (const siblingMenu of siblingSubmenus) {\n      const siblingWrapper = siblingMenu.closest(SELECTOR_SUBMENU)\n      if (siblingWrapper !== currentSubmenuWrapper) {\n        this._closeSubmenu(siblingMenu, siblingWrapper)\n      }\n    }\n  }\n\n  _createSubmenuFloating(trigger, submenu, submenuWrapper) {\n    const referenceElement = submenuWrapper\n    const placement = resolveLogicalPlacement(SUBMENU_PLACEMENT)\n    const middleware = [\n      offset({ mainAxis: 0, crossAxis: -4 }),\n      flip({\n        fallbackPlacements: [\n          resolveLogicalPlacement('start-start'),\n          resolveLogicalPlacement('end-end'),\n          resolveLogicalPlacement('start-end')\n        ]\n      }),\n      shift({ padding: 8 })\n    ]\n\n    const updatePosition = () => this._applyFloatingPosition(referenceElement, submenu, placement, middleware)\n      .then(finalPlacement => {\n        // Reveal the submenu now that it has been positioned (see `_openSubmenu`);\n        // clearing the inline opacity lets the CSS fade-in transition take over.\n        submenu.style.opacity = ''\n        return finalPlacement\n      })\n\n    updatePosition()\n    return autoUpdate(referenceElement, submenu, updatePosition)\n  }\n\n  _scheduleSubmenuClose(submenu, submenuWrapper) {\n    this._cancelSubmenuCloseTimeout(submenu)\n\n    const timeoutId = setTimeout(() => {\n      this._closeSubmenu(submenu, submenuWrapper)\n      this._submenuCloseTimeouts.delete(submenu)\n    }, this._config.submenuDelay)\n\n    this._submenuCloseTimeouts.set(submenu, timeoutId)\n  }\n\n  _cancelSubmenuCloseTimeout(submenu) {\n    const timeoutId = this._submenuCloseTimeouts.get(submenu)\n    if (timeoutId) {\n      clearTimeout(timeoutId)\n      this._submenuCloseTimeouts.delete(submenu)\n    }\n  }\n\n  _clearAllSubmenuTimeouts() {\n    for (const timeoutId of this._submenuCloseTimeouts.values()) {\n      clearTimeout(timeoutId)\n    }\n\n    this._submenuCloseTimeouts.clear()\n  }\n\n  // -------------------------------------------------------------------------\n  // Hover intent / Safe triangle\n  // -------------------------------------------------------------------------\n\n  _trackMousePosition(event) {\n    this._hoverIntentData = {\n      x: event.clientX,\n      y: event.clientY,\n      timestamp: Date.now()\n    }\n  }\n\n  _isMovingTowardSubmenu(event, submenu) {\n    if (!this._hoverIntentData) {\n      return false\n    }\n\n    const submenuRect = submenu.getBoundingClientRect()\n    const currentPos = { x: event.clientX, y: event.clientY }\n    const lastPos = { x: this._hoverIntentData.x, y: this._hoverIntentData.y }\n\n    const isRtl = isRTL()\n    const targetX = isRtl ? submenuRect.right : submenuRect.left\n    const topCorner = { x: targetX, y: submenuRect.top }\n    const bottomCorner = { x: targetX, y: submenuRect.bottom }\n\n    return this._pointInTriangle(currentPos, lastPos, topCorner, bottomCorner)\n  }\n\n  _pointInTriangle(point, v1, v2, v3) {\n    const d1 = triangleSign(point, v1, v2)\n    const d2 = triangleSign(point, v2, v3)\n    const d3 = triangleSign(point, v3, v1)\n\n    const hasNeg = (d1 < 0) || (d2 < 0) || (d3 < 0)\n    const hasPos = (d1 > 0) || (d2 > 0) || (d3 > 0)\n\n    return !(hasNeg && hasPos)\n  }\n\n  // -------------------------------------------------------------------------\n  // Keyboard navigation\n  // -------------------------------------------------------------------------\n\n  _selectMenuItem({ key, target }) {\n    const currentMenu = target.closest(SELECTOR_MENU) || this._menu\n    const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n      .filter(element => isVisible(element))\n\n    if (!items.length) {\n      return\n    }\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n  }\n\n  _handleSubmenuKeydown(event) {\n    const { key, target } = event\n    const isRtl = isRTL()\n\n    const enterKey = isRtl ? ARROW_LEFT_KEY : ARROW_RIGHT_KEY\n    const exitKey = isRtl ? ARROW_RIGHT_KEY : ARROW_LEFT_KEY\n\n    const submenuWrapper = target.closest(SELECTOR_SUBMENU)\n    const isSubmenuTrigger = submenuWrapper && target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === enterKey && isSubmenuTrigger) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const submenu = SelectorEngine.findOne(SELECTOR_MENU, submenuWrapper)\n      if (submenu) {\n        this._closeSiblingSubmenus(submenuWrapper)\n        this._openSubmenu(target, submenu, submenuWrapper)\n        requestAnimationFrame(() => {\n          const firstItem = SelectorEngine.findOne(SELECTOR_VISIBLE_ITEMS, submenu)\n          if (firstItem) {\n            firstItem.focus()\n          }\n        })\n      }\n\n      return true\n    }\n\n    if (key === exitKey) {\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper) {\n        event.preventDefault()\n        event.stopPropagation()\n\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        this._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return true\n      }\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = target.closest(SELECTOR_MENU)\n      const items = SelectorEngine.find(`:scope > ${SELECTOR_VISIBLE_ITEMS}`, currentMenu)\n        .filter(element => isVisible(element))\n\n      if (items.length) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return true\n    }\n\n    return false\n  }\n\n  static clearMenus(event) {\n    if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n      return\n    }\n\n    for (const instance of Menu._openInstances) {\n      if (instance._config.autoClose === false) {\n        continue\n      }\n\n      const composedPath = event.composedPath()\n      const isMenuTarget = composedPath.includes(instance._menu)\n      if (\n        composedPath.includes(instance._element) ||\n        (instance._config.autoClose === 'inside' && !isMenuTarget) ||\n        (instance._config.autoClose === 'outside' && isMenuTarget)\n      ) {\n        continue\n      }\n\n      // Don't auto-close when interacting with a form inside the menu — clicks\n      // on a form's labels, buttons, etc. (not just inputs) should keep it open.\n      const formAncestor = event.target.closest?.('form')\n      const isInsideMenuForm = Boolean(formAncestor) && instance._menu.contains(formAncestor)\n      if (instance._menu.contains(event.target) && ((event.type === 'keyup' && event.key === TAB_KEY) || /input|select|option|textarea|form/i.test(event.target.tagName) || isInsideMenuForm)) {\n        continue\n      }\n\n      const relatedTarget = { relatedTarget: instance._element }\n\n      if (event.type === 'click') {\n        relatedTarget.clickEvent = event\n      }\n\n      instance._completeHide(relatedTarget)\n    }\n  }\n\n  static dataApiKeydownHandler(event) {\n    // Treat contenteditable hosts (e.g. rich-text editors) like inputs so the\n    // menu doesn't hijack their arrow keys.\n    const isInput = /input|textarea/i.test(event.target.tagName) || event.target.isContentEditable\n    const isEscapeEvent = event.key === ESCAPE_KEY\n    const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key)\n    const isLeftOrRightEvent = [ARROW_LEFT_KEY, ARROW_RIGHT_KEY].includes(event.key)\n    const isHomeOrEndEvent = [HOME_KEY, END_KEY].includes(event.key)\n    const isEnterOrSpaceEvent = [ENTER_KEY, SPACE_KEY].includes(event.key)\n\n    const isSubmenuTrigger = event.target.matches(SELECTOR_SUBMENU_TOGGLE)\n\n    if (!isUpOrDownEvent && !isEscapeEvent && !isLeftOrRightEvent && !isHomeOrEndEvent &&\n        !(isEnterOrSpaceEvent && isSubmenuTrigger)) {\n      return\n    }\n\n    if (isInput && !isEscapeEvent) {\n      return\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE) ?\n      this :\n      (SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||\n        SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode))\n\n    if (!getToggleButton) {\n      return\n    }\n\n    const instance = Menu.getOrCreateInstance(getToggleButton)\n\n    if ((isLeftOrRightEvent || isHomeOrEndEvent || (isEnterOrSpaceEvent && isSubmenuTrigger)) && instance._handleSubmenuKeydown(event)) {\n      return\n    }\n\n    if (isUpOrDownEvent) {\n      event.preventDefault()\n      event.stopPropagation()\n      instance.show()\n      instance._selectMenuItem(event)\n      return\n    }\n\n    if (isEscapeEvent && instance._isShown()) {\n      event.preventDefault()\n      event.stopPropagation()\n\n      const currentMenu = event.target.closest(SELECTOR_MENU)\n      const parentSubmenuWrapper = currentMenu?.closest(SELECTOR_SUBMENU)\n\n      if (parentSubmenuWrapper && instance._openSubmenus.size > 0) {\n        const parentTrigger = SelectorEngine.findOne(SELECTOR_SUBMENU_TOGGLE, parentSubmenuWrapper)\n        instance._closeSubmenu(currentMenu, parentSubmenuWrapper)\n        if (parentTrigger) {\n          parentTrigger.focus()\n        }\n\n        return\n      }\n\n      instance.hide()\n      getToggleButton.focus()\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Menu.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Menu.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Menu.getOrCreateInstance(this).toggle()\n})\n\nexport default Menu\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap combobox.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Menu from './menu.js'\nimport { getNextActiveElement, isDisabled, isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'combobox'\nconst DATA_KEY = 'bs.combobox'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\nconst ENTER_KEY = 'Enter'\nconst SPACE_KEY = ' '\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SELECTED = 'selected'\nconst CLASS_NAME_PLACEHOLDER = 'combobox-placeholder'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"combobox\"]'\nconst SELECTOR_MENU = '.menu'\nconst SELECTOR_MENU_ITEM = '.menu-item[data-bs-value]'\nconst SELECTOR_VISIBLE_ITEMS = '.menu-item[data-bs-value]:not(.disabled):not(:disabled)'\nconst SELECTOR_VALUE = '.combobox-value'\nconst SELECTOR_SEARCH_INPUT = '.combobox-search-input'\nconst SELECTOR_NO_RESULTS = '.combobox-no-results'\n\nconst Default = {\n  boundary: 'clippingParents',\n  multiple: false,\n  name: null,\n  offset: [0, 2],\n  placeholder: '',\n  placement: 'bottom-start',\n  search: false,\n  searchNormalize: false\n}\n\nconst DefaultType = {\n  boundary: '(string|element)',\n  multiple: 'boolean',\n  name: '(string|null)',\n  offset: '(array|string|function)',\n  placeholder: 'string',\n  placement: 'string',\n  search: 'boolean',\n  searchNormalize: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Combobox extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._toggle = this._element\n    this._menu = SelectorEngine.next(this._toggle, SELECTOR_MENU)[0]\n    this._valueDisplay = SelectorEngine.findOne(SELECTOR_VALUE, this._toggle)\n    this._searchInput = SelectorEngine.findOne(SELECTOR_SEARCH_INPUT, this._menu)\n    this._noResults = SelectorEngine.findOne(SELECTOR_NO_RESULTS, this._menu)\n    this._hiddenInput = null\n    this._menuInstance = null\n\n    this._createHiddenInput()\n    this._createMenuInstance()\n    this._syncInitialSelection()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    return this._isShown() ? this.hide() : this.show()\n  }\n\n  show() {\n    if (isDisabled(this._toggle) || this._isShown()) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._toggle, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.show()\n\n    if (this._searchInput) {\n      this._searchInput.value = ''\n      this._filterItems('')\n      requestAnimationFrame(() => this._searchInput.focus())\n    }\n\n    EventHandler.trigger(this._toggle, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._toggle, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._menuInstance.hide()\n    EventHandler.trigger(this._toggle, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._menuInstance) {\n      this._menuInstance.dispose()\n      this._menuInstance = null\n    }\n\n    if (this._hiddenInput) {\n      this._hiddenInput.remove()\n      this._hiddenInput = null\n    }\n\n    EventHandler.off(this._menu, EVENT_KEY)\n    EventHandler.off(this._toggle, EVENT_KEY)\n\n    super.dispose()\n  }\n\n  // Private\n  _isShown() {\n    return this._menu.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _createHiddenInput() {\n    const { name } = this._config\n    if (!name) {\n      return\n    }\n\n    this._hiddenInput = document.createElement('input')\n    this._hiddenInput.type = 'hidden'\n    this._hiddenInput.name = name\n    this._hiddenInput.value = ''\n    this._toggle.parentNode.insertBefore(this._hiddenInput, this._toggle)\n  }\n\n  _createMenuInstance() {\n    this._menuInstance = new Menu(this._toggle, {\n      menu: this._menu,\n      autoClose: this._config.multiple ? 'outside' : true,\n      boundary: this._config.boundary,\n      offset: this._config.offset,\n      placement: this._config.placement\n    })\n  }\n\n  _syncInitialSelection() {\n    const selectedItems = this._getSelectedItems()\n    if (selectedItems.length > 0) {\n      this._updateToggleText()\n      this._updateHiddenInput()\n    } else {\n      this._showPlaceholder()\n    }\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._menu, 'click', SELECTOR_MENU_ITEM, event => {\n      const item = event.target.closest(SELECTOR_MENU_ITEM)\n      if (!item || isDisabled(item)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n      this._selectItem(item)\n    })\n\n    EventHandler.on(this._toggle, 'keydown', event => {\n      this._handleToggleKeydown(event)\n    })\n\n    EventHandler.on(this._menu, 'keydown', event => {\n      this._handleMenuKeydown(event)\n    })\n\n    if (this._searchInput) {\n      EventHandler.on(this._searchInput, 'input', () => {\n        this._filterItems(this._searchInput.value)\n      })\n\n      EventHandler.on(this._searchInput, 'keydown', event => {\n        if (event.key === ARROW_DOWN_KEY) {\n          event.preventDefault()\n          const items = this._getVisibleItems()\n          if (items.length > 0) {\n            items[0].focus()\n          }\n        }\n\n        if (event.key === ESCAPE_KEY) {\n          this.hide()\n          this._toggle.focus()\n        }\n      })\n    }\n  }\n\n  _selectItem(item) {\n    if (this._config.multiple) {\n      item.classList.toggle(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', item.classList.contains(CLASS_NAME_SELECTED))\n    } else {\n      const previouslySelected = SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n      for (const prev of previouslySelected) {\n        prev.classList.remove(CLASS_NAME_SELECTED)\n        prev.setAttribute('aria-selected', 'false')\n      }\n\n      item.classList.add(CLASS_NAME_SELECTED)\n      item.setAttribute('aria-selected', 'true')\n    }\n\n    this._updateToggleText()\n    this._updateHiddenInput()\n\n    const value = this._config.multiple ?\n      this._getSelectedItems().map(el => el.dataset.bsValue) :\n      item.dataset.bsValue\n\n    EventHandler.trigger(this._toggle, EVENT_CHANGE, {\n      value,\n      item\n    })\n\n    if (!this._config.multiple) {\n      this.hide()\n      this._toggle.focus()\n    }\n  }\n\n  _updateToggleText() {\n    const selectedItems = this._getSelectedItems()\n\n    if (selectedItems.length === 0) {\n      this._showPlaceholder()\n      return\n    }\n\n    this._valueDisplay.classList.remove(CLASS_NAME_PLACEHOLDER)\n\n    if (this._config.multiple && selectedItems.length > 1) {\n      this._valueDisplay.textContent = `${selectedItems.length} selected`\n    } else {\n      const item = selectedItems[0]\n      const label = SelectorEngine.findOne('.menu-item-content > span:first-child', item)\n      this._valueDisplay.textContent = label ? label.textContent : item.textContent.trim()\n    }\n  }\n\n  _showPlaceholder() {\n    const { placeholder } = this._config\n    if (placeholder) {\n      this._valueDisplay.textContent = placeholder\n      this._valueDisplay.classList.add(CLASS_NAME_PLACEHOLDER)\n    }\n  }\n\n  _updateHiddenInput() {\n    if (!this._hiddenInput) {\n      return\n    }\n\n    const selectedItems = this._getSelectedItems()\n    const values = selectedItems.map(el => el.dataset.bsValue)\n    this._hiddenInput.value = this._config.multiple ? values.join(',') : (values[0] || '')\n  }\n\n  _getSelectedItems() {\n    return SelectorEngine.find(`.${CLASS_NAME_SELECTED}`, this._menu)\n  }\n\n  _getVisibleItems() {\n    return SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu)\n      .filter(item => isVisible(item))\n  }\n\n  _filterItems(query) {\n    const normalizedQuery = this._normalizeText(query.toLowerCase().trim())\n    const items = SelectorEngine.find(SELECTOR_MENU_ITEM, this._menu)\n    let visibleCount = 0\n\n    for (const item of items) {\n      const text = this._normalizeText(item.textContent.toLowerCase().trim())\n      const matches = !normalizedQuery || text.includes(normalizedQuery)\n      item.style.display = matches ? '' : 'none'\n      if (matches) {\n        visibleCount++\n      }\n    }\n\n    if (this._noResults) {\n      this._noResults.classList.toggle('d-none', visibleCount > 0)\n    }\n  }\n\n  _normalizeText(text) {\n    if (this._config.searchNormalize) {\n      return text.normalize('NFD').replace(/[\\u0300-\\u036F]/g, '')\n    }\n\n    return text\n  }\n\n  _handleToggleKeydown(event) {\n    const { key } = event\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      if (!this._isShown()) {\n        this.show()\n      }\n\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const target = key === ARROW_DOWN_KEY ? items[0] : items.at(-1)\n        target.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !this._isShown()) {\n      event.preventDefault()\n      this.show()\n    }\n  }\n\n  _handleMenuKeydown(event) {\n    const { key, target } = event\n\n    if (key === ESCAPE_KEY) {\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n      this._toggle.focus()\n      return\n    }\n\n    if (key === TAB_KEY) {\n      this.hide()\n      return\n    }\n\n    const isInput = target.matches('input')\n\n    if (key === ARROW_DOWN_KEY || key === ARROW_UP_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus()\n      }\n\n      return\n    }\n\n    if (key === HOME_KEY || key === END_KEY) {\n      event.preventDefault()\n      const items = this._getVisibleItems()\n      if (items.length > 0) {\n        const targetItem = key === HOME_KEY ? items[0] : items.at(-1)\n        targetItem.focus()\n      }\n\n      return\n    }\n\n    if ((key === ENTER_KEY || key === SPACE_KEY) && !isInput) {\n      event.preventDefault()\n      const item = target.closest(SELECTOR_MENU_ITEM)\n      if (item && !isDisabled(item)) {\n        this._selectItem(item)\n      }\n    }\n  }\n\n  // Static\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Combobox.getOrCreateInstance(this, config)\n\n      if (typeof config !== 'string') {\n        return\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`)\n      }\n\n      data[config]()\n    })\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  event.preventDefault()\n  Combobox.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const toggle of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n    Combobox.getOrCreateInstance(toggle)\n  }\n})\n\nexport default Combobox\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap datepicker.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { Calendar } from 'vanilla-calendar-pro'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'datepicker'\nconst DATA_KEY = 'bs.datepicker'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_FOCUSIN_DATA_API = `focusin${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"datepicker\"]'\n\nconst HIDE_DELAY = 100 // ms delay before hiding after selection\n\nconst Default = {\n  datepickerTheme: null, // 'light', 'dark', 'auto' - explicit theme for datepicker popover only\n  dateMin: null,\n  dateMax: null,\n  dateFormat: null, // Intl.DateTimeFormat options, or function(date, locale) => string\n  displayElement: null, // Element to show formatted date (defaults to element for buttons)\n  displayMonthsCount: 1, // Number of months to display side-by-side\n  firstWeekday: 1, // Monday\n  inline: false, // Render calendar inline (no popup)\n  locale: 'default',\n  positionElement: null, // Element to position calendar relative to (defaults to input)\n  selectedDates: [],\n  selectionMode: 'single', // 'single', 'multiple', 'multiple-ranged'\n  placement: 'left', // 'left', 'center', 'right', 'auto'\n  vcpOptions: {} // Pass-through for any VCP option\n}\n\nconst DefaultType = {\n  datepickerTheme: '(null|string)',\n  dateMin: '(null|string|number|object)',\n  dateMax: '(null|string|number|object)',\n  dateFormat: '(null|object|function)',\n  displayElement: '(null|string|element|boolean)',\n  displayMonthsCount: 'number',\n  firstWeekday: 'number',\n  inline: 'boolean',\n  locale: 'string',\n  positionElement: '(null|string|element)',\n  selectedDates: 'array',\n  selectionMode: 'string',\n  placement: 'string',\n  vcpOptions: 'object'\n}\n\n/**\n * Class definition\n */\n\nclass Datepicker extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._calendar = null\n    this._isShown = false\n\n    this._initCalendar()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    return this._isShown ? this.hide() : this.show()\n  }\n\n  show() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || isDisabled(this._element) || this._isShown) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.show()\n    this._isShown = true\n\n    EventHandler.trigger(this._element, EVENT_SHOWN)\n  }\n\n  hide() {\n    if (this._config.inline) {\n      return // Inline calendars are always visible\n    }\n\n    if (!this._calendar || !this._isShown) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._calendar.hide()\n    this._isShown = false\n\n    EventHandler.trigger(this._element, EVENT_HIDDEN)\n  }\n\n  dispose() {\n    if (this._themeObserver) {\n      this._themeObserver.disconnect()\n      this._themeObserver = null\n    }\n\n    if (this._calendar) {\n      this._calendar.destroy()\n    }\n\n    this._calendar = null\n    super.dispose()\n  }\n\n  getSelectedDates() {\n    const dates = this._calendar?.context?.selectedDates\n    return dates ? [...dates] : []\n  }\n\n  setSelectedDates(dates) {\n    if (this._calendar) {\n      this._calendar.set({ selectedDates: dates })\n    }\n  }\n\n  // Private\n  _initCalendar() {\n    this._isInput = this._element.tagName === 'INPUT'\n    this._isInline = this._config.inline\n\n    // For inline mode, look for a hidden input child to bind to\n    if (this._isInline && !this._isInput) {\n      this._boundInput = this._element.querySelector('input[type=\"hidden\"], input[name]')\n    }\n\n    this._positionElement = this._resolvePositionElement()\n    this._displayElement = this._resolveDisplayElement()\n\n    const calendarOptions = this._buildCalendarOptions()\n\n    // Create calendar on the position element (for correct popup positioning)\n    // but value updates still go to this._element (the input)\n    this._calendar = new Calendar(this._positionElement, calendarOptions)\n    this._calendar.init()\n\n    // Watch for theme changes on ancestor elements (for live theme switching)\n    this._setupThemeObserver()\n\n    // Set initial value if input has a value\n    if (this._isInput && this._element.value) {\n      this._parseInputValue()\n    }\n\n    // Populate input/display with preselected dates\n    this._updateDisplayWithSelectedDates()\n  }\n\n  _updateDisplayWithSelectedDates() {\n    const { selectedDates } = this._config\n    if (!selectedDates || selectedDates.length === 0) {\n      return\n    }\n\n    const formattedDate = this._formatDateForInput(selectedDates)\n\n    if (this._isInput) {\n      this._element.value = formattedDate\n    }\n\n    if (this._boundInput) {\n      this._boundInput.value = selectedDates.join(',')\n    }\n\n    if (this._displayElement) {\n      this._displayElement.textContent = formattedDate\n    }\n  }\n\n  _resolvePositionElement() {\n    let { positionElement } = this._config\n\n    if (typeof positionElement === 'string') {\n      positionElement = document.querySelector(positionElement)\n    }\n\n    // Use input's parent if in form-adorn\n    if (!positionElement && this._isInput && !this._isInline) {\n      const parent = this._element.closest('.form-adorn')\n      if (parent) {\n        positionElement = parent\n      }\n    }\n\n    return positionElement || this._element\n  }\n\n  _resolveDisplayElement() {\n    const { displayElement } = this._config\n\n    if (typeof displayElement === 'string') {\n      return document.querySelector(displayElement)\n    }\n\n    // For buttons/non-inputs (not inline), look for a [data-bs-datepicker-display] child\n    if (displayElement === true || (displayElement === null && !this._isInput && !this._isInline)) {\n      const displayChild = this._element.querySelector('[data-bs-datepicker-display]')\n      return displayChild || this._element\n    }\n\n    return displayElement\n  }\n\n  _getThemeAncestor() {\n    return this._element.closest('[data-bs-theme]')\n  }\n\n  _getEffectiveTheme() {\n    // Priority: explicit datepickerTheme config > inherited from ancestor > none\n    const { datepickerTheme } = this._config\n    if (datepickerTheme) {\n      return datepickerTheme\n    }\n\n    const ancestor = this._getThemeAncestor()\n    return ancestor?.getAttribute('data-bs-theme') || null\n  }\n\n  _syncThemeAttribute(element) {\n    if (!element) {\n      return\n    }\n\n    const theme = this._getEffectiveTheme()\n\n    if (theme) {\n      // Copy theme to popover (needed because VCP appends to body, breaking CSS inheritance)\n      element.setAttribute('data-bs-theme', theme)\n    } else {\n      // No theme - remove attribute to allow natural inheritance\n      element.removeAttribute('data-bs-theme')\n    }\n  }\n\n  _setupThemeObserver() {\n    // Watch for theme changes on ancestor elements\n    const ancestor = this._getThemeAncestor()\n    if (!ancestor || this._config.datepickerTheme) {\n      // No ancestor to watch, or explicit datepickerTheme overrides\n      return\n    }\n\n    this._themeObserver = new MutationObserver(() => {\n      this._syncThemeAttribute(this._calendar?.context?.mainElement)\n    })\n\n    this._themeObserver.observe(ancestor, {\n      attributes: true,\n      attributeFilter: ['data-bs-theme']\n    })\n  }\n\n  _buildCalendarOptions() {\n    // Get theme for VCP - use 'system' for auto-detection if no explicit theme\n    const theme = this._getEffectiveTheme()\n    // VCP uses 'system' for auto, Bootstrap uses 'auto'\n    const vcpTheme = !theme || theme === 'auto' ? 'system' : theme\n\n    const calendarOptions = {\n      ...this._config.vcpOptions,\n      inputMode: !this._isInline,\n      positionToInput: this._config.placement,\n      firstWeekday: this._config.firstWeekday,\n      locale: this._config.locale,\n      selectionDatesMode: this._config.selectionMode,\n      selectedDates: this._config.selectedDates,\n      displayMonthsCount: this._config.displayMonthsCount,\n      type: this._config.displayMonthsCount > 1 ? 'multiple' : 'default',\n      selectedTheme: vcpTheme,\n      themeAttrDetect: '[data-bs-theme]',\n      onClickDate: (self, event) => this._handleDateClick(self, event),\n      onInit: self => {\n        this._syncThemeAttribute(self.context.mainElement)\n      },\n      onShow: () => {\n        this._isShown = true\n        this._syncThemeAttribute(this._calendar.context.mainElement)\n      },\n      onHide: () => {\n        this._isShown = false\n      }\n    }\n\n    // Navigate to the month of the first selected date\n    if (this._config.selectedDates.length > 0) {\n      const firstDate = this._parseDate(this._config.selectedDates[0])\n      calendarOptions.selectedMonth = firstDate.getMonth()\n      calendarOptions.selectedYear = firstDate.getFullYear()\n    }\n\n    if (this._config.dateMin) {\n      calendarOptions.dateMin = this._config.dateMin\n    }\n\n    if (this._config.dateMax) {\n      calendarOptions.dateMax = this._config.dateMax\n    }\n\n    return calendarOptions\n  }\n\n  _handleDateClick(self, event) {\n    const selectedDates = [...self.context.selectedDates]\n\n    if (selectedDates.length > 0) {\n      const formattedDate = this._formatDateForInput(selectedDates)\n\n      if (this._isInput) {\n        this._element.value = formattedDate\n      }\n\n      if (this._boundInput) {\n        this._boundInput.value = selectedDates.join(',')\n      }\n\n      if (this._displayElement) {\n        this._displayElement.textContent = formattedDate\n      }\n    }\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      dates: selectedDates,\n      event\n    })\n\n    this._maybeHideAfterSelection(selectedDates)\n  }\n\n  _maybeHideAfterSelection(selectedDates) {\n    if (this._isInline) {\n      return\n    }\n\n    const shouldHide =\n      (this._config.selectionMode === 'single' && selectedDates.length > 0) ||\n      (this._config.selectionMode === 'multiple-ranged' && selectedDates.length >= 2)\n\n    if (shouldHide) {\n      setTimeout(() => this.hide(), HIDE_DELAY)\n    }\n  }\n\n  _parseDate(dateStr) {\n    const [year, month, day] = dateStr.split('-')\n    return new Date(year, month - 1, day)\n  }\n\n  _formatDate(dateStr) {\n    const date = this._parseDate(dateStr)\n    const locale = this._config.locale === 'default' ? undefined : this._config.locale\n    const { dateFormat } = this._config\n\n    // Custom function formatter\n    if (typeof dateFormat === 'function') {\n      return dateFormat(date, locale)\n    }\n\n    // Intl.DateTimeFormat options object\n    if (dateFormat && typeof dateFormat === 'object') {\n      return new Intl.DateTimeFormat(locale, dateFormat).format(date)\n    }\n\n    // Default: locale-aware formatting\n    return date.toLocaleDateString(locale)\n  }\n\n  _formatDateForInput(dates) {\n    if (dates.length === 0) {\n      return ''\n    }\n\n    if (dates.length === 1) {\n      return this._formatDate(dates[0])\n    }\n\n    // For date ranges, use en-dash; for multiple dates, use comma\n    const separator = this._config.selectionMode === 'multiple-ranged' ? ' – ' : ', '\n    return dates.map(d => this._formatDate(d)).join(separator)\n  }\n\n  _parseInputValue() {\n    // Try to parse the input value as a date\n    const value = this._element.value.trim()\n    if (!value) {\n      return\n    }\n\n    const date = new Date(value)\n    if (!Number.isNaN(date.getTime())) {\n      const year = date.getFullYear()\n      const month = String(date.getMonth() + 1).padStart(2, '0')\n      const day = String(date.getDate()).padStart(2, '0')\n      const formatted = `${year}-${month}-${day}`\n      this._calendar.set({ selectedDates: [formatted] })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  // Only handle if not an input (inputs use focus)\n  // Skip inline datepickers (they're always visible)\n  if (this.tagName === 'INPUT' || this.dataset.bsInline === 'true') {\n    return\n  }\n\n  event.preventDefault()\n  Datepicker.getOrCreateInstance(this).toggle()\n})\n\nEventHandler.on(document, EVENT_FOCUSIN_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n  // Handle focus for input elements\n  if (this.tagName !== 'INPUT') {\n    return\n  }\n\n  Datepicker.getOrCreateInstance(this).show()\n})\n\n// Auto-initialize inline datepickers on DOMContentLoaded\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of document.querySelectorAll(`${SELECTOR_DATA_TOGGLE}[data-bs-inline=\"true\"]`)) {\n    Datepicker.getOrCreateInstance(element)\n  }\n})\n\nexport default Datepicker\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog-base.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport Data from './dom/data.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst CLASS_NAME_OPEN = 'dialog-open'\n\n/**\n * Class definition\n *\n * Shared base class for Dialog and Drawer components that use\n * the native <dialog> element. Provides common behavior for:\n * - Show/hide/toggle lifecycle with events\n * - Opening/closing via showModal()/show()/close()\n * - Escape key handling (modal and non-modal)\n * - Backdrop click handling\n * - Static backdrop transition (\"bounce\")\n * - Body scroll prevention\n * - Transition coordination\n * - Child component cleanup (tooltips, popovers, toasts)\n */\n\nclass DialogBase extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._isTransitioning = false\n    this._openedAsModal = false\n    this._addDialogListeners()\n  }\n\n  // Getters — subclasses override NAME with their own component name.\n  static get NAME() {\n    return 'dialogbase'\n  }\n\n  // Public — shared lifecycle methods\n\n  toggle(relatedTarget) {\n    return this._element.open ? this.hide() : this.show(relatedTarget)\n  }\n\n  show(relatedTarget) {\n    if (this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('show'),\n      { relatedTarget }\n    )\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._onBeforeShow()\n\n    const { modal, preventBodyScroll } = this._getShowOptions()\n    this._showElement({ modal, preventBodyScroll })\n\n    this._queueCallback(() => {\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('shown'),\n        { relatedTarget }\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._element.open || this._isTransitioning) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hide')\n    )\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._isTransitioning = true\n    this._hideElement()\n\n    this._queueCallback(() => {\n      // For subclasses that defer close() until the exit transition ends\n      // (so the dialog stays in the top layer with its ::backdrop), close()\n      // happens here instead of in _hideElement().\n      if (this._element.open) {\n        this._closeAndCleanup()\n      }\n\n      this._element.classList.remove('hiding')\n      this._onAfterHide()\n      this._isTransitioning = false\n      EventHandler.trigger(\n        this._element,\n        this.constructor.eventName('hidden')\n      )\n    }, this._element, this._isAnimated())\n  }\n\n  dispose() {\n    // If disposed while still open, close the native <dialog> and restore body\n    // scroll. Otherwise `dialog-open` (overflow: hidden) would stay stuck on the\n    // body — e.g. when an SPA tears the component down mid-navigation.\n    if (this._element.open) {\n      this._closeAndCleanup()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hooks for subclasses to override\n\n  _getShowOptions() {\n    return { modal: true, preventBodyScroll: true }\n  }\n\n  _onBeforeShow() {\n    // No-op by default — Dialog overrides to add nonmodal class\n  }\n\n  _onAfterHide() {\n    // No-op by default — Dialog overrides to remove nonmodal class\n  }\n\n  _isAnimated() {\n    return !this._element.classList.contains(this._getInstantClassName())\n  }\n\n  _getInstantClassName() {\n    return 'dialog-instant'\n  }\n\n  _getStaticClassName() {\n    return 'dialog-static'\n  }\n\n  _onCancel() {\n    // No-op by default — Dialog overrides to fire cancel event\n  }\n\n  // Protected — shared mechanics\n\n  _showElement({ modal = true, preventBodyScroll = true } = {}) {\n    this._openedAsModal = modal\n\n    if (modal) {\n      this._element.showModal()\n    } else {\n      this._element.show()\n    }\n\n    if (preventBodyScroll) {\n      // Lock scroll on the root element (not <body>) so it lands on the same\n      // element that carries `scrollbar-gutter: stable`. Co-locating them keeps\n      // the gutter reserved while the scrollbar is hidden, so the page doesn't\n      // shift (and the ::backdrop covers the gutter instead of leaving a strip).\n      document.documentElement.classList.add(CLASS_NAME_OPEN)\n    }\n  }\n\n  _hideElement() {\n    this._hideChildComponents()\n\n    // Add .hiding before close() so CSS exit transitions can play.\n    // Without this, the navbar's `:not([open])` transition-kill rule\n    // would prevent the slide-out animation.\n    this._element.classList.add('hiding')\n\n    // Subclasses can defer close() until after the exit transition by\n    // returning true from _shouldDeferClose(). This is needed for the\n    // native modal <dialog> centered case: close() removes the dialog\n    // from the top layer immediately, which strips its auto-centering\n    // and the ::backdrop, breaking the exit animation.\n    if (!this._shouldDeferClose()) {\n      this._closeAndCleanup()\n    }\n  }\n\n  // Closes the native <dialog> and tears down scroll prevention.\n  // Safe to call multiple times — close() is a no-op on a closed dialog.\n  _closeAndCleanup() {\n    this._element.close()\n    this._openedAsModal = false\n\n    // Only restore scroll if no other modal dialogs are open\n    if (!document.querySelector('dialog[open]:modal')) {\n      document.documentElement.classList.remove(CLASS_NAME_OPEN)\n    }\n  }\n\n  // Hook: return true to keep the dialog in the top layer (i.e., delay\n  // calling close()) until the exit transition completes. The base class\n  // closes synchronously; Dialog overrides this for animated modal cases.\n  _shouldDeferClose() {\n    return false\n  }\n\n  _triggerBackdropTransition() {\n    const hidePreventedEvent = EventHandler.trigger(\n      this._element,\n      this.constructor.eventName('hidePrevented')\n    )\n\n    if (hidePreventedEvent.defaultPrevented) {\n      return\n    }\n\n    const staticClass = this._getStaticClassName()\n    this._element.classList.add(staticClass)\n    this._queueCallback(() => {\n      this._element.classList.remove(staticClass)\n    }, this._element)\n  }\n\n  // Hide any tooltips, popovers, or toasts inside the dialog before closing.\n  // These components append to the dialog (for top-layer rendering) and would\n  // otherwise persist visibly after close().\n  _hideChildComponents() {\n    const selector = '[data-bs-toggle=\"tooltip\"], [data-bs-toggle=\"popover\"]'\n\n    for (const el of SelectorEngine.find(selector, this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n\n    // Hide any visible toasts\n    for (const el of SelectorEngine.find('.toast.show', this._element)) {\n      const instance = Data.getAny(el)\n      if (instance && typeof instance.hide === 'function') {\n        instance.hide()\n      }\n    }\n  }\n\n  // Private\n\n  _addDialogListeners() {\n    const eventKey = this.constructor.EVENT_KEY\n\n    // Handle native cancel event (Escape key) — only fires for modal dialogs\n    EventHandler.on(this._element, 'cancel', event => {\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle Escape key for non-modal dialogs (native cancel doesn't fire for show())\n    EventHandler.on(this._element, `keydown${eventKey}`, event => {\n      if (event.key !== 'Escape' || this._openedAsModal) {\n        return\n      }\n\n      event.preventDefault()\n\n      if (!this._config.keyboard) {\n        return\n      }\n\n      this._onCancel()\n      this.hide()\n    })\n\n    // Handle backdrop clicks — only applies to modal dialogs\n    EventHandler.on(this._element, `click${eventKey}`, event => {\n      if (event.target !== this._element || !this._openedAsModal) {\n        return\n      }\n\n      if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition()\n        return\n      }\n\n      this.hide()\n    })\n  }\n}\n\nexport default DialogBase\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap dialog.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { isVisible } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'dialog'\nconst DATA_KEY = 'bs.dialog'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CANCEL = `cancel${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_NONMODAL = 'dialog-nonmodal'\nconst CLASS_NAME_INSTANT = 'dialog-instant'\nconst CLASS_NAME_SWAP_IN = 'dialog-swap-in'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dialog\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  modal: true\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  modal: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Dialog extends DialogBase {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  handleUpdate() {\n    // Provided for API consistency with Modal.\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    return {\n      modal: this._config.modal,\n      preventBodyScroll: this._config.modal\n    }\n  }\n\n  _onBeforeShow() {\n    if (!this._config.modal) {\n      this._element.classList.add(CLASS_NAME_NONMODAL)\n    }\n  }\n\n  _onAfterHide() {\n    this._element.classList.remove(CLASS_NAME_NONMODAL)\n  }\n\n  // Keep the dialog in the top layer until the exit transition ends. This\n  // preserves the browser's modal centering and the native ::backdrop, both\n  // of which disappear synchronously the moment close() is called. Without\n  // this, the dialog would jump to the top of the page and the backdrop\n  // blur would vanish instantly while the dialog faded — making the exit\n  // animation appear to skip entirely.\n  _shouldDeferClose() {\n    return this._isAnimated()\n  }\n\n  _onCancel() {\n    EventHandler.trigger(this._element, EVENT_CANCEL)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  EventHandler.one(target, EVENT_SHOW, showEvent => {\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN, () => {\n      if (isVisible(this)) {\n        this.focus({ preventScroll: true })\n      }\n    })\n  })\n\n  // Get config from trigger's data attributes\n  const config = Manipulator.getDataAttributes(this)\n\n  // Check if trigger is inside an open dialog (dialog swapping)\n  const currentDialog = this.closest('dialog[open]')\n  const shouldSwap = currentDialog && currentDialog !== target\n\n  if (shouldSwap) {\n    // Swap strategy (seamless backdrop, no flash):\n    //   1. Mark the incoming dialog with .dialog-swap-in so its ::backdrop\n    //      skips the @starting-style fade-in and appears fully opaque on\n    //      its very first frame in the top layer.\n    //   2. Open the incoming dialog (showModal).\n    //   3. Close the outgoing dialog synchronously — no exit transition, no\n    //      .hiding — so its ::backdrop is removed in the same frame the\n    //      incoming dialog's backdrop appears. Since both backdrops render\n    //      the same color, the user sees one continuous backdrop. Two\n    //      simultaneously-visible backdrops would composite to ~75% darker,\n    //      and a fading-out + fading-in pair would dip to ~75% opacity —\n    //      either would look like a flash.\n    //   4. Clean up the .dialog-swap-in flag once the incoming dialog\n    //      finishes its entry transition.\n    const newDialog = Dialog.getOrCreateInstance(target, config)\n    target.classList.add(CLASS_NAME_SWAP_IN)\n    newDialog.show(this)\n    EventHandler.one(target, `shown${EVENT_KEY}`, () => {\n      target.classList.remove(CLASS_NAME_SWAP_IN)\n    })\n\n    const currentInstance = Dialog.getInstance(currentDialog)\n    if (currentInstance) {\n      // Force synchronous close: .dialog-instant makes _isAnimated() false,\n      // which makes _shouldDeferClose() false, so hide() calls close()\n      // immediately (no deferred .hiding path). The class is removed after\n      // the (now-synchronous) hidden event fires.\n      currentDialog.classList.add(CLASS_NAME_INSTANT)\n      EventHandler.one(currentDialog, EVENT_HIDDEN, () => {\n        currentDialog.classList.remove(CLASS_NAME_INSTANT)\n      })\n      currentInstance.hide()\n    }\n\n    return\n  }\n\n  const data = Dialog.getOrCreateInstance(target, config)\n  data.toggle(this)\n})\n\nenableDismissTrigger(Dialog)\n\nexport default Dialog\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap nav-overflow.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'navoverflow'\nconst DATA_KEY = 'bs.navoverflow'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_UPDATE = `update${EVENT_KEY}`\nconst EVENT_OVERFLOW = `overflow${EVENT_KEY}`\n\nconst CLASS_NAME_OVERFLOW = 'nav-overflow'\nconst CLASS_NAME_OVERFLOW_MENU = 'nav-overflow-menu'\nconst CLASS_NAME_HIDDEN = 'd-none'\n\nconst SELECTOR_NAV_ITEM = '.nav-item'\nconst SELECTOR_NAV_LINK = '.nav-link'\nconst SELECTOR_OVERFLOW_TOGGLE = '.nav-overflow-toggle'\nconst SELECTOR_OVERFLOW_MENU = '.nav-overflow-menu'\nconst SELECTOR_CUSTOM_ICON = '[data-bs-overflow-icon]'\nconst CLASS_NAME_KEEP = 'nav-overflow-keep'\n\nconst Default = {\n  collapseBelow: 0,\n  iconPlacement: 'start',\n  menuPlacement: 'bottom-end',\n  moreText: 'More',\n  moreIcon: '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" viewBox=\"0 0 16 16\"><path d=\"M3 9.5a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3m5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3\"/></svg>',\n  threshold: 0 // Minimum items to keep visible before showing overflow\n}\n\nconst DefaultType = {\n  collapseBelow: '(number|string)',\n  iconPlacement: 'string',\n  menuPlacement: 'string',\n  moreText: 'string',\n  moreIcon: 'string',\n  threshold: 'number'\n}\n\n/**\n * Class definition\n */\n\nclass NavOverflow extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._items = []\n    this._overflowItems = []\n    this._overflowMenu = null\n    this._overflowToggle = null\n    this._resizeObserver = null\n    this._collapseBelow = 0\n    this._isInitialized = false\n\n    this._init()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._calculateOverflow()\n    EventHandler.trigger(this._element, EVENT_UPDATE)\n  }\n\n  dispose() {\n    if (this._resizeObserver) {\n      this._resizeObserver.disconnect()\n    }\n\n    // Move items back to original positions\n    this._restoreItems()\n\n    // Remove overflow menu\n    if (this._overflowToggle && this._overflowToggle.parentElement) {\n      this._overflowToggle.parentElement.remove()\n    }\n\n    super.dispose()\n  }\n\n  // Private\n  _init() {\n    // Add overflow class to nav\n    this._element.classList.add(CLASS_NAME_OVERFLOW)\n\n    // Get all nav items\n    this._items = [...SelectorEngine.find(SELECTOR_NAV_ITEM, this._element)]\n\n    // Store original order data\n    for (const [index, item] of this._items.entries()) {\n      item.dataset.bsNavOrder = index\n    }\n\n    // Resolve collapseBelow threshold once\n    this._collapseBelow = this._resolveCollapseBelow()\n\n    // Create overflow menu if it doesn't exist\n    this._createOverflowMenu()\n\n    // Setup resize observer\n    this._setupResizeObserver()\n\n    // Initial calculation\n    this._calculateOverflow()\n\n    this._isInitialized = true\n  }\n\n  _createOverflowMenu() {\n    // Check if overflow menu already exists\n    this._overflowToggle = SelectorEngine.findOne(SELECTOR_OVERFLOW_TOGGLE, this._element)\n\n    if (this._overflowToggle) {\n      this._overflowMenu = SelectorEngine.findOne(SELECTOR_OVERFLOW_MENU, this._element)\n      return\n    }\n\n    const iconHtml = this._resolveIcon()\n    const iconSpan = `<span class=\"nav-overflow-icon\">${iconHtml}</span>`\n    const textSpan = `<span class=\"nav-overflow-text\">${this._config.moreText}</span>`\n    const toggleContent = this._config.iconPlacement === 'end' ?\n      `${textSpan}${iconSpan}` :\n      `${iconSpan}${textSpan}`\n\n    const overflowItem = document.createElement('li')\n    overflowItem.className = 'nav-item nav-overflow-item'\n    overflowItem.innerHTML = `\n      <button class=\"nav-link nav-overflow-toggle\" type=\"button\" data-bs-toggle=\"menu\" data-bs-placement=\"${this._config.menuPlacement}\" aria-expanded=\"false\">\n        ${toggleContent}\n      </button>\n      <div class=\"${CLASS_NAME_OVERFLOW_MENU} menu\"></div>\n    `\n\n    this._element.append(overflowItem)\n    this._overflowToggle = overflowItem.querySelector(SELECTOR_OVERFLOW_TOGGLE)\n    this._overflowMenu = overflowItem.querySelector(SELECTOR_OVERFLOW_MENU)\n  }\n\n  _resolveIcon() {\n    const customIconElement = SelectorEngine.findOne(SELECTOR_CUSTOM_ICON, this._element)\n\n    if (!customIconElement) {\n      return this._config.moreIcon\n    }\n\n    const iconClone = customIconElement.cloneNode(true)\n    iconClone.removeAttribute('data-bs-overflow-icon')\n    const iconHtml = iconClone.outerHTML\n\n    customIconElement.remove()\n\n    return iconHtml\n  }\n\n  _resolveCollapseBelow() {\n    const value = this._config.collapseBelow\n\n    if (typeof value === 'number') {\n      return value\n    }\n\n    if (typeof value === 'string' && value !== '') {\n      const cssValue = getComputedStyle(document.documentElement)\n        .getPropertyValue(`--bs-breakpoint-${value}`)\n      return Number.parseFloat(cssValue) || 0\n    }\n\n    return 0\n  }\n\n  _setupResizeObserver() {\n    if (typeof ResizeObserver === 'undefined') {\n      // Fallback for older browsers\n      EventHandler.on(window, 'resize', () => this._calculateOverflow())\n      return\n    }\n\n    this._resizeObserver = new ResizeObserver(() => {\n      this._calculateOverflow()\n    })\n\n    this._resizeObserver.observe(this._element)\n  }\n\n  _calculateOverflow() {\n    // First, restore all items to measure properly\n    this._restoreItems()\n\n    const navWidth = this._element.offsetWidth\n    const overflowItem = this._overflowToggle?.closest('.nav-item')\n\n    // When below the collapseBelow threshold, force all items into overflow\n    if (this._collapseBelow > 0 && navWidth < this._collapseBelow) {\n      const itemsToOverflow = this._items.filter(\n        item => !item.classList.contains(CLASS_NAME_KEEP)\n      )\n\n      this._moveToOverflow(itemsToOverflow)\n\n      if (overflowItem) {\n        if (itemsToOverflow.length > 0) {\n          overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n        } else {\n          overflowItem.classList.add(CLASS_NAME_HIDDEN)\n        }\n      }\n\n      if (itemsToOverflow.length > 0) {\n        EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n          overflowCount: itemsToOverflow.length,\n          visibleCount: this._items.length - itemsToOverflow.length\n        })\n      }\n\n      return\n    }\n\n    const overflowWidth = overflowItem?.offsetWidth || 0\n\n    // Keep items are always visible; subtract their widths so the threshold\n    // reflects actual available space for non-keep items.\n    const keepWidth = this._items\n      .filter(item => item.classList.contains(CLASS_NAME_KEEP))\n      .reduce((sum, item) => sum + item.offsetWidth, 0)\n\n    let usedWidth = 0\n    const itemsToOverflow = []\n    const overflowThreshold = navWidth - overflowWidth - keepWidth - 10 // 10px buffer\n\n    // Calculate which items need to overflow (skip items with keep class)\n    for (const item of this._items) {\n      // Never overflow items with the keep class\n      if (item.classList.contains(CLASS_NAME_KEEP)) {\n        continue\n      }\n\n      usedWidth += item.offsetWidth\n\n      if (usedWidth > overflowThreshold) {\n        itemsToOverflow.push(item)\n      }\n    }\n\n    // Check if we need threshold minimum visible\n    const visibleCount = this._items.length - itemsToOverflow.length\n    if (visibleCount < this._config.threshold && this._items.length > this._config.threshold) {\n      // Add more items to overflow until we reach threshold (but not keep items)\n      const toMove = this._items.slice(this._config.threshold).filter(item => !item.classList.contains(CLASS_NAME_KEEP))\n      itemsToOverflow.length = 0\n      itemsToOverflow.push(...toMove)\n    }\n\n    // Move items to overflow menu\n    this._moveToOverflow(itemsToOverflow)\n\n    // Show/hide overflow toggle\n    if (overflowItem) {\n      if (itemsToOverflow.length > 0) {\n        overflowItem.classList.remove(CLASS_NAME_HIDDEN)\n      } else {\n        overflowItem.classList.add(CLASS_NAME_HIDDEN)\n      }\n    }\n\n    // Trigger overflow event if items changed\n    if (itemsToOverflow.length > 0) {\n      EventHandler.trigger(this._element, EVENT_OVERFLOW, {\n        overflowCount: itemsToOverflow.length,\n        visibleCount: this._items.length - itemsToOverflow.length\n      })\n    }\n  }\n\n  _moveToOverflow(items) {\n    if (!this._overflowMenu) {\n      return\n    }\n\n    // Clear existing overflow items\n    this._overflowMenu.innerHTML = ''\n    this._overflowItems = []\n\n    for (const item of items) {\n      const link = SelectorEngine.findOne(SELECTOR_NAV_LINK, item)\n      if (!link) {\n        continue\n      }\n\n      const clonedLink = link.cloneNode(true)\n      clonedLink.className = 'menu-item'\n\n      if (link.classList.contains('active')) {\n        clonedLink.classList.add('active')\n      }\n\n      if (link.classList.contains('disabled') || link.hasAttribute('disabled')) {\n        clonedLink.classList.add('disabled')\n      }\n\n      this._overflowMenu.append(clonedLink)\n\n      // Hide original item\n      item.classList.add(CLASS_NAME_HIDDEN)\n      item.dataset.bsNavOverflow = 'true'\n\n      this._overflowItems.push(item)\n    }\n  }\n\n  _restoreItems() {\n    for (const item of this._items) {\n      item.classList.remove(CLASS_NAME_HIDDEN)\n      delete item.dataset.bsNavOverflow\n    }\n\n    if (this._overflowMenu) {\n      this._overflowMenu.innerHTML = ''\n    }\n\n    this._overflowItems = []\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, 'DOMContentLoaded', () => {\n  for (const element of SelectorEngine.find('[data-bs-toggle=\"nav-overflow\"]')) {\n    NavOverflow.getOrCreateInstance(element)\n  }\n})\n\nexport default NavOverflow\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler.js'\nimport Config from './config.js'\nimport { execute } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'swipe'\nconst EVENT_KEY = '.bs.swipe'\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n  endCallback: null,\n  leftCallback: null,\n  rightCallback: null,\n  upCallback: null,\n  downCallback: null\n}\n\nconst DefaultType = {\n  endCallback: '(function|null)',\n  leftCallback: '(function|null)',\n  rightCallback: '(function|null)',\n  upCallback: '(function|null)',\n  downCallback: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n  constructor(element, config) {\n    super()\n    this._element = element\n\n    if (!element || !Swipe.isSupported()) {\n      return\n    }\n\n    this._config = this._getConfig(config)\n    this._deltaX = 0\n    this._deltaY = 0\n    this._supportPointerEvents = Boolean(window.PointerEvent)\n    this._initEvents()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    EventHandler.off(this._element, EVENT_KEY)\n  }\n\n  // Private\n  _start(event) {\n    if (!this._supportPointerEvents) {\n      this._deltaX = event.touches[0].clientX\n      this._deltaY = event.touches[0].clientY\n\n      return\n    }\n\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX\n      this._deltaY = event.clientY\n    }\n  }\n\n  _end(event) {\n    if (this._eventIsPointerPenTouch(event)) {\n      this._deltaX = event.clientX - this._deltaX\n      this._deltaY = event.clientY - this._deltaY\n    }\n\n    this._handleSwipe()\n    execute(this._config.endCallback)\n  }\n\n  _move(event) {\n    if (event.touches && event.touches.length > 1) {\n      this._deltaX = 0\n      this._deltaY = 0\n      return\n    }\n\n    this._deltaX = event.touches[0].clientX - this._deltaX\n    this._deltaY = event.touches[0].clientY - this._deltaY\n  }\n\n  _handleSwipe() {\n    const absDeltaX = Math.abs(this._deltaX)\n    const absDeltaY = Math.abs(this._deltaY)\n\n    // Determine primary axis: whichever has greater movement wins\n    if (absDeltaY > absDeltaX && absDeltaY > SWIPE_THRESHOLD) {\n      // Vertical swipe\n      const direction = this._deltaY > 0 ? 'down' : 'up'\n      this._deltaX = 0\n      this._deltaY = 0\n      execute(direction === 'down' ? this._config.downCallback : this._config.upCallback)\n      return\n    }\n\n    if (absDeltaX > SWIPE_THRESHOLD) {\n      // Horizontal swipe\n      const direction = absDeltaX / this._deltaX\n      this._deltaX = 0\n      this._deltaY = 0\n\n      if (!direction) {\n        return\n      }\n\n      execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback)\n      return\n    }\n\n    this._deltaX = 0\n    this._deltaY = 0\n  }\n\n  _initEvents() {\n    if (this._supportPointerEvents) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event))\n      EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event))\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event))\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event))\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event))\n    }\n  }\n\n  _eventIsPointerPenTouch(event) {\n    return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)\n  }\n\n  // Static\n  static isSupported() {\n    return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n  }\n}\n\nexport default Swipe\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap drawer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport DialogBase from './dialog-base.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport Swipe from './util/swipe.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport {\n  isDisabled,\n  isRTL,\n  isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'drawer'\nconst DATA_KEY = 'bs.drawer'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"drawer\"]'\n\nconst Default = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n}\n\nconst DefaultType = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Drawer extends DialogBase {\n  constructor(element, config) {\n    super(element, config)\n    this._swipeHelper = null\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  dispose() {\n    if (this._swipeHelper) {\n      this._swipeHelper.dispose()\n    }\n\n    super.dispose()\n  }\n\n  // Protected — hook overrides\n\n  _getShowOptions() {\n    const useModal = Boolean(this._config.backdrop) || !this._config.scroll\n    return {\n      modal: useModal,\n      preventBodyScroll: !this._config.scroll\n    }\n  }\n\n  _onBeforeShow() {\n    this._initSwipe()\n  }\n\n  _getInstantClassName() {\n    return 'drawer-instant'\n  }\n\n  _getStaticClassName() {\n    return 'drawer-static'\n  }\n\n  // Private\n\n  _initSwipe() {\n    if (this._swipeHelper || !Swipe.isSupported()) {\n      return\n    }\n\n    // Determine which swipe direction dismisses based on placement\n    const swipeConfig = {}\n    const element = this._element\n\n    if (element.classList.contains('drawer-bottom')) {\n      swipeConfig.downCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-top')) {\n      swipeConfig.upCallback = () => this.hide()\n    } else if (element.classList.contains('drawer-end')) {\n      // RTL: swipe left to dismiss end drawer\n      if (isRTL()) {\n        swipeConfig.leftCallback = () => this.hide()\n      } else {\n        swipeConfig.rightCallback = () => this.hide()\n      }\n    } else if (isRTL()) {\n      // drawer-start (default): swipe right to dismiss in RTL\n      swipeConfig.rightCallback = () => this.hide()\n    } else {\n      // drawer-start (default): swipe left to dismiss in LTR\n      swipeConfig.leftCallback = () => this.hide()\n    }\n\n    this._swipeHelper = new Swipe(element, swipeConfig)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  const target = SelectorEngine.getElementFromSelector(this)\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN, () => {\n    if (isVisible(this)) {\n      this.focus({ preventScroll: true })\n    }\n  })\n\n  // Avoid conflict when clicking a toggler of a drawer, while another is open\n  const alreadyOpen = SelectorEngine.findOne('dialog.drawer[open]')\n  if (alreadyOpen && alreadyOpen !== target) {\n    Drawer.getInstance(alreadyOpen).hide()\n  }\n\n  const data = Drawer.getOrCreateInstance(target)\n  data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const selector of SelectorEngine.find('dialog.drawer[open]')) {\n    Drawer.getOrCreateInstance(selector).show()\n  }\n})\n\nEventHandler.on(window, EVENT_RESIZE, () => {\n  for (const element of SelectorEngine.find('dialog[open][class*=\"\\\\:drawer\"]')) {\n    if (getComputedStyle(element).position !== 'fixed') {\n      Drawer.getOrCreateInstance(element).hide()\n    }\n  }\n})\n\nenableDismissTrigger(Drawer)\n\nexport default Drawer\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap strength.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'strength'\nconst DATA_KEY = 'bs.strength'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_STRENGTH_CHANGE = `strengthChange${EVENT_KEY}`\n\nconst SELECTOR_DATA_STRENGTH = '[data-bs-strength]'\n\nconst STRENGTH_LEVELS = ['weak', 'fair', 'good', 'strong']\n\nconst Default = {\n  input: null, // Selector or element for password input\n  minLength: 8,\n  messages: {\n    weak: 'Weak',\n    fair: 'Fair',\n    good: 'Good',\n    strong: 'Strong'\n  },\n  weights: {\n    minLength: 1,\n    extraLength: 1,\n    lowercase: 1,\n    uppercase: 1,\n    numbers: 1,\n    special: 1,\n    multipleSpecial: 1,\n    longPassword: 1\n  },\n  thresholds: [2, 4, 6], // weak ≤2, fair ≤4, good ≤6, strong >6\n  scorer: null // Custom scoring function (password) => number\n}\n\nconst DefaultType = {\n  input: '(string|element|null)',\n  minLength: 'number',\n  messages: 'object',\n  weights: 'object',\n  thresholds: 'array',\n  scorer: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Strength extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = this._getInput()\n    this._segments = SelectorEngine.find('.strength-segment', this._element)\n    this._textElement = SelectorEngine.findOne('.strength-text', this._element.parentElement)\n    this._currentStrength = null\n\n    if (this._input) {\n      this._addEventListeners()\n      // Check initial value\n      this._evaluate()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getStrength() {\n    return this._currentStrength\n  }\n\n  evaluate() {\n    this._evaluate()\n  }\n\n  // Private\n  _getInput() {\n    if (this._config.input) {\n      return typeof this._config.input === 'string' ?\n        SelectorEngine.findOne(this._config.input) :\n        this._config.input\n    }\n\n    // Look for preceding password input\n    const parent = this._element.parentElement\n    return SelectorEngine.findOne('input[type=\"password\"]', parent)\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, 'input', () => this._evaluate())\n    EventHandler.on(this._input, 'change', () => this._evaluate())\n  }\n\n  _evaluate() {\n    const password = this._input.value\n    const score = this._calculateScore(password)\n    const strength = this._scoreToStrength(score)\n\n    if (strength !== this._currentStrength) {\n      this._currentStrength = strength\n      this._updateUI(strength, score)\n\n      EventHandler.trigger(this._element, EVENT_STRENGTH_CHANGE, {\n        strength,\n        score,\n        password: password.length > 0 ? '***' : '' // Don't expose actual password\n      })\n    }\n  }\n\n  _calculateScore(password) {\n    if (!password) {\n      return 0\n    }\n\n    // Use custom scorer if provided\n    if (typeof this._config.scorer === 'function') {\n      return this._config.scorer(password)\n    }\n\n    const { weights } = this._config\n    let score = 0\n\n    // Length scoring\n    if (password.length >= this._config.minLength) {\n      score += weights.minLength\n    }\n\n    if (password.length >= this._config.minLength + 4) {\n      score += weights.extraLength\n    }\n\n    // Character variety\n    if (/[a-z]/.test(password)) {\n      score += weights.lowercase\n    }\n\n    if (/[A-Z]/.test(password)) {\n      score += weights.uppercase\n    }\n\n    if (/\\d/.test(password)) {\n      score += weights.numbers\n    }\n\n    // Special characters\n    if (/[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.special\n    }\n\n    // Extra points for more special chars or length\n    if (/[!@#$%^&*(),.?\":{}|<>].*[!@#$%^&*(),.?\":{}|<>]/.test(password)) {\n      score += weights.multipleSpecial\n    }\n\n    if (password.length >= 16) {\n      score += weights.longPassword\n    }\n\n    return score\n  }\n\n  _scoreToStrength(score) {\n    if (score === 0) {\n      return null\n    }\n\n    const [weak, fair, good] = this._config.thresholds\n\n    if (score <= weak) {\n      return 'weak'\n    }\n\n    if (score <= fair) {\n      return 'fair'\n    }\n\n    if (score <= good) {\n      return 'good'\n    }\n\n    return 'strong'\n  }\n\n  _updateUI(strength) {\n    // Update data attribute on element\n    if (strength) {\n      this._element.dataset.bsStrength = strength\n    } else {\n      delete this._element.dataset.bsStrength\n    }\n\n    // Update segmented meter\n    const strengthIndex = strength ? STRENGTH_LEVELS.indexOf(strength) : -1\n\n    for (const [index, segment] of this._segments.entries()) {\n      if (index <= strengthIndex) {\n        segment.classList.add('active')\n      } else {\n        segment.classList.remove('active')\n      }\n    }\n\n    // Update text feedback\n    if (this._textElement) {\n      if (strength && this._config.messages[strength]) {\n        this._textElement.textContent = this._config.messages[strength]\n        this._textElement.dataset.bsStrength = strength\n\n        // Also set the color via inheriting from parent or using CSS variable\n        const colorMap = {\n          weak: 'danger',\n          fair: 'warning',\n          good: 'info',\n          strong: 'success'\n        }\n        this._textElement.style.setProperty('--strength-color', `var(--${colorMap[strength]}-text)`)\n      } else {\n        this._textElement.textContent = ''\n        delete this._textElement.dataset.bsStrength\n      }\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_STRENGTH)) {\n    Strength.getOrCreateInstance(element)\n  }\n})\n\nexport default Strength\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n    // Tracks whether focus was triggered by a click so we can respect the\n    // clicked slot instead of jumping to the first empty one\n    this._pointerActive = false\n    // Slot index from the most recent tap, applied once focus settles\n    this._pointerIndex = 0\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Select the first empty slot (or the last one when the value is full)\n    this._selectSlot(this._firstEmptyIndex())\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    EventHandler.off(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.off(document, 'selectionchange', this._onSelectionChange)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input`, `beforeinput`, and `selectionchange` are not in EventHandler's\n    // native-events list; we keep references so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onBeforeInput = event => this._handleBeforeInput(event)\n    this._onPointerDown = event => this._handlePointerDown(event)\n    this._onFocus = () => {\n      if (this._pointerActive) {\n        // A tap focused the input natively; position the caret on the clicked\n        // slot now that focus has settled (doing this before native focus would\n        // make iOS/iPadOS raise then immediately dismiss the keyboard)\n        this._pointerActive = false\n        this._selectSlot(this._pointerIndex)\n        this._render()\n        return\n      }\n\n      // Keyboard (Tab) focus lands on the first empty slot\n      this._selectSlot(this._firstEmptyIndex())\n      this._render()\n    }\n\n    this._onSync = () => this._render()\n    this._onSelectionChange = () => {\n      if (document.activeElement === this._input) {\n        this._render()\n      }\n    }\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n    EventHandler.on(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.on(document, 'selectionchange', this._onSelectionChange)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  // Bulk path: paste, SMS autofill, or a programmatic value change land here as\n  // a single multi-character `input` event. Single keystrokes are handled by\n  // `_handleBeforeInput` (overwrite semantics) and never reach this method.\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    // Place the caret on the first empty slot after a paste/autofill\n    if (document.activeElement === this._input) {\n      this._selectSlot(this._firstEmptyIndex())\n    }\n\n    this._afterValueChange()\n  }\n\n  // Intercept single-character typing and backspace so each slot is overwritten\n  // in place rather than inserting and shifting the rest of the value. Anything\n  // else (paste, autofill, IME composition) falls through to `_handleInput`.\n  _handleBeforeInput(event) {\n    const { inputType, data } = event\n\n    if (inputType === 'insertText' && data && data.length === 1) {\n      event.preventDefault()\n\n      const char = this._sanitize(data)\n      if (!char) {\n        return\n      }\n\n      const index = Math.min(this._input.selectionStart ?? 0, this._length - 1)\n      const chars = [...this._input.value]\n      chars[index] = char\n      this._input.value = chars.join('').slice(0, this._length)\n\n      this._selectSlot(index + 1)\n      this._afterValueChange()\n      return\n    }\n\n    if (inputType === 'deleteContentBackward') {\n      event.preventDefault()\n\n      const start = this._input.selectionStart ?? 0\n      const end = this._input.selectionEnd ?? start\n      const chars = [...this._input.value]\n\n      if (end > start) {\n        // A filled slot is selected: clear it and keep the caret in place\n        chars.splice(start, end - start)\n        this._input.value = chars.join('')\n        this._selectSlot(start)\n      } else if (start > 0) {\n        // Collapsed caret: remove the previous character and step back\n        chars.splice(start - 1, 1)\n        this._input.value = chars.join('')\n        this._selectSlot(start - 1)\n      }\n\n      this._afterValueChange()\n    }\n  }\n\n  _handlePointerDown(event) {\n    const index = this._slotIndexFromPoint(event.clientX)\n    if (index === null) {\n      return\n    }\n\n    // Don't let the caret land past the first empty slot\n    const target = Math.min(index, this._firstEmptyIndex())\n\n    if (document.activeElement === this._input) {\n      // Already focused (keyboard is up): take over caret placement from the\n      // browser. Safe to preventDefault here — it won't dismiss the keyboard.\n      event.preventDefault()\n      this._selectSlot(target)\n      this._render()\n      return\n    }\n\n    // Not yet focused: let the browser focus the input natively so the\n    // on-screen keyboard is raised by the user's tap. Position the caret in the\n    // focus handler once focus settles.\n    this._pointerActive = true\n    this._pointerIndex = target\n  }\n\n  // Map a viewport x-coordinate to the slot under it, clamped to the last slot\n  _slotIndexFromPoint(x) {\n    for (const [index, slot] of this._slots.entries()) {\n      if (x <= slot.getBoundingClientRect().right || index === this._slots.length - 1) {\n        return index\n      }\n    }\n\n    return null\n  }\n\n  _afterValueChange() {\n    this._render()\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n    this._checkComplete()\n  }\n\n  _firstEmptyIndex() {\n    return Math.min(this._input.value.length, this._length - 1)\n  }\n\n  // Represent the active slot as a selection: a filled slot is selected so the\n  // next keystroke overwrites it; an empty slot gets a collapsed caret.\n  _selectSlot(index) {\n    const clamped = Math.max(0, Math.min(index, this._length - 1))\n    const end = clamped < this._input.value.length ? clamped + 1 : clamped\n    this._input.setSelectionRange(clamped, end)\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap chips.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'chips'\nconst DATA_KEY = 'bs.chips'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ADD = `add${EVENT_KEY}`\nconst EVENT_REMOVE = `remove${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_SELECT = `select${EVENT_KEY}`\n\nconst SELECTOR_DATA_CHIPS = '[data-bs-chips]'\nconst SELECTOR_GHOST_INPUT = '.form-ghost'\nconst SELECTOR_CHIP = '.chip'\nconst SELECTOR_CHIP_DISMISS = '.chip-dismiss'\n\nconst CLASS_NAME_CHIP = 'chip'\nconst CLASS_NAME_CHIP_DISMISS = 'chip-dismiss'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst DEFAULT_DISMISS_ICON = '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><line x1=\"4\" y1=\"4\" x2=\"12\" y2=\"12\"/><line x1=\"12\" y1=\"4\" x2=\"4\" y2=\"12\"/></svg>'\n\nconst Default = {\n  separator: ',',\n  allowDuplicates: false,\n  maxChips: null,\n  placeholder: '',\n  dismissible: true,\n  dismissIcon: DEFAULT_DISMISS_ICON,\n  createOnBlur: true\n}\n\nconst DefaultType = {\n  separator: '(string|null)',\n  allowDuplicates: 'boolean',\n  maxChips: '(number|null)',\n  placeholder: 'string',\n  dismissible: 'boolean',\n  dismissIcon: 'string',\n  createOnBlur: 'boolean'\n}\n\n/**\n * Class definition\n */\n\nclass Chips extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_GHOST_INPUT, this._element)\n    this._chips = []\n    this._selectedChips = new Set()\n    this._anchorChip = null // For shift+click range selection\n\n    if (!this._input) {\n      this._createInput()\n    }\n\n    this._initializeExistingChips()\n    this._addEventListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  add(value) {\n    const trimmedValue = String(value).trim()\n\n    if (!trimmedValue) {\n      return null\n    }\n\n    // Check for duplicates\n    if (!this._config.allowDuplicates && this._chips.includes(trimmedValue)) {\n      return null\n    }\n\n    // Check max chips limit\n    if (this._config.maxChips !== null && this._chips.length >= this._config.maxChips) {\n      return null\n    }\n\n    const addEvent = EventHandler.trigger(this._element, EVENT_ADD, {\n      value: trimmedValue,\n      relatedTarget: this._input\n    })\n\n    if (addEvent.defaultPrevented) {\n      return null\n    }\n\n    const chip = this._createChip(trimmedValue)\n    this._element.insertBefore(chip, this._input)\n    this._chips.push(trimmedValue)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return chip\n  }\n\n  remove(chipOrValue) {\n    let chip\n    let value\n\n    if (typeof chipOrValue === 'string') {\n      value = chipOrValue\n      chip = this._findChipByValue(value)\n    } else {\n      chip = chipOrValue\n      value = this._getChipValue(chip)\n    }\n\n    if (!chip || !value) {\n      return false\n    }\n\n    const removeEvent = EventHandler.trigger(this._element, EVENT_REMOVE, {\n      value,\n      chip,\n      relatedTarget: this._input\n    })\n\n    if (removeEvent.defaultPrevented) {\n      return false\n    }\n\n    // Remove from selection\n    this._selectedChips.delete(chip)\n    if (this._anchorChip === chip) {\n      this._anchorChip = null\n    }\n\n    // Remove from DOM and array\n    chip.remove()\n    this._chips = this._chips.filter(v => v !== value)\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: this.getValues()\n    })\n\n    return true\n  }\n\n  removeSelected() {\n    const chipsToRemove = [...this._selectedChips]\n    for (const chip of chipsToRemove) {\n      this.remove(chip)\n    }\n\n    this._input?.focus()\n  }\n\n  getValues() {\n    return [...this._chips]\n  }\n\n  getSelectedValues() {\n    return [...this._selectedChips].map(chip => this._getChipValue(chip))\n  }\n\n  clear() {\n    const chips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of chips) {\n      chip.remove()\n    }\n\n    this._chips = []\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_CHANGE, {\n      values: []\n    })\n  }\n\n  clearSelection() {\n    for (const chip of this._selectedChips) {\n      chip.classList.remove(CLASS_NAME_ACTIVE)\n    }\n\n    this._selectedChips.clear()\n    this._anchorChip = null\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: []\n    })\n  }\n\n  selectChip(chip, options = {}) {\n    const { addToSelection = false, rangeSelect = false } = options\n    const chipElements = this._getChipElements()\n\n    if (!chipElements.includes(chip)) {\n      return\n    }\n\n    if (rangeSelect && this._anchorChip) {\n      // Range selection from anchor to chip\n      const anchorIndex = chipElements.indexOf(this._anchorChip)\n      const chipIndex = chipElements.indexOf(chip)\n      const start = Math.min(anchorIndex, chipIndex)\n      const end = Math.max(anchorIndex, chipIndex)\n\n      if (!addToSelection) {\n        this.clearSelection()\n      }\n\n      for (let i = start; i <= end; i++) {\n        this._selectedChips.add(chipElements[i])\n        chipElements[i].classList.add(CLASS_NAME_ACTIVE)\n      }\n    } else if (addToSelection) {\n      // Toggle selection\n      if (this._selectedChips.has(chip)) {\n        this._selectedChips.delete(chip)\n        chip.classList.remove(CLASS_NAME_ACTIVE)\n      } else {\n        this._selectedChips.add(chip)\n        chip.classList.add(CLASS_NAME_ACTIVE)\n        this._anchorChip = chip\n      }\n    } else {\n      // Single selection\n      this.clearSelection()\n      this._selectedChips.add(chip)\n      chip.classList.add(CLASS_NAME_ACTIVE)\n      this._anchorChip = chip\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  focus() {\n    this._input?.focus()\n  }\n\n  // Private\n  _getChipElements() {\n    return SelectorEngine.find(SELECTOR_CHIP, this._element)\n  }\n\n  _createInput() {\n    const input = document.createElement('input')\n    input.type = 'text'\n    input.className = 'form-ghost'\n    if (this._config.placeholder) {\n      input.placeholder = this._config.placeholder\n    }\n\n    this._element.append(input)\n    this._input = input\n  }\n\n  _initializeExistingChips() {\n    const existingChips = SelectorEngine.find(SELECTOR_CHIP, this._element)\n    for (const chip of existingChips) {\n      const value = this._getChipValue(chip)\n      if (value) {\n        this._chips.push(value)\n        this._setupChip(chip)\n      }\n    }\n  }\n\n  _setupChip(chip) {\n    // Make chip focusable\n    chip.setAttribute('tabindex', '0')\n\n    // Add dismiss button if needed\n    if (this._config.dismissible && !SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, chip)) {\n      chip.append(this._createDismissButton())\n    }\n  }\n\n  _createChip(value) {\n    const chip = document.createElement('span')\n    chip.className = CLASS_NAME_CHIP\n    chip.dataset.bsChipValue = value\n\n    // Add text node\n    chip.append(document.createTextNode(value))\n\n    // Setup chip (tabindex, dismiss button)\n    this._setupChip(chip)\n\n    return chip\n  }\n\n  _createDismissButton() {\n    const button = document.createElement('button')\n    button.type = 'button'\n    button.className = CLASS_NAME_CHIP_DISMISS\n    button.setAttribute('aria-label', 'Remove')\n    button.setAttribute('tabindex', '-1') // Not in tab order, chips handle keyboard\n    button.innerHTML = this._config.dismissIcon\n    return button\n  }\n\n  _findChipByValue(value) {\n    const chips = this._getChipElements()\n    return chips.find(chip => this._getChipValue(chip) === value)\n  }\n\n  _getChipValue(chip) {\n    if (chip.dataset.bsChipValue) {\n      return chip.dataset.bsChipValue\n    }\n\n    const clone = chip.cloneNode(true)\n    const dismiss = SelectorEngine.findOne(SELECTOR_CHIP_DISMISS, clone)\n    if (dismiss) {\n      dismiss.remove()\n    }\n\n    return clone.textContent?.trim() || ''\n  }\n\n  _addEventListeners() {\n    // Input events\n    EventHandler.on(this._input, 'keydown', event => this._handleInputKeydown(event))\n    EventHandler.on(this._input, 'input', event => this._handleInput(event))\n    EventHandler.on(this._input, 'paste', event => this._handlePaste(event))\n    EventHandler.on(this._input, 'focus', () => this.clearSelection())\n\n    if (this._config.createOnBlur) {\n      EventHandler.on(this._input, 'blur', event => {\n        // Don't create chip if clicking on a chip\n        if (!event.relatedTarget?.closest(SELECTOR_CHIP)) {\n          this._createChipFromInput()\n        }\n      })\n    }\n\n    // Chip click events (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP, event => {\n      // Ignore clicks on dismiss button\n      if (event.target.closest(SELECTOR_CHIP_DISMISS)) {\n        return\n      }\n\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        event.preventDefault()\n        this.selectChip(chip, {\n          addToSelection: event.metaKey || event.ctrlKey,\n          rangeSelect: event.shiftKey\n        })\n        chip.focus()\n      }\n    })\n\n    // Dismiss button clicks (delegated)\n    EventHandler.on(this._element, 'click', SELECTOR_CHIP_DISMISS, event => {\n      event.stopPropagation()\n      const chip = event.target.closest(SELECTOR_CHIP)\n      if (chip) {\n        this.remove(chip)\n        this._input?.focus()\n      }\n    })\n\n    // Chip keyboard events (delegated)\n    EventHandler.on(this._element, 'keydown', SELECTOR_CHIP, event => {\n      this._handleChipKeydown(event)\n    })\n\n    // Focus input when clicking container background\n    EventHandler.on(this._element, 'click', event => {\n      if (event.target === this._element) {\n        this.clearSelection()\n        this._input?.focus()\n      }\n    })\n  }\n\n  _handleInputKeydown(event) {\n    const { key } = event\n\n    switch (key) {\n      case 'Enter': {\n        event.preventDefault()\n        this._createChipFromInput()\n        break\n      }\n\n      case 'Backspace':\n      case 'Delete': {\n        if (this._input.value === '') {\n          event.preventDefault()\n          const chips = this._getChipElements()\n\n          if (chips.length > 0) {\n            // Select last chip and focus it\n            const lastChip = chips.at(-1)\n            this.selectChip(lastChip)\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'ArrowLeft': {\n        if (this._input.selectionStart === 0 && this._input.selectionEnd === 0) {\n          event.preventDefault()\n          const chips = this._getChipElements()\n          if (chips.length > 0) {\n            const lastChip = chips.at(-1)\n            if (event.shiftKey) {\n              this.selectChip(lastChip, { addToSelection: true })\n            } else {\n              this.selectChip(lastChip)\n            }\n\n            lastChip.focus()\n          }\n        }\n\n        break\n      }\n\n      case 'Escape': {\n        this._input.value = ''\n        this.clearSelection()\n        this._input.blur()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipKeydown(event) {\n    const { key } = event\n    const chip = event.target.closest(SELECTOR_CHIP)\n    if (!chip) {\n      return\n    }\n\n    const chips = this._getChipElements()\n    const currentIndex = chips.indexOf(chip)\n\n    switch (key) {\n      case 'Backspace':\n      case 'Delete': {\n        event.preventDefault()\n        this._handleChipDelete(currentIndex, chips)\n        break\n      }\n\n      case 'ArrowLeft': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, -1, event.shiftKey)\n        break\n      }\n\n      case 'ArrowRight': {\n        event.preventDefault()\n        this._navigateChip(chips, currentIndex, 1, event.shiftKey)\n        break\n      }\n\n      case 'Home': {\n        event.preventDefault()\n        this._navigateToEdge(chips, 0, event.shiftKey)\n        break\n      }\n\n      case 'End': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      case 'a': {\n        this._handleSelectAll(event, chips)\n        break\n      }\n\n      case 'Escape': {\n        event.preventDefault()\n        this.clearSelection()\n        this._input?.focus()\n        break\n      }\n\n      // No default\n    }\n  }\n\n  _handleChipDelete(currentIndex, chips) {\n    if (this._selectedChips.size === 0) {\n      return\n    }\n\n    const nextIndex = Math.min(currentIndex, chips.length - this._selectedChips.size - 1)\n    this.removeSelected()\n\n    const remainingChips = this._getChipElements()\n    if (remainingChips.length > 0) {\n      const focusIndex = Math.max(0, Math.min(nextIndex, remainingChips.length - 1))\n      remainingChips[focusIndex].focus()\n      this.selectChip(remainingChips[focusIndex])\n    } else {\n      this._input?.focus()\n    }\n  }\n\n  _navigateChip(chips, currentIndex, direction, shiftKey) {\n    const targetIndex = currentIndex + direction\n\n    if (direction < 0 && targetIndex >= 0) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0 && targetIndex < chips.length) {\n      const targetChip = chips[targetIndex]\n      this.selectChip(targetChip, shiftKey ? { addToSelection: true, rangeSelect: true } : {})\n      targetChip.focus()\n    } else if (direction > 0) {\n      this.clearSelection()\n      this._input?.focus()\n    }\n  }\n\n  _navigateToEdge(chips, targetIndex, shiftKey) {\n    if (chips.length === 0) {\n      return\n    }\n\n    const targetChip = chips[targetIndex]\n    this.selectChip(targetChip, shiftKey ? { rangeSelect: true } : {})\n    targetChip.focus()\n  }\n\n  _handleSelectAll(event, chips) {\n    if (!(event.metaKey || event.ctrlKey)) {\n      return\n    }\n\n    event.preventDefault()\n    for (const c of chips) {\n      this._selectedChips.add(c)\n      c.classList.add(CLASS_NAME_ACTIVE)\n    }\n\n    EventHandler.trigger(this._element, EVENT_SELECT, {\n      selected: this.getSelectedValues()\n    })\n  }\n\n  _handleInput(event) {\n    const { value } = event.target\n    const { separator } = this._config\n\n    if (separator && value.includes(separator)) {\n      const parts = value.split(separator)\n      for (const part of parts.slice(0, -1)) {\n        this.add(part.trim())\n      }\n\n      this._input.value = parts.at(-1)\n    }\n  }\n\n  _handlePaste(event) {\n    const { separator } = this._config\n    if (!separator) {\n      return\n    }\n\n    const pastedData = (event.clipboardData || window.clipboardData).getData('text')\n    if (pastedData.includes(separator)) {\n      event.preventDefault()\n\n      const parts = pastedData.split(separator)\n      for (const part of parts) {\n        this.add(part.trim())\n      }\n    }\n  }\n\n  _createChipFromInput() {\n    const value = this._input.value.trim()\n    if (value) {\n      this.add(value)\n      this._input.value = ''\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_CHIPS)) {\n    Chips.getOrCreateInstance(element)\n  }\n})\n\nexport default Chips\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n// js-docs-start allow-list\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\nexport const DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  dd: [],\n  div: [],\n  dl: [],\n  dt: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n}\n// js-docs-end allow-list\n\nconst uriAttributes = new Set([\n  'background',\n  'cite',\n  'href',\n  'itemtype',\n  'longdesc',\n  'poster',\n  'src',\n  'xlink:href'\n])\n\n/**\n * A pattern that recognizes URLs that are safe wrt. XSS in URL navigation\n * contexts.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L38\n */\nconst SAFE_URL_PATTERN = /^(?!(?:javascript|data|vbscript):)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio\n * types — notably NOT `data:text/html`, which is an XSS vector.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/15.2.8/packages/core/src/sanitization/url_sanitizer.ts#L49\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z=]+$/i\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase()\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue))\n    }\n\n    return true\n  }\n\n  // Check if a regular expression validates the attribute.\n  return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp)\n    .some(regex => regex.test(attributeName))\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml\n  }\n\n  if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n    return sanitizeFunction(unsafeHtml)\n  }\n\n  const domParser = new window.DOMParser()\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n  const elements = [...createdDocument.body.querySelectorAll('*')]\n\n  for (const element of elements) {\n    const elementName = element.nodeName.toLowerCase()\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove()\n      continue\n    }\n\n    const attributeList = [...element.attributes]\n    const allowedAttributes = [...(allowList['*'] || []), ...(allowList[elementName] || [])]\n\n    for (const attribute of attributeList) {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName)\n      }\n    }\n  }\n\n  return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine.js'\nimport Config from './config.js'\nimport { DefaultAllowlist, sanitizeHtml } from './sanitizer.js'\nimport { execute, getElement, isElement } from './index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'TemplateFactory'\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  content: {}, // { selector : text ,  selector2 : text2 , }\n  extraClass: '',\n  html: false,\n  sanitize: true,\n  sanitizeFn: null,\n  template: '<div></div>'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  content: 'object',\n  extraClass: '(string|function)',\n  html: 'boolean',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  template: 'string'\n}\n\nconst DefaultContentType = {\n  entry: '(string|element|function|null)',\n  selector: '(string|element)'\n}\n\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n  constructor(config) {\n    super()\n    this._config = this._getConfig(config)\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getContent() {\n    return Object.values(this._config.content)\n      .map(config => this._resolvePossibleFunction(config))\n      .filter(Boolean)\n  }\n\n  hasContent() {\n    return this.getContent().length > 0\n  }\n\n  changeContent(content) {\n    this._checkContent(content)\n    this._config.content = { ...this._config.content, ...content }\n    return this\n  }\n\n  toHtml() {\n    const templateWrapper = document.createElement('div')\n    templateWrapper.innerHTML = this._maybeSanitize(this._config.template)\n\n    for (const [selector, text] of Object.entries(this._config.content)) {\n      this._setContent(templateWrapper, text, selector)\n    }\n\n    const template = templateWrapper.children[0]\n    const extraClass = this._resolvePossibleFunction(this._config.extraClass)\n\n    if (extraClass) {\n      template.classList.add(...extraClass.split(' '))\n    }\n\n    return template\n  }\n\n  // Private\n  _typeCheckConfig(config) {\n    super._typeCheckConfig(config)\n    this._checkContent(config.content)\n  }\n\n  _checkContent(arg) {\n    for (const [selector, content] of Object.entries(arg)) {\n      super._typeCheckConfig({ selector, entry: content }, DefaultContentType)\n    }\n  }\n\n  _setContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template)\n\n    if (!templateElement) {\n      return\n    }\n\n    content = this._resolvePossibleFunction(content)\n\n    if (!content) {\n      templateElement.remove()\n      return\n    }\n\n    if (isElement(content)) {\n      this._putElementInTemplate(getElement(content), templateElement)\n      return\n    }\n\n    if (this._config.html) {\n      templateElement.innerHTML = this._maybeSanitize(content)\n      return\n    }\n\n    templateElement.textContent = content\n  }\n\n  _maybeSanitize(arg) {\n    return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [undefined, this])\n  }\n\n  _putElementInTemplate(element, templateElement) {\n    if (this._config.html) {\n      templateElement.innerHTML = ''\n      templateElement.append(element)\n      return\n    }\n\n    templateElement.textContent = element.textContent\n  }\n}\n\nexport default TemplateFactory\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n  computePosition,\n  flip,\n  shift,\n  offset,\n  arrow,\n  autoUpdate\n} from '@floating-ui/dom'\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport Manipulator from './dom/manipulator.js'\nimport {\n  execute, findShadowRoot, getElement, getUID, isRTL, noop\n} from './util/index.js'\nimport { DefaultAllowlist } from './util/sanitizer.js'\nimport TemplateFactory from './util/template-factory.js'\nimport {\n  parseResponsivePlacement,\n  getResponsivePlacement,\n  createBreakpointListeners,\n  disposeBreakpointListeners\n} from './util/floating-ui.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tooltip'\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tooltip\"]'\n\nconst EVENT_MODAL_HIDE = 'hide.bs.modal'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\nconst EVENT_HIDE = 'hide'\nconst EVENT_HIDDEN = 'hidden'\nconst EVENT_SHOW = 'show'\nconst EVENT_SHOWN = 'shown'\nconst EVENT_INSERTED = 'inserted'\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_FOCUSOUT = 'focusout'\nconst EVENT_MOUSEENTER = 'mouseenter'\nconst EVENT_MOUSELEAVE = 'mouseleave'\nconst EVENT_KEYDOWN = 'keydown'\n\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n  allowList: DefaultAllowlist,\n  animation: true,\n  boundary: 'clippingParents',\n  container: false,\n  customClass: '',\n  delay: 0,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  html: false,\n  offset: [0, 6],\n  placement: 'top',\n  floatingConfig: null,\n  sanitize: true,\n  sanitizeFn: null,\n  selector: false,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' +\n            '<div class=\"tooltip-arrow\"></div>' +\n            '<div class=\"tooltip-inner\"></div>' +\n            '</div>',\n  title: '',\n  trigger: 'hover focus'\n}\n\nconst DefaultType = {\n  allowList: 'object',\n  animation: 'boolean',\n  boundary: '(string|element)',\n  container: '(string|element|boolean)',\n  customClass: '(string|function)',\n  delay: '(number|object)',\n  fallbackPlacements: 'array',\n  html: 'boolean',\n  offset: '(array|string|function)',\n  placement: '(string|function)',\n  floatingConfig: '(null|object|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  selector: '(string|boolean)',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof computePosition === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Floating UI (https://floating-ui.com)')\n    }\n\n    super(element, config)\n\n    // Private\n    this._isEnabled = true\n    this._timeout = 0\n    this._isHovered = null\n    this._activeTrigger = {}\n    this._floatingCleanup = null\n    this._keydownHandler = null\n    this._templateFactory = null\n    this._newContent = null\n    this._mediaQueryListeners = []\n    this._responsivePlacements = null\n\n    // Protected\n    this.tip = null\n\n    this._parseResponsivePlacements()\n    this._setListeners()\n\n    if (!this._config.selector) {\n      this._fixTitle()\n    }\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  enable() {\n    this._isEnabled = true\n  }\n\n  disable() {\n    this._isEnabled = false\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled\n  }\n\n  toggle() {\n    if (!this._isEnabled) {\n      return\n    }\n\n    if (this._isShown()) {\n      this._leave()\n      return\n    }\n\n    this._enter()\n  }\n\n  dispose() {\n    clearTimeout(this._timeout)\n\n    this._removeEscapeListener()\n\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n\n    if (this._element.getAttribute('data-bs-original-title')) {\n      this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'))\n    }\n\n    this._disposeFloating()\n    this._disposeMediaQueryListeners()\n    super.dispose()\n  }\n\n  async show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements')\n    }\n\n    if (!(this._isWithContent() && this._isEnabled)) {\n      return\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW))\n    const shadowRoot = findShadowRoot(this._element)\n    const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element)\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      // Reset the transient hover/active state so a prevented (or not-in-DOM)\n      // show doesn't leave `_isHovered` stuck true — otherwise a click-triggered\n      // tip would hit the `_enter()` early-return on every later click and never\n      // reopen.\n      this._isHovered = false\n      return\n    }\n\n    this._disposeFloating()\n\n    const tip = this._getTipElement()\n\n    this._element.setAttribute('aria-describedby', tip.getAttribute('id'))\n\n    let { container } = this._config\n    const closestDialog = this._element.closest('dialog[open]')\n    if (closestDialog && container === document.body) {\n      container = closestDialog\n    }\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip)\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED))\n    }\n\n    await this._createFloating(tip)\n\n    tip.classList.add(CLASS_NAME_SHOW)\n\n    // Allow dismissing the tooltip with the Escape key (WCAG 1.4.13)\n    this._setEscapeListener()\n\n    // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.on(element, 'mouseover', noop)\n      }\n    }\n\n    const complete = () => {\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN))\n\n      if (this._isHovered === false) {\n        this._leave()\n      }\n\n      this._isHovered = false\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  hide() {\n    if (!this._isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE))\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    this._removeEscapeListener()\n\n    const tip = this._getTipElement()\n    tip.classList.remove(CLASS_NAME_SHOW)\n\n    // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n    if ('ontouchstart' in document.documentElement) {\n      for (const element of document.body.children) {\n        EventHandler.off(element, 'mouseover', noop)\n      }\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false\n    this._activeTrigger[TRIGGER_FOCUS] = false\n    this._activeTrigger[TRIGGER_HOVER] = false\n    this._isHovered = null // it is a trick to support manual triggering\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return\n      }\n\n      if (!this._isHovered) {\n        this._disposeFloating()\n      }\n\n      this._element.removeAttribute('aria-describedby')\n      EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN))\n    }\n\n    this._queueCallback(complete, this.tip, this._isAnimated())\n  }\n\n  update() {\n    if (this._floatingCleanup && this.tip) {\n      this._updateFloatingPosition()\n    }\n  }\n\n  // Protected\n  _isWithContent() {\n    return Boolean(this._getTitle()) || this._hasNewContent()\n  }\n\n  // Content supplied via setContent() (a `{ selector: content }` map) overrides\n  // the configured title/content when rendering, so it should also satisfy the\n  // show() gate — otherwise a tip whose content is only set via setContent()\n  // can never be shown.\n  _hasNewContent() {\n    return Boolean(this._newContent) && Object.values(this._newContent).some(Boolean)\n  }\n\n  _getTipElement() {\n    if (!this.tip) {\n      this.tip = this._createTipElement(this._newContent || this._getContentForTemplate())\n    }\n\n    return this.tip\n  }\n\n  _createTipElement(content) {\n    const tip = this._getTemplateFactory(content).toHtml()\n\n    tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n    tip.classList.add(`bs-${this.constructor.NAME}-auto`)\n\n    const tipId = getUID(this.constructor.NAME).toString()\n\n    tip.setAttribute('id', tipId)\n\n    if (this._isAnimated()) {\n      tip.classList.add(CLASS_NAME_FADE)\n    }\n\n    return tip\n  }\n\n  setContent(content) {\n    this._newContent = content\n    if (this._isShown()) {\n      this._disposeFloating()\n      this.show()\n    }\n  }\n\n  _getTemplateFactory(content) {\n    if (this._templateFactory) {\n      this._templateFactory.changeContent(content)\n    } else {\n      this._templateFactory = new TemplateFactory({\n        ...this._config,\n        // the `content` var has to be after `this._config`\n        // to override config.content in case of popover\n        content,\n        extraClass: this._resolvePossibleFunction(this._config.customClass)\n      })\n    }\n\n    return this._templateFactory\n  }\n\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n    }\n  }\n\n  _getTitle() {\n    return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title')\n  }\n\n  // Private\n  _initializeOnDelegatedTarget(event) {\n    return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig())\n  }\n\n  _isAnimated() {\n    return this._config.animation || (this.tip && this.tip.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _isShown() {\n    return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  _getPlacement(tip) {\n    // If we have responsive placements, get the one for current viewport\n    if (this._responsivePlacements) {\n      const placement = getResponsivePlacement(this._responsivePlacements, 'top')\n      return AttachmentMap[placement.toUpperCase()] || placement\n    }\n\n    // Execute placement (can be a function)\n    const placement = execute(this._config.placement, [this, tip, this._element])\n    return AttachmentMap[placement.toUpperCase()] || placement\n  }\n\n  _parseResponsivePlacements() {\n    // Only parse if placement is a string (not a function)\n    if (typeof this._config.placement !== 'string') {\n      this._responsivePlacements = null\n      return\n    }\n\n    this._responsivePlacements = parseResponsivePlacement(this._config.placement, 'top')\n\n    if (this._responsivePlacements) {\n      this._setupMediaQueryListeners()\n    }\n  }\n\n  _setupMediaQueryListeners() {\n    this._disposeMediaQueryListeners()\n    this._mediaQueryListeners = createBreakpointListeners(() => {\n      if (this._isShown()) {\n        this._updateFloatingPosition()\n      }\n    })\n  }\n\n  _disposeMediaQueryListeners() {\n    disposeBreakpointListeners(this._mediaQueryListeners)\n    this._mediaQueryListeners = []\n  }\n\n  async _createFloating(tip) {\n    const placement = this._getPlacement(tip)\n    const arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n\n    // Initial position update\n    await this._updateFloatingPosition(tip, placement, arrowElement)\n\n    // Set up auto-update for scroll/resize\n    this._floatingCleanup = autoUpdate(\n      this._element,\n      tip,\n      () => this._updateFloatingPosition(tip, null, arrowElement)\n    )\n  }\n\n  async _updateFloatingPosition(tip = this.tip, placement = null, arrowElement = null) {\n    if (!tip) {\n      return\n    }\n\n    if (!placement) {\n      placement = this._getPlacement(tip)\n    }\n\n    if (!arrowElement) {\n      arrowElement = tip.querySelector(`.${this.constructor.NAME}-arrow`)\n    }\n\n    const middleware = this._getFloatingMiddleware(arrowElement)\n    const floatingConfig = this._getFloatingConfig(placement, middleware)\n\n    const { x, y, placement: finalPlacement, middlewareData } = await computePosition(\n      this._element,\n      tip,\n      floatingConfig\n    )\n\n    // Apply position to tooltip\n    Object.assign(tip.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`\n    })\n\n    // Ensure arrow is absolutely positioned within tooltip\n    if (arrowElement) {\n      arrowElement.style.position = 'absolute'\n    }\n\n    // Set placement attribute for CSS arrow styling\n    Manipulator.setDataAttribute(tip, 'placement', finalPlacement)\n\n    // Position arrow along the edge (center it) if present\n    // The CSS handles which edge to place it on via data-bs-placement\n    if (arrowElement && middlewareData.arrow) {\n      const { x: arrowX, y: arrowY } = middlewareData.arrow\n      const isVertical = finalPlacement.startsWith('top') || finalPlacement.startsWith('bottom')\n\n      // Only set the cross-axis position (centering along the edge)\n      // The main-axis position (which edge) is handled by CSS\n      Object.assign(arrowElement.style, {\n        left: isVertical && arrowX !== null ? `${arrowX}px` : '',\n        top: !isVertical && arrowY !== null ? `${arrowY}px` : '',\n        // Reset the other axis to let CSS handle it\n        right: '',\n        bottom: ''\n      })\n    }\n  }\n\n  _getOffset() {\n    const { offset } = this._config\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(value => Number.parseInt(value, 10))\n    }\n\n    if (typeof offset === 'function') {\n      // Floating UI passes different args, adapt the interface for offset function callbacks\n      return ({ placement, rects }) => {\n        const result = offset({ placement, reference: rects.reference, floating: rects.floating }, this._element)\n        return result\n      }\n    }\n\n    return offset\n  }\n\n  _resolvePossibleFunction(arg) {\n    return execute(arg, [this._element, this._element])\n  }\n\n  _getFloatingMiddleware(arrowElement) {\n    const offsetValue = this._getOffset()\n\n    const middleware = [\n      // Offset middleware - handles distance from reference\n      offset(\n        typeof offsetValue === 'function' ?\n          offsetValue :\n          { mainAxis: offsetValue[1] || 0, crossAxis: offsetValue[0] || 0 }\n      ),\n      // Flip middleware - handles fallback placements\n      flip({\n        fallbackPlacements: this._config.fallbackPlacements\n      }),\n      // Shift middleware - prevents overflow\n      shift({\n        boundary: this._config.boundary === 'clippingParents' ? 'clippingAncestors' : this._config.boundary\n      })\n    ]\n\n    // Arrow middleware - positions the arrow element\n    if (arrowElement) {\n      middleware.push(arrow({ element: arrowElement }))\n    }\n\n    return middleware\n  }\n\n  _getFloatingConfig(placement, middleware) {\n    const defaultConfig = {\n      placement,\n      middleware\n    }\n\n    return {\n      ...defaultConfig,\n      ...execute(this._config.floatingConfig, [undefined, defaultConfig])\n    }\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ')\n\n    for (const trigger of triggers) {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK), this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[TRIGGER_CLICK] = !(context._isShown() && context._activeTrigger[TRIGGER_CLICK])\n          context.toggle()\n        })\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSEENTER) :\n          this.constructor.eventName(EVENT_FOCUSIN)\n        const eventOut = trigger === TRIGGER_HOVER ?\n          this.constructor.eventName(EVENT_MOUSELEAVE) :\n          this.constructor.eventName(EVENT_FOCUSOUT)\n\n        EventHandler.on(this._element, eventIn, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true\n          context._enter()\n        })\n        EventHandler.on(this._element, eventOut, this._config.selector, event => {\n          const context = this._initializeOnDelegatedTarget(event)\n          context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] =\n            context._element.contains(event.relatedTarget)\n\n          context._leave()\n        })\n      }\n    }\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide()\n      }\n    }\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler)\n  }\n\n  _setEscapeListener() {\n    if (this._keydownHandler) {\n      return\n    }\n\n    this._keydownHandler = event => {\n      if (event.key !== ESCAPE_KEY || !this._isShown() || !this.tip.isConnected) {\n        return\n      }\n\n      // Dismiss the tooltip and consume the keystroke so it doesn't reach\n      // ancestor components (e.g. a parent dialog). This way the first Escape\n      // only closes the tooltip, and a subsequent one can close the dialog —\n      // matching the behavior of the dropdown menu.\n      event.preventDefault()\n      event.stopPropagation()\n      this.hide()\n    }\n\n    // Listen in the capture phase so this runs before the dialog's own keydown\n    // handler, and on the document so it works regardless of where focus is\n    // (e.g. for hover-triggered tooltips). EventHandler only uses the capture\n    // phase for delegated listeners, so attach natively here.\n    this._element.ownerDocument.addEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n  }\n\n  _removeEscapeListener() {\n    if (!this._keydownHandler) {\n      return\n    }\n\n    this._element.ownerDocument.removeEventListener(EVENT_KEYDOWN, this._keydownHandler, true)\n    this._keydownHandler = null\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title')\n\n    if (!title) {\n      return\n    }\n\n    if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n      this._element.setAttribute('aria-label', title)\n    }\n\n    this._element.setAttribute('data-bs-original-title', title) // DO NOT USE IT. Is only for backwards compatibility\n    this._element.removeAttribute('title')\n  }\n\n  _enter() {\n    if (this._isShown() || this._isHovered) {\n      this._isHovered = true\n      return\n    }\n\n    this._isHovered = true\n\n    this._setTimeout(() => {\n      if (this._isHovered) {\n        this.show()\n      }\n    }, this._config.delay.show)\n  }\n\n  _leave() {\n    if (this._isWithActiveTrigger()) {\n      return\n    }\n\n    this._isHovered = false\n\n    this._setTimeout(() => {\n      if (!this._isHovered) {\n        this.hide()\n      }\n    }, this._config.delay.hide)\n  }\n\n  _setTimeout(handler, timeout) {\n    clearTimeout(this._timeout)\n    this._timeout = setTimeout(handler, timeout)\n  }\n\n  _isWithActiveTrigger() {\n    return Object.values(this._activeTrigger).includes(true)\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n    for (const dataAttribute of Object.keys(dataAttributes)) {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n        delete dataAttributes[dataAttribute]\n      }\n    }\n\n    config = {\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    }\n    config = this._mergeConfigObj(config)\n    config = this._configAfterMerge(config)\n    this._typeCheckConfig(config)\n    return config\n  }\n\n  _configAfterMerge(config) {\n    config.container = config.container === false ? document.body : getElement(config.container)\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      }\n    }\n\n    // Coerce number/boolean title and content to strings. `data-bs-title=\"true\"`\n    // / `data-bs-content=\"false\"` are auto-converted to booleans by the data-API,\n    // which would otherwise fail the (null|string|element|function) type check.\n    if (typeof config.title === 'number' || typeof config.title === 'boolean') {\n      config.title = config.title.toString()\n    }\n\n    if (typeof config.content === 'number' || typeof config.content === 'boolean') {\n      config.content = config.content.toString()\n    }\n\n    return config\n  }\n\n  _getDelegateConfig() {\n    const config = {}\n\n    for (const [key, value] of Object.entries(this._config)) {\n      if (this.constructor.Default[key] !== value) {\n        config[key] = value\n      }\n    }\n\n    config.selector = false\n    config.trigger = 'manual'\n\n    // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n    return config\n  }\n\n  _disposeFloating() {\n    if (this._floatingCleanup) {\n      this._floatingCleanup()\n      this._floatingCleanup = null\n    }\n\n    if (this.tip) {\n      this.tip.remove()\n      this.tip = null\n    }\n  }\n}\n\n/**\n * Data API implementation - auto-initialize tooltips\n */\n\nconst initTooltip = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (hover/focus by default), so we don't mutate `_activeTrigger` or call\n  // `_enter` here — doing so would show tooltips for triggers the user didn't\n  // opt into (e.g. `focusin` firing for click-focused buttons in Chromium,\n  // even when `trigger=\"hover\"` or `trigger=\"manual\"`) and leave stale state\n  // on `_activeTrigger`.\n  Tooltip.getOrCreateInstance(target)\n}\n\n// Auto-initialize tooltips on first interaction for hover and focus triggers\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initTooltip)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initTooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Tooltip from './tooltip.js'\nimport EventHandler from './dom/event-handler.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'popover'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"popover\"]'\n\nconst EVENT_CLICK = 'click'\nconst EVENT_FOCUSIN = 'focusin'\nconst EVENT_MOUSEENTER = 'mouseenter'\n\nconst Default = {\n  ...Tooltip.Default,\n  content: '',\n  offset: [0, 8],\n  placement: 'right',\n  template: '<div class=\"popover\" role=\"tooltip\">' +\n    '<div class=\"popover-arrow\"></div>' +\n    '<h3 class=\"popover-header\"></h3>' +\n    '<div class=\"popover-body\"></div>' +\n    '</div>',\n  trigger: 'click'\n}\n\nconst DefaultType = {\n  ...Tooltip.DefaultType,\n  content: '(null|string|element|function)'\n}\n\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Overrides\n  _isWithContent() {\n    return Boolean(this._getTitle() || this._getContent()) || this._hasNewContent()\n  }\n\n  // Private\n  _getContentForTemplate() {\n    return {\n      [SELECTOR_TITLE]: this._getTitle(),\n      [SELECTOR_CONTENT]: this._getContent()\n    }\n  }\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content)\n  }\n}\n\n/**\n * Data API implementation - auto-initialize popovers\n */\n\nconst initPopover = event => {\n  const target = event.target.closest(SELECTOR_DATA_TOGGLE)\n  if (!target) {\n    return\n  }\n\n  // Prevent default for click events to avoid navigation (e.g. <a href=\"#\">)\n  if (event.type === 'click') {\n    event.preventDefault()\n  }\n\n  // Lazily create the instance. The instance's own `_setListeners()` registers\n  // the appropriate listeners on the element for the configured triggers\n  // (click/focus/hover), so we don't toggle or call `_enter` here — doing so\n  // would duplicate handlers and leave stale state on `_activeTrigger`.\n  Popover.getOrCreateInstance(target)\n}\n\n// Auto-initialize popovers on first interaction for click, hover, and focus triggers\nEventHandler.on(document, EVENT_CLICK, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_FOCUSIN, SELECTOR_DATA_TOGGLE, initPopover)\nEventHandler.on(document, EVENT_MOUSEENTER, SELECTOR_DATA_TOGGLE, initPopover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap range.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'range'\nconst DATA_KEY = 'bs.range'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CHANGED = `changed${EVENT_KEY}`\nconst EVENT_DOM_CONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\n// `input` is not in EventHandler's native-event list, so it can't be namespaced; bind it raw\nconst EVENT_INPUT = 'input'\nconst EVENT_CHANGE = 'change'\n\nconst SELECTOR_RANGE = '.form-range'\nconst SELECTOR_INPUT = '.form-range-input'\n\nconst CLASS_NAME_BUBBLE = 'form-range-bubble'\nconst CLASS_NAME_TICKS = 'form-range-ticks'\nconst CLASS_NAME_TICK = 'form-range-tick'\nconst CLASS_NAME_TICK_LABEL = 'form-range-tick-label'\n\n// Shipped (`--bs-`-prefixed) custom properties; the build prefixes the SCSS tokens, so the\n// plugin must write the prefixed names to interoperate with the rendered CSS.\nconst PROPERTY_FILL = '--bs-range-fill'\n\nconst Default = {\n  bubble: false, // Show a value bubble above the thumb\n  formatter: null // (value) => string, for the bubble and tick labels\n}\n\nconst DefaultType = {\n  bubble: '(boolean|null)',\n  formatter: '(function|null)'\n}\n\n/**\n * Class definition\n */\n\nclass Range extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // BaseComponent bails (no `_element`) when the element can't be resolved\n    if (!this._element) {\n      return\n    }\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n\n    if (!this._input) {\n      return\n    }\n\n    this._bubble = null\n    this._bubbleText = null\n    this._ticks = null\n    this._updateHandler = () => this._update()\n\n    if (this._config.bubble) {\n      this._createBubble()\n    }\n\n    this._createTicks()\n    this._addEventListeners()\n    this._update()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  update() {\n    this._update()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.off(this._input, EVENT_CHANGE, this._updateHandler)\n\n    this._bubble?.remove()\n    this._ticks?.remove()\n\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    // A bare `data-bs-bubble` attribute normalizes to `null`; treat it as enabled\n    if (config.bubble === null) {\n      config.bubble = true\n    }\n\n    return config\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._input, EVENT_INPUT, this._updateHandler)\n    EventHandler.on(this._input, EVENT_CHANGE, this._updateHandler)\n  }\n\n  _min() {\n    return this._input.min === '' ? 0 : Number.parseFloat(this._input.min)\n  }\n\n  _max() {\n    return this._input.max === '' ? 100 : Number.parseFloat(this._input.max)\n  }\n\n  _value() {\n    return Number.parseFloat(this._input.value)\n  }\n\n  _ratio() {\n    const span = this._max() - this._min()\n    return span > 0 ? (this._value() - this._min()) / span : 0\n  }\n\n  _update() {\n    // The fill ratio drives the track gradient and the bubble/tick positions, all in CSS\n    this._element.style.setProperty(PROPERTY_FILL, `${this._ratio()}`)\n\n    if (this._bubbleText) {\n      this._bubbleText.textContent = this._format(this._value())\n    }\n\n    EventHandler.trigger(this._input, EVENT_CHANGED, { value: this._value() })\n  }\n\n  _format(value) {\n    return typeof this._config.formatter === 'function' ? this._config.formatter(value) : String(value)\n  }\n\n  _createBubble() {\n    // Reuse the tooltip markup so we don't duplicate the pill and arrow styles\n    this._bubble = document.createElement('output')\n    this._bubble.className = `${CLASS_NAME_BUBBLE} tooltip bs-tooltip-top show`\n    this._bubble.setAttribute('aria-hidden', 'true')\n\n    // Match the Tooltip template's block-level markup: `.tooltip-inner` has no `display` rule,\n    // so an inline `<span>` would let its padding bleed outside the bubble and clip the arrow.\n    const arrow = document.createElement('div')\n    arrow.className = 'tooltip-arrow'\n    this._bubbleText = document.createElement('div')\n    this._bubbleText.className = 'tooltip-inner'\n    this._bubble.append(arrow, this._bubbleText)\n\n    this._input.insertAdjacentElement('afterend', this._bubble)\n  }\n\n  _createTicks() {\n    const listId = this._input.getAttribute('list')\n    const datalist = listId ? document.getElementById(listId) : null\n\n    if (!datalist) {\n      return\n    }\n\n    const min = this._min()\n    const span = this._max() - min || 1\n\n    const points = []\n    for (const option of SelectorEngine.find('option', datalist)) {\n      const value = Number.parseFloat(option.value)\n\n      if (!Number.isNaN(value)) {\n        // Clamp to [0, 1] so out-of-range options can't produce negative `fr` tracks\n        const ratio = Math.min(Math.max((value - min) / span, 0), 1)\n        points.push({ ratio, label: option.label })\n      }\n    }\n\n    if (points.length === 0) {\n      return\n    }\n\n    points.sort((a, b) => a.ratio - b.ratio)\n\n    this._ticks = document.createElement('div')\n    this._ticks.className = CLASS_NAME_TICKS\n    this._ticks.setAttribute('aria-hidden', 'true')\n\n    // Columns are the gaps between 0, each tick, and 1, so every tick lands on a grid line\n    const stops = [0, ...points.map(point => point.ratio), 1]\n    this._ticks.style.gridTemplateColumns = stops.slice(1).map((stop, index) => `${stop - stops[index]}fr`).join(' ')\n\n    for (const [index, point] of points.entries()) {\n      const tick = document.createElement('span')\n      tick.className = CLASS_NAME_TICK\n      tick.style.gridColumnStart = `${index + 2}`\n\n      if (point.label) {\n        const label = document.createElement('span')\n        label.className = CLASS_NAME_TICK_LABEL\n        label.textContent = point.label\n        tick.append(label)\n      }\n\n      this._ticks.append(tick)\n    }\n\n    this._element.append(this._ticks)\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOM_CONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_RANGE)) {\n    Range.getOrCreateInstance(element)\n  }\n})\n\nexport default Range\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport {\n  getElement, isDisabled, isVisible\n} from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_SCROLLEND = `scrollend${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_MENU_ITEM = 'menu-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_TARGET_LINKS = '[href]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\n\n// How long (ms) to wait after the last scroll event before settling a pending\n// smooth-scroll navigation, when the native `scrollend` event is unavailable.\nconst SCROLL_IDLE_TIMEOUT = 100\n// Debounce (ms) for rebuilding the observer on resize (px activation lines only).\nconst RESIZE_DEBOUNCE = 100\n\nconst Default = {\n  // `rootMargin` is the raw IntersectionObserver root-box override. When set it\n  // takes precedence over `topMargin` and is passed straight to the observer.\n  // Leave it null and use `topMargin` for everyday use.\n  rootMargin: null,\n  smoothScroll: false,\n  target: null,\n  threshold: [0],\n  // Position of the activation line, measured from the top of the scroll root.\n  // The active section is the deepest one whose top has scrolled to/above it.\n  // Accepts a percentage (`12%`) or pixels (`96px`, e.g. below a sticky navbar).\n  topMargin: '12%'\n}\n\nconst DefaultType = {\n  rootMargin: '(string|null)',\n  smoothScroll: 'boolean',\n  target: 'element',\n  threshold: 'array',\n  topMargin: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    // this._element is the observablesContainer and config.target the menu links wrapper\n    this._sections = [] // observable section elements, in DOM order\n    this._linkBySection = new Map() // section element -> nav link\n    this._sectionByLink = new Map() // nav link -> section element (for smooth scroll)\n    this._intersecting = new Set() // sections currently crossing the activation line\n    this._activeTarget = null\n    this._lastActive = null // last activated section (keep-last across gaps)\n    this._atBottom = false\n    this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element\n\n    this._observer = null\n    this._sentinel = null\n    this._sentinelObserver = null\n\n    this._pendingNavigation = null\n    this._settleTimeout = null\n    this._settleHandler = null\n    this._scrollIdleHandler = null\n\n    this._resizeHandler = null\n    this._resizeTimeout = null\n\n    this.refresh() // initialize\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  refresh() {\n    this._initializeTargetsAndObservables()\n    this._maybeEnableSmoothScroll()\n\n    // (Re)build the activation observer.\n    this._observer?.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n\n    // Detect the bottom-of-page case (a short last section whose top never\n    // reaches the activation line) natively, via a dedicated sentinel observer.\n    this._setUpSentinel()\n\n    // A px activation line doesn't track viewport height the way `%` does, so\n    // rebuild the observer (debounced) on resize when px units are in play.\n    this._maybeAddResizeListener()\n  }\n\n  dispose() {\n    this._observer?.disconnect()\n    this._teardownSentinel()\n    this._disarmSettle()\n    this._removeResizeListener()\n    EventHandler.off(this._config.target, EVENT_CLICK)\n    super.dispose()\n  }\n\n  // Private\n  _configAfterMerge(config) {\n    config.target = getElement(config.target) || document.body\n\n    if (typeof config.threshold === 'string') {\n      config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value))\n    }\n\n    return config\n  }\n\n  // --- Detection (IntersectionObserver-driven) -----------------------------\n\n  _getNewObserver() {\n    const options = {\n      root: this._rootElement,\n      threshold: this._config.threshold,\n      rootMargin: this._config.rootMargin ?? this._getDerivedRootMargin()\n    }\n\n    return new IntersectionObserver(entries => this._onIntersect(entries), options)\n  }\n\n  _onIntersect(entries) {\n    for (const entry of entries) {\n      if (entry.isIntersecting) {\n        this._intersecting.add(entry.target)\n      } else {\n        this._intersecting.delete(entry.target)\n      }\n    }\n\n    this._computeActive()\n  }\n\n  // Single source of truth for active selection, derived only from IO state —\n  // no per-frame layout reads. The active section is the deepest (DOM-order)\n  // one currently crossing the activation line; in a gap we keep the last one;\n  // above the first section the first stays active; at the very bottom the last\n  // section wins.\n  _computeActive() {\n    // Guard against observer callbacks that outlive a disposed/detached instance.\n    if (!this._element?.isConnected || this._sections.length === 0) {\n      return\n    }\n\n    let active = null\n\n    if (this._atBottom) {\n      active = this._sections.at(-1)\n    } else {\n      for (const section of this._sections) {\n        if (this._intersecting.has(section)) {\n          active = section\n        }\n      }\n\n      // No section crosses the line: keep the last active (content gap), or fall\n      // back to the first section at the top of the page.\n      active ||= this._lastActive ?? this._sections.at(0)\n    }\n\n    if (!active) {\n      return\n    }\n\n    this._lastActive = active\n    const link = this._linkBySection.get(active)\n    if (link) {\n      this._process(link)\n    }\n  }\n\n  // Single source of truth for the `topMargin` option: its numeric value and\n  // whether it's expressed as a percentage of the root height or in pixels.\n  _parseTopMargin() {\n    const value = String(this._config.topMargin)\n    return {\n      value: Number.parseFloat(value) || 0,\n      unit: value.endsWith('%') ? '%' : 'px'\n    }\n  }\n\n  // Collapse the observer root to a strip from the top down to the activation\n  // line, so a section is \"intersecting\" exactly while it crosses that line.\n  _getDerivedRootMargin() {\n    const { value, unit } = this._parseTopMargin()\n    let percent = value\n\n    // Express a pixel activation line as a percentage of the root height.\n    if (unit === 'px') {\n      const rootHeight = this._rootElement ?\n        this._rootElement.clientHeight :\n        (document.documentElement.clientHeight || window.innerHeight)\n      percent = rootHeight ? (value / rootHeight) * 100 : 12\n    }\n\n    // Clamp so the bottom inset stays a valid (non-negative) rootMargin even if\n    // the line sits outside the root box.\n    const bottom = Math.min(Math.max(100 - percent, 0), 100)\n    return `0px 0px -${bottom}% 0px`\n  }\n\n  // Whether the activation line is derived from a pixel `topMargin` (in which\n  // case it must be recomputed on resize). An explicit `rootMargin` is owned by\n  // the caller, and a `%` topMargin is recomputed by the browser automatically.\n  _usesPixelMargin() {\n    return !this._config.rootMargin && this._parseTopMargin().unit === 'px'\n  }\n\n  // --- Bottom sentinel -----------------------------------------------------\n\n  _setUpSentinel() {\n    this._teardownSentinel()\n\n    if (this._sections.length === 0) {\n      return\n    }\n\n    const sentinel = document.createElement('div')\n    sentinel.setAttribute('aria-hidden', 'true')\n    sentinel.style.cssText = 'position:relative;width:0;height:0;margin:0;padding:0;border:0;visibility:hidden;'\n    this._element.append(sentinel)\n    this._sentinel = sentinel\n\n    this._sentinelObserver = new IntersectionObserver(entries => this._onSentinel(entries), {\n      root: this._rootElement,\n      threshold: [0]\n    })\n    this._sentinelObserver.observe(sentinel)\n  }\n\n  _onSentinel(entries) {\n    const entry = entries.at(-1)\n    // Only treat the sentinel as \"bottom reached\" when content actually\n    // overflows; otherwise everything is visible and there's nothing to spy.\n    this._atBottom = Boolean(entry?.isIntersecting) && this._isOverflowing()\n    this._computeActive()\n  }\n\n  _isOverflowing() {\n    const scroller = this._rootElement || document.scrollingElement || document.documentElement\n    return scroller.scrollHeight > scroller.clientHeight\n  }\n\n  _teardownSentinel() {\n    this._sentinelObserver?.disconnect()\n    this._sentinelObserver = null\n    this._sentinel?.remove()\n    this._sentinel = null\n    this._atBottom = false\n  }\n\n  // --- Resize (px activation lines only) -----------------------------------\n\n  _maybeAddResizeListener() {\n    this._removeResizeListener()\n\n    if (!this._usesPixelMargin()) {\n      return\n    }\n\n    this._resizeHandler = () => {\n      clearTimeout(this._resizeTimeout)\n      this._resizeTimeout = setTimeout(() => this._rebuildObserver(), RESIZE_DEBOUNCE)\n    }\n\n    EventHandler.on(window, EVENT_RESIZE, this._resizeHandler)\n  }\n\n  _removeResizeListener() {\n    clearTimeout(this._resizeTimeout)\n    this._resizeTimeout = null\n\n    if (this._resizeHandler) {\n      EventHandler.off(window, EVENT_RESIZE, this._resizeHandler)\n      this._resizeHandler = null\n    }\n  }\n\n  _rebuildObserver() {\n    if (!this._observer) {\n      return\n    }\n\n    this._observer.disconnect()\n    this._intersecting.clear()\n    this._observer = this._getNewObserver()\n    for (const section of this._sections) {\n      this._observer.observe(section)\n    }\n  }\n\n  // --- Smooth-scroll settle (hash + focus) ---------------------------------\n\n  _maybeEnableSmoothScroll() {\n    if (!this._config.smoothScroll) {\n      return\n    }\n\n    // Unregister any previous listener so refresh() doesn't stack them.\n    EventHandler.off(this._config.target, EVENT_CLICK)\n\n    EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n      const link = event.target.closest(SELECTOR_TARGET_LINKS)\n      const section = link && this._sectionByLink.get(link)\n      if (!section || !this._element) {\n        return\n      }\n\n      event.preventDefault()\n\n      const root = this._rootElement || window\n      const height = section.offsetTop - this._element.offsetTop\n      const currentTop = this._rootElement ?\n        this._rootElement.scrollTop :\n        (window.scrollY ?? window.pageYOffset)\n      const reduceMotion = matchMedia('(prefers-reduced-motion: reduce)').matches\n\n      // If we're already there (or motion is reduced), there will be no scroll\n      // — and thus no `scrollend` — to wait for, so settle immediately. This\n      // avoids a stuck pending navigation that never restores hash/focus.\n      if (reduceMotion || Math.abs(currentTop - height) <= 2) {\n        if (root.scrollTo) {\n          root.scrollTo({ top: height, behavior: 'auto' })\n        } else {\n          root.scrollTop = height\n        }\n\n        this._settleNavigation(link.hash, section)\n        return\n      }\n\n      // Defer the URL-hash and focus updates until the scroll settles, so we\n      // don't thrash the address bar mid-animation (and so the native hash\n      // navigation we just prevented is restored once we arrive).\n      this._pendingNavigation = { hash: link.hash, section }\n      this._armSettle()\n\n      if (root.scrollTo) {\n        root.scrollTo({ top: height, behavior: 'smooth' })\n      } else {\n        root.scrollTop = height\n      }\n    })\n  }\n\n  // Arm a one-shot settle for the in-flight smooth scroll. `scrollend` is the\n  // primary signal; a transient scroll-idle timer covers engines without it.\n  // Both are removed on settle, so a later unrelated scroll can't replay it.\n  _armSettle() {\n    this._disarmSettle()\n\n    const target = this._getSettleTarget()\n\n    this._settleHandler = () => this._onSettle()\n    this._scrollIdleHandler = () => {\n      clearTimeout(this._settleTimeout)\n      this._settleTimeout = setTimeout(() => this._onSettle(), SCROLL_IDLE_TIMEOUT)\n    }\n\n    EventHandler.on(target, EVENT_SCROLLEND, this._settleHandler)\n    EventHandler.on(target, EVENT_SCROLL, this._scrollIdleHandler)\n  }\n\n  _disarmSettle() {\n    clearTimeout(this._settleTimeout)\n    this._settleTimeout = null\n\n    const target = this._getSettleTarget()\n    if (this._settleHandler) {\n      EventHandler.off(target, EVENT_SCROLLEND, this._settleHandler)\n      this._settleHandler = null\n    }\n\n    if (this._scrollIdleHandler) {\n      EventHandler.off(target, EVENT_SCROLL, this._scrollIdleHandler)\n      this._scrollIdleHandler = null\n    }\n  }\n\n  _getSettleTarget() {\n    return this._rootElement || document\n  }\n\n  _onSettle() {\n    this._disarmSettle()\n\n    if (!this._pendingNavigation) {\n      return\n    }\n\n    const { hash, section } = this._pendingNavigation\n    this._settleNavigation(hash, section)\n  }\n\n  _settleNavigation(hash, section) {\n    this._pendingNavigation = null\n\n    // Restore the URL hash (without adding a history entry) now that we've\n    // arrived, and move focus to the section for keyboard/AT users.\n    if (window.history?.replaceState) {\n      window.history.replaceState(null, '', hash)\n    }\n\n    if (!section.hasAttribute('tabindex')) {\n      section.setAttribute('tabindex', '-1')\n    }\n\n    section.focus({ preventScroll: true })\n  }\n\n  // --- Targets / observables ----------------------------------------------\n\n  _initializeTargetsAndObservables() {\n    this._sections = []\n    this._linkBySection = new Map()\n    this._sectionByLink = new Map()\n\n    const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target)\n    const seen = new Set()\n\n    for (const anchor of targetLinks) {\n      if (!anchor.hash || isDisabled(anchor)) {\n        continue\n      }\n\n      // Resolve by id (decoded) rather than building a CSS selector, so any\n      // literal id works — dots, slashes, colons, and percent-encoded chars —\n      // without escaping.\n      const id = decodeFragment(anchor.hash.slice(1))\n      if (!id) {\n        continue\n      }\n\n      const section = document.getElementById(id)\n      // ensure the section exists, is scoped to this element, and is visible\n      if (!section || !this._element.contains(section) || !isVisible(section)) {\n        continue\n      }\n\n      this._sectionByLink.set(anchor, section)\n      this._linkBySection.set(section, anchor) // last link wins for a section\n\n      if (!seen.has(section)) {\n        seen.add(section)\n        this._sections.push(section)\n      }\n    }\n\n    // Keep sections in top-to-bottom order so \"deepest\" selection is\n    // well-defined. Read once here (refresh/resize), never on the hot path.\n    this._sections.sort((a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top)\n  }\n\n  _process(target) {\n    if (this._activeTarget === target) {\n      return\n    }\n\n    this._clearActiveClass(this._config.target)\n    this._activeTarget = target\n    target.classList.add(CLASS_NAME_ACTIVE)\n    this._activateParents(target)\n\n    EventHandler.trigger(this._element, EVENT_ACTIVATE, { relatedTarget: target })\n  }\n\n  _activateParents(target) {\n    // Activate menu parents\n    if (target.classList.contains(CLASS_NAME_MENU_ITEM)) {\n      const menuToggle = target.closest('.menu')?.previousElementSibling\n      if (menuToggle?.matches(SELECTOR_MENU_TOGGLE)) {\n        menuToggle.classList.add(CLASS_NAME_ACTIVE)\n      }\n\n      return\n    }\n\n    for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n      // Set triggered links parents as active\n      // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n      for (const item of SelectorEngine.prev(listGroup, SELECTOR_LINK_ITEMS)) {\n        item.classList.add(CLASS_NAME_ACTIVE)\n      }\n    }\n  }\n\n  _clearActiveClass(parent) {\n    parent.classList.remove(CLASS_NAME_ACTIVE)\n\n    const activeNodes = SelectorEngine.find(`${SELECTOR_TARGET_LINKS}.${CLASS_NAME_ACTIVE}`, parent)\n    for (const node of activeNodes) {\n      node.classList.remove(CLASS_NAME_ACTIVE)\n    }\n  }\n}\n\n// Decode a URL fragment id, tolerating malformed escapes (returns it as-is).\nfunction decodeFragment(hash) {\n  try {\n    return decodeURIComponent(hash)\n  } catch {\n    return hash\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const spy of SelectorEngine.find(SELECTOR_DATA_SPY)) {\n    ScrollSpy.getOrCreateInstance(spy)\n  }\n})\n\nexport default ScrollSpy\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\nimport { getNextActiveElement, isDisabled } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst HOME_KEY = 'Home'\nconst END_KEY = 'End'\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst SELECTOR_MENU_TOGGLE = '[data-bs-toggle=\"menu\"]'\nconst SELECTOR_MENU = '.menu'\nconst NOT_SELECTOR_MENU_TOGGLE = `:not(${SELECTOR_MENU_TOGGLE})`\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_MENU_TOGGLE}, .list-group-item${NOT_SELECTOR_MENU_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_MENU_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"]'\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"]`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n  constructor(element) {\n    super(element)\n    this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n    if (!this._parent) {\n      return\n      // TODO: should throw exception in v6\n      // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_TAB_PANEL}`)\n    }\n\n    // Set up initial aria attributes\n    this._setInitialAttributes(this._parent, this._getChildren())\n\n    EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n  }\n\n  // Getters\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() { // Shows this elem and deactivate the active sibling if exists\n    const innerElem = this._element\n    if (this._elemIsActive(innerElem)) {\n      return\n    }\n\n    // Search for active tab on same parent to deactivate it\n    const active = this._getActiveElem()\n\n    const hideEvent = active ?\n      EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) :\n      null\n\n    const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n    if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n      return\n    }\n\n    this._deactivate(active, innerElem)\n    this._activate(innerElem, active)\n  }\n\n  // Private\n  _activate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE)\n\n    this._activate(SelectorEngine.getElementFromSelector(element)) // Search and activate/show the proper section\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.add(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.removeAttribute('tabindex')\n      element.setAttribute('aria-selected', true)\n      this._toggleMenu(element, true)\n      EventHandler.trigger(element, EVENT_SHOWN, {\n        relatedTarget: relatedElem\n      })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _deactivate(element, relatedElem) {\n    if (!element) {\n      return\n    }\n\n    element.classList.remove(CLASS_NAME_ACTIVE)\n    element.blur()\n\n    this._deactivate(SelectorEngine.getElementFromSelector(element)) // Search and deactivate the shown section too\n\n    const complete = () => {\n      if (element.getAttribute('role') !== 'tab') {\n        element.classList.remove(CLASS_NAME_SHOW)\n        return\n      }\n\n      element.setAttribute('aria-selected', false)\n      element.setAttribute('tabindex', '-1')\n      this._toggleMenu(element, false)\n      EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n    }\n\n    this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n  }\n\n  _keydown(event) {\n    if (!([ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, HOME_KEY, END_KEY].includes(event.key))) {\n      return\n    }\n\n    // Don't hijack modifier+arrow shortcuts (e.g. Alt+Left/Right for browser\n    // history navigation); only the bare keys drive tablist navigation.\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return\n    }\n\n    event.stopPropagation()// stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n    event.preventDefault()\n\n    const children = this._getChildren().filter(element => !isDisabled(element))\n    let nextActiveElement\n\n    if ([HOME_KEY, END_KEY].includes(event.key)) {\n      nextActiveElement = event.key === HOME_KEY ? children[0] : children.at(-1)\n    } else {\n      const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n      nextActiveElement = getNextActiveElement(children, event.target, isNext, true)\n    }\n\n    if (nextActiveElement) {\n      nextActiveElement.focus({ preventScroll: true })\n      Tab.getOrCreateInstance(nextActiveElement).show()\n    }\n  }\n\n  _getChildren() { // collection of inner elements\n    return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n  }\n\n  _getActiveElem() {\n    return this._getChildren().find(child => this._elemIsActive(child)) || null\n  }\n\n  _setInitialAttributes(parent, children) {\n    this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n    for (const child of children) {\n      this._setInitialAttributesOnChild(child)\n    }\n  }\n\n  _setInitialAttributesOnChild(child) {\n    child = this._getInnerElement(child)\n    const isActive = this._elemIsActive(child)\n    const outerElem = this._getOuterElement(child)\n    child.setAttribute('aria-selected', isActive)\n\n    if (outerElem !== child) {\n      this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n    }\n\n    if (!isActive) {\n      child.setAttribute('tabindex', '-1')\n    }\n\n    this._setAttributeIfNotExists(child, 'role', 'tab')\n\n    // set attributes to the related panel too\n    this._setInitialAttributesOnTargetPanel(child)\n  }\n\n  _setInitialAttributesOnTargetPanel(child) {\n    const target = SelectorEngine.getElementFromSelector(child)\n\n    if (!target) {\n      return\n    }\n\n    this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n    if (child.id) {\n      this._setAttributeIfNotExists(target, 'aria-labelledby', `${child.id}`)\n    }\n  }\n\n  _toggleMenu(element, open) {\n    const outerElem = this._getOuterElement(element)\n    const menuToggle = SelectorEngine.findOne(SELECTOR_MENU_TOGGLE, outerElem)\n    if (!menuToggle) {\n      return\n    }\n\n    const menu = SelectorEngine.findOne(SELECTOR_MENU, outerElem)\n\n    menuToggle.classList.toggle(CLASS_NAME_ACTIVE, open)\n    if (menu) {\n      menu.classList.toggle(CLASS_NAME_SHOW, open)\n    }\n\n    menuToggle.setAttribute('aria-expanded', open)\n  }\n\n  _setAttributeIfNotExists(element, attribute, value) {\n    if (!element.hasAttribute(attribute)) {\n      element.setAttribute(attribute, value)\n    }\n  }\n\n  _elemIsActive(elem) {\n    return elem.classList.contains(CLASS_NAME_ACTIVE)\n  }\n\n  // Try to get the inner element (usually the .nav-link)\n  _getInnerElement(elem) {\n    return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n  }\n\n  // Try to get the outer element (usually the .nav-item)\n  _getOuterElement(elem) {\n    return elem.closest(SELECTOR_OUTER) || elem\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault()\n  }\n\n  if (isDisabled(this)) {\n    return\n  }\n\n  Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n    Tab.getOrCreateInstance(element)\n  }\n})\n\nexport default Tab\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { enableDismissTrigger } from './util/component-functions.js'\nimport { reflow } from './util/index.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n}\n\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._timeout = null\n    this._hasMouseInteraction = false\n    this._hasKeyboardInteraction = false\n    this._setListeners()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n    if (showEvent.defaultPrevented) {\n      return\n    }\n\n    this._clearTimeout()\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE)\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING)\n      EventHandler.trigger(this._element, EVENT_SHOWN)\n\n      this._maybeScheduleHide()\n    }\n\n    this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n    reflow(this._element)\n    this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  hide() {\n    if (!this.isShown()) {\n      return\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n    if (hideEvent.defaultPrevented) {\n      return\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n      this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n      EventHandler.trigger(this._element, EVENT_HIDDEN)\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOWING)\n    this._queueCallback(complete, this._element, this._config.animation)\n  }\n\n  dispose() {\n    this._clearTimeout()\n\n    if (this.isShown()) {\n      this._element.classList.remove(CLASS_NAME_SHOW)\n    }\n\n    super.dispose()\n  }\n\n  isShown() {\n    return this._element.classList.contains(CLASS_NAME_SHOW)\n  }\n\n  // Private\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide()\n    }, this._config.delay)\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout': {\n        this._hasMouseInteraction = isInteracting\n        break\n      }\n\n      case 'focusin':\n      case 'focusout': {\n        this._hasKeyboardInteraction = isInteracting\n        break\n      }\n\n      default: {\n        break\n      }\n    }\n\n    if (isInteracting) {\n      this._clearTimeout()\n      return\n    }\n\n    const nextElement = event.relatedTarget\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return\n    }\n\n    this._maybeScheduleHide()\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false))\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true))\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false))\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout)\n    this._timeout = null\n  }\n}\n\n/**\n * Data API implementation\n */\n\nenableDismissTrigger(Toast)\n\nexport default Toast\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap toggler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport { eventActionOnPlugin } from './util/component-functions.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'toggler'\nconst DATA_KEY = 'bs.toggler'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_TOGGLE = `toggle${EVENT_KEY}`\nconst EVENT_TOGGLED = `toggled${EVENT_KEY}`\nconst EVENT_CLICK = 'click'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"toggler\"]'\n\nconst DefaultType = {\n  attribute: 'string',\n  value: '(string|number|boolean)'\n}\n\nconst Default = {\n  attribute: 'class',\n  value: null\n}\n\n/**\n * Class definition\n */\n\nclass Toggler extends BaseComponent {\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  toggle() {\n    const toggleEvent = EventHandler.trigger(this._element, EVENT_TOGGLE)\n\n    if (toggleEvent.defaultPrevented) {\n      return\n    }\n\n    this._execute()\n\n    EventHandler.trigger(this._element, EVENT_TOGGLED)\n  }\n\n  // Private\n  _execute() {\n    const { attribute, value } = this._config\n\n    if (attribute === 'id') {\n      return // You have to be kidding\n    }\n\n    if (attribute === 'class') {\n      this._element.classList.toggle(value)\n      return\n    }\n\n    // Compare as strings since getAttribute() always returns a string\n    if (this._element.getAttribute(attribute) === String(value)) {\n      this._element.removeAttribute(attribute)\n      return\n    }\n\n    this._element.setAttribute(attribute, value)\n  }\n}\n\n/**\n * Data API implementation\n */\n\neventActionOnPlugin(Toggler, EVENT_CLICK, SELECTOR_DATA_TOGGLE, 'toggle')\n\nexport default Toggler\n"],"mappings":"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","ignoreList":[]}
\ No newline at end of file
index e86d2e8f36e3e0d0b52035124a0539289e0602b0..f9bc8410575c85cb1cbde9b8867b6377d4130e0e 100644 (file)
@@ -30,7 +30,7 @@ const SELECTOR_DATA_OTP = '[data-bs-otp]';
 const SELECTOR_INPUT = 'input';
 
 // Events that should refresh the active-slot highlight as the caret moves
-const SYNC_EVENTS = ['blur', 'keyup', 'click', 'select'];
+const SYNC_EVENTS = ['blur', 'keyup', 'select'];
 const CLASS_NAME_INPUT = 'otp-input';
 const CLASS_NAME_RENDERED = 'otp-rendered';
 const CLASS_NAME_SLOTS = 'otp-slots';
@@ -87,6 +87,11 @@ class OtpInput extends BaseComponent {
     this._type = TYPES[this._config.type] || TYPES.numeric;
     this._length = this._resolveLength();
     this._slots = [];
+    // Tracks whether focus was triggered by a click so we can respect the
+    // clicked slot instead of jumping to the first empty one
+    this._pointerActive = false;
+    // Slot index from the most recent tap, applied once focus settles
+    this._pointerIndex = 0;
     this._setupInput();
     this._renderSlots();
     this._addEventListeners();
@@ -120,14 +125,16 @@ class OtpInput extends BaseComponent {
   }
   focus() {
     this._input.focus();
-    // Place the caret after the last entered character
-    const end = this._input.value.length;
-    this._input.setSelectionRange(end, end);
+    // Select the first empty slot (or the last one when the value is full)
+    this._selectSlot(this._firstEmptyIndex());
     this._render();
   }
   dispose() {
     EventHandler.off(this._input, 'input', this._onInput);
+    EventHandler.off(this._input, 'beforeinput', this._onBeforeInput);
     EventHandler.off(this._input, 'focus', this._onFocus);
+    EventHandler.off(this._input, 'pointerdown', this._onPointerDown);
+    EventHandler.off(document, 'selectionchange', this._onSelectionChange);
     for (const type of SYNC_EVENTS) {
       EventHandler.off(this._input, type, this._onSync);
     }
@@ -199,30 +206,152 @@ class OtpInput extends BaseComponent {
   }
   _addEventListeners() {
     // Listeners are attached with bare event names (not namespaced) because
-    // `input` is not in EventHandler's native-events list; we keep references
-    // so they can be removed on dispose.
+    // `input`, `beforeinput`, and `selectionchange` are not in EventHandler's
+    // native-events list; we keep references so they can be removed on dispose.
     this._onInput = () => this._handleInput();
-    this._onFocus = () => this.focus();
+    this._onBeforeInput = event => this._handleBeforeInput(event);
+    this._onPointerDown = event => this._handlePointerDown(event);
+    this._onFocus = () => {
+      if (this._pointerActive) {
+        // A tap focused the input natively; position the caret on the clicked
+        // slot now that focus has settled (doing this before native focus would
+        // make iOS/iPadOS raise then immediately dismiss the keyboard)
+        this._pointerActive = false;
+        this._selectSlot(this._pointerIndex);
+        this._render();
+        return;
+      }
+
+      // Keyboard (Tab) focus lands on the first empty slot
+      this._selectSlot(this._firstEmptyIndex());
+      this._render();
+    };
     this._onSync = () => this._render();
+    this._onSelectionChange = () => {
+      if (document.activeElement === this._input) {
+        this._render();
+      }
+    };
     EventHandler.on(this._input, 'input', this._onInput);
+    EventHandler.on(this._input, 'beforeinput', this._onBeforeInput);
     EventHandler.on(this._input, 'focus', this._onFocus);
+    EventHandler.on(this._input, 'pointerdown', this._onPointerDown);
+    EventHandler.on(document, 'selectionchange', this._onSelectionChange);
 
     // Keep the active-slot highlight in sync with the caret
     for (const type of SYNC_EVENTS) {
       EventHandler.on(this._input, type, this._onSync);
     }
   }
+
+  // Bulk path: paste, SMS autofill, or a programmatic value change land here as
+  // a single multi-character `input` event. Single keystrokes are handled by
+  // `_handleBeforeInput` (overwrite semantics) and never reach this method.
   _handleInput() {
     const sanitized = this._sanitize(this._input.value);
     if (sanitized !== this._input.value) {
       this._input.value = sanitized;
     }
+
+    // Place the caret on the first empty slot after a paste/autofill
+    if (document.activeElement === this._input) {
+      this._selectSlot(this._firstEmptyIndex());
+    }
+    this._afterValueChange();
+  }
+
+  // Intercept single-character typing and backspace so each slot is overwritten
+  // in place rather than inserting and shifting the rest of the value. Anything
+  // else (paste, autofill, IME composition) falls through to `_handleInput`.
+  _handleBeforeInput(event) {
+    const {
+      inputType,
+      data
+    } = event;
+    if (inputType === 'insertText' && data && data.length === 1) {
+      event.preventDefault();
+      const char = this._sanitize(data);
+      if (!char) {
+        return;
+      }
+      const index = Math.min(this._input.selectionStart ?? 0, this._length - 1);
+      const chars = [...this._input.value];
+      chars[index] = char;
+      this._input.value = chars.join('').slice(0, this._length);
+      this._selectSlot(index + 1);
+      this._afterValueChange();
+      return;
+    }
+    if (inputType === 'deleteContentBackward') {
+      event.preventDefault();
+      const start = this._input.selectionStart ?? 0;
+      const end = this._input.selectionEnd ?? start;
+      const chars = [...this._input.value];
+      if (end > start) {
+        // A filled slot is selected: clear it and keep the caret in place
+        chars.splice(start, end - start);
+        this._input.value = chars.join('');
+        this._selectSlot(start);
+      } else if (start > 0) {
+        // Collapsed caret: remove the previous character and step back
+        chars.splice(start - 1, 1);
+        this._input.value = chars.join('');
+        this._selectSlot(start - 1);
+      }
+      this._afterValueChange();
+    }
+  }
+  _handlePointerDown(event) {
+    const index = this._slotIndexFromPoint(event.clientX);
+    if (index === null) {
+      return;
+    }
+
+    // Don't let the caret land past the first empty slot
+    const target = Math.min(index, this._firstEmptyIndex());
+    if (document.activeElement === this._input) {
+      // Already focused (keyboard is up): take over caret placement from the
+      // browser. Safe to preventDefault here — it won't dismiss the keyboard.
+      event.preventDefault();
+      this._selectSlot(target);
+      this._render();
+      return;
+    }
+
+    // Not yet focused: let the browser focus the input natively so the
+    // on-screen keyboard is raised by the user's tap. Position the caret in the
+    // focus handler once focus settles.
+    this._pointerActive = true;
+    this._pointerIndex = target;
+  }
+
+  // Map a viewport x-coordinate to the slot under it, clamped to the last slot
+  _slotIndexFromPoint(x) {
+    for (const [index, slot] of this._slots.entries()) {
+      if (x <= slot.getBoundingClientRect().right || index === this._slots.length - 1) {
+        return index;
+      }
+    }
+    return null;
+  }
+  _afterValueChange() {
     this._render();
     EventHandler.trigger(this._element, EVENT_INPUT, {
       value: this._input.value
     });
     this._checkComplete();
   }
+  _firstEmptyIndex() {
+    return Math.min(this._input.value.length, this._length - 1);
+  }
+
+  // Represent the active slot as a selection: a filled slot is selected so the
+  // next keystroke overwrites it; an empty slot gets a collapsed caret.
+  _selectSlot(index) {
+    const clamped = Math.max(0, Math.min(index, this._length - 1));
+    const end = clamped < this._input.value.length ? clamped + 1 : clamped;
+    this._input.setSelectionRange(clamped, end);
+  }
   _sanitize(value) {
     return value.replace(this._type.filter, '').slice(0, this._length);
   }
index 04ebc52a05b82c5aac6a67b62b713e812bbf0214..d8e50c60473b454c1ffa3807ae82dfdd67603f10 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"otp-input.js","sources":["../src/otp-input.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'click', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Place the caret after the last entered character\n    const end = this._input.value.length\n    this._input.setSelectionRange(end, end)\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input` is not in EventHandler's native-events list; we keep references\n    // so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onFocus = () => this.focus()\n    this._onSync = () => this._render()\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    this._render()\n\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n\n    this._checkComplete()\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","filter","alphanumeric","alpha","Default","groups","length","mask","separator","type","DefaultType","OtpInput","BaseComponent","constructor","element","config","_input","SelectorEngine","findOne","_element","_type","_config","_length","_resolveLength","_slots","_setupInput","_renderSlots","_addEventListeners","_render","getValue","value","setValue","_sanitize","String","_checkComplete","clear","focus","end","setSelectionRange","dispose","EventHandler","off","_onInput","_onFocus","_onSync","_slotsContainer","remove","classList","maxLength","Number","parseInt","getAttribute","isNaN","input","add","setAttribute","container","document","createElement","className","groupIndex","inGroup","i","slot","append","push","Array","isArray","textContent","Math","min","_handleInput","on","sanitized","trigger","replace","slice","isFocused","activeElement","caret","selectionStart","index","entries","char","toggle","Boolean","find","getOrCreateInstance"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"otp-input.js","sources":["../src/otp-input.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap otp-input.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport EventHandler from './dom/event-handler.js'\nimport SelectorEngine from './dom/selector-engine.js'\n\n/**\n * Constants\n */\n\nconst NAME = 'otpInput'\nconst DATA_KEY = 'bs.otpInput'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_COMPLETE = `complete${EVENT_KEY}`\nconst EVENT_INPUT = `input${EVENT_KEY}`\nconst EVENT_DOMCONTENT_LOADED = `DOMContentLoaded${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_DATA_OTP = '[data-bs-otp]'\nconst SELECTOR_INPUT = 'input'\n\n// Events that should refresh the active-slot highlight as the caret moves\nconst SYNC_EVENTS = ['blur', 'keyup', 'select']\n\nconst CLASS_NAME_INPUT = 'otp-input'\nconst CLASS_NAME_RENDERED = 'otp-rendered'\nconst CLASS_NAME_SLOTS = 'otp-slots'\nconst CLASS_NAME_SLOT = 'otp-slot'\nconst CLASS_NAME_SLOT_FILLED = 'otp-slot-filled'\nconst CLASS_NAME_SLOT_ACTIVE = 'otp-slot-active'\nconst CLASS_NAME_SEPARATOR = 'otp-separator'\n\nconst MASK_CHARACTER = '•'\n\n// Per-type input mode, validation pattern, and a filter that strips disallowed characters\nconst TYPES = {\n  numeric: { inputmode: 'numeric', pattern: '[0-9]*', filter: /[^0-9]/g },\n  alphanumeric: { inputmode: 'text', pattern: '[A-Za-z0-9]*', filter: /[^A-Za-z0-9]/g },\n  alpha: { inputmode: 'text', pattern: '[A-Za-z]*', filter: /[^A-Za-z]/g }\n}\n\nconst Default = {\n  groups: null,\n  length: null,\n  mask: false,\n  separator: '·',\n  type: 'numeric'\n}\n\nconst DefaultType = {\n  groups: '(array|null)',\n  length: '(number|null)',\n  mask: 'boolean',\n  separator: 'string',\n  type: 'string'\n}\n\n/**\n * Class definition\n */\n\nclass OtpInput extends BaseComponent {\n  constructor(element, config) {\n    super(element, config)\n\n    this._input = SelectorEngine.findOne(SELECTOR_INPUT, this._element)\n    if (!this._input) {\n      return\n    }\n\n    this._type = TYPES[this._config.type] || TYPES.numeric\n    this._length = this._resolveLength()\n    this._slots = []\n    // Tracks whether focus was triggered by a click so we can respect the\n    // clicked slot instead of jumping to the first empty one\n    this._pointerActive = false\n    // Slot index from the most recent tap, applied once focus settles\n    this._pointerIndex = 0\n\n    this._setupInput()\n    this._renderSlots()\n    this._addEventListeners()\n    this._render()\n  }\n\n  // Getters\n  static get Default() {\n    return Default\n  }\n\n  static get DefaultType() {\n    return DefaultType\n  }\n\n  static get NAME() {\n    return NAME\n  }\n\n  // Public\n  getValue() {\n    return this._input.value\n  }\n\n  setValue(value) {\n    this._input.value = this._sanitize(String(value))\n    this._render()\n    this._checkComplete()\n  }\n\n  clear() {\n    this._input.value = ''\n    this._render()\n    this._input.focus()\n  }\n\n  focus() {\n    this._input.focus()\n    // Select the first empty slot (or the last one when the value is full)\n    this._selectSlot(this._firstEmptyIndex())\n    this._render()\n  }\n\n  dispose() {\n    EventHandler.off(this._input, 'input', this._onInput)\n    EventHandler.off(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.off(this._input, 'focus', this._onFocus)\n    EventHandler.off(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.off(document, 'selectionchange', this._onSelectionChange)\n    for (const type of SYNC_EVENTS) {\n      EventHandler.off(this._input, type, this._onSync)\n    }\n\n    this._slotsContainer?.remove()\n    this._element.classList.remove(CLASS_NAME_RENDERED)\n    super.dispose()\n  }\n\n  // Private\n  _resolveLength() {\n    if (this._config.length) {\n      return this._config.length\n    }\n\n    const maxLength = Number.parseInt(this._input.getAttribute('maxlength'), 10)\n    return Number.isNaN(maxLength) || maxLength < 1 ? 6 : maxLength\n  }\n\n  _setupInput() {\n    const input = this._input\n\n    // A single text field backs the whole control so screen readers, password\n    // managers, and SMS autofill treat it like any other input.\n    if (input.type === 'number' || input.type === 'password') {\n      input.type = 'text'\n    }\n\n    input.classList.add(CLASS_NAME_INPUT)\n    input.setAttribute('maxlength', String(this._length))\n    input.setAttribute('inputmode', this._type.inputmode)\n    input.setAttribute('pattern', this._type.pattern)\n\n    if (!input.getAttribute('autocomplete')) {\n      input.setAttribute('autocomplete', 'one-time-code')\n    }\n\n    // Filter any pre-filled value through the configured type\n    if (input.value) {\n      input.value = this._sanitize(input.value)\n    }\n  }\n\n  _renderSlots() {\n    const container = document.createElement('div')\n    container.className = CLASS_NAME_SLOTS\n    container.setAttribute('aria-hidden', 'true')\n\n    const { groups } = this._config\n    let groupIndex = 0\n    let inGroup = 0\n\n    for (let i = 0; i < this._length; i++) {\n      const slot = document.createElement('div')\n      slot.className = CLASS_NAME_SLOT\n      container.append(slot)\n      this._slots.push(slot)\n\n      // Insert a visual separator between configured groups\n      if (Array.isArray(groups) && groups.length > 0) {\n        inGroup++\n        if (inGroup === groups[groupIndex] && i < this._length - 1) {\n          const separator = document.createElement('div')\n          separator.className = CLASS_NAME_SEPARATOR\n          separator.textContent = this._config.separator\n          container.append(separator)\n          groupIndex = Math.min(groupIndex + 1, groups.length - 1)\n          inGroup = 0\n        }\n      }\n    }\n\n    this._slotsContainer = container\n    this._element.append(container)\n    this._element.classList.add(CLASS_NAME_RENDERED)\n  }\n\n  _addEventListeners() {\n    // Listeners are attached with bare event names (not namespaced) because\n    // `input`, `beforeinput`, and `selectionchange` are not in EventHandler's\n    // native-events list; we keep references so they can be removed on dispose.\n    this._onInput = () => this._handleInput()\n    this._onBeforeInput = event => this._handleBeforeInput(event)\n    this._onPointerDown = event => this._handlePointerDown(event)\n    this._onFocus = () => {\n      if (this._pointerActive) {\n        // A tap focused the input natively; position the caret on the clicked\n        // slot now that focus has settled (doing this before native focus would\n        // make iOS/iPadOS raise then immediately dismiss the keyboard)\n        this._pointerActive = false\n        this._selectSlot(this._pointerIndex)\n        this._render()\n        return\n      }\n\n      // Keyboard (Tab) focus lands on the first empty slot\n      this._selectSlot(this._firstEmptyIndex())\n      this._render()\n    }\n\n    this._onSync = () => this._render()\n    this._onSelectionChange = () => {\n      if (document.activeElement === this._input) {\n        this._render()\n      }\n    }\n\n    EventHandler.on(this._input, 'input', this._onInput)\n    EventHandler.on(this._input, 'beforeinput', this._onBeforeInput)\n    EventHandler.on(this._input, 'focus', this._onFocus)\n    EventHandler.on(this._input, 'pointerdown', this._onPointerDown)\n    EventHandler.on(document, 'selectionchange', this._onSelectionChange)\n\n    // Keep the active-slot highlight in sync with the caret\n    for (const type of SYNC_EVENTS) {\n      EventHandler.on(this._input, type, this._onSync)\n    }\n  }\n\n  // Bulk path: paste, SMS autofill, or a programmatic value change land here as\n  // a single multi-character `input` event. Single keystrokes are handled by\n  // `_handleBeforeInput` (overwrite semantics) and never reach this method.\n  _handleInput() {\n    const sanitized = this._sanitize(this._input.value)\n    if (sanitized !== this._input.value) {\n      this._input.value = sanitized\n    }\n\n    // Place the caret on the first empty slot after a paste/autofill\n    if (document.activeElement === this._input) {\n      this._selectSlot(this._firstEmptyIndex())\n    }\n\n    this._afterValueChange()\n  }\n\n  // Intercept single-character typing and backspace so each slot is overwritten\n  // in place rather than inserting and shifting the rest of the value. Anything\n  // else (paste, autofill, IME composition) falls through to `_handleInput`.\n  _handleBeforeInput(event) {\n    const { inputType, data } = event\n\n    if (inputType === 'insertText' && data && data.length === 1) {\n      event.preventDefault()\n\n      const char = this._sanitize(data)\n      if (!char) {\n        return\n      }\n\n      const index = Math.min(this._input.selectionStart ?? 0, this._length - 1)\n      const chars = [...this._input.value]\n      chars[index] = char\n      this._input.value = chars.join('').slice(0, this._length)\n\n      this._selectSlot(index + 1)\n      this._afterValueChange()\n      return\n    }\n\n    if (inputType === 'deleteContentBackward') {\n      event.preventDefault()\n\n      const start = this._input.selectionStart ?? 0\n      const end = this._input.selectionEnd ?? start\n      const chars = [...this._input.value]\n\n      if (end > start) {\n        // A filled slot is selected: clear it and keep the caret in place\n        chars.splice(start, end - start)\n        this._input.value = chars.join('')\n        this._selectSlot(start)\n      } else if (start > 0) {\n        // Collapsed caret: remove the previous character and step back\n        chars.splice(start - 1, 1)\n        this._input.value = chars.join('')\n        this._selectSlot(start - 1)\n      }\n\n      this._afterValueChange()\n    }\n  }\n\n  _handlePointerDown(event) {\n    const index = this._slotIndexFromPoint(event.clientX)\n    if (index === null) {\n      return\n    }\n\n    // Don't let the caret land past the first empty slot\n    const target = Math.min(index, this._firstEmptyIndex())\n\n    if (document.activeElement === this._input) {\n      // Already focused (keyboard is up): take over caret placement from the\n      // browser. Safe to preventDefault here — it won't dismiss the keyboard.\n      event.preventDefault()\n      this._selectSlot(target)\n      this._render()\n      return\n    }\n\n    // Not yet focused: let the browser focus the input natively so the\n    // on-screen keyboard is raised by the user's tap. Position the caret in the\n    // focus handler once focus settles.\n    this._pointerActive = true\n    this._pointerIndex = target\n  }\n\n  // Map a viewport x-coordinate to the slot under it, clamped to the last slot\n  _slotIndexFromPoint(x) {\n    for (const [index, slot] of this._slots.entries()) {\n      if (x <= slot.getBoundingClientRect().right || index === this._slots.length - 1) {\n        return index\n      }\n    }\n\n    return null\n  }\n\n  _afterValueChange() {\n    this._render()\n    EventHandler.trigger(this._element, EVENT_INPUT, { value: this._input.value })\n    this._checkComplete()\n  }\n\n  _firstEmptyIndex() {\n    return Math.min(this._input.value.length, this._length - 1)\n  }\n\n  // Represent the active slot as a selection: a filled slot is selected so the\n  // next keystroke overwrites it; an empty slot gets a collapsed caret.\n  _selectSlot(index) {\n    const clamped = Math.max(0, Math.min(index, this._length - 1))\n    const end = clamped < this._input.value.length ? clamped + 1 : clamped\n    this._input.setSelectionRange(clamped, end)\n  }\n\n  _sanitize(value) {\n    return value.replace(this._type.filter, '').slice(0, this._length)\n  }\n\n  _render() {\n    const { value } = this._input\n    const isFocused = document.activeElement === this._input\n    // The active slot follows the caret, clamped to the last slot when the value is full\n    const caret = Math.min(this._input.selectionStart ?? value.length, this._length - 1)\n\n    for (const [index, slot] of this._slots.entries()) {\n      const char = value[index] ?? ''\n      slot.textContent = char && this._config.mask ? MASK_CHARACTER : char\n      slot.classList.toggle(CLASS_NAME_SLOT_FILLED, Boolean(char))\n      slot.classList.toggle(CLASS_NAME_SLOT_ACTIVE, isFocused && index === caret)\n    }\n  }\n\n  _checkComplete() {\n    const { value } = this._input\n    if (value.length === this._length) {\n      EventHandler.trigger(this._element, EVENT_COMPLETE, { value })\n    }\n  }\n}\n\n/**\n * Data API implementation\n */\n\nEventHandler.on(document, EVENT_DOMCONTENT_LOADED, () => {\n  for (const element of SelectorEngine.find(SELECTOR_DATA_OTP)) {\n    OtpInput.getOrCreateInstance(element)\n  }\n})\n\nexport default OtpInput\n"],"names":["NAME","DATA_KEY","EVENT_KEY","DATA_API_KEY","EVENT_COMPLETE","EVENT_INPUT","EVENT_DOMCONTENT_LOADED","SELECTOR_DATA_OTP","SELECTOR_INPUT","SYNC_EVENTS","CLASS_NAME_INPUT","CLASS_NAME_RENDERED","CLASS_NAME_SLOTS","CLASS_NAME_SLOT","CLASS_NAME_SLOT_FILLED","CLASS_NAME_SLOT_ACTIVE","CLASS_NAME_SEPARATOR","MASK_CHARACTER","TYPES","numeric","inputmode","pattern","filter","alphanumeric","alpha","Default","groups","length","mask","separator","type","DefaultType","OtpInput","BaseComponent","constructor","element","config","_input","SelectorEngine","findOne","_element","_type","_config","_length","_resolveLength","_slots","_pointerActive","_pointerIndex","_setupInput","_renderSlots","_addEventListeners","_render","getValue","value","setValue","_sanitize","String","_checkComplete","clear","focus","_selectSlot","_firstEmptyIndex","dispose","EventHandler","off","_onInput","_onBeforeInput","_onFocus","_onPointerDown","document","_onSelectionChange","_onSync","_slotsContainer","remove","classList","maxLength","Number","parseInt","getAttribute","isNaN","input","add","setAttribute","container","createElement","className","groupIndex","inGroup","i","slot","append","push","Array","isArray","textContent","Math","min","_handleInput","event","_handleBeforeInput","_handlePointerDown","activeElement","on","sanitized","_afterValueChange","inputType","data","preventDefault","char","index","selectionStart","chars","join","slice","start","end","selectionEnd","splice","_slotIndexFromPoint","clientX","target","x","entries","getBoundingClientRect","right","trigger","clamped","max","setSelectionRange","replace","isFocused","caret","toggle","Boolean","find","getOrCreateInstance"],"mappings":"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"}
\ No newline at end of file