@mhmo91/schmancy 0.9.11 → 0.9.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{area-BafkBc1f.cjs → area-CBjmKtN-.cjs} +1 -1
- package/dist/{area-BafkBc1f.cjs.map → area-CBjmKtN-.cjs.map} +1 -1
- package/dist/{area-D03HRn1L.js → area-CjX0Ckh9.js} +1 -1
- package/dist/{area-D03HRn1L.js.map → area-CjX0Ckh9.js.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-BeLg4A3T.cjs → autocomplete-WQxz4VGO.cjs} +1 -1
- package/dist/{autocomplete-BeLg4A3T.cjs.map → autocomplete-WQxz4VGO.cjs.map} +1 -1
- package/dist/{autocomplete-BotVnTfP.js → autocomplete-ppoaK_GD.js} +2 -2
- package/dist/{autocomplete-BotVnTfP.js.map → autocomplete-ppoaK_GD.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-4hSLFsGy.cjs → boat-C-T9RDiG.cjs} +1 -1
- package/dist/{boat-4hSLFsGy.cjs.map → boat-C-T9RDiG.cjs.map} +1 -1
- package/dist/{boat-C1wGdoaF.js → boat-C4JnoakD.js} +1 -1
- package/dist/{boat-C1wGdoaF.js.map → boat-C4JnoakD.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/{busy-C0qP0TiL.cjs → busy-BMRUS_Ns.cjs} +1 -1
- package/dist/{busy-C0qP0TiL.cjs.map → busy-BMRUS_Ns.cjs.map} +1 -1
- package/dist/{busy-D74-XaFn.js → busy-DuV4A5PX.js} +1 -1
- package/dist/{busy-D74-XaFn.js.map → busy-DuV4A5PX.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +3 -3
- package/dist/{card-Bht1QcYl.cjs → card-DBjGfCxi.cjs} +1 -1
- package/dist/{card-Bht1QcYl.cjs.map → card-DBjGfCxi.cjs.map} +1 -1
- package/dist/{card-DiNYPJ9b.js → card-DzXRouJC.js} +1 -1
- package/dist/{card-DiNYPJ9b.js.map → card-DzXRouJC.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.js +1 -1
- package/dist/{checkbox-CRzu7URt.cjs → checkbox-BibOr-sJ.cjs} +1 -1
- package/dist/{checkbox-CRzu7URt.cjs.map → checkbox-BibOr-sJ.cjs.map} +1 -1
- package/dist/{checkbox-dRBf89qt.js → checkbox-BwuhSBDG.js} +1 -1
- package/dist/{checkbox-dRBf89qt.js.map → checkbox-BwuhSBDG.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-CXknD-vY.cjs → chips-D5QvIKt6.cjs} +1 -1
- package/dist/{chips-CXknD-vY.cjs.map → chips-D5QvIKt6.cjs.map} +1 -1
- package/dist/{chips-Bma_B3J-.js → chips-DiB2BfTQ.js} +3 -3
- package/dist/{chips-Bma_B3J-.js.map → chips-DiB2BfTQ.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/{code-highlight-DjiyaDcX.js → code-highlight-B5_zONzv.js} +1 -1
- package/dist/{code-highlight-DjiyaDcX.js.map → code-highlight-B5_zONzv.js.map} +1 -1
- package/dist/{code-highlight-BROOsNA_.cjs → code-highlight-Q2x2hrWg.cjs} +1 -1
- package/dist/{code-highlight-BROOsNA_.cjs.map → code-highlight-Q2x2hrWg.cjs.map} +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{components-DKgu88mm.js → components-CjLqW8Jp.js} +1 -1
- package/dist/{components-DKgu88mm.js.map → components-CjLqW8Jp.js.map} +1 -1
- package/dist/{components-ubXwQbGs.cjs → components-jfFxyq6z.cjs} +1 -1
- package/dist/{components-ubXwQbGs.cjs.map → components-jfFxyq6z.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/context-BRtGc7PP.cjs +1 -0
- package/dist/{context-B81Q3U_1.cjs.map → context-BRtGc7PP.cjs.map} +1 -1
- package/dist/context-DgD3c6q-.js +3 -0
- package/dist/{context-Dnj4ofbV.js.map → context-DgD3c6q-.js.map} +1 -1
- package/dist/{date-range-n_xPONd5.cjs → date-range-DF5ROfrb.cjs} +1 -1
- package/dist/{date-range-n_xPONd5.cjs.map → date-range-DF5ROfrb.cjs.map} +1 -1
- package/dist/{date-range-CwqFuGGK.js → date-range-Dcy8GSov.js} +2 -2
- package/dist/{date-range-CwqFuGGK.js.map → date-range-Dcy8GSov.js.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-Bkd3SOTy.js → delay-B7TvigGw.js} +3 -3
- package/dist/{delay-Bkd3SOTy.js.map → delay-B7TvigGw.js.map} +1 -1
- package/dist/{delay-BFpu_Yz9.cjs → delay-aQRihOO4.cjs} +1 -1
- package/dist/{delay-BFpu_Yz9.cjs.map → delay-aQRihOO4.cjs.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-Bal2g3J4.cjs → details-Cs8yStsJ.cjs} +1 -1
- package/dist/{details-Bal2g3J4.cjs.map → details-Cs8yStsJ.cjs.map} +1 -1
- package/dist/{details-DZq61CD5.js → details-DfYDNHuv.js} +1 -1
- package/dist/{details-DZq61CD5.js.map → details-DfYDNHuv.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-ChK7lCQF.js → divider-DE9pcMw3.js} +1 -1
- package/dist/{divider-ChK7lCQF.js.map → divider-DE9pcMw3.js.map} +1 -1
- package/dist/{divider-RjZbewe8.cjs → divider-DY4ocl-Z.cjs} +1 -1
- package/dist/{divider-RjZbewe8.cjs.map → divider-DY4ocl-Z.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +2 -2
- package/dist/{expand-DwZKr9hD.cjs → expand-Cuu9u0j5.cjs} +1 -1
- package/dist/{expand-DwZKr9hD.cjs.map → expand-Cuu9u0j5.cjs.map} +1 -1
- package/dist/{expand-CUrWPZu-.js → expand-Cwis2Y6U.js} +2 -2
- package/dist/{expand-CUrWPZu-.js.map → expand-Cwis2Y6U.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-BE9p8l3U.cjs → extra-DRIgrdHx.cjs} +1 -1
- package/dist/{extra-BE9p8l3U.cjs.map → extra-DRIgrdHx.cjs.map} +1 -1
- package/dist/{extra-C7xp1GQG.js → extra-DoxLBpZ-.js} +1 -1
- package/dist/{extra-C7xp1GQG.js.map → extra-DoxLBpZ-.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{float-kRCgEf_1.js → float-2aPqW2lz.js} +1 -1
- package/dist/{float-kRCgEf_1.js.map → float-2aPqW2lz.js.map} +1 -1
- package/dist/{float-DoHSvH7R.cjs → float-I4wePTk7.cjs} +1 -1
- package/dist/{float-DoHSvH7R.cjs.map → float-I4wePTk7.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{icons-D93IZn6-.js → icons-DDQBxhDC.js} +2 -2
- package/dist/{icons-D93IZn6-.js.map → icons-DDQBxhDC.js.map} +1 -1
- package/dist/{icons-Bz84Dr-q.cjs → icons-UOqapID2.cjs} +1 -1
- package/dist/{icons-Bz84Dr-q.cjs.map → icons-UOqapID2.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-DyOg96rn.js → iframe-CMTUyiz1.js} +1 -1
- package/dist/{iframe-DyOg96rn.js.map → iframe-CMTUyiz1.js.map} +1 -1
- package/dist/{iframe-Cmanzy9x.cjs → iframe-FZCULDVM.cjs} +1 -1
- package/dist/{iframe-Cmanzy9x.cjs.map → iframe-FZCULDVM.cjs.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +31 -31
- package/dist/{input-chip-B4uw64rQ.js → input-chip-Bt2Lzi-2.js} +1 -1
- package/dist/{input-chip-B4uw64rQ.js.map → input-chip-Bt2Lzi-2.js.map} +1 -1
- package/dist/{input-chip-DY9IEbQj.cjs → input-chip-nghCxe9L.cjs} +1 -1
- package/dist/{input-chip-DY9IEbQj.cjs.map → input-chip-nghCxe9L.cjs.map} +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.js +2 -2
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +1 -1
- package/dist/{layout-D7OCZ8rE.js → layout-BUq6VVj0.js} +2 -2
- package/dist/{layout-D7OCZ8rE.js.map → layout-BUq6VVj0.js.map} +1 -1
- package/dist/{layout-DIuACbuC.cjs → layout-DHt4hK1n.cjs} +1 -1
- package/dist/{layout-DIuACbuC.cjs.map → layout-DHt4hK1n.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/{lightbox-DFbqNGoX.cjs → lightbox-CbAbyhzE.cjs} +1 -1
- package/dist/{lightbox-DFbqNGoX.cjs.map → lightbox-CbAbyhzE.cjs.map} +1 -1
- package/dist/{lightbox-DL-v1tk9.js → lightbox-p_uYC9Hy.js} +2 -2
- package/dist/{lightbox-DL-v1tk9.js.map → lightbox-p_uYC9Hy.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-DZTLJ-2e.js → list-DG1shv4_.js} +2 -2
- package/dist/{list-DZTLJ-2e.js.map → list-DG1shv4_.js.map} +1 -1
- package/dist/{list-D99W7WvC.cjs → list-pvbKwpnz.cjs} +1 -1
- package/dist/{list-D99W7WvC.cjs.map → list-pvbKwpnz.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-D6ZHgGZv.js → litElement.mixin-BLb2kIHg.js} +1 -1
- package/dist/{litElement.mixin-D6ZHgGZv.js.map → litElement.mixin-BLb2kIHg.js.map} +1 -1
- package/dist/{litElement.mixin-De5SG5z7.cjs → litElement.mixin-Bx9Avv0M.cjs} +1 -1
- package/dist/{litElement.mixin-De5SG5z7.cjs.map → litElement.mixin-Bx9Avv0M.cjs.map} +1 -1
- package/dist/{mailbox-BBV6hDAa.js → mailbox-BCRplIro.js} +4 -4
- package/dist/{mailbox-BBV6hDAa.js.map → mailbox-BCRplIro.js.map} +1 -1
- package/dist/{mailbox-CW7zc0v-.cjs → mailbox-CZevIxwZ.cjs} +1 -1
- package/dist/{mailbox-CW7zc0v-.cjs.map → mailbox-CZevIxwZ.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-PvojF8B3.js → map-BUcxWqBH.js} +1 -1
- package/dist/{map-PvojF8B3.js.map → map-BUcxWqBH.js.map} +1 -1
- package/dist/{map-CSQMA89X.cjs → map-C6kDkAju.cjs} +1 -1
- package/dist/{map-CSQMA89X.cjs.map → map-C6kDkAju.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{menu-B_o1fOPW.js → menu-BleltblR.js} +1 -1
- package/dist/{menu-B_o1fOPW.js.map → menu-BleltblR.js.map} +1 -1
- package/dist/{menu-3XXOfmrj.cjs → menu-DhmDz_js.cjs} +1 -1
- package/dist/{menu-3XXOfmrj.cjs.map → menu-DhmDz_js.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +2 -2
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-NnsatHAh.cjs → notification-BT84PlwC.cjs} +1 -1
- package/dist/{notification-NnsatHAh.cjs.map → notification-BT84PlwC.cjs.map} +1 -1
- package/dist/{notification-BMtrJG-Y.js → notification-DvrozLTu.js} +2 -2
- package/dist/{notification-BMtrJG-Y.js.map → notification-DvrozLTu.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-CNzW-sdU.js → option-EEYkHd44.js} +1 -1
- package/dist/{option-CNzW-sdU.js.map → option-EEYkHd44.js.map} +1 -1
- package/dist/{option-DxIFpYpC.cjs → option-y5FY8sz-.cjs} +1 -1
- package/dist/{option-DxIFpYpC.cjs.map → option-y5FY8sz-.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/page.cjs +1 -1
- package/dist/page.js +2 -2
- package/dist/{progress-Cw6Qn3Kb.cjs → progress-B1if5cWu.cjs} +1 -1
- package/dist/{progress-Cw6Qn3Kb.cjs.map → progress-B1if5cWu.cjs.map} +1 -1
- package/dist/{progress-DHmYCHmy.js → progress-B8nfhvrc.js} +1 -1
- package/dist/{progress-DHmYCHmy.js.map → progress-B8nfhvrc.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{provide-C4L6R1lo.js → provide-BEMtticm.js} +1 -1
- package/dist/{provide-C4L6R1lo.js.map → provide-BEMtticm.js.map} +1 -1
- package/dist/{provide-Dsoh3FdP.cjs → provide-BbFbvIEk.cjs} +1 -1
- package/dist/{provide-Dsoh3FdP.cjs.map → provide-BbFbvIEk.cjs.map} +1 -1
- package/dist/qr-scanner.cjs +1 -1
- package/dist/qr-scanner.js +1 -1
- package/dist/{radio-group-DneItRXU.js → radio-group-DKXbC-jL.js} +1 -1
- package/dist/{radio-group-DneItRXU.js.map → radio-group-DKXbC-jL.js.map} +1 -1
- package/dist/{radio-group-xgKQTd6h.cjs → radio-group-DafTK0PB.cjs} +1 -1
- package/dist/{radio-group-xgKQTd6h.cjs.map → radio-group-DafTK0PB.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +1 -1
- package/dist/range.js +1 -1
- package/dist/{scroll-DZAB4JFv.cjs → scroll-C6Hub5gG.cjs} +1 -1
- package/dist/{scroll-DZAB4JFv.cjs.map → scroll-C6Hub5gG.cjs.map} +1 -1
- package/dist/{scroll-D7QJYev7.js → scroll-pdsp_9bT.js} +1 -1
- package/dist/{scroll-D7QJYev7.js.map → scroll-pdsp_9bT.js.map} +1 -1
- package/dist/{select-D2eLEDUT.cjs → select-Zg9UqtCA.cjs} +1 -1
- package/dist/{select-D2eLEDUT.cjs.map → select-Zg9UqtCA.cjs.map} +1 -1
- package/dist/{select-B2T3RZng.js → select-_Qkleofb.js} +1 -1
- package/dist/{select-B2T3RZng.js.map → select-_Qkleofb.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-NaecDxuR.cjs → sheet-7LWVKgW9.cjs} +1 -1
- package/dist/{sheet-NaecDxuR.cjs.map → sheet-7LWVKgW9.cjs.map} +1 -1
- package/dist/{sheet-BiGXZPdu.js → sheet-N9TET_t_.js} +3 -3
- package/dist/{sheet-BiGXZPdu.js.map → sheet-N9TET_t_.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-gek7Spb6.js → sheet.service-DCe4FOkQ.js} +1 -1
- package/dist/{sheet.service-gek7Spb6.js.map → sheet.service-DCe4FOkQ.js.map} +1 -1
- package/dist/{sheet.service-CQq5hUNb.cjs → sheet.service-P2CkJW86.cjs} +1 -1
- package/dist/{sheet.service-CQq5hUNb.cjs.map → sheet.service-P2CkJW86.cjs.map} +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/skills/SKILL.md +5 -3
- package/dist/skills/schmancy/SKILL.md +5 -3
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{splash-screen-Dc6LDIbK.js → splash-screen-B5Sgz7eG.js} +1 -1
- package/dist/{splash-screen-Dc6LDIbK.js.map → splash-screen-B5Sgz7eG.js.map} +1 -1
- package/dist/{splash-screen-CxPHf-SC.cjs → splash-screen-BUKRc46i.cjs} +1 -1
- package/dist/{splash-screen-CxPHf-SC.cjs.map → splash-screen-BUKRc46i.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-BYrvfmFF.js → src-59eVZMmI.js} +40 -40
- package/dist/{src-BYrvfmFF.js.map → src-59eVZMmI.js.map} +1 -1
- package/dist/{src-BP8bYUHc.cjs → src-r2bV-AFk.cjs} +1 -1
- package/dist/{src-BP8bYUHc.cjs.map → src-r2bV-AFk.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +3 -3
- package/dist/{surface-C9plkl5F.cjs → surface-B-y5Zzmz.cjs} +1 -1
- package/dist/{surface-C9plkl5F.cjs.map → surface-B-y5Zzmz.cjs.map} +1 -1
- package/dist/{surface-B2cmGNZ2.js → surface-BL6YlaS3.js} +2 -2
- package/dist/{surface-B2cmGNZ2.js.map → surface-BL6YlaS3.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/{table-BCJgjSvq.js → table-B0-Pi4G5.js} +1 -1
- package/dist/{table-BCJgjSvq.js.map → table-B0-Pi4G5.js.map} +1 -1
- package/dist/{table-6xNLZh3K.cjs → table-CzcIcVFc.cjs} +1 -1
- package/dist/{table-6xNLZh3K.cjs.map → table-CzcIcVFc.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-pvevSaFB.cjs → tabs-CzC8kJyY.cjs} +1 -1
- package/dist/{tabs-pvevSaFB.cjs.map → tabs-CzC8kJyY.cjs.map} +1 -1
- package/dist/{tabs-BDqvhB54.js → tabs-D-VbZiFu.js} +2 -2
- package/dist/{tabs-BDqvhB54.js.map → tabs-D-VbZiFu.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-BCz3GEpw.js +219 -0
- package/dist/{tailwind.mixin-ywtUNG2c.js.map → tailwind.mixin-BCz3GEpw.js.map} +1 -1
- package/dist/tailwind.mixin-ZzkXQTFA.cjs +2 -0
- package/dist/{tailwind.mixin-Bug3G6K6.cjs.map → tailwind.mixin-ZzkXQTFA.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-D2v000gK.cjs → textarea-CgB6XptL.cjs} +1 -1
- package/dist/{textarea-D2v000gK.cjs.map → textarea-CgB6XptL.cjs.map} +1 -1
- package/dist/{textarea-BvZn41aa.js → textarea-ZopeteYQ.js} +1 -1
- package/dist/{textarea-BvZn41aa.js.map → textarea-ZopeteYQ.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-JvXazXJr.js → theme-C7As-iVa.js} +3 -3
- package/dist/{theme-JvXazXJr.js.map → theme-C7As-iVa.js.map} +1 -1
- package/dist/{theme-Dw9Ag_VS.cjs → theme-D9bRCDs9.cjs} +1 -1
- package/dist/{theme-Dw9Ag_VS.cjs.map → theme-D9bRCDs9.cjs.map} +1 -1
- package/dist/{theme-button-Bh8wKXtV.js → theme-button-BDXtIhZC.js} +1 -1
- package/dist/{theme-button-Bh8wKXtV.js.map → theme-button-BDXtIhZC.js.map} +1 -1
- package/dist/{theme-button-qHd4AFsE.cjs → theme-button-D2nMfwSr.cjs} +1 -1
- package/dist/{theme-button-qHd4AFsE.cjs.map → theme-button-D2nMfwSr.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +2 -2
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-C5uDB2Lu.cjs → typewriter-BjuFsiR3.cjs} +1 -1
- package/dist/{typewriter-C5uDB2Lu.cjs.map → typewriter-BjuFsiR3.cjs.map} +1 -1
- package/dist/{typewriter-PpYJFsVi.js → typewriter-DaTkMEHc.js} +3 -3
- package/dist/{typewriter-PpYJFsVi.js.map → typewriter-DaTkMEHc.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-Czfu-i4Y.cjs → window-DAWRoXo1.cjs} +1 -1
- package/dist/{window-Czfu-i4Y.cjs.map → window-DAWRoXo1.cjs.map} +1 -1
- package/dist/{window-ChDgkb97.js → window-DPSIGCUq.js} +1 -1
- package/dist/{window-ChDgkb97.js.map → window-DPSIGCUq.js.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/SKILL.md +5 -3
- package/dist/context-B81Q3U_1.cjs +0 -1
- package/dist/context-Dnj4ofbV.js +0 -3
- package/dist/tailwind.mixin-Bug3G6K6.cjs +0 -2
- package/dist/tailwind.mixin-ywtUNG2c.js +0 -219
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"window-ChDgkb97.js","names":[],"sources":["../src/window/window-manager.ts","../src/window/window-position.ts","../src/window/window.ts"],"sourcesContent":["/**\n * Window Manager — singleton service for multi-window coordination.\n *\n * Tracks all schmancy-window instances: positions, z-indices, focus, visual states.\n * Components register on connectedCallback, unregister on disconnectedCallback.\n * Focus changes, position updates, and overlap queries all flow through here.\n *\n * Follows the ThemeService singleton pattern (theme/theme.service.ts).\n *\n * Example:\n * windowManager.register('chat-1', bounds, 'bottom-right')\n * windowManager.focus('chat-1') // bumps z-index, updates focusedId\n * const overlaps = windowManager.findOverlaps(projectedBounds, 'chat-1')\n */\n\nimport { BehaviorSubject, Observable, distinctUntilChanged, map } from 'rxjs'\nimport { overlayStack } from '../utils/overlay-stack.js'\nimport type { WindowBounds, WindowRecord, WindowRegistryState, SnapTarget } from './window-registry.js'\n\nconst STORAGE_PREFIX = 'schmancy-window-'\nconst LEGACY_STORAGE_PREFIX = 'schmancy-float-'\n\nclass WindowManagerService {\n\tprivate static instance: WindowManagerService\n\n\tprivate readonly _state$ = new BehaviorSubject<WindowRegistryState>({\n\t\twindows: new Map(),\n\t\tfocusedId: null,\n\t\tstackOrder: [],\n\t})\n\n\treadonly state$ = this._state$.asObservable()\n\n\tprivate constructor() {}\n\n\tstatic getInstance(): WindowManagerService {\n\t\tif (!WindowManagerService.instance) {\n\t\t\tWindowManagerService.instance = new WindowManagerService()\n\t\t}\n\t\treturn WindowManagerService.instance\n\t}\n\n\t// ── Synchronous accessors ──────────────────────────────────────────\n\n\tget windows(): Map<string, WindowRecord> {\n\t\treturn this._state$.value.windows\n\t}\n\n\tget focusedId(): string | null {\n\t\treturn this._state$.value.focusedId\n\t}\n\n\t// ── Registration ───────────────────────────────────────────────────\n\n\tregister(id: string, initialBounds: WindowBounds, snapTarget: SnapTarget): void {\n\t\tconst state = this._state$.value\n\t\tif (state.windows.has(id)) return\n\n\t\tconst zIndex = overlayStack.assignZIndex(id)\n\t\tconst record: WindowRecord = {\n\t\t\tid,\n\t\t\tbounds: initialBounds,\n\t\t\tvisualState: 'normal',\n\t\t\tzIndex,\n\t\t\topen: false,\n\t\t\tsnapTarget,\n\t\t}\n\n\t\tconst windows = new Map(state.windows)\n\t\twindows.set(id, record)\n\t\tconst stackOrder = overlayStack.getStackOrder()\n\n\t\tthis._state$.next({ ...state, windows, stackOrder })\n\t}\n\n\tunregister(id: string): void {\n\t\tconst state = this._state$.value\n\t\tif (!state.windows.has(id)) return\n\n\t\toverlayStack.releaseId(id)\n\t\tconst windows = new Map(state.windows)\n\t\twindows.delete(id)\n\t\tconst stackOrder = overlayStack.getStackOrder()\n\t\tconst focusedId = state.focusedId === id ? null : state.focusedId\n\n\t\tthis._state$.next({ ...state, windows, stackOrder, focusedId })\n\t}\n\n\t// ── State mutations ────────────────────────────────────────────────\n\n\tupdateBounds(id: string, bounds: WindowBounds): void {\n\t\tthis._updateRecord(id, { bounds })\n\t}\n\n\tupdateVisualState(id: string, visualState: WindowRecord['visualState']): void {\n\t\tthis._updateRecord(id, { visualState })\n\t}\n\n\tupdateOpen(id: string, open: boolean): void {\n\t\tthis._updateRecord(id, { open })\n\t}\n\n\tfocus(id: string): void {\n\t\tconst state = this._state$.value\n\t\tif (!state.windows.has(id)) return\n\t\tif (state.focusedId === id) return\n\n\t\tconst zIndex = overlayStack.bringToFront(id)\n\t\tconst windows = new Map(state.windows)\n\t\tconst record = windows.get(id)\n\t\tif (record) {\n\t\t\twindows.set(id, { ...record, zIndex })\n\t\t}\n\t\tconst stackOrder = overlayStack.getStackOrder()\n\n\t\tthis._state$.next({ ...state, windows, stackOrder, focusedId: id })\n\t}\n\n\t// ── Queries ────────────────────────────────────────────────────────\n\n\tfindOverlaps(bounds: WindowBounds, excludeId: string): WindowRecord[] {\n\t\tconst result: WindowRecord[] = []\n\t\tfor (const [id, record] of this._state$.value.windows) {\n\t\t\tif (id === excludeId) continue\n\t\t\tif (rectsOverlap(bounds, record.bounds)) {\n\t\t\t\tresult.push(record)\n\t\t\t}\n\t\t}\n\t\treturn result\n\t}\n\n\tgetNeighbors(id: string): WindowRecord[] {\n\t\tconst result: WindowRecord[] = []\n\t\tfor (const [otherId, record] of this._state$.value.windows) {\n\t\t\tif (otherId !== id) result.push(record)\n\t\t}\n\t\treturn result\n\t}\n\n\t// ── Selectors ──────────────────────────────────────────────────────\n\n\tselectWindow(id: string): Observable<WindowRecord | undefined> {\n\t\treturn this._state$.pipe(\n\t\t\tmap(state => state.windows.get(id)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t}\n\n\tselectFocused(): Observable<string | null> {\n\t\treturn this._state$.pipe(\n\t\t\tmap(state => state.focusedId),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t}\n\n\t// ── Persistence ────────────────────────────────────────────────────\n\n\tloadPosition(id: string): { x: number; y: number; anchor: string } | null {\n\t\ttry {\n\t\t\t// Try new key first, fall back to legacy\n\t\t\tconst raw = localStorage.getItem(STORAGE_PREFIX + id) ?? localStorage.getItem(LEGACY_STORAGE_PREFIX + id)\n\t\t\tif (!raw) return null\n\t\t\treturn JSON.parse(raw) as { x: number; y: number; anchor: string }\n\t\t} catch {\n\t\t\treturn null\n\t\t}\n\t}\n\n\tsavePosition(id: string, data: { x: number; y: number; anchor: string }): void {\n\t\ttry {\n\t\t\tlocalStorage.setItem(STORAGE_PREFIX + id, JSON.stringify(data))\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\t}\n\n\tclearPosition(id: string): void {\n\t\ttry {\n\t\t\tlocalStorage.removeItem(STORAGE_PREFIX + id)\n\t\t\tlocalStorage.removeItem(LEGACY_STORAGE_PREFIX + id)\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\t}\n\n\t// ── Internal ───────────────────────────────────────────────────────\n\n\tprivate _updateRecord(id: string, updates: Partial<WindowRecord>): void {\n\t\tconst state = this._state$.value\n\t\tconst record = state.windows.get(id)\n\t\tif (!record) return\n\n\t\tconst windows = new Map(state.windows)\n\t\twindows.set(id, { ...record, ...updates })\n\t\tthis._state$.next({ ...state, windows })\n\t}\n}\n\n/** Simple rect overlap check (inline — no circular import with window-position) */\nfunction rectsOverlap(a: WindowBounds, b: WindowBounds): boolean {\n\treturn !(a.left >= b.left + b.width || a.left + a.width <= b.left || a.top >= b.top + b.height || a.top + a.height <= b.top)\n}\n\nexport const windowManager = WindowManagerService.getInstance()\n","/**\n * Window Position — pure functions for overlap resolution, cascade, and snapping.\n *\n * All functions are stateless: they take window bounds and viewport dimensions,\n * return new bounds. No side effects, no DOM access, no subscriptions.\n *\n * Example:\n * const projected = { left: 100, top: 400, width: 360, height: 500 }\n * const neighbors = windowManager.findOverlaps(projected, 'my-id')\n * const resolved = resolveOverlap(projected, neighbors, { width: 1440, height: 900 })\n * // → { left: 144, top: 444, width: 360, height: 500 } (cascaded away from conflict)\n */\n\nimport type { WindowBounds, WindowRecord } from './window-registry.js'\n\nconst HEAD_HEIGHT = 44\nconst CASCADE_OFFSET = HEAD_HEIGHT\nconst MAX_CASCADE_ATTEMPTS = 10\n\n/** Check if two rectangles overlap (edges touching does NOT count as overlap) */\nexport function rectsOverlap(a: WindowBounds, b: WindowBounds): boolean {\n\treturn !(a.left >= b.left + b.width || a.left + a.width <= b.left || a.top >= b.top + b.height || a.top + a.height <= b.top)\n}\n\n/**\n * Resolve overlap by cascading diagonally until no conflict.\n * Shifts by (HEAD_HEIGHT, HEAD_HEIGHT) per attempt, clamped to viewport.\n */\nexport function resolveOverlap(\n\tcandidate: WindowBounds,\n\texisting: WindowRecord[],\n\tviewport: { width: number; height: number },\n): WindowBounds {\n\tlet bounds = { ...candidate }\n\n\tfor (let attempt = 0; attempt < MAX_CASCADE_ATTEMPTS; attempt++) {\n\t\tconst hasOverlap = existing.some(w => rectsOverlap(bounds, w.bounds))\n\t\tif (!hasOverlap) break\n\n\t\tbounds = {\n\t\t\t...bounds,\n\t\t\tleft: bounds.left + CASCADE_OFFSET,\n\t\t\ttop: bounds.top + CASCADE_OFFSET,\n\t\t}\n\t}\n\n\treturn clampToViewport(bounds, viewport)\n}\n\n/**\n * Clamp bounds so the window stays fully within the viewport.\n */\nexport function clampToViewport(\n\tbounds: WindowBounds,\n\tviewport: { width: number; height: number },\n): WindowBounds {\n\treturn {\n\t\twidth: bounds.width,\n\t\theight: bounds.height,\n\t\tleft: Math.max(0, Math.min(bounds.left, viewport.width - bounds.width)),\n\t\ttop: Math.max(0, Math.min(bounds.top, viewport.height - bounds.height)),\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport {\n\tanimationFrameScheduler,\n\tauditTime,\n\tcatchError,\n\tEMPTY,\n\tfilter,\n\tfinalize,\n\tfrom,\n\tfromEvent,\n\tmap,\n\tmerge,\n\tObservable,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n} from 'rxjs'\nimport { SPRING_SMOOTH, SPRING_SNAPPY } from '../utils/animation.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { reducedMotion$ } from '../directives/reduced-motion'\nimport { theme } from '../theme/theme.service.js'\nimport type { SnapCorner, WindowBounds, WindowVisualState } from './window-registry.js'\nimport { windowManager } from './window-manager.js'\nimport { resolveOverlap } from './window-position.js'\n\nconst HEAD_HEIGHT = 48\nconst DRAG_THRESHOLD = 5\n\ninterface Position {\n\tx: number\n\ty: number\n}\n\n@customElement('schmancy-window')\nexport default class SchmancyWindow extends $LitElement(css`\n\t:host {\n\t\tdisplay: contents;\n\t\tposition: relative;\n\t\tz-index: 1000;\n\t}\n\t:host([hidden]) {\n\t\tdisplay: none !important;\n\t}\n`) {\n\t@property({ type: String }) id: string = 'default'\n\t/** Override the expanded panel width (e.g. '320px', '24rem'). Defaults to responsive sizing. */\n\t@property({ type: String }) expandedWidth?: string\n\t/** Override the expanded panel height (e.g. '400px', '50vh'). */\n\t@property({ type: String }) expandedHeight?: string\n\t/** When true, uses a lower elevation shadow in the collapsed state. */\n\t@property({ type: Boolean, reflect: true }) lowered: boolean = false\n\t/** Corner the window is anchored to. */\n\t@property({ type: String }) corner: SnapCorner = 'bottom-right'\n\t/** When true, window can be resized by the user. */\n\t@property({ type: Boolean }) resizable = false\n\t/** When true, window stays at its dragged position instead of snapping to a corner. */\n\t@property({ type: Boolean }) freePosition = false\n\t/** Visual state of the window (minimized, normal, maximized). */\n\t@property({ type: String, reflect: true }) visualState: WindowVisualState = 'normal'\n\t/** Minimum width in pixels. */\n\t@property({ type: Number }) minWidth = 280\n\t/** Minimum height in pixels. */\n\t@property({ type: Number }) minHeight = 200\n\n\t/** Whether the body is expanded. */\n\t@property({ type: Boolean, reflect: true }) open = false\n\n\tprivate _currentAnimation?: Animation\n\n\t/** Lazy rendering: body content not in DOM until first expand. */\n\t@state() private _hasOpened = false\n\t/** Whether this window is the focused window in the manager — drives visual ring */\n\t@state() private _focused = false\n\n\t// Internal position -- plain fields, updated directly during drag\n\tprivate _position: Position = { x: 16, y: 16 }\n\t@state() private _currentCorner: SnapCorner = 'bottom-right'\n\n\t// Track applied corner to avoid unnecessary style.removeProperty calls during drag\n\tprivate _appliedCorner: string = ''\n\n\t// Refs\n\tprivate _containerRef = createRef<HTMLElement>()\n\tprivate _bodyRef = createRef<HTMLElement>()\n\tprivate _headRef = createRef<HTMLElement>()\n\n\t// ============================================\n\t// COMPUTED\n\t// ============================================\n\n\tprivate get panelWidth(): string {\n\t\treturn this.expandedWidth ?? 'min(360px, calc(100vw - 32px))'\n\t}\n\n\tprivate get isBottomCorner(): boolean {\n\t\treturn this._currentCorner.startsWith('bottom')\n\t}\n\n\tprivate get closedClipPath(): string {\n\t\treturn this.isBottomCorner\n\t\t\t? `inset(calc(100% - ${HEAD_HEIGHT}px) 0px 0px 0px round 22px)`\n\t\t\t: `inset(0px 0px calc(100% - ${HEAD_HEIGHT}px) 0px round 22px)`\n\t}\n\n\tprivate get openClipPath(): string {\n\t\treturn 'inset(0px 0px 0px 0px round 12px)'\n\t}\n\n\tprivate get elevation(): string {\n\t\tif (this.open) return '4'\n\t\treturn this.lowered ? '1' : '3'\n\t}\n\n\t// ============================================\n\t// POSITION MANAGEMENT\n\t// ============================================\n\n\tprivate _applyContainerPosition() {\n\t\tconst container = this._containerRef.value\n\t\tif (!container) return\n\t\t// Only clear position properties when corner changes (avoids 4 style invalidations per drag frame)\n\t\tif (this._appliedCorner !== this._currentCorner) {\n\t\t\tcontainer.style.removeProperty('left')\n\t\t\tcontainer.style.removeProperty('right')\n\t\t\tcontainer.style.removeProperty('top')\n\t\t\tcontainer.style.removeProperty('bottom')\n\t\t\tthis._appliedCorner = this._currentCorner\n\t\t}\n\t\tconst { x, y } = this._position\n\t\tif (this._currentCorner.includes('right')) {\n\t\t\tcontainer.style.right = `${x}px`\n\t\t} else {\n\t\t\tcontainer.style.left = `${x}px`\n\t\t}\n\t\tif (this._currentCorner.includes('bottom')) {\n\t\t\tcontainer.style.bottom = `${y + theme.bottomOffset}px`\n\t\t} else {\n\t\t\tcontainer.style.top = `${y}px`\n\t\t}\n\t}\n\n\tprivate static readonly VALID_CORNERS = new Set<string>(['top-left', 'top-right', 'bottom-left', 'bottom-right'])\n\n\tprivate _loadPosition() {\n\t\tconst saved = windowManager.loadPosition(this.id)\n\t\tif (saved) {\n\t\t\tthis._position = { x: saved.x, y: saved.y }\n\t\t\tif (SchmancyWindow.VALID_CORNERS.has(saved.anchor)) {\n\t\t\t\tthis._currentCorner = saved.anchor as SnapCorner\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _savePosition() {\n\t\twindowManager.savePosition(this.id, { ...this._position, anchor: this._currentCorner })\n\t}\n\n\tprivate _validateBounds() {\n\t\tconst container = this._containerRef.value\n\t\tif (!container) return\n\t\tconst rect = container.getBoundingClientRect()\n\t\tif (rect.width === 0) return\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\t\tconst isRight = this._currentCorner.includes('right')\n\t\tconst isBottom = this._currentCorner.includes('bottom')\n\t\tconst actualLeft = isRight ? vw - this._position.x - rect.width : this._position.x\n\t\tconst actualTop = isBottom ? vh - this._position.y - rect.height : this._position.y\n\t\tconst newLeft = Math.max(0, Math.min(actualLeft, vw - rect.width))\n\t\tconst newTop = Math.max(0, Math.min(actualTop, vh - rect.height))\n\t\tthis._position = {\n\t\t\tx: isRight ? vw - newLeft - rect.width : newLeft,\n\t\t\ty: isBottom ? vh - newTop - rect.height : newTop,\n\t\t}\n\t\tthis._applyContainerPosition()\n\t}\n\n\t// ============================================\n\t// CORNER SNAPPING\n\t// ============================================\n\n\tprivate _reorientToNearestCorner(skipAnimation = false): void {\n\t\t// Free position mode: skip corner snapping\n\t\tif (this.freePosition) {\n\t\t\tthis._savePosition()\n\t\t\tconst rect = this._containerRef.value?.getBoundingClientRect()\n\t\t\tif (rect) {\n\t\t\t\twindowManager.updateBounds(this.id, { left: rect.left, top: rect.top, width: rect.width, height: rect.height })\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tconst container = this._containerRef.value\n\t\tif (!container) return\n\n\t\t// F -- record current screen position before DOM mutation\n\t\tconst rect = container.getBoundingClientRect()\n\n\t\t// L -- calculate nearest corner using head visual center\n\t\tconst currentIsBottom = this._currentCorner.includes('bottom')\n\t\tconst headCenterX = rect.left + rect.width / 2\n\t\tconst headCenterY = currentIsBottom\n\t\t\t? rect.bottom - HEAD_HEIGHT / 2\n\t\t\t: rect.top + HEAD_HEIGHT / 2\n\t\tconst side = headCenterX > window.innerWidth / 2 ? 'right' : 'left'\n\t\tconst vert = headCenterY > window.innerHeight / 2 ? 'bottom' : 'top'\n\t\tconst newCorner: SnapCorner = `${vert}-${side}` as SnapCorner\n\n\t\t// Snap corner and reset offset to standard edge gap\n\t\tthis._currentCorner = newCorner\n\t\tthis._position = { x: 16, y: 16 }\n\t\tthis._applyContainerPosition()\n\t\t// Sync clip-path to new corner\n\t\tif (!this.open) {\n\t\t\tcontainer.style.clipPath = this.closedClipPath\n\t\t}\n\n\t\tif (skipAnimation || reducedMotion$.value) {\n\t\t\tthis._savePosition()\n\t\t\tconst snapRect = container.getBoundingClientRect()\n\t\t\twindowManager.updateBounds(this.id, { left: snapRect.left, top: snapRect.top, width: snapRect.width, height: snapRect.height })\n\t\t\treturn\n\t\t}\n\n\t\t// I -- invert: shift element back to its original visual position\n\t\tconst newRect = container.getBoundingClientRect()\n\t\tconst dx = rect.left - newRect.left\n\t\tconst dy = rect.top - newRect.top\n\t\tcontainer.style.translate = `${dx}px ${dy}px`\n\n\t\t// P -- play: animate from the inverse offset to natural resting position\n\t\tconst flipKeyframes: Keyframe[] = [{ translate: `${dx}px ${dy}px` }, { translate: '0px 0px' }]\n\t\tconst anim = container.animate(\n\t\t\tflipKeyframes,\n\t\t\t{\n\t\t\t\tduration: SPRING_SMOOTH.duration,\n\t\t\t\teasing: SPRING_SMOOTH.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t\tfrom(anim.finished).pipe(\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tif (container.isConnected) container.style.translate = ''\n\t\t\t\t// Report final resting bounds after animation completes\n\t\t\t\tconst finalRect = container.getBoundingClientRect()\n\t\t\t\twindowManager.updateBounds(this.id, { left: finalRect.left, top: finalRect.top, width: finalRect.width, height: finalRect.height })\n\t\t\t}),\n\t\t\tcatchError(() => EMPTY),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\n\t\tthis._savePosition()\n\t}\n\n\t// ============================================\n\t// DRAG PIPELINE\n\t// ============================================\n\n\tprivate _drag$(): Observable<never> {\n\t\treturn new Observable(() => {\n\t\t\tconst head = this._headRef.value\n\t\t\tconst container = this._containerRef.value\n\t\t\tif (!head || !container) return\n\n\t\t\tlet didDrag = false\n\n\t\t\tconst sub = fromEvent<PointerEvent>(head, 'pointerdown').pipe(\n\t\t\t\tfilter(e => e.button === 0),\n\t\t\t\tfilter(e => {\n\t\t\t\t\tconst tag = (e.target as HTMLElement).tagName?.toLowerCase()\n\t\t\t\t\treturn !['input', 'textarea', 'select', 'button'].includes(tag)\n\t\t\t\t\t\t&& !(e.target as HTMLElement).closest('schmancy-input, schmancy-icon-button, button, a')\n\t\t\t\t}),\n\t\t\t\ttap(e => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(e => {\n\t\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\t\tconst isBottom = this._currentCorner.includes('bottom')\n\t\t\t\t\t\tconst wasOpen = this.open\n\t\t\t\t\t\tdidDrag = false\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstartX: e.clientX,\n\t\t\t\t\t\t\tstartY: e.clientY,\n\t\t\t\t\t\t\toffsetX: e.clientX - rect.left,\n\t\t\t\t\t\t\toffsetY: e.clientY - rect.top,\n\t\t\t\t\t\t\trect,\n\t\t\t\t\t\t\tvw: window.innerWidth,\n\t\t\t\t\t\t\tvh: window.innerHeight,\n\t\t\t\t\t\t\tisBottom,\n\t\t\t\t\t\t\twasOpen,\n\t\t\t\t\t\t\tpointerId: e.pointerId,\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tswitchMap(({ startX, startY, offsetX, offsetY, rect, vw, vh, isBottom, wasOpen, pointerId }) => {\n\t\t\t\t\t\tconst move$ = fromEvent<PointerEvent>(window, 'pointermove').pipe(\n\t\t\t\t\t\t\tfilter(e => e.pointerId === pointerId),\n\t\t\t\t\t\t\tauditTime(0, animationFrameScheduler),\n\t\t\t\t\t\t\tmap(e => ({ clientX: e.clientX, clientY: e.clientY })),\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst end$ = fromEvent<PointerEvent>(window, 'pointerup').pipe(\n\t\t\t\t\t\t\tfilter(e => e.pointerId === pointerId),\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\treturn move$.pipe(\n\t\t\t\t\t\t\ttap(({ clientX, clientY }) => {\n\t\t\t\t\t\t\t\tconst dx = clientX - startX\n\t\t\t\t\t\t\t\tconst dy = clientY - startY\n\t\t\t\t\t\t\t\tif (Math.sqrt(dx * dx + dy * dy) > DRAG_THRESHOLD && !didDrag) {\n\t\t\t\t\t\t\t\t\tdidDrag = true\n\t\t\t\t\t\t\t\t\tthis._applyDragVisuals(true)\n\t\t\t\t\t\t\t\t\t// Collapse on first confirmed drag move\n\t\t\t\t\t\t\t\t\tif (wasOpen) {\n\t\t\t\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\t\t\t\t\tcontainer.style.clipPath = this.closedClipPath\n\t\t\t\t\t\t\t\t\t\tcontainer.style.overflow = 'hidden'\n\t\t\t\t\t\t\t\t\t\tconst body = this._bodyRef.value\n\t\t\t\t\t\t\t\t\t\tif (body) {\n\t\t\t\t\t\t\t\t\t\t\tbody.inert = true\n\t\t\t\t\t\t\t\t\t\t\tbody.style.visibility = 'hidden'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!didDrag) return\n\n\t\t\t\t\t\t\t\tconst left = Math.max(0, Math.min(clientX - offsetX, vw - rect.width))\n\t\t\t\t\t\t\t\tconst minTop = isBottom ? HEAD_HEIGHT - rect.height : 0\n\t\t\t\t\t\t\t\tconst maxTop = isBottom ? vh - rect.height : vh - HEAD_HEIGHT\n\t\t\t\t\t\t\t\tconst top = Math.max(minTop, Math.min(clientY - offsetY, maxTop))\n\n\t\t\t\t\t\t\t\tthis._position = {\n\t\t\t\t\t\t\t\t\tx: this._currentCorner.includes('right') ? vw - left - rect.width : left,\n\t\t\t\t\t\t\t\t\ty: isBottom ? vh - top - rect.height : top,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._applyContainerPosition()\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\ttakeUntil(end$),\n\t\t\t\t\t\t\tfinalize(() => {\n\t\t\t\t\t\t\t\tif (didDrag) {\n\t\t\t\t\t\t\t\t\tthis._reorientToNearestCorner()\n\t\t\t\t\t\t\t\t\tthis._applyDragVisuals(false)\n\t\t\t\t\t\t\t\t\tdidDrag = false\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdidDrag = false\n\t\t\t\t\t\t\t\t\tthis.toggle()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\n\t\t\treturn () => sub.unsubscribe()\n\t\t})\n\t}\n\n\t// ============================================\n\t// LIFECYCLE\n\t// ============================================\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Pipeline 1: DOM setup + manager registration + drag + z-index sync\n\t\tfrom(this.updateComplete).pipe(\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._currentCorner = this.corner\n\t\t\t\tthis._loadPosition()\n\t\t\t\tthis._applyContainerPosition()\n\t\t\t\tthis._initDOMState()\n\t\t\t\t// Register with window manager\n\t\t\t\tconst container = this._containerRef.value\n\t\t\t\tif (container) {\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\tconst bounds: WindowBounds = { left: rect.left, top: rect.top, width: rect.width, height: rect.height }\n\t\t\t\t\twindowManager.register(this.id, bounds, this.freePosition ? 'free' : this._currentCorner)\n\t\t\t\t}\n\t\t\t}),\n\t\t\tswitchMap(() => merge(\n\t\t\t\tthis._drag$(),\n\t\t\t\twindowManager.selectWindow(this.id).pipe(\n\t\t\t\t\ttap(record => {\n\t\t\t\t\t\tif (!record) return\n\t\t\t\t\t\tconst container = this._containerRef.value\n\t\t\t\t\t\tif (container) container.style.zIndex = String(record.zIndex)\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\twindowManager.selectFocused().pipe(\n\t\t\t\t\ttap(focusedId => {\n\t\t\t\t\t\tthis._focused = focusedId === this.id\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t)),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\n\n\t\t// Pipeline 3: Environment -- one subscription\n\t\tmerge(\n\t\t\tfromEvent(window, 'resize').pipe(\n\t\t\t\tauditTime(0, animationFrameScheduler),\n\t\t\t\ttap(() => this._validateBounds()),\n\t\t\t),\n\t\t\ttheme.bottomOffset$.pipe(\n\t\t\t\ttap(() => this._applyContainerPosition()),\n\t\t\t),\n\t\t).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\twindowManager.unregister(this.id)\n\t}\n\n\tprivate _initDOMState() {\n\t\tconst container = this._containerRef.value\n\t\tconst body = this._bodyRef.value\n\t\tif (!container) return\n\n\t\tthis._applyContainerPosition()\n\n\t\tif (this.open) {\n\t\t\tthis._hasOpened = true\n\t\t\tcontainer.style.overflow = ''\n\t\t\tif (body) {\n\t\t\t\tbody.inert = false\n\t\t\t\tbody.style.visibility = 'visible'\n\t\t\t}\n\t\t} else {\n\t\t\tcontainer.style.clipPath = this.closedClipPath\n\t\t\tcontainer.style.overflow = 'hidden'\n\t\t\tif (body) {\n\t\t\t\tbody.inert = true\n\t\t\t\tbody.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\t}\n\n\t// ============================================\n\t// ANIMATION\n\t// ============================================\n\n\tprivate _animateOpen() {\n\t\tconst container = this._containerRef.value\n\t\tconst body = this._bodyRef.value\n\t\tif (!container) return\n\n\t\tthis._hasOpened = true\n\t\tthis.open = true\n\n\t\t// Overlap avoidance\n\t\tconst rect = container.getBoundingClientRect()\n\t\tconst projectedBounds: WindowBounds = {\n\t\t\tleft: rect.left,\n\t\t\ttop: this.isBottomCorner ? rect.top - 400 : rect.top,\n\t\t\twidth: rect.width,\n\t\t\theight: 400 + HEAD_HEIGHT,\n\t\t}\n\t\tconst overlaps = windowManager.findOverlaps(projectedBounds, this.id)\n\t\tif (overlaps.length > 0) {\n\t\t\tconst resolved = resolveOverlap(projectedBounds, overlaps, { width: window.innerWidth, height: window.innerHeight })\n\t\t\tif (Math.abs(resolved.left - projectedBounds.left) > 10 || Math.abs(resolved.top - projectedBounds.top) > 10) {\n\t\t\t\tconst isRight = this._currentCorner.includes('right')\n\t\t\t\tconst isBottom = this._currentCorner.includes('bottom')\n\t\t\t\tthis._position = {\n\t\t\t\t\tx: isRight ? window.innerWidth - resolved.left - resolved.width : resolved.left,\n\t\t\t\t\ty: isBottom ? window.innerHeight - resolved.top - resolved.height : resolved.top,\n\t\t\t\t}\n\t\t\t\tthis._applyContainerPosition()\n\t\t\t}\n\t\t}\n\n\t\tif (body) {\n\t\t\tbody.style.visibility = 'visible'\n\t\t\tbody.inert = false\n\t\t}\n\n\t\tif (reducedMotion$.value) {\n\t\t\tcontainer.style.clipPath = ''\n\t\t\tcontainer.style.overflow = ''\n\t\t\tthis.dispatchScopedEvent('window-toggle', { state: 'expanded' })\n\t\t\treturn\n\t\t}\n\n\t\tthis._currentAnimation?.cancel()\n\t\tcontainer.style.overflow = 'hidden'\n\t\tcontainer.style.willChange = 'opacity'\n\t\tconst openKeyframes: Keyframe[] = [\n\t\t\t{ clipPath: this.closedClipPath, opacity: 0.95 },\n\t\t\t{ clipPath: this.openClipPath, opacity: 1 },\n\t\t]\n\t\tconst anim = container.animate(openKeyframes, {\n\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tthis._currentAnimation = anim\n\n\t\tfrom(anim.finished).pipe(\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tif (container.isConnected) {\n\t\t\t\t\tcontainer.style.clipPath = ''\n\t\t\t\t\tcontainer.style.overflow = ''\n\t\t\t\t\tcontainer.style.willChange = ''\n\t\t\t\t}\n\t\t\t}),\n\t\t\tcatchError(() => EMPTY),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\n\t\tthis.dispatchScopedEvent('window-toggle', { state: 'expanded' })\n\t}\n\n\tprivate _animateClose() {\n\t\tconst container = this._containerRef.value\n\t\tif (!container) return\n\n\t\tif (reducedMotion$.value) {\n\t\t\tcontainer.style.clipPath = this.closedClipPath\n\t\t\tcontainer.style.overflow = 'hidden'\n\t\t\tthis.open = false\n\t\t\tconst body = this._bodyRef.value\n\t\t\tif (body) { body.inert = true; body.style.visibility = 'hidden' }\n\t\t\tthis.dispatchScopedEvent('window-toggle', { state: 'collapsed' })\n\t\t\treturn\n\t\t}\n\n\t\tthis._currentAnimation?.cancel()\n\t\tcontainer.style.overflow = 'hidden'\n\t\tcontainer.style.willChange = 'opacity'\n\t\tconst closeKeyframes: Keyframe[] = [\n\t\t\t{ clipPath: this.openClipPath, opacity: 1 },\n\t\t\t{ clipPath: this.closedClipPath, opacity: 0.95 },\n\t\t]\n\t\tconst anim = container.animate(closeKeyframes, {\n\t\t\tduration: Math.round(SPRING_SNAPPY.duration * 0.7),\n\t\t\teasing: 'cubic-bezier(0.4, 0, 0.8, 0.15)',\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tthis._currentAnimation = anim\n\n\t\tfrom(anim.finished).pipe(\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis.open = false\n\t\t\t\tcontainer.style.willChange = ''\n\t\t\t\tconst body = this._bodyRef.value\n\t\t\t\tif (body) { body.inert = true; body.style.visibility = 'hidden' }\n\t\t\t}),\n\t\t\tcatchError(() => EMPTY),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\n\t\tthis.dispatchScopedEvent('window-toggle', { state: 'collapsed' })\n\t}\n\n\t// ============================================\n\t// VISUAL STATE HELPERS\n\t// ============================================\n\n\t/** Apply drag visuals directly on DOM refs — avoids full Lit re-render for cursor + opacity */\n\tprivate _applyDragVisuals(dragging: boolean) {\n\t\tconst head = this._headRef.value\n\t\tconst container = this._containerRef.value\n\t\tif (head) {\n\t\t\thead.classList.toggle('cursor-grabbing', dragging)\n\t\t\thead.classList.toggle('cursor-move', !dragging)\n\t\t}\n\t\tif (container) {\n\t\t\tcontainer.style.opacity = dragging ? '0.95' : ''\n\t\t}\n\t}\n\n\tprivate _handleFocus = () => windowManager.focus(this.id)\n\n\tprivate _handleHeadKeydown = (e: KeyboardEvent) => {\n\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\te.preventDefault()\n\t\t\tthis.toggle()\n\t\t\treturn\n\t\t}\n\t\tif (e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n\t\t\te.preventDefault()\n\t\t\tconst step = e.shiftKey ? 20 : 5\n\t\t\tconst dx = e.key === 'ArrowRight' ? step : e.key === 'ArrowLeft' ? -step : 0\n\t\t\tconst dy = e.key === 'ArrowDown' ? step : e.key === 'ArrowUp' ? -step : 0\n\t\t\tthis._position = { x: this._position.x + dx, y: this._position.y + dy }\n\t\t\tthis._applyContainerPosition()\n\t\t\tthis._savePosition()\n\t\t}\n\t}\n\n\t// ============================================\n\t// PUBLIC API\n\t// ============================================\n\n\ttoggle() {\n\t\tif (this.open) this._animateClose()\n\t\telse this._animateOpen()\n\t}\n\n\texpand() {\n\t\tif (this.open) return\n\t\tthis._animateOpen()\n\t}\n\n\tclose() {\n\t\tif (!this.open) return\n\t\tthis._animateClose()\n\t}\n\n\t// ============================================\n\t// RENDER\n\t// ============================================\n\n\tprotected render(): unknown {\n\t\tconst isBottom = this._currentCorner.startsWith('bottom')\n\n\t\tconst containerClasses = classMap({\n\t\t\tfixed: true,\n\t\t\tflex: true,\n\t\t\t'flex-col': isBottom,\n\t\t\t'flex-col-reverse': !isBottom,\n\t\t\t'z-1000': true,\n\t\t\t'ring-1': !this._focused,\n\t\t\t'ring-2': this._focused,\n\t\t\t'ring-primary-default/30': this._focused,\n\t\t\t'ring-primary-default/15': this.open && !this._focused,\n\t\t\t'rounded-2xl': this.open,\n\t\t\t'ring-outline-variant/40': !this.open && !this._focused,\n\t\t\t'rounded-[22px]': !this.open,\n\t\t\t'overflow-hidden': true,\n\t\t})\n\n\t\tconst containerStyles = styleMap({\n\t\t\twidth: this.panelWidth,\n\t\t\t'max-height': 'calc(100vh - 32px)',\n\t\t\t'pointer-events': 'none',\n\t\t})\n\n\t\tconst bodyStyles = styleMap({\n\t\t\t'pointer-events': this.open ? 'auto' : 'none',\n\t\t})\n\n\t\tconst headClasses = classMap({\n\t\t\t'h-full': true,\n\t\t\t'px-3': true,\n\t\t\tflex: true,\n\t\t\t'items-center': true,\n\t\t\t'gap-2': true,\n\t\t\t'select-none': true,\n\t\t\t'cursor-move': true,\n\t\t})\n\n\t\treturn html`\n\t\t\t<schmancy-surface\n\t\t\t\t${ref(this._containerRef)}\n\t\t\t\ttype=\"glass\"\n\t\t\t\televation=\"${this.elevation}\"\n\t\t\t\tclass=${containerClasses}\n\t\t\t\tstyle=${containerStyles}\n\t\t\t\taria-expanded=${this.open}\n\t\t\t\t@pointerdown=${this._handleFocus}\n\t\t\t>\n\t\t\t\t<!-- Details section (visually above summary for bottom corners) -->\n\t\t\t\t<section\n\t\t\t\t\t${ref(this._bodyRef)}\n\t\t\t\t\tclass=\"flex-1 min-h-0 overflow-hidden flex flex-col\"\n\t\t\t\t\tstyle=${bodyStyles}\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-label=\"Expandable content\"\n\t\t\t\t>\n\t\t\t\t\t${this._hasOpened ? html`<slot name=\"details\"></slot>` : nothing}\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Summary section -- always interactive, always visible -->\n\t\t\t\t<section\n\t\t\t\t\tclass=\"shrink-0 bg-surface-lowest\"\n\t\t\t\t\tstyle=${styleMap({ 'pointer-events': 'auto', height: `${HEAD_HEIGHT}px` })}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\t${ref(this._headRef)}\n\t\t\t\t\t\t${cursorGlow({ radius: 200, intensity: 0.10 })}\n\t\t\t\t\t\tclass=${headClasses}\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\ttitle=\"Drag to move, click to expand\"\n\t\t\t\t\t\taria-label=\"${this.open ? 'Collapse window' : 'Expand window'}\"\n\t\t\t\t\t\t@keydown=${this._handleHeadKeydown}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\n\t\t\t\t\t\t\tclass=\"shrink-0 text-surface-on/40 transition-transform duration-200 ${this.open ? 'rotate-180' : ''}\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-window': SchmancyWindow\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"window-DPSIGCUq.js","names":[],"sources":["../src/window/window-manager.ts","../src/window/window-position.ts","../src/window/window.ts"],"sourcesContent":["/**\n * Window Manager — singleton service for multi-window coordination.\n *\n * Tracks all schmancy-window instances: positions, z-indices, focus, visual states.\n * Components register on connectedCallback, unregister on disconnectedCallback.\n * Focus changes, position updates, and overlap queries all flow through here.\n *\n * Follows the ThemeService singleton pattern (theme/theme.service.ts).\n *\n * Example:\n * windowManager.register('chat-1', bounds, 'bottom-right')\n * windowManager.focus('chat-1') // bumps z-index, updates focusedId\n * const overlaps = windowManager.findOverlaps(projectedBounds, 'chat-1')\n */\n\nimport { BehaviorSubject, Observable, distinctUntilChanged, map } from 'rxjs'\nimport { overlayStack } from '../utils/overlay-stack.js'\nimport type { WindowBounds, WindowRecord, WindowRegistryState, SnapTarget } from './window-registry.js'\n\nconst STORAGE_PREFIX = 'schmancy-window-'\nconst LEGACY_STORAGE_PREFIX = 'schmancy-float-'\n\nclass WindowManagerService {\n\tprivate static instance: WindowManagerService\n\n\tprivate readonly _state$ = new BehaviorSubject<WindowRegistryState>({\n\t\twindows: new Map(),\n\t\tfocusedId: null,\n\t\tstackOrder: [],\n\t})\n\n\treadonly state$ = this._state$.asObservable()\n\n\tprivate constructor() {}\n\n\tstatic getInstance(): WindowManagerService {\n\t\tif (!WindowManagerService.instance) {\n\t\t\tWindowManagerService.instance = new WindowManagerService()\n\t\t}\n\t\treturn WindowManagerService.instance\n\t}\n\n\t// ── Synchronous accessors ──────────────────────────────────────────\n\n\tget windows(): Map<string, WindowRecord> {\n\t\treturn this._state$.value.windows\n\t}\n\n\tget focusedId(): string | null {\n\t\treturn this._state$.value.focusedId\n\t}\n\n\t// ── Registration ───────────────────────────────────────────────────\n\n\tregister(id: string, initialBounds: WindowBounds, snapTarget: SnapTarget): void {\n\t\tconst state = this._state$.value\n\t\tif (state.windows.has(id)) return\n\n\t\tconst zIndex = overlayStack.assignZIndex(id)\n\t\tconst record: WindowRecord = {\n\t\t\tid,\n\t\t\tbounds: initialBounds,\n\t\t\tvisualState: 'normal',\n\t\t\tzIndex,\n\t\t\topen: false,\n\t\t\tsnapTarget,\n\t\t}\n\n\t\tconst windows = new Map(state.windows)\n\t\twindows.set(id, record)\n\t\tconst stackOrder = overlayStack.getStackOrder()\n\n\t\tthis._state$.next({ ...state, windows, stackOrder })\n\t}\n\n\tunregister(id: string): void {\n\t\tconst state = this._state$.value\n\t\tif (!state.windows.has(id)) return\n\n\t\toverlayStack.releaseId(id)\n\t\tconst windows = new Map(state.windows)\n\t\twindows.delete(id)\n\t\tconst stackOrder = overlayStack.getStackOrder()\n\t\tconst focusedId = state.focusedId === id ? null : state.focusedId\n\n\t\tthis._state$.next({ ...state, windows, stackOrder, focusedId })\n\t}\n\n\t// ── State mutations ────────────────────────────────────────────────\n\n\tupdateBounds(id: string, bounds: WindowBounds): void {\n\t\tthis._updateRecord(id, { bounds })\n\t}\n\n\tupdateVisualState(id: string, visualState: WindowRecord['visualState']): void {\n\t\tthis._updateRecord(id, { visualState })\n\t}\n\n\tupdateOpen(id: string, open: boolean): void {\n\t\tthis._updateRecord(id, { open })\n\t}\n\n\tfocus(id: string): void {\n\t\tconst state = this._state$.value\n\t\tif (!state.windows.has(id)) return\n\t\tif (state.focusedId === id) return\n\n\t\tconst zIndex = overlayStack.bringToFront(id)\n\t\tconst windows = new Map(state.windows)\n\t\tconst record = windows.get(id)\n\t\tif (record) {\n\t\t\twindows.set(id, { ...record, zIndex })\n\t\t}\n\t\tconst stackOrder = overlayStack.getStackOrder()\n\n\t\tthis._state$.next({ ...state, windows, stackOrder, focusedId: id })\n\t}\n\n\t// ── Queries ────────────────────────────────────────────────────────\n\n\tfindOverlaps(bounds: WindowBounds, excludeId: string): WindowRecord[] {\n\t\tconst result: WindowRecord[] = []\n\t\tfor (const [id, record] of this._state$.value.windows) {\n\t\t\tif (id === excludeId) continue\n\t\t\tif (rectsOverlap(bounds, record.bounds)) {\n\t\t\t\tresult.push(record)\n\t\t\t}\n\t\t}\n\t\treturn result\n\t}\n\n\tgetNeighbors(id: string): WindowRecord[] {\n\t\tconst result: WindowRecord[] = []\n\t\tfor (const [otherId, record] of this._state$.value.windows) {\n\t\t\tif (otherId !== id) result.push(record)\n\t\t}\n\t\treturn result\n\t}\n\n\t// ── Selectors ──────────────────────────────────────────────────────\n\n\tselectWindow(id: string): Observable<WindowRecord | undefined> {\n\t\treturn this._state$.pipe(\n\t\t\tmap(state => state.windows.get(id)),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t}\n\n\tselectFocused(): Observable<string | null> {\n\t\treturn this._state$.pipe(\n\t\t\tmap(state => state.focusedId),\n\t\t\tdistinctUntilChanged(),\n\t\t)\n\t}\n\n\t// ── Persistence ────────────────────────────────────────────────────\n\n\tloadPosition(id: string): { x: number; y: number; anchor: string } | null {\n\t\ttry {\n\t\t\t// Try new key first, fall back to legacy\n\t\t\tconst raw = localStorage.getItem(STORAGE_PREFIX + id) ?? localStorage.getItem(LEGACY_STORAGE_PREFIX + id)\n\t\t\tif (!raw) return null\n\t\t\treturn JSON.parse(raw) as { x: number; y: number; anchor: string }\n\t\t} catch {\n\t\t\treturn null\n\t\t}\n\t}\n\n\tsavePosition(id: string, data: { x: number; y: number; anchor: string }): void {\n\t\ttry {\n\t\t\tlocalStorage.setItem(STORAGE_PREFIX + id, JSON.stringify(data))\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\t}\n\n\tclearPosition(id: string): void {\n\t\ttry {\n\t\t\tlocalStorage.removeItem(STORAGE_PREFIX + id)\n\t\t\tlocalStorage.removeItem(LEGACY_STORAGE_PREFIX + id)\n\t\t} catch {\n\t\t\t// ignore\n\t\t}\n\t}\n\n\t// ── Internal ───────────────────────────────────────────────────────\n\n\tprivate _updateRecord(id: string, updates: Partial<WindowRecord>): void {\n\t\tconst state = this._state$.value\n\t\tconst record = state.windows.get(id)\n\t\tif (!record) return\n\n\t\tconst windows = new Map(state.windows)\n\t\twindows.set(id, { ...record, ...updates })\n\t\tthis._state$.next({ ...state, windows })\n\t}\n}\n\n/** Simple rect overlap check (inline — no circular import with window-position) */\nfunction rectsOverlap(a: WindowBounds, b: WindowBounds): boolean {\n\treturn !(a.left >= b.left + b.width || a.left + a.width <= b.left || a.top >= b.top + b.height || a.top + a.height <= b.top)\n}\n\nexport const windowManager = WindowManagerService.getInstance()\n","/**\n * Window Position — pure functions for overlap resolution, cascade, and snapping.\n *\n * All functions are stateless: they take window bounds and viewport dimensions,\n * return new bounds. No side effects, no DOM access, no subscriptions.\n *\n * Example:\n * const projected = { left: 100, top: 400, width: 360, height: 500 }\n * const neighbors = windowManager.findOverlaps(projected, 'my-id')\n * const resolved = resolveOverlap(projected, neighbors, { width: 1440, height: 900 })\n * // → { left: 144, top: 444, width: 360, height: 500 } (cascaded away from conflict)\n */\n\nimport type { WindowBounds, WindowRecord } from './window-registry.js'\n\nconst HEAD_HEIGHT = 44\nconst CASCADE_OFFSET = HEAD_HEIGHT\nconst MAX_CASCADE_ATTEMPTS = 10\n\n/** Check if two rectangles overlap (edges touching does NOT count as overlap) */\nexport function rectsOverlap(a: WindowBounds, b: WindowBounds): boolean {\n\treturn !(a.left >= b.left + b.width || a.left + a.width <= b.left || a.top >= b.top + b.height || a.top + a.height <= b.top)\n}\n\n/**\n * Resolve overlap by cascading diagonally until no conflict.\n * Shifts by (HEAD_HEIGHT, HEAD_HEIGHT) per attempt, clamped to viewport.\n */\nexport function resolveOverlap(\n\tcandidate: WindowBounds,\n\texisting: WindowRecord[],\n\tviewport: { width: number; height: number },\n): WindowBounds {\n\tlet bounds = { ...candidate }\n\n\tfor (let attempt = 0; attempt < MAX_CASCADE_ATTEMPTS; attempt++) {\n\t\tconst hasOverlap = existing.some(w => rectsOverlap(bounds, w.bounds))\n\t\tif (!hasOverlap) break\n\n\t\tbounds = {\n\t\t\t...bounds,\n\t\t\tleft: bounds.left + CASCADE_OFFSET,\n\t\t\ttop: bounds.top + CASCADE_OFFSET,\n\t\t}\n\t}\n\n\treturn clampToViewport(bounds, viewport)\n}\n\n/**\n * Clamp bounds so the window stays fully within the viewport.\n */\nexport function clampToViewport(\n\tbounds: WindowBounds,\n\tviewport: { width: number; height: number },\n): WindowBounds {\n\treturn {\n\t\twidth: bounds.width,\n\t\theight: bounds.height,\n\t\tleft: Math.max(0, Math.min(bounds.left, viewport.width - bounds.width)),\n\t\ttop: Math.max(0, Math.min(bounds.top, viewport.height - bounds.height)),\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html, nothing } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { styleMap } from 'lit/directives/style-map.js'\nimport {\n\tanimationFrameScheduler,\n\tauditTime,\n\tcatchError,\n\tEMPTY,\n\tfilter,\n\tfinalize,\n\tfrom,\n\tfromEvent,\n\tmap,\n\tmerge,\n\tObservable,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n} from 'rxjs'\nimport { SPRING_SMOOTH, SPRING_SNAPPY } from '../utils/animation.js'\nimport { cursorGlow } from '../directives/cursor-glow'\nimport { reducedMotion$ } from '../directives/reduced-motion'\nimport { theme } from '../theme/theme.service.js'\nimport type { SnapCorner, WindowBounds, WindowVisualState } from './window-registry.js'\nimport { windowManager } from './window-manager.js'\nimport { resolveOverlap } from './window-position.js'\n\nconst HEAD_HEIGHT = 48\nconst DRAG_THRESHOLD = 5\n\ninterface Position {\n\tx: number\n\ty: number\n}\n\n@customElement('schmancy-window')\nexport default class SchmancyWindow extends $LitElement(css`\n\t:host {\n\t\tdisplay: contents;\n\t\tposition: relative;\n\t\tz-index: 1000;\n\t}\n\t:host([hidden]) {\n\t\tdisplay: none !important;\n\t}\n`) {\n\t@property({ type: String }) id: string = 'default'\n\t/** Override the expanded panel width (e.g. '320px', '24rem'). Defaults to responsive sizing. */\n\t@property({ type: String }) expandedWidth?: string\n\t/** Override the expanded panel height (e.g. '400px', '50vh'). */\n\t@property({ type: String }) expandedHeight?: string\n\t/** When true, uses a lower elevation shadow in the collapsed state. */\n\t@property({ type: Boolean, reflect: true }) lowered: boolean = false\n\t/** Corner the window is anchored to. */\n\t@property({ type: String }) corner: SnapCorner = 'bottom-right'\n\t/** When true, window can be resized by the user. */\n\t@property({ type: Boolean }) resizable = false\n\t/** When true, window stays at its dragged position instead of snapping to a corner. */\n\t@property({ type: Boolean }) freePosition = false\n\t/** Visual state of the window (minimized, normal, maximized). */\n\t@property({ type: String, reflect: true }) visualState: WindowVisualState = 'normal'\n\t/** Minimum width in pixels. */\n\t@property({ type: Number }) minWidth = 280\n\t/** Minimum height in pixels. */\n\t@property({ type: Number }) minHeight = 200\n\n\t/** Whether the body is expanded. */\n\t@property({ type: Boolean, reflect: true }) open = false\n\n\tprivate _currentAnimation?: Animation\n\n\t/** Lazy rendering: body content not in DOM until first expand. */\n\t@state() private _hasOpened = false\n\t/** Whether this window is the focused window in the manager — drives visual ring */\n\t@state() private _focused = false\n\n\t// Internal position -- plain fields, updated directly during drag\n\tprivate _position: Position = { x: 16, y: 16 }\n\t@state() private _currentCorner: SnapCorner = 'bottom-right'\n\n\t// Track applied corner to avoid unnecessary style.removeProperty calls during drag\n\tprivate _appliedCorner: string = ''\n\n\t// Refs\n\tprivate _containerRef = createRef<HTMLElement>()\n\tprivate _bodyRef = createRef<HTMLElement>()\n\tprivate _headRef = createRef<HTMLElement>()\n\n\t// ============================================\n\t// COMPUTED\n\t// ============================================\n\n\tprivate get panelWidth(): string {\n\t\treturn this.expandedWidth ?? 'min(360px, calc(100vw - 32px))'\n\t}\n\n\tprivate get isBottomCorner(): boolean {\n\t\treturn this._currentCorner.startsWith('bottom')\n\t}\n\n\tprivate get closedClipPath(): string {\n\t\treturn this.isBottomCorner\n\t\t\t? `inset(calc(100% - ${HEAD_HEIGHT}px) 0px 0px 0px round 22px)`\n\t\t\t: `inset(0px 0px calc(100% - ${HEAD_HEIGHT}px) 0px round 22px)`\n\t}\n\n\tprivate get openClipPath(): string {\n\t\treturn 'inset(0px 0px 0px 0px round 12px)'\n\t}\n\n\tprivate get elevation(): string {\n\t\tif (this.open) return '4'\n\t\treturn this.lowered ? '1' : '3'\n\t}\n\n\t// ============================================\n\t// POSITION MANAGEMENT\n\t// ============================================\n\n\tprivate _applyContainerPosition() {\n\t\tconst container = this._containerRef.value\n\t\tif (!container) return\n\t\t// Only clear position properties when corner changes (avoids 4 style invalidations per drag frame)\n\t\tif (this._appliedCorner !== this._currentCorner) {\n\t\t\tcontainer.style.removeProperty('left')\n\t\t\tcontainer.style.removeProperty('right')\n\t\t\tcontainer.style.removeProperty('top')\n\t\t\tcontainer.style.removeProperty('bottom')\n\t\t\tthis._appliedCorner = this._currentCorner\n\t\t}\n\t\tconst { x, y } = this._position\n\t\tif (this._currentCorner.includes('right')) {\n\t\t\tcontainer.style.right = `${x}px`\n\t\t} else {\n\t\t\tcontainer.style.left = `${x}px`\n\t\t}\n\t\tif (this._currentCorner.includes('bottom')) {\n\t\t\tcontainer.style.bottom = `${y + theme.bottomOffset}px`\n\t\t} else {\n\t\t\tcontainer.style.top = `${y}px`\n\t\t}\n\t}\n\n\tprivate static readonly VALID_CORNERS = new Set<string>(['top-left', 'top-right', 'bottom-left', 'bottom-right'])\n\n\tprivate _loadPosition() {\n\t\tconst saved = windowManager.loadPosition(this.id)\n\t\tif (saved) {\n\t\t\tthis._position = { x: saved.x, y: saved.y }\n\t\t\tif (SchmancyWindow.VALID_CORNERS.has(saved.anchor)) {\n\t\t\t\tthis._currentCorner = saved.anchor as SnapCorner\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _savePosition() {\n\t\twindowManager.savePosition(this.id, { ...this._position, anchor: this._currentCorner })\n\t}\n\n\tprivate _validateBounds() {\n\t\tconst container = this._containerRef.value\n\t\tif (!container) return\n\t\tconst rect = container.getBoundingClientRect()\n\t\tif (rect.width === 0) return\n\t\tconst vw = window.innerWidth\n\t\tconst vh = window.innerHeight\n\t\tconst isRight = this._currentCorner.includes('right')\n\t\tconst isBottom = this._currentCorner.includes('bottom')\n\t\tconst actualLeft = isRight ? vw - this._position.x - rect.width : this._position.x\n\t\tconst actualTop = isBottom ? vh - this._position.y - rect.height : this._position.y\n\t\tconst newLeft = Math.max(0, Math.min(actualLeft, vw - rect.width))\n\t\tconst newTop = Math.max(0, Math.min(actualTop, vh - rect.height))\n\t\tthis._position = {\n\t\t\tx: isRight ? vw - newLeft - rect.width : newLeft,\n\t\t\ty: isBottom ? vh - newTop - rect.height : newTop,\n\t\t}\n\t\tthis._applyContainerPosition()\n\t}\n\n\t// ============================================\n\t// CORNER SNAPPING\n\t// ============================================\n\n\tprivate _reorientToNearestCorner(skipAnimation = false): void {\n\t\t// Free position mode: skip corner snapping\n\t\tif (this.freePosition) {\n\t\t\tthis._savePosition()\n\t\t\tconst rect = this._containerRef.value?.getBoundingClientRect()\n\t\t\tif (rect) {\n\t\t\t\twindowManager.updateBounds(this.id, { left: rect.left, top: rect.top, width: rect.width, height: rect.height })\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tconst container = this._containerRef.value\n\t\tif (!container) return\n\n\t\t// F -- record current screen position before DOM mutation\n\t\tconst rect = container.getBoundingClientRect()\n\n\t\t// L -- calculate nearest corner using head visual center\n\t\tconst currentIsBottom = this._currentCorner.includes('bottom')\n\t\tconst headCenterX = rect.left + rect.width / 2\n\t\tconst headCenterY = currentIsBottom\n\t\t\t? rect.bottom - HEAD_HEIGHT / 2\n\t\t\t: rect.top + HEAD_HEIGHT / 2\n\t\tconst side = headCenterX > window.innerWidth / 2 ? 'right' : 'left'\n\t\tconst vert = headCenterY > window.innerHeight / 2 ? 'bottom' : 'top'\n\t\tconst newCorner: SnapCorner = `${vert}-${side}` as SnapCorner\n\n\t\t// Snap corner and reset offset to standard edge gap\n\t\tthis._currentCorner = newCorner\n\t\tthis._position = { x: 16, y: 16 }\n\t\tthis._applyContainerPosition()\n\t\t// Sync clip-path to new corner\n\t\tif (!this.open) {\n\t\t\tcontainer.style.clipPath = this.closedClipPath\n\t\t}\n\n\t\tif (skipAnimation || reducedMotion$.value) {\n\t\t\tthis._savePosition()\n\t\t\tconst snapRect = container.getBoundingClientRect()\n\t\t\twindowManager.updateBounds(this.id, { left: snapRect.left, top: snapRect.top, width: snapRect.width, height: snapRect.height })\n\t\t\treturn\n\t\t}\n\n\t\t// I -- invert: shift element back to its original visual position\n\t\tconst newRect = container.getBoundingClientRect()\n\t\tconst dx = rect.left - newRect.left\n\t\tconst dy = rect.top - newRect.top\n\t\tcontainer.style.translate = `${dx}px ${dy}px`\n\n\t\t// P -- play: animate from the inverse offset to natural resting position\n\t\tconst flipKeyframes: Keyframe[] = [{ translate: `${dx}px ${dy}px` }, { translate: '0px 0px' }]\n\t\tconst anim = container.animate(\n\t\t\tflipKeyframes,\n\t\t\t{\n\t\t\t\tduration: SPRING_SMOOTH.duration,\n\t\t\t\teasing: SPRING_SMOOTH.easingFallback,\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t)\n\t\tfrom(anim.finished).pipe(\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tif (container.isConnected) container.style.translate = ''\n\t\t\t\t// Report final resting bounds after animation completes\n\t\t\t\tconst finalRect = container.getBoundingClientRect()\n\t\t\t\twindowManager.updateBounds(this.id, { left: finalRect.left, top: finalRect.top, width: finalRect.width, height: finalRect.height })\n\t\t\t}),\n\t\t\tcatchError(() => EMPTY),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\n\t\tthis._savePosition()\n\t}\n\n\t// ============================================\n\t// DRAG PIPELINE\n\t// ============================================\n\n\tprivate _drag$(): Observable<never> {\n\t\treturn new Observable(() => {\n\t\t\tconst head = this._headRef.value\n\t\t\tconst container = this._containerRef.value\n\t\t\tif (!head || !container) return\n\n\t\t\tlet didDrag = false\n\n\t\t\tconst sub = fromEvent<PointerEvent>(head, 'pointerdown').pipe(\n\t\t\t\tfilter(e => e.button === 0),\n\t\t\t\tfilter(e => {\n\t\t\t\t\tconst tag = (e.target as HTMLElement).tagName?.toLowerCase()\n\t\t\t\t\treturn !['input', 'textarea', 'select', 'button'].includes(tag)\n\t\t\t\t\t\t&& !(e.target as HTMLElement).closest('schmancy-input, schmancy-icon-button, button, a')\n\t\t\t\t}),\n\t\t\t\ttap(e => {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t}),\n\t\t\t)\n\t\t\t\t.pipe(\n\t\t\t\t\tmap(e => {\n\t\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\t\tconst isBottom = this._currentCorner.includes('bottom')\n\t\t\t\t\t\tconst wasOpen = this.open\n\t\t\t\t\t\tdidDrag = false\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstartX: e.clientX,\n\t\t\t\t\t\t\tstartY: e.clientY,\n\t\t\t\t\t\t\toffsetX: e.clientX - rect.left,\n\t\t\t\t\t\t\toffsetY: e.clientY - rect.top,\n\t\t\t\t\t\t\trect,\n\t\t\t\t\t\t\tvw: window.innerWidth,\n\t\t\t\t\t\t\tvh: window.innerHeight,\n\t\t\t\t\t\t\tisBottom,\n\t\t\t\t\t\t\twasOpen,\n\t\t\t\t\t\t\tpointerId: e.pointerId,\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tswitchMap(({ startX, startY, offsetX, offsetY, rect, vw, vh, isBottom, wasOpen, pointerId }) => {\n\t\t\t\t\t\tconst move$ = fromEvent<PointerEvent>(window, 'pointermove').pipe(\n\t\t\t\t\t\t\tfilter(e => e.pointerId === pointerId),\n\t\t\t\t\t\t\tauditTime(0, animationFrameScheduler),\n\t\t\t\t\t\t\tmap(e => ({ clientX: e.clientX, clientY: e.clientY })),\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst end$ = fromEvent<PointerEvent>(window, 'pointerup').pipe(\n\t\t\t\t\t\t\tfilter(e => e.pointerId === pointerId),\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\treturn move$.pipe(\n\t\t\t\t\t\t\ttap(({ clientX, clientY }) => {\n\t\t\t\t\t\t\t\tconst dx = clientX - startX\n\t\t\t\t\t\t\t\tconst dy = clientY - startY\n\t\t\t\t\t\t\t\tif (Math.sqrt(dx * dx + dy * dy) > DRAG_THRESHOLD && !didDrag) {\n\t\t\t\t\t\t\t\t\tdidDrag = true\n\t\t\t\t\t\t\t\t\tthis._applyDragVisuals(true)\n\t\t\t\t\t\t\t\t\t// Collapse on first confirmed drag move\n\t\t\t\t\t\t\t\t\tif (wasOpen) {\n\t\t\t\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\t\t\t\t\tcontainer.style.clipPath = this.closedClipPath\n\t\t\t\t\t\t\t\t\t\tcontainer.style.overflow = 'hidden'\n\t\t\t\t\t\t\t\t\t\tconst body = this._bodyRef.value\n\t\t\t\t\t\t\t\t\t\tif (body) {\n\t\t\t\t\t\t\t\t\t\t\tbody.inert = true\n\t\t\t\t\t\t\t\t\t\t\tbody.style.visibility = 'hidden'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!didDrag) return\n\n\t\t\t\t\t\t\t\tconst left = Math.max(0, Math.min(clientX - offsetX, vw - rect.width))\n\t\t\t\t\t\t\t\tconst minTop = isBottom ? HEAD_HEIGHT - rect.height : 0\n\t\t\t\t\t\t\t\tconst maxTop = isBottom ? vh - rect.height : vh - HEAD_HEIGHT\n\t\t\t\t\t\t\t\tconst top = Math.max(minTop, Math.min(clientY - offsetY, maxTop))\n\n\t\t\t\t\t\t\t\tthis._position = {\n\t\t\t\t\t\t\t\t\tx: this._currentCorner.includes('right') ? vw - left - rect.width : left,\n\t\t\t\t\t\t\t\t\ty: isBottom ? vh - top - rect.height : top,\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._applyContainerPosition()\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\ttakeUntil(end$),\n\t\t\t\t\t\t\tfinalize(() => {\n\t\t\t\t\t\t\t\tif (didDrag) {\n\t\t\t\t\t\t\t\t\tthis._reorientToNearestCorner()\n\t\t\t\t\t\t\t\t\tthis._applyDragVisuals(false)\n\t\t\t\t\t\t\t\t\tdidDrag = false\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdidDrag = false\n\t\t\t\t\t\t\t\t\tthis.toggle()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t)\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t.subscribe()\n\n\t\t\treturn () => sub.unsubscribe()\n\t\t})\n\t}\n\n\t// ============================================\n\t// LIFECYCLE\n\t// ============================================\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Pipeline 1: DOM setup + manager registration + drag + z-index sync\n\t\tfrom(this.updateComplete).pipe(\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis._currentCorner = this.corner\n\t\t\t\tthis._loadPosition()\n\t\t\t\tthis._applyContainerPosition()\n\t\t\t\tthis._initDOMState()\n\t\t\t\t// Register with window manager\n\t\t\t\tconst container = this._containerRef.value\n\t\t\t\tif (container) {\n\t\t\t\t\tconst rect = container.getBoundingClientRect()\n\t\t\t\t\tconst bounds: WindowBounds = { left: rect.left, top: rect.top, width: rect.width, height: rect.height }\n\t\t\t\t\twindowManager.register(this.id, bounds, this.freePosition ? 'free' : this._currentCorner)\n\t\t\t\t}\n\t\t\t}),\n\t\t\tswitchMap(() => merge(\n\t\t\t\tthis._drag$(),\n\t\t\t\twindowManager.selectWindow(this.id).pipe(\n\t\t\t\t\ttap(record => {\n\t\t\t\t\t\tif (!record) return\n\t\t\t\t\t\tconst container = this._containerRef.value\n\t\t\t\t\t\tif (container) container.style.zIndex = String(record.zIndex)\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\twindowManager.selectFocused().pipe(\n\t\t\t\t\ttap(focusedId => {\n\t\t\t\t\t\tthis._focused = focusedId === this.id\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t)),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\n\n\t\t// Pipeline 3: Environment -- one subscription\n\t\tmerge(\n\t\t\tfromEvent(window, 'resize').pipe(\n\t\t\t\tauditTime(0, animationFrameScheduler),\n\t\t\t\ttap(() => this._validateBounds()),\n\t\t\t),\n\t\t\ttheme.bottomOffset$.pipe(\n\t\t\t\ttap(() => this._applyContainerPosition()),\n\t\t\t),\n\t\t).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\twindowManager.unregister(this.id)\n\t}\n\n\tprivate _initDOMState() {\n\t\tconst container = this._containerRef.value\n\t\tconst body = this._bodyRef.value\n\t\tif (!container) return\n\n\t\tthis._applyContainerPosition()\n\n\t\tif (this.open) {\n\t\t\tthis._hasOpened = true\n\t\t\tcontainer.style.overflow = ''\n\t\t\tif (body) {\n\t\t\t\tbody.inert = false\n\t\t\t\tbody.style.visibility = 'visible'\n\t\t\t}\n\t\t} else {\n\t\t\tcontainer.style.clipPath = this.closedClipPath\n\t\t\tcontainer.style.overflow = 'hidden'\n\t\t\tif (body) {\n\t\t\t\tbody.inert = true\n\t\t\t\tbody.style.visibility = 'hidden'\n\t\t\t}\n\t\t}\n\t}\n\n\t// ============================================\n\t// ANIMATION\n\t// ============================================\n\n\tprivate _animateOpen() {\n\t\tconst container = this._containerRef.value\n\t\tconst body = this._bodyRef.value\n\t\tif (!container) return\n\n\t\tthis._hasOpened = true\n\t\tthis.open = true\n\n\t\t// Overlap avoidance\n\t\tconst rect = container.getBoundingClientRect()\n\t\tconst projectedBounds: WindowBounds = {\n\t\t\tleft: rect.left,\n\t\t\ttop: this.isBottomCorner ? rect.top - 400 : rect.top,\n\t\t\twidth: rect.width,\n\t\t\theight: 400 + HEAD_HEIGHT,\n\t\t}\n\t\tconst overlaps = windowManager.findOverlaps(projectedBounds, this.id)\n\t\tif (overlaps.length > 0) {\n\t\t\tconst resolved = resolveOverlap(projectedBounds, overlaps, { width: window.innerWidth, height: window.innerHeight })\n\t\t\tif (Math.abs(resolved.left - projectedBounds.left) > 10 || Math.abs(resolved.top - projectedBounds.top) > 10) {\n\t\t\t\tconst isRight = this._currentCorner.includes('right')\n\t\t\t\tconst isBottom = this._currentCorner.includes('bottom')\n\t\t\t\tthis._position = {\n\t\t\t\t\tx: isRight ? window.innerWidth - resolved.left - resolved.width : resolved.left,\n\t\t\t\t\ty: isBottom ? window.innerHeight - resolved.top - resolved.height : resolved.top,\n\t\t\t\t}\n\t\t\t\tthis._applyContainerPosition()\n\t\t\t}\n\t\t}\n\n\t\tif (body) {\n\t\t\tbody.style.visibility = 'visible'\n\t\t\tbody.inert = false\n\t\t}\n\n\t\tif (reducedMotion$.value) {\n\t\t\tcontainer.style.clipPath = ''\n\t\t\tcontainer.style.overflow = ''\n\t\t\tthis.dispatchScopedEvent('window-toggle', { state: 'expanded' })\n\t\t\treturn\n\t\t}\n\n\t\tthis._currentAnimation?.cancel()\n\t\tcontainer.style.overflow = 'hidden'\n\t\tcontainer.style.willChange = 'opacity'\n\t\tconst openKeyframes: Keyframe[] = [\n\t\t\t{ clipPath: this.closedClipPath, opacity: 0.95 },\n\t\t\t{ clipPath: this.openClipPath, opacity: 1 },\n\t\t]\n\t\tconst anim = container.animate(openKeyframes, {\n\t\t\tduration: SPRING_SNAPPY.duration,\n\t\t\teasing: SPRING_SNAPPY.easingFallback,\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tthis._currentAnimation = anim\n\n\t\tfrom(anim.finished).pipe(\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tif (container.isConnected) {\n\t\t\t\t\tcontainer.style.clipPath = ''\n\t\t\t\t\tcontainer.style.overflow = ''\n\t\t\t\t\tcontainer.style.willChange = ''\n\t\t\t\t}\n\t\t\t}),\n\t\t\tcatchError(() => EMPTY),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\n\t\tthis.dispatchScopedEvent('window-toggle', { state: 'expanded' })\n\t}\n\n\tprivate _animateClose() {\n\t\tconst container = this._containerRef.value\n\t\tif (!container) return\n\n\t\tif (reducedMotion$.value) {\n\t\t\tcontainer.style.clipPath = this.closedClipPath\n\t\t\tcontainer.style.overflow = 'hidden'\n\t\t\tthis.open = false\n\t\t\tconst body = this._bodyRef.value\n\t\t\tif (body) { body.inert = true; body.style.visibility = 'hidden' }\n\t\t\tthis.dispatchScopedEvent('window-toggle', { state: 'collapsed' })\n\t\t\treturn\n\t\t}\n\n\t\tthis._currentAnimation?.cancel()\n\t\tcontainer.style.overflow = 'hidden'\n\t\tcontainer.style.willChange = 'opacity'\n\t\tconst closeKeyframes: Keyframe[] = [\n\t\t\t{ clipPath: this.openClipPath, opacity: 1 },\n\t\t\t{ clipPath: this.closedClipPath, opacity: 0.95 },\n\t\t]\n\t\tconst anim = container.animate(closeKeyframes, {\n\t\t\tduration: Math.round(SPRING_SNAPPY.duration * 0.7),\n\t\t\teasing: 'cubic-bezier(0.4, 0, 0.8, 0.15)',\n\t\t\tfill: 'forwards',\n\t\t})\n\t\tthis._currentAnimation = anim\n\n\t\tfrom(anim.finished).pipe(\n\t\t\ttake(1),\n\t\t\ttap(() => {\n\t\t\t\tthis.open = false\n\t\t\t\tcontainer.style.willChange = ''\n\t\t\t\tconst body = this._bodyRef.value\n\t\t\t\tif (body) { body.inert = true; body.style.visibility = 'hidden' }\n\t\t\t}),\n\t\t\tcatchError(() => EMPTY),\n\t\t\ttakeUntil(this.disconnecting),\n\t\t).subscribe()\n\n\t\tthis.dispatchScopedEvent('window-toggle', { state: 'collapsed' })\n\t}\n\n\t// ============================================\n\t// VISUAL STATE HELPERS\n\t// ============================================\n\n\t/** Apply drag visuals directly on DOM refs — avoids full Lit re-render for cursor + opacity */\n\tprivate _applyDragVisuals(dragging: boolean) {\n\t\tconst head = this._headRef.value\n\t\tconst container = this._containerRef.value\n\t\tif (head) {\n\t\t\thead.classList.toggle('cursor-grabbing', dragging)\n\t\t\thead.classList.toggle('cursor-move', !dragging)\n\t\t}\n\t\tif (container) {\n\t\t\tcontainer.style.opacity = dragging ? '0.95' : ''\n\t\t}\n\t}\n\n\tprivate _handleFocus = () => windowManager.focus(this.id)\n\n\tprivate _handleHeadKeydown = (e: KeyboardEvent) => {\n\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\te.preventDefault()\n\t\t\tthis.toggle()\n\t\t\treturn\n\t\t}\n\t\tif (e.key === 'ArrowUp' || e.key === 'ArrowDown' || e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n\t\t\te.preventDefault()\n\t\t\tconst step = e.shiftKey ? 20 : 5\n\t\t\tconst dx = e.key === 'ArrowRight' ? step : e.key === 'ArrowLeft' ? -step : 0\n\t\t\tconst dy = e.key === 'ArrowDown' ? step : e.key === 'ArrowUp' ? -step : 0\n\t\t\tthis._position = { x: this._position.x + dx, y: this._position.y + dy }\n\t\t\tthis._applyContainerPosition()\n\t\t\tthis._savePosition()\n\t\t}\n\t}\n\n\t// ============================================\n\t// PUBLIC API\n\t// ============================================\n\n\ttoggle() {\n\t\tif (this.open) this._animateClose()\n\t\telse this._animateOpen()\n\t}\n\n\texpand() {\n\t\tif (this.open) return\n\t\tthis._animateOpen()\n\t}\n\n\tclose() {\n\t\tif (!this.open) return\n\t\tthis._animateClose()\n\t}\n\n\t// ============================================\n\t// RENDER\n\t// ============================================\n\n\tprotected render(): unknown {\n\t\tconst isBottom = this._currentCorner.startsWith('bottom')\n\n\t\tconst containerClasses = classMap({\n\t\t\tfixed: true,\n\t\t\tflex: true,\n\t\t\t'flex-col': isBottom,\n\t\t\t'flex-col-reverse': !isBottom,\n\t\t\t'z-1000': true,\n\t\t\t'ring-1': !this._focused,\n\t\t\t'ring-2': this._focused,\n\t\t\t'ring-primary-default/30': this._focused,\n\t\t\t'ring-primary-default/15': this.open && !this._focused,\n\t\t\t'rounded-2xl': this.open,\n\t\t\t'ring-outline-variant/40': !this.open && !this._focused,\n\t\t\t'rounded-[22px]': !this.open,\n\t\t\t'overflow-hidden': true,\n\t\t})\n\n\t\tconst containerStyles = styleMap({\n\t\t\twidth: this.panelWidth,\n\t\t\t'max-height': 'calc(100vh - 32px)',\n\t\t\t'pointer-events': 'none',\n\t\t})\n\n\t\tconst bodyStyles = styleMap({\n\t\t\t'pointer-events': this.open ? 'auto' : 'none',\n\t\t})\n\n\t\tconst headClasses = classMap({\n\t\t\t'h-full': true,\n\t\t\t'px-3': true,\n\t\t\tflex: true,\n\t\t\t'items-center': true,\n\t\t\t'gap-2': true,\n\t\t\t'select-none': true,\n\t\t\t'cursor-move': true,\n\t\t})\n\n\t\treturn html`\n\t\t\t<schmancy-surface\n\t\t\t\t${ref(this._containerRef)}\n\t\t\t\ttype=\"glass\"\n\t\t\t\televation=\"${this.elevation}\"\n\t\t\t\tclass=${containerClasses}\n\t\t\t\tstyle=${containerStyles}\n\t\t\t\taria-expanded=${this.open}\n\t\t\t\t@pointerdown=${this._handleFocus}\n\t\t\t>\n\t\t\t\t<!-- Details section (visually above summary for bottom corners) -->\n\t\t\t\t<section\n\t\t\t\t\t${ref(this._bodyRef)}\n\t\t\t\t\tclass=\"flex-1 min-h-0 overflow-hidden flex flex-col\"\n\t\t\t\t\tstyle=${bodyStyles}\n\t\t\t\t\trole=\"region\"\n\t\t\t\t\taria-label=\"Expandable content\"\n\t\t\t\t>\n\t\t\t\t\t${this._hasOpened ? html`<slot name=\"details\"></slot>` : nothing}\n\t\t\t\t</section>\n\n\t\t\t\t<!-- Summary section -- always interactive, always visible -->\n\t\t\t\t<section\n\t\t\t\t\tclass=\"shrink-0 bg-surface-lowest\"\n\t\t\t\t\tstyle=${styleMap({ 'pointer-events': 'auto', height: `${HEAD_HEIGHT}px` })}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\t${ref(this._headRef)}\n\t\t\t\t\t\t${cursorGlow({ radius: 200, intensity: 0.10 })}\n\t\t\t\t\t\tclass=${headClasses}\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t\ttitle=\"Drag to move, click to expand\"\n\t\t\t\t\t\taria-label=\"${this.open ? 'Collapse window' : 'Expand window'}\"\n\t\t\t\t\t\t@keydown=${this._handleHeadKeydown}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div class=\"flex-1 min-w-0\">\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\"\n\t\t\t\t\t\t\tclass=\"shrink-0 text-surface-on/40 transition-transform duration-200 ${this.open ? 'rotate-180' : ''}\"\n\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t</schmancy-surface>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-window': SchmancyWindow\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;AAmBA,IAAM,IAAiB,oBACjB,IAAwB;AAmL9B,SAAS,EAAa,GAAiB,GAAA;AACtC,QAAA,EAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;;AAGzH,IAAA,GAAa,IArLb,MAAM,EAAA;CAWL,cAAA;AAAA,OAAA,UAR2B,IAAI,EAAqC;GACnE,yBAAS,IAAI,KAAA;GACb,WAAW;GACX,YAAY,EAAA;GAAA,CAAA,EAAA,KAAA,SAGK,KAAK,QAAQ,cAAA;;CAI/B,OAAA,cAAO;AAIN,SAHK,AACJ,EAAqB,aAAW,IAAI,GAAA,EAE9B,EAAqB;;CAK7B,IAAA,UAAI;AACH,SAAO,KAAK,QAAQ,MAAM;;CAG3B,IAAA,YAAI;AACH,SAAO,KAAK,QAAQ,MAAM;;CAK3B,SAAS,GAAY,GAA6B,GAAA;EACjD,IAAM,IAAQ,KAAK,QAAQ;AAC3B,MAAI,EAAM,QAAQ,IAAI,EAAA,CAAK;EAG3B,IAAM,IAAuB;GAC5B,IAAA;GACA,QAAQ;GACR,aAAa;GACb,QALc,EAAa,aAAa,EAAA;GAMxC,MAAA,CAAM;GACN,YAAA;GAAA,EAGK,IAAU,IAAI,IAAI,EAAM,QAAA;AAC9B,IAAQ,IAAI,GAAI,EAAA;EAChB,IAAM,IAAa,EAAa,eAAA;AAEhC,OAAK,QAAQ,KAAK;GAAA,GAAK;GAAO,SAAA;GAAS,YAAA;GAAA,CAAA;;CAGxC,WAAW,GAAA;EACV,IAAM,IAAQ,KAAK,QAAQ;AAC3B,MAAA,CAAK,EAAM,QAAQ,IAAI,EAAA,CAAK;AAE5B,IAAa,UAAU,EAAA;EACvB,IAAM,IAAU,IAAI,IAAI,EAAM,QAAA;AAC9B,IAAQ,OAAO,EAAA;EACf,IAAM,IAAa,EAAa,eAAA,EAC1B,IAAY,EAAM,cAAc,IAAK,OAAO,EAAM;AAExD,OAAK,QAAQ,KAAK;GAAA,GAAK;GAAO,SAAA;GAAS,YAAA;GAAY,WAAA;GAAA,CAAA;;CAKpD,aAAa,GAAY,GAAA;AACxB,OAAK,cAAc,GAAI,EAAE,QAAA,GAAA,CAAA;;CAG1B,kBAAkB,GAAY,GAAA;AAC7B,OAAK,cAAc,GAAI,EAAE,aAAA,GAAA,CAAA;;CAG1B,WAAW,GAAY,GAAA;AACtB,OAAK,cAAc,GAAI,EAAE,MAAA,GAAA,CAAA;;CAG1B,MAAM,GAAA;EACL,IAAM,IAAQ,KAAK,QAAQ;AAE3B,MADA,CAAK,EAAM,QAAQ,IAAI,EAAA,IACnB,EAAM,cAAc,EAAI;EAE5B,IAAM,IAAS,EAAa,aAAa,EAAA,EACnC,IAAU,IAAI,IAAI,EAAM,QAAA,EACxB,IAAS,EAAQ,IAAI,EAAA;AACvB,OACH,EAAQ,IAAI,GAAI;GAAA,GAAK;GAAQ,QAAA;GAAA,CAAA;EAE9B,IAAM,IAAa,EAAa,eAAA;AAEhC,OAAK,QAAQ,KAAK;GAAA,GAAK;GAAO,SAAA;GAAS,YAAA;GAAY,WAAW;GAAA,CAAA;;CAK/D,aAAa,GAAsB,GAAA;EAClC,IAAM,IAAyB,EAAA;AAC/B,OAAK,IAAA,CAAO,GAAI,MAAW,KAAK,QAAQ,MAAM,QACzC,OAAO,KACP,EAAa,GAAQ,EAAO,OAAA,IAC/B,EAAO,KAAK,EAAA;AAGd,SAAO;;CAGR,aAAa,GAAA;EACZ,IAAM,IAAyB,EAAA;AAC/B,OAAK,IAAA,CAAO,GAAS,MAAW,KAAK,QAAQ,MAAM,QAC9C,OAAY,KAAI,EAAO,KAAK,EAAA;AAEjC,SAAO;;CAKR,aAAa,GAAA;AACZ,SAAO,KAAK,QAAQ,KACnB,GAAI,MAAS,EAAM,QAAQ,IAAI,EAAA,CAAA,EAC/B,GAAA,CAAA;;CAIF,gBAAA;AACC,SAAO,KAAK,QAAQ,KACnB,GAAI,MAAS,EAAM,UAAA,EACnB,GAAA,CAAA;;CAMF,aAAa,GAAA;AACZ,MAAA;GAEC,IAAM,IAAM,aAAa,QAAQ,IAAiB,EAAA,IAAO,aAAa,QAAQ,IAAwB,EAAA;AACtG,UAAK,IACE,KAAK,MAAM,EAAA,GADD;UAAA;AAGjB,UAAO;;;CAIT,aAAa,GAAY,GAAA;AACxB,MAAA;AACC,gBAAa,QAAQ,IAAiB,GAAI,KAAK,UAAU,EAAA,CAAA;UAAA;;CAM3D,cAAc,GAAA;AACb,MAAA;AACC,gBAAa,WAAW,IAAiB,EAAA,EACzC,aAAa,WAAW,IAAwB,EAAA;UAAA;;CAQlD,cAAsB,GAAY,GAAA;EACjC,IAAM,IAAQ,KAAK,QAAQ,OACrB,IAAS,EAAM,QAAQ,IAAI,EAAA;AACjC,MAAA,CAAK,EAAQ;EAEb,IAAM,IAAU,IAAI,IAAI,EAAM,QAAA;AAC9B,IAAQ,IAAI,GAAI;GAAA,GAAK;GAAA,GAAW;GAAA,CAAA,EAChC,KAAK,QAAQ,KAAK;GAAA,GAAK;GAAO,SAAA;GAAA,CAAA;;EASkB,aAAA;AC/KlD,SAAgB,EACf,GACA,GACA,GAAA;CAEA,IAAI,IAAS,EAAA,GAAK,GAAA;AAElB,MAAK,IAAI,IAAU,GAAG,IAlBM,MAmBR,EAAS,MAAK,MAAA;AAAK,SAhBX,IAgBwB,GAhBP,IAgBe,EAAE,QAAA,EAfrD,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;MAD5F,GAAiB;GAAA,EAeS,IAIrD,KAAS;EAAA,GACL;EACH,MAAM,EAAO,OA1BI;EA2BjB,KAAK,EAAO,MA3BK;EAAA;AA+BnB,QAMD,SACC,GACA,GAAA;AAEA,SAAO;GACN,OAAO,EAAO;GACd,QAAQ,EAAO;GACf,MAAM,KAAK,IAAI,GAAG,KAAK,IAAI,EAAO,MAAM,EAAS,QAAQ,EAAO,MAAA,CAAA;GAChE,KAAK,KAAK,IAAI,GAAG,KAAK,IAAI,EAAO,KAAK,EAAS,SAAS,EAAO,OAAA,CAAA;GAAA;GAdzC,GAAQ,EAAA;;ACfhC,IAAM,IAAc,IASL,IAAA,cAA6B,EAAY,CAAG;;;;;;;;;;;;;;yBAUjB,WAAA,KAAA,UAAA,CAMsB,GAAA,KAAA,SAEd,gBAAA,KAAA,YAAA,CAER,GAAA,KAAA,eAAA,CAEG,GAAA,KAAA,cAEgC,UAAA,KAAA,WAErC,KAAA,KAAA,YAEC,KAAA,KAAA,OAAA,CAGW,GAAA,KAAA,aAAA,CAKrB,GAAA,KAAA,WAAA,CAEF,GAAA,KAAA,YAGE;GAAE,GAAG;GAAI,GAAG;GAAA,EAAA,KAAA,iBACI,gBAAA,KAAA,iBAGb,IAAA,KAAA,gBAGT,GAAA,EAAA,KAAA,WACL,GAAA,EAAA,KAAA,WACA,GAAA,EAAA,KAAA,qBA+eU,EAAc,MAAM,KAAK,GAAA,EAAA,KAAA,sBAExB,MAAA;AAC7B,OAAI,EAAE,QAAQ,WAAW,EAAE,QAAQ,IAGlC,QAFA,EAAE,gBAAA,EAAA,KACF,KAAK,QAAA;AAGN,OAAI,EAAE,QAAQ,aAAa,EAAE,QAAQ,eAAe,EAAE,QAAQ,eAAe,EAAE,QAAQ,cAAc;AACpG,MAAE,gBAAA;IACF,IAAM,IAAO,EAAE,WAAW,KAAK,GACzB,IAAK,EAAE,QAAQ,eAAe,IAAO,EAAE,QAAQ,cAAR,CAAuB,IAAO,GACrE,IAAK,EAAE,QAAQ,cAAc,IAAO,EAAE,QAAQ,YAAR,CAAqB,IAAO;AACxE,SAAK,YAAY;KAAE,GAAG,KAAK,UAAU,IAAI;KAAI,GAAG,KAAK,UAAU,IAAI;KAAA,EACnE,KAAK,yBAAA,EACL,KAAK,eAAA;;;;CAxfP,IAAA,aAAY;AACX,SAAO,KAAK,iBAAiB;;CAG9B,IAAA,iBAAY;AACX,SAAO,KAAK,eAAe,WAAW,SAAA;;CAGvC,IAAA,iBAAY;AACX,SAAO,KAAK,iBACT,oDACA;;CAGJ,IAAA,eAAY;AACX,SAAO;;CAGR,IAAA,YAAY;AACX,SAAI,KAAK,OAAa,MACf,KAAK,UAAU,MAAM;;CAO7B,0BAAA;EACC,IAAM,IAAY,KAAK,cAAc;AACrC,MAAA,CAAK,EAAW;AAEZ,OAAK,mBAAmB,KAAK,mBAChC,EAAU,MAAM,eAAe,OAAA,EAC/B,EAAU,MAAM,eAAe,QAAA,EAC/B,EAAU,MAAM,eAAe,MAAA,EAC/B,EAAU,MAAM,eAAe,SAAA,EAC/B,KAAK,iBAAiB,KAAK;EAE5B,IAAA,EAAM,GAAE,GAAA,GAAG,MAAM,KAAK;AAClB,OAAK,eAAe,SAAS,QAAA,GAChC,EAAU,MAAM,QAAQ,GAAG,EAAA,MAE3B,EAAU,MAAM,OAAO,GAAG,EAAA,KAEvB,KAAK,eAAe,SAAS,SAAA,GAChC,EAAU,MAAM,SAAS,GAAG,IAAI,EAAM,aAAA,MAEtC,EAAU,MAAM,MAAM,GAAG,EAAA;;CAAA;AAAA,OAAA,gBAIa,IAAI,IAAY;GAAC;GAAY;GAAa;GAAe;GAAA,CAAA;;CAEjG,gBAAA;EACC,IAAM,IAAQ,EAAc,aAAa,KAAK,GAAA;AAC1C,QACH,KAAK,YAAY;GAAE,GAAG,EAAM;GAAG,GAAG,EAAM;GAAA,EACxC,EAAmB,cAAc,IAAI,EAAM,OAAA,KAC1C,KAAK,iBAAiB,EAAM;;CAK/B,gBAAA;AACC,IAAc,aAAa,KAAK,IAAI;GAAA,GAAK,KAAK;GAAW,QAAQ,KAAK;GAAA,CAAA;;CAGvE,kBAAA;EACC,IAAM,IAAY,KAAK,cAAc;AACrC,MAAA,CAAK,EAAW;EAChB,IAAM,IAAO,EAAU,uBAAA;AACvB,MAAI,EAAK,UAAU,EAAG;EACtB,IAAM,IAAK,OAAO,YACZ,IAAK,OAAO,aACZ,IAAU,KAAK,eAAe,SAAS,QAAA,EACvC,IAAW,KAAK,eAAe,SAAS,SAAA,EACxC,IAAa,IAAU,IAAK,KAAK,UAAU,IAAI,EAAK,QAAQ,KAAK,UAAU,GAC3E,IAAY,IAAW,IAAK,KAAK,UAAU,IAAI,EAAK,SAAS,KAAK,UAAU,GAC5E,IAAU,KAAK,IAAI,GAAG,KAAK,IAAI,GAAY,IAAK,EAAK,MAAA,CAAA,EACrD,IAAS,KAAK,IAAI,GAAG,KAAK,IAAI,GAAW,IAAK,EAAK,OAAA,CAAA;AACzD,OAAK,YAAY;GAChB,GAAG,IAAU,IAAK,IAAU,EAAK,QAAQ;GACzC,GAAG,IAAW,IAAK,IAAS,EAAK,SAAS;GAAA,EAE3C,KAAK,yBAAA;;CAON,yBAAiC,IAAA,CAAgB,GAAA;AAEhD,MAAI,KAAK,cAAc;AACtB,QAAK,eAAA;GACL,IAAM,IAAO,KAAK,cAAc,OAAO,uBAAA;AAIvC,GAHI,KACH,EAAc,aAAa,KAAK,IAAI;IAAE,MAAM,EAAK;IAAM,KAAK,EAAK;IAAK,OAAO,EAAK;IAAO,QAAQ,EAAK;IAAA,CAAA;AAEvG;;EAGD,IAAM,IAAY,KAAK,cAAc;AACrC,MAAA,CAAK,EAAW;EAGhB,IAAM,IAAO,EAAU,uBAAA,EAGjB,IAAkB,KAAK,eAAe,SAAS,SAAA,EAC/C,IAAc,EAAK,OAAO,EAAK,QAAQ,GACvC,IAAc,IACjB,EAAK,SAAS,KACd,EAAK,MAAM,IACR,IAAO,IAAc,OAAO,aAAa,IAAI,UAAU,QAEvD,IAAwB,GADjB,IAAc,OAAO,cAAc,IAAI,WAAW,MAAA,GACtB;AAWzC,MARA,KAAK,iBAAiB,GACtB,KAAK,YAAY;GAAE,GAAG;GAAI,GAAG;GAAA,EAC7B,KAAK,yBAAA,EAEA,KAAK,SACT,EAAU,MAAM,WAAW,KAAK,iBAG7B,KAAiB,EAAe,OAAO;AAC1C,QAAK,eAAA;GACL,IAAM,IAAW,EAAU,uBAAA;AAE3B,GADA,EAAc,aAAa,KAAK,IAAI;IAAE,MAAM,EAAS;IAAM,KAAK,EAAS;IAAK,OAAO,EAAS;IAAO,QAAQ,EAAS;IAAA,CAAA;AACtH;;EAID,IAAM,IAAU,EAAU,uBAAA,EACpB,IAAK,EAAK,OAAO,EAAQ,MACzB,IAAK,EAAK,MAAM,EAAQ;AAC9B,IAAU,MAAM,YAAY,GAAG,EAAA,KAAQ,EAAA;EAGvC,IAAM,IAA4B,CAAC,EAAE,WAAW,GAAG,EAAA,KAAQ,EAAA,KAAA,EAAU,EAAE,WAAW,WAAA,CAAA;AASlF,IARa,EAAU,QACtB,GACA;GACC,UAAU,EAAc;GACxB,QAAQ,EAAc;GACtB,MAAM;GAAA,CAAA,CAGE,SAAA,CAAU,KACnB,EAAK,EAAA,EACL,QAAA;AACK,KAAU,gBAAa,EAAU,MAAM,YAAY;GAEvD,IAAM,IAAY,EAAU,uBAAA;AAC5B,KAAc,aAAa,KAAK,IAAI;IAAE,MAAM,EAAU;IAAM,KAAK,EAAU;IAAK,OAAO,EAAU;IAAO,QAAQ,EAAU;IAAA,CAAA;IAAA,EAE3H,QAAiB,EAAA,EACjB,EAAU,KAAK,cAAA,CAAA,CACd,WAAA,EAEF,KAAK,eAAA;;CAON,SAAA;AACC,SAAO,IAAI,QAAA;GACV,IAAM,IAAO,KAAK,SAAS,OACrB,IAAY,KAAK,cAAc;AACrC,OAAA,CAAK,KAAA,CAAS,EAAW;GAEzB,IAAI,IAAA,CAAU,GAER,IAAM,EAAwB,GAAM,cAAA,CAAe,KACxD,GAAO,MAAK,EAAE,WAAW,EAAX,EACd,GAAO,MAAA;IACN,IAAM,IAAO,EAAE,OAAuB,SAAS,aAAA;AAC/C,WAAA,CAAQ;KAAC;KAAS;KAAY;KAAU;KAAA,CAAU,SAAS,EAAA,IAAA,CACrD,EAAE,OAAuB,QAAQ,kDAAA;KAAA,EAExC,GAAI,MAAA;AACH,MAAE,gBAAA,EACF,EAAE,iBAAA;KAAA,CAAA,CAGF,KACA,GAAI,MAAA;IACH,IAAM,IAAO,EAAU,uBAAA,EACjB,IAAW,KAAK,eAAe,SAAS,SAAA,EACxC,IAAU,KAAK;AAErB,WADA,IAAA,CAAU,GACH;KACN,QAAQ,EAAE;KACV,QAAQ,EAAE;KACV,SAAS,EAAE,UAAU,EAAK;KAC1B,SAAS,EAAE,UAAU,EAAK;KAC1B,MAAA;KACA,IAAI,OAAO;KACX,IAAI,OAAO;KACX,UAAA;KACA,SAAA;KACA,WAAW,EAAE;KAAA;KAAA,EAGf,GAAA,EAAa,QAAA,GAAQ,QAAA,GAAQ,SAAA,GAAS,SAAA,GAAS,MAAA,GAAM,IAAA,GAAI,IAAA,GAAI,UAAA,GAAU,SAAA,GAAS,WAAA,QAAA;IAC/E,IAAM,IAAQ,EAAwB,QAAQ,cAAA,CAAe,KAC5D,GAAO,MAAK,EAAE,cAAc,EAAA,EAC5B,EAAU,GAAG,EAAA,EACb,GAAI,OAAA;KAAQ,SAAS,EAAE;KAAS,SAAS,EAAE;KAAA,EAAA,CAAA,EAEtC,IAAO,EAAwB,QAAQ,YAAA,CAAa,KACzD,GAAO,MAAK,EAAE,cAAc,EAAA,CAAA;AAG7B,WAAO,EAAM,KACZ,GAAA,EAAO,SAAA,GAAS,SAAA,QAAA;KACf,IAAM,IAAK,IAAU,GACf,IAAK,IAAU;AACrB,SAAI,KAAK,KAAK,IAAK,IAAK,IAAK,EAAA,GA9Rd,KAAA,CA8RuC,MACrD,IAAA,CAAU,GACV,KAAK,kBAAA,CAAkB,EAAA,EAEnB,IAAS;AACZ,WAAK,OAAA,CAAO,GACZ,EAAU,MAAM,WAAW,KAAK,gBAChC,EAAU,MAAM,WAAW;MAC3B,IAAM,IAAO,KAAK,SAAS;AACvB,YACH,EAAK,QAAA,CAAQ,GACb,EAAK,MAAM,aAAa;;AAI3B,SAAA,CAAK,EAAS;KAEd,IAAM,IAAO,KAAK,IAAI,GAAG,KAAK,IAAI,IAAU,GAAS,IAAK,EAAK,MAAA,CAAA,EACzD,IAAS,IAAW,IAAc,EAAK,SAAS,GAChD,IAAS,IAAW,IAAK,EAAK,SAAS,IAAK,GAC5C,IAAM,KAAK,IAAI,GAAQ,KAAK,IAAI,IAAU,GAAS,EAAA,CAAA;AAEzD,UAAK,YAAY;MAChB,GAAG,KAAK,eAAe,SAAS,QAAA,GAAW,IAAK,IAAO,EAAK,QAAQ;MACpE,GAAG,IAAW,IAAK,IAAM,EAAK,SAAS;MAAA,EAExC,KAAK,yBAAA;MAAA,EAEN,EAAU,EAAA,EACV,QAAA;AACK,UACH,KAAK,0BAAA,EACL,KAAK,kBAAA,CAAkB,EAAA,EACvB,IAAA,CAAU,MAEV,IAAA,CAAU,GACV,KAAK,QAAA;MAAA,CAAA;KAAA,CAAA,CAMT,WAAA;AAEF,gBAAa,EAAI,aAAA;IAAA;;CAQnB,oBAAA;AACC,QAAM,mBAAA,EAGN,EAAK,KAAK,eAAA,CAAgB,KACzB,EAAK,EAAA,EACL,QAAA;AACC,QAAK,iBAAiB,KAAK,QAC3B,KAAK,eAAA,EACL,KAAK,yBAAA,EACL,KAAK,eAAA;GAEL,IAAM,IAAY,KAAK,cAAc;AACrC,OAAI,GAAW;IACd,IAAM,IAAO,EAAU,uBAAA,EACjB,IAAuB;KAAE,MAAM,EAAK;KAAM,KAAK,EAAK;KAAK,OAAO,EAAK;KAAO,QAAQ,EAAK;KAAA;AAC/F,MAAc,SAAS,KAAK,IAAI,GAAQ,KAAK,eAAe,SAAS,KAAK,eAAA;;IAAA,EAG5E,QAAgB,EACf,KAAK,QAAA,EACL,EAAc,aAAa,KAAK,GAAA,CAAI,KACnC,GAAI,MAAA;AACH,OAAA,CAAK,EAAQ;GACb,IAAM,IAAY,KAAK,cAAc;AACjC,SAAW,EAAU,MAAM,SAAS,OAAO,EAAO,OAAA;IAAA,CAAA,EAGxD,EAAc,eAAA,CAAgB,KAC7B,GAAI,MAAA;AACH,QAAK,WAAW,MAAc,KAAK;IAAA,CAAA,CAAA,CAAA,EAItC,EAAU,KAAK,cAAA,CAAA,CACd,WAAA,EAIF,EACC,EAAU,QAAQ,SAAA,CAAU,KAC3B,EAAU,GAAG,EAAA,EACb,QAAU,KAAK,iBAAA,CAAA,CAAA,EAEhB,EAAM,cAAc,KACnB,QAAU,KAAK,yBAAA,CAAA,CAAA,CAAA,CAEf,KAAK,EAAU,KAAK,cAAA,CAAA,CAAgB,WAAA;;CAGvC,uBAAA;AACC,QAAM,sBAAA,EACN,EAAc,WAAW,KAAK,GAAA;;CAG/B,gBAAA;EACC,IAAM,IAAY,KAAK,cAAc,OAC/B,IAAO,KAAK,SAAS;AACtB,QAEL,KAAK,yBAAA,EAED,KAAK,QACR,KAAK,aAAA,CAAa,GAClB,EAAU,MAAM,WAAW,IACvB,MACH,EAAK,QAAA,CAAQ,GACb,EAAK,MAAM,aAAa,eAGzB,EAAU,MAAM,WAAW,KAAK,gBAChC,EAAU,MAAM,WAAW,UACvB,MACH,EAAK,QAAA,CAAQ,GACb,EAAK,MAAM,aAAa;;CAS3B,eAAA;EACC,IAAM,IAAY,KAAK,cAAc,OAC/B,IAAO,KAAK,SAAS;AAC3B,MAAA,CAAK,EAAW;AAEhB,OAAK,aAAA,CAAa,GAClB,KAAK,OAAA,CAAO;EAGZ,IAAM,IAAO,EAAU,uBAAA,EACjB,IAAgC;GACrC,MAAM,EAAK;GACX,KAAK,KAAK,iBAAiB,EAAK,MAAM,MAAM,EAAK;GACjD,OAAO,EAAK;GACZ,QAAQ;GAAA,EAEH,IAAW,EAAc,aAAa,GAAiB,KAAK,GAAA;AAClE,MAAI,EAAS,SAAS,GAAG;GACxB,IAAM,IAAW,EAAe,GAAiB,GAAU;IAAE,OAAO,OAAO;IAAY,QAAQ,OAAO;IAAA,CAAA;AACtG,OAAI,KAAK,IAAI,EAAS,OAAO,EAAgB,KAAA,GAAQ,MAAM,KAAK,IAAI,EAAS,MAAM,EAAgB,IAAA,GAAO,IAAI;IAC7G,IAAM,IAAU,KAAK,eAAe,SAAS,QAAA,EACvC,IAAW,KAAK,eAAe,SAAS,SAAA;AAC9C,SAAK,YAAY;KAChB,GAAG,IAAU,OAAO,aAAa,EAAS,OAAO,EAAS,QAAQ,EAAS;KAC3E,GAAG,IAAW,OAAO,cAAc,EAAS,MAAM,EAAS,SAAS,EAAS;KAAA,EAE9E,KAAK,yBAAA;;;AASP,MALI,MACH,EAAK,MAAM,aAAa,WACxB,EAAK,QAAA,CAAQ,IAGV,EAAe,MAIlB,QAHA,EAAU,MAAM,WAAW,IAC3B,EAAU,MAAM,WAAW,IAAA,KAC3B,KAAK,oBAAoB,iBAAiB,EAAE,OAAO,YAAA,CAAA;AAIpD,OAAK,mBAAmB,QAAA,EACxB,EAAU,MAAM,WAAW,UAC3B,EAAU,MAAM,aAAa;EAC7B,IAAM,IAA4B,CACjC;GAAE,UAAU,KAAK;GAAgB,SAAS;GAAA,EAC1C;GAAE,UAAU,KAAK;GAAc,SAAS;GAAA,CAAA,EAEnC,IAAO,EAAU,QAAQ,GAAe;GAC7C,UAAU,EAAc;GACxB,QAAQ,EAAc;GACtB,MAAM;GAAA,CAAA;AAEP,OAAK,oBAAoB,GAEzB,EAAK,EAAK,SAAA,CAAU,KACnB,EAAK,EAAA,EACL,QAAA;AACK,KAAU,gBACb,EAAU,MAAM,WAAW,IAC3B,EAAU,MAAM,WAAW,IAC3B,EAAU,MAAM,aAAa;IAAA,EAG/B,QAAiB,EAAA,EACjB,EAAU,KAAK,cAAA,CAAA,CACd,WAAA,EAEF,KAAK,oBAAoB,iBAAiB,EAAE,OAAO,YAAA,CAAA;;CAGpD,gBAAA;EACC,IAAM,IAAY,KAAK,cAAc;AACrC,MAAA,CAAK,EAAW;AAEhB,MAAI,EAAe,OAAO;AACzB,KAAU,MAAM,WAAW,KAAK,gBAChC,EAAU,MAAM,WAAW,UAC3B,KAAK,OAAA,CAAO;GACZ,IAAM,IAAO,KAAK,SAAS;AACvB,SAAQ,EAAK,QAAA,CAAQ,GAAM,EAAK,MAAM,aAAa,WACvD,KAAK,oBAAoB,iBAAiB,EAAE,OAAO,aAAA,CAAA;AACnD;;AAGD,OAAK,mBAAmB,QAAA,EACxB,EAAU,MAAM,WAAW,UAC3B,EAAU,MAAM,aAAa;EAC7B,IAAM,IAA6B,CAClC;GAAE,UAAU,KAAK;GAAc,SAAS;GAAA,EACxC;GAAE,UAAU,KAAK;GAAgB,SAAS;GAAA,CAAA,EAErC,IAAO,EAAU,QAAQ,GAAgB;GAC9C,UAAU,KAAK,MAA+B,KAAzB,EAAc,SAAA;GACnC,QAAQ;GACR,MAAM;GAAA,CAAA;AAEP,OAAK,oBAAoB,GAEzB,EAAK,EAAK,SAAA,CAAU,KACnB,EAAK,EAAA,EACL,QAAA;AACC,QAAK,OAAA,CAAO,GACZ,EAAU,MAAM,aAAa;GAC7B,IAAM,IAAO,KAAK,SAAS;AACvB,SAAQ,EAAK,QAAA,CAAQ,GAAM,EAAK,MAAM,aAAa;IAAA,EAExD,QAAiB,EAAA,EACjB,EAAU,KAAK,cAAA,CAAA,CACd,WAAA,EAEF,KAAK,oBAAoB,iBAAiB,EAAE,OAAO,aAAA,CAAA;;CAQpD,kBAA0B,GAAA;EACzB,IAAM,IAAO,KAAK,SAAS,OACrB,IAAY,KAAK,cAAc;AACjC,QACH,EAAK,UAAU,OAAO,mBAAmB,EAAA,EACzC,EAAK,UAAU,OAAO,eAAA,CAAgB,EAAA,GAEnC,MACH,EAAU,MAAM,UAAU,IAAW,SAAS;;CA2BhD,SAAA;AACK,OAAK,OAAM,KAAK,eAAA,GACf,KAAK,cAAA;;CAGX,SAAA;AACK,OAAK,QACT,KAAK,cAAA;;CAGN,QAAA;AACM,OAAK,QACV,KAAK,eAAA;;CAON,SAAA;EACC,IAAM,IAAW,KAAK,eAAe,WAAW,SAAA,EAE1C,IAAmB,EAAS;GACjC,OAAA,CAAO;GACP,MAAA,CAAM;GACN,YAAY;GACZ,oBAAA,CAAqB;GACrB,UAAA,CAAU;GACV,UAAA,CAAW,KAAK;GAChB,UAAU,KAAK;GACf,2BAA2B,KAAK;GAChC,2BAA2B,KAAK,QAAA,CAAS,KAAK;GAC9C,eAAe,KAAK;GACpB,2BAAA,CAA4B,KAAK,QAAA,CAAS,KAAK;GAC/C,kBAAA,CAAmB,KAAK;GACxB,mBAAA,CAAmB;GAAA,CAAA,EAGd,IAAkB,EAAS;GAChC,OAAO,KAAK;GACZ,cAAc;GACd,kBAAkB;GAAA,CAAA,EAGb,IAAa,EAAS,EAC3B,kBAAkB,KAAK,OAAO,SAAS,QAAA,CAAA,EAGlC,IAAc,EAAS;GAC5B,UAAA,CAAU;GACV,QAAA,CAAQ;GACR,MAAA,CAAM;GACN,gBAAA,CAAgB;GAChB,SAAA,CAAS;GACT,eAAA,CAAe;GACf,eAAA,CAAe;GAAA,CAAA;AAGhB,SAAO,CAAI;;MAEP,EAAI,KAAK,cAAA,CAAA;;iBAEE,KAAK,UAAA;YACV,EAAA;YACA,EAAA;oBACQ,KAAK,KAAA;mBACN,KAAK,aAAA;;;;OAIjB,EAAI,KAAK,SAAA,CAAA;;aAEH,EAAA;;;;OAIN,KAAK,aAAa,CAAI,iCAAiC,EAAA;;;;;;aAMjD,EAAS;GAAE,kBAAkB;GAAQ,QAAQ;GAAA,CAAA,CAAA;;;QAGlD,EAAI,KAAK,SAAA,CAAA;QACT,EAAW;GAAE,QAAQ;GAAK,WAAW;GAAA,CAAA,CAAA;cAC/B,EAAA;;;;oBAIM,KAAK,OAAO,oBAAoB,gBAAA;iBACnC,KAAK,mBAAA;;;;;;;8EAOwD,KAAK,OAAO,eAAe,GAAA;;;;;;;;;;;GAjpBvG,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,MAAA,KAAA,EAAA,EAAA,EAAA,CAE1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,iBAAA,KAAA,EAAA,EAAA,EAAA,CAE1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,kBAAA,KAAA,EAAA,EAAA,EAAA,CAE1B,EAAS;CAAE,MAAM;CAAS,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,WAAA,KAAA,EAAA,EAAA,EAAA,CAE1C,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,UAAA,KAAA,EAAA,EAAA,EAAA,CAE1B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,aAAA,KAAA,EAAA,EAAA,EAAA,CAE3B,EAAS,EAAE,MAAM,SAAA,CAAA,CAAA,EAAU,EAAA,WAAA,gBAAA,KAAA,EAAA,EAAA,EAAA,CAE3B,EAAS;CAAE,MAAM;CAAQ,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,eAAA,KAAA,EAAA,EAAA,EAAA,CAEzC,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAE1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,aAAA,KAAA,EAAA,EAAA,EAAA,CAG1B,EAAS;CAAE,MAAM;CAAS,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,QAAA,KAAA,EAAA,EAAA,EAAA,CAK1C,GAAA,CAAA,EAAO,EAAA,WAAA,cAAA,KAAA,EAAA,EAAA,EAAA,CAEP,GAAA,CAAA,EAAO,EAAA,WAAA,YAAA,KAAA,EAAA,EAAA,EAAA,CAIP,GAAA,CAAA,EAAO,EAAA,WAAA,kBAAA,KAAA,EAAA;AAAA,IAAA,IAAA,IAAA,IAAA,EAAA,CA3CR,EAAc,kBAAA,CAAA,EAAkB,EAAA;AAAA,SAAA,KAAA,GAAA,KAAA"}
|
package/dist/window.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./window-
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./window-DAWRoXo1.cjs`);exports.SchmancyWindow=e.t,exports.windowManager=e.n;
|
package/dist/window.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "./window-
|
|
1
|
+
import { n as e, t } from "./window-DPSIGCUq.js";
|
|
2
2
|
export { t as SchmancyWindow, e as windowManager };
|
package/package.json
CHANGED
package/skills/schmancy/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: schmancy
|
|
3
|
-
description: UI patterns, component APIs, and conventions for the @mhmo91/schmancy web-component library (Lit + RxJS + Tailwind) — the UI stack
|
|
3
|
+
description: UI patterns, component APIs, and conventions for the @mhmo91/schmancy web-component library (Lit + RxJS + Tailwind) — the exclusive UI stack in this repo's `web/` workspace. Fire this skill on ANY web-UI work, even when the user doesn't name schmancy explicitly — including adding or editing a component, building a form, showing a dialog / toast / side drawer / bottom sheet, wiring routing, reading or writing a context, styling with theme tokens, adding a drop zone / file input / date picker / autocomplete, working with `$LitElement`, or touching any `<schmancy-*>` tag. Also fire on prompts like "build a page", "add a modal", "wire a route", "save user prefs in storage", "animate this", "style with our theme", "make a notification", "how do I do X in Lit", "my drag-and-drop", "dark mode toggle".
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Schmancy
|
|
@@ -67,12 +67,14 @@ Use component tags (`<schmancy-menu>`, `<schmancy-dropdown>`, `<schmancy-tooltip
|
|
|
67
67
|
- Lists: `repeat(items, i => i.id, tpl)`. Never `.map()`.
|
|
68
68
|
- View switching: `cache(...)`.
|
|
69
69
|
- Expensive work: `guard([deps], () => expensive())`.
|
|
70
|
-
- Conditionals: `when(
|
|
70
|
+
- Conditionals: every `${...}` placeholder whose value is a `TemplateResult` or `nothing` uses a directive imported from `lit/directives/` — `when(condition, () => html\`...\`, () => html\`...\`?)` for a two-way branch, `choose(value, [['case', () => html\`...\`], …])` for a three-or-more-way dispatch, `ifDefined(maybeUndef)` for nullable attribute values. A chain of `?:` or `&&` expressions whose else-arm is `nothing` evaluates every branch on every render and defeats lit's directive-aware diffing; the pre-edit hook flags this as `NO_TERNARY_NOTHING_DISPATCH`.
|
|
71
71
|
- DOM access: `ref(createRef())`.
|
|
72
72
|
- `classMap(this.classMap({...}))` must be the sole expression in `class=` — never mix with string interpolation.
|
|
73
73
|
|
|
74
74
|
**Styling**
|
|
75
|
-
-
|
|
75
|
+
- Styling uses Tailwind and schmancy tokens. The `css` template passed to `$LitElement` contains only `:host` rules, `@keyframes`, and selectors targeting vendor pseudo-elements (`::-webkit-*`, `::-moz-*`). Other styling is set through Tailwind utility classes and schmancy theme tokens on the `class=` attribute. The `style=` attribute holds per-instance dynamic values only (e.g. `style="--tide: ${value}"`).
|
|
76
|
+
Remediation: move declarations to Tailwind on the `class=` attribute (`backdrop-filter: blur(20px)` → `backdrop-blur-xl`; `color-mix(in oklch, Canvas 72%, transparent)` → `bg-surface/70`; `border-radius: 14px` → `rounded-2xl`; `transition: opacity 80ms linear` → `transition-opacity duration-75 ease-linear`). When a visual pattern seems to want its own class (like `.glass`), check `INDEX.md` — schmancy likely ships the component.
|
|
77
|
+
- Colors: `--schmancy-sys-color-*` CSS vars or Tailwind theme classes. Never hardcoded hex.
|
|
76
78
|
- No `setTimeout` / `setInterval` / `addEventListener` — use RxJS (`timer`, `interval`, `fromEvent`).
|
|
77
79
|
|
|
78
80
|
**Accessibility (combobox forms)**
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=require(`./tailwind.mixin-Bug3G6K6.cjs`).o(`schmancy-button-size`);Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return e}});
|
package/dist/context-Dnj4ofbV.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
require(`./chunk-BCfY8kxB.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`);let t=require(`rxjs`),n=require(`rxjs/operators`),r=require(`lit/directives/class-map.js`),i=require(`lit/directives/style-map.js`),a=require(`lit`);var o=`schmancy-discover`,s=`schmancy-discover-response`;function c(e,r=100){let i=`${e}-where-are-you`,a=`${e}-here-i-am`;return new t.Observable(e=>{let o=(0,t.fromEvent)(window,a).pipe((0,n.takeUntil)((0,t.timer)(r)),(0,n.map)(e=>e.detail.component),(0,n.defaultIfEmpty)(null)).subscribe(t=>{e.next(t),e.complete()});return window.dispatchEvent(new CustomEvent(i,{bubbles:!0,composed:!0})),()=>o.unsubscribe()})}function l(...e){return e.length===0?new t.Observable(e=>{e.next(null),e.complete()}):(0,t.race)(...e.map(e=>c(e)))}function u(e,r=150){let i=`discover-${Date.now()}-${Math.random().toString(36).slice(2)}`;return new t.Observable(a=>{let c=(0,t.fromEvent)(window,s).pipe((0,n.takeUntil)((0,t.timer)(r)),(0,n.map)(e=>e.detail),(0,n.map)(e=>e.requestId===i?e.element:null),(0,n.take)(1),(0,n.defaultIfEmpty)(null)).subscribe(e=>{a.next(e),a.complete()});return window.dispatchEvent(new CustomEvent(o,{detail:{selector:e,requestId:i},bubbles:!0,composed:!0})),()=>c.unsubscribe()})}function d(e,r=150){let i=`discover-all-${Date.now()}-${Math.random().toString(36).slice(2)}`,a=[];return new t.Observable(c=>{let l=(0,t.fromEvent)(window,s).pipe((0,n.takeUntil)((0,t.timer)(r))).subscribe({next:e=>{e.detail.requestId===i&&a.push(e.detail.element)},complete:()=>{c.next(a),c.complete()}});return window.dispatchEvent(new CustomEvent(o,{detail:{selector:e,requestId:i},bubbles:!0,composed:!0})),()=>l.unsubscribe()})}function f(e,t=150){return/^[#.\[]/.test(e)?u(e,t):c(e,t)}var p=class extends Event{constructor(e,t,n,r){super(`context-request`,{bubbles:!0,composed:!0}),this.context=e,this.contextTarget=t,this.callback=n,this.subscribe=r??!1}};function m(e){return e}var h=class{constructor(e,t,n,r){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(e,t)=>{this.unsubscribe&&(this.unsubscribe!==t&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=e,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(e,t)),this.unsubscribe=t},this.host=e,t.context!==void 0){let e=t;this.context=e.context,this.callback=e.callback,this.subscribe=e.subscribe??!1}else this.context=t,this.callback=n,this.subscribe=r??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&=(this.unsubscribe(),void 0)}dispatchRequest(){this.host.dispatchEvent(new p(this.context,this.host,this.t,this.subscribe))}};function g({context:e,subscribe:t}){return(n,r)=>{typeof r==`object`?r.addInitializer(function(){new h(this,{context:e,callback:e=>{n.set.call(this,e)},subscribe:t})}):n.constructor.addInitializer(n=>{new h(n,{context:e,callback:e=>{n[r]=e},subscribe:t})})}}var _=`theme-context`,v=a=>{class l extends a{constructor(...e){super(...e),this.disconnecting=new t.Subject}get locale(){return this._theme?.locale??(typeof navigator<`u`?navigator.language:`de-DE`)}get stableId(){if(this._stableId)return this._stableId;let e=[];for(let t=this;t?.parentElement&&e.length<5;t=t.parentElement){let n=t.tagName.toLowerCase(),r=Array.from(t.parentElement.children).filter(e=>e.tagName===t.tagName);e.unshift(r.length>1?`${n}:nth-of-type(${r.indexOf(t)+1})`:n)}let t=Array.from(e.join(`>`)).reduce((e,t)=>Math.imul(31,e)+t.charCodeAt(0)|0,0);return this._stableId=`el-${Math.abs(t).toString(36)}`}get uid(){return this.getAttribute(`uid`)||(this._uid||=`el-${crypto.randomUUID()}`,this._uid)}set uid(e){e?this.setAttribute(`uid`,e):this.removeAttribute(`uid`)}dispatchScopedEvent(e,t,n={}){let{bubbles:r=!1,composed:i=!0}=n;this.dispatchEvent(new CustomEvent(`${e}::${this.uid}`,{detail:t,bubbles:r,composed:i})),this.dispatchEvent(new CustomEvent(e,{detail:t,bubbles:r,composed:i}))}classMap(e){let t={};return Object.keys(e).forEach(n=>{n.trim().split(` `).filter(Boolean).forEach(r=>{t[r]=e[n]})}),(0,r.classMap)(t)}styleMap(e){return(0,i.styleMap)(e)}connectedCallback(){super.connectedCallback(),this.setupDiscoveryResponse()}setupDiscoveryResponse(){let e=this.tagName.toLowerCase(),r=`${e}-where-are-you`,i=`${e}-here-i-am`;(0,t.fromEvent)(window,r).pipe((0,n.takeUntil)(this.disconnecting)).subscribe(()=>{window.dispatchEvent(new CustomEvent(i,{detail:{component:this},bubbles:!0,composed:!0}))}),(0,t.fromEvent)(window,o).pipe((0,n.takeUntil)(this.disconnecting)).subscribe(({detail:{selector:e,requestId:t}})=>{let n=null;if(e.startsWith(`#`)){let t=e.slice(1);this.id!==t&&this.uid!==t||(n=this)}!n&&this.shadowRoot&&(n=this.shadowRoot.querySelector(e)),n&&window.dispatchEvent(new CustomEvent(s,{detail:{requestId:t,element:n},bubbles:!0,composed:!0}))})}discover(e){return c(e)}disconnectedCallback(){this.disconnecting.next(!0),this.disconnecting.complete(),super.disconnectedCallback()}}return e.t([g({context:_,subscribe:!0})],l.prototype,`_theme`,void 0),l},y=(0,a.unsafeCSS)(`/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--color-primary:var(--schmancy-sys-color-primary-default)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-4{inset:1rem}.inset-x-0{inset-inline:0}.inset-x-6{inset-inline:1.5rem}.start{inset-inline-start:.25rem}.end{inset-inline-end:.25rem}.-top-12{top:-3rem}.top-0{top:0}.top-1\\/2{top:50%}.top-2{top:.5rem}.top-3{top:.75rem}.top-4{top:1rem}.top-8{top:2rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.right-4{right:1rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-\\[-3\\.5rem\\]{bottom:-3.5rem}.left-0{left:0}.left-1\\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-4{left:1rem}.left-\\[calc\\(100\\%\\+8px\\)\\]{left:calc(100% + 8px)}.isolate{isolation:isolate}.z-0{z-index:0}.z-5{z-index:5}.z-10{z-index:10}.z-20{z-index:20}.z-49{z-index:49}.z-50{z-index:50}.z-100{z-index:100}.z-1000{z-index:1000}.z-9998{z-index:9998}.z-\\[1000\\]{z-index:1000}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.m-0{margin:0}.-mx-1{margin-inline:-.25rem}.mx-auto{margin-inline:auto}.my-0\\.5{margin-block:.125rem}.my-4{margin-block:1rem}.-mt-2\\.5{margin-top:-.625rem}.mt-0\\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-auto{margin-top:auto}.-mr-1{margin-right:-.25rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.-ml-2\\.5{margin-left:-.625rem}.-ml-px{margin-left:-1px}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-6{margin-left:1.5rem}.ml-\\[0\\.38em\\]{margin-left:.38em}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.box-border{box-sizing:border-box}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.table{display:table}.size-3{width:.75rem;height:.75rem}.size-5{width:1.25rem;height:1.25rem}.size-8{width:2rem;height:2rem}.size-\\[18px\\]{width:18px;height:18px}.size-full{width:100%;height:100%}.h-0\\.5{height:.125rem}.h-1{height:.25rem}.h-1\\.5{height:.375rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-64{height:16rem}.h-96{height:24rem}.h-\\[250px\\]{height:250px}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-96{max-height:24rem}.max-h-\\[70vh\\]{max-height:70vh}.max-h-\\[80vh\\]{max-height:80vh}.max-h-\\[85dvh\\]{max-height:85dvh}.max-h-\\[90dvh\\]{max-height:90dvh}.max-h-\\[90vh\\]{max-height:90vh}.min-h-0{min-height:0}.min-h-12{min-height:3rem}.min-h-14{min-height:3.5rem}.min-h-\\[32px\\]{min-height:32px}.min-h-\\[36px\\]{min-height:36px}.min-h-\\[40px\\]{min-height:40px}.min-h-\\[50px\\]{min-height:50px}.min-h-\\[60px\\]{min-height:60px}.min-h-\\[400px\\]{min-height:400px}.w-0{width:0}.w-0\\.5{width:.125rem}.w-1{width:.25rem}.w-1\\.5{width:.375rem}.w-1\\/3{width:33.3333%}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-20{width:5rem}.w-60{width:15rem}.w-\\[250px\\]{width:250px}.w-\\[inherit\\]{width:inherit}.w-\\[var\\(--dialog-width\\)\\]{width:var(--dialog-width)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-14{max-width:3.5rem}.max-w-32{max-width:8rem}.max-w-\\[90vw\\]{max-width:90vw}.max-w-\\[168px\\]{max-width:168px}.max-w-\\[360px\\]{max-width:360px}.max-w-\\[calc\\(100vw-2rem\\)\\]{max-width:calc(100vw - 2rem)}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.min-w-0{min-width:0}.min-w-4{min-width:1rem}.min-w-14{min-width:3.5rem}.min-w-16{min-width:4rem}.min-w-\\[6px\\]{min-width:6px}.min-w-\\[16px\\]{min-width:16px}.min-w-\\[48px\\]{min-width:48px}.min-w-\\[120px\\]{min-width:120px}.min-w-\\[140px\\]{min-width:140px}.min-w-\\[320px\\]{min-width:320px}.min-w-full{min-width:100%}.min-w-max{min-width:max-content}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.-translate-x-1{--tw-translate-x:calc(.25rem * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-x-1\\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\\/4{--tw-translate-y:calc(calc(1 / 4 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}.scale-x-\\[-1\\]{--tw-scale-x:-1;scale:var(--tw-scale-x) var(--tw-scale-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-\\[ripple_600ms_linear\\]{animation:.6s linear ripple}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.resize-x{resize:horizontal}.resize-y{resize:vertical}.appearance-none{appearance:none}.columns-2{columns:2}.columns-3{columns:3}.auto-cols-max{grid-auto-columns:max-content}.grid-flow-col{grid-auto-flow:column}.grid-flow-col-dense{grid-auto-flow:column dense}.grid-flow-dense{grid-auto-flow:dense}.grid-flow-row{grid-auto-flow:row}.grid-flow-row-dense{grid-auto-flow:dense}.auto-rows-max{grid-auto-rows:max-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[1fr\\]{grid-template-columns:1fr}.grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.content-around{align-content:space-around}.content-between{align-content:space-between}.content-center{align-content:center}.content-end{align-content:flex-end}.content-evenly{align-content:space-evenly}.content-start{align-content:flex-start}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-baseline{justify-content:baseline}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.justify-items-center{justify-items:center}.justify-items-end{justify-items:end}.justify-items-start{justify-items:start}.justify-items-stretch{justify-items:stretch}.gap-0{gap:0}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\\[8px\\]{gap:8px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(.25rem * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(.25rem * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(.25rem * 2) * var(--tw-space-x-reverse));margin-inline-end:calc(calc(.25rem * 2) * calc(1 - var(--tw-space-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded-2xl{border-radius:1rem}.rounded-\\[8px\\]{border-radius:8px}.rounded-\\[22px\\]{border-radius:22px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.25rem}.rounded-xl{border-radius:.75rem}.rounded-t-2xl{border-top-left-radius:1rem;border-top-right-radius:1rem}.rounded-t-full{border-top-left-radius:3.40282e38px;border-top-right-radius:3.40282e38px}.rounded-l-full{border-top-left-radius:3.40282e38px;border-bottom-left-radius:3.40282e38px}.rounded-tl-2xl{border-top-left-radius:1rem}.rounded-r-full{border-top-right-radius:3.40282e38px;border-bottom-right-radius:3.40282e38px}.rounded-tr-2xl{border-top-right-radius:1rem}.rounded-b-xl{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.rounded-br-2xl{border-bottom-right-radius:1rem}.rounded-bl-2xl{border-bottom-left-radius:1rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.border-r-4{border-right-style:var(--tw-border-style);border-right-width:4px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-4{border-left-style:var(--tw-border-style);border-left-width:4px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[var\\(--schmancy-sys-color-outlineVariant\\)\\]{border-color:var(--schmancy-sys-color-outlineVariant)}.border-error-default{border-color:var(--schmancy-sys-color-error-default)}.border-info-default{border-color:var(--schmancy-sys-color-info-default)}.border-outline{border-color:var(--schmancy-sys-color-outline)}.border-outline-variant,.border-outline-variant\\/30{border-color:var(--schmancy-sys-color-outlineVariant)}@supports (color:color-mix(in lab, red, red)){.border-outline-variant\\/30{border-color:color-mix(in oklab, var(--schmancy-sys-color-outlineVariant) 30%, transparent)}}.border-outline\\/20{border-color:var(--schmancy-sys-color-outline)}@supports (color:color-mix(in lab, red, red)){.border-outline\\/20{border-color:color-mix(in oklab, var(--schmancy-sys-color-outline) 20%, transparent)}}.border-outlineVariant{border-color:var(--schmancy-sys-color-outlineVariant)}.border-primary,.border-primary-default{border-color:var(--schmancy-sys-color-primary-default)}.border-secondary-container{border-color:var(--schmancy-sys-color-secondary-container)}.border-secondary-default{border-color:var(--schmancy-sys-color-secondary-default)}.border-success-default{border-color:var(--schmancy-sys-color-success-default)}.border-surface-container{border-color:var(--schmancy-sys-color-surface-container)}.border-surface-default{border-color:var(--schmancy-sys-color-surface-default)}.border-surface-on\\/10{border-color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.border-surface-on\\/10{border-color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 10%, transparent)}}.border-transparent{border-color:#0000}.border-warning-default{border-color:var(--schmancy-sys-color-warning-default)}.border-white{border-color:#fff}.border-white\\/20{border-color:oklab(100% 0 5.96046e-8/.2)}.bg-\\[var\\(--schmancy-sys-color-X\\)\\]{background-color:var(--schmancy-sys-color-X)}.bg-black{background-color:#000}.bg-black\\/95{background-color:oklab(0% none none/.95)}.bg-black\\/\\[0\\.07\\]{background-color:oklab(0% none none/.07)}.bg-error{background-color:var(--schmancy-sys-color-error-default)}.bg-error-container{background-color:var(--schmancy-sys-color-error-container)}.bg-error-default,.bg-error-default\\/70{background-color:var(--schmancy-sys-color-error-default)}@supports (color:color-mix(in lab, red, red)){.bg-error-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-error-default) 70%, transparent)}}.bg-error\\/70{background-color:var(--schmancy-sys-color-error-default)}@supports (color:color-mix(in lab, red, red)){.bg-error\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-error-default) 70%, transparent)}}.bg-info-container{background-color:var(--schmancy-sys-color-info-container)}.bg-info-default{background-color:var(--schmancy-sys-color-info-default)}.bg-outline-variant,.bg-outlineVariant{background-color:var(--schmancy-sys-color-outlineVariant)}.bg-primary{background-color:var(--schmancy-sys-color-primary-default)}.bg-primary-container,.bg-primary-container\\/20{background-color:var(--schmancy-sys-color-primary-container)}@supports (color:color-mix(in lab, red, red)){.bg-primary-container\\/20{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-container) 20%, transparent)}}.bg-primary-default,.bg-primary-default\\/70{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.bg-primary-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 70%, transparent)}}.bg-primary-onContainer{background-color:var(--schmancy-sys-color-primary-onContainer)}.bg-primary\\/40{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/40{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 40%, transparent)}}.bg-primary\\/70{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.bg-primary\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 70%, transparent)}}.bg-secondary{background-color:var(--schmancy-sys-color-secondary-default)}.bg-secondary-container{background-color:var(--schmancy-sys-color-secondary-container)}.bg-secondary-default,.bg-secondary-default\\/70{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 70%, transparent)}}.bg-secondary\\/15{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/15{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 15%, transparent)}}.bg-secondary\\/40{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/40{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 40%, transparent)}}.bg-secondary\\/70{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab, red, red)){.bg-secondary\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-secondary-default) 70%, transparent)}}.bg-success{background-color:var(--schmancy-sys-color-success-default)}.bg-success-container{background-color:var(--schmancy-sys-color-success-container)}.bg-success-default,.bg-success-default\\/70{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab, red, red)){.bg-success-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-success-default) 70%, transparent)}}.bg-success\\/10{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab, red, red)){.bg-success\\/10{background-color:color-mix(in oklab, var(--schmancy-sys-color-success-default) 10%, transparent)}}.bg-success\\/70{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab, red, red)){.bg-success\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-success-default) 70%, transparent)}}.bg-surface{background-color:var(--schmancy-sys-color-surface-default)}.bg-surface-container,.bg-surface-container\\/10{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab, red, red)){.bg-surface-container\\/10{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-container) 10%, transparent)}}.bg-surface-container\\/20{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab, red, red)){.bg-surface-container\\/20{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-container) 20%, transparent)}}.bg-surface-containerHighest{background-color:var(--schmancy-sys-color-surface-containerHighest)}.bg-surface-containerLow{background-color:var(--schmancy-sys-color-surface-containerLow)}.bg-surface-containerLowest{background-color:var(--schmancy-sys-color-surface-containerLowest)}.bg-surface-default{background-color:var(--schmancy-sys-color-surface-default)}.bg-surface-highest{background-color:var(--schmancy-sys-color-surface-highest)}.bg-surface-low{background-color:var(--schmancy-sys-color-surface-low)}.bg-surface-lowest,.bg-surface-lowest\\/55{background-color:var(--schmancy-sys-color-surface-lowest)}@supports (color:color-mix(in lab, red, red)){.bg-surface-lowest\\/55{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-lowest) 55%, transparent)}}.bg-surface-on{background-color:var(--schmancy-sys-color-surface-on)}.bg-tertiary,.bg-tertiary-default,.bg-tertiary-default\\/70{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab, red, red)){.bg-tertiary-default\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-tertiary-default) 70%, transparent)}}.bg-tertiary\\/40{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab, red, red)){.bg-tertiary\\/40{background-color:color-mix(in oklab, var(--schmancy-sys-color-tertiary-default) 40%, transparent)}}.bg-tertiary\\/70{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab, red, red)){.bg-tertiary\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-tertiary-default) 70%, transparent)}}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--schmancy-sys-color-warning-default)}.bg-warning-container{background-color:var(--schmancy-sys-color-warning-container)}.bg-warning-default,.bg-warning\\/70{background-color:var(--schmancy-sys-color-warning-default)}@supports (color:color-mix(in lab, red, red)){.bg-warning\\/70{background-color:color-mix(in oklab, var(--schmancy-sys-color-warning-default) 70%, transparent)}}.bg-white{background-color:#fff}.bg-white\\/15{background-color:oklab(100% 0 5.96046e-8/.15)}.bg-white\\/20{background-color:oklab(100% 0 5.96046e-8/.2)}.bg-linear-to-b{--tw-gradient-position:to bottom}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-b{--tw-gradient-position:to bottom in oklab}}.bg-linear-to-b{background-image:linear-gradient(var(--tw-gradient-stops))}.bg-linear-to-r{--tw-gradient-position:to right}@supports (background-image:linear-gradient(in lab, red, red)){.bg-linear-to-r{--tw-gradient-position:to right in oklab}}.bg-linear-to-r{background-image:linear-gradient(var(--tw-gradient-stops))}.from-surface-on\\/20{--tw-gradient-from:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.from-surface-on\\/20{--tw-gradient-from:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 20%, transparent)}}.from-surface-on\\/20{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-primary-default\\/30{--tw-gradient-via:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.via-primary-default\\/30{--tw-gradient-via:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 30%, transparent)}}.via-primary-default\\/30{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-inline:.25rem}.px-1\\.5{padding-inline:.375rem}.px-2{padding-inline:.5rem}.px-2\\.5{padding-inline:.625rem}.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:1.75rem}.py-0\\.75{padding-block:.1875rem}.py-1{padding-block:.25rem}.py-1\\.5{padding-block:.375rem}.py-2{padding-block:.5rem}.py-2\\.5{padding-block:.625rem}.py-3{padding-block:.75rem}.py-4{padding-block:1rem}.py-6{padding-block:1.5rem}.py-8{padding-block:2rem}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pt-10{padding-top:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pb-0{padding-bottom:0}.pb-1{padding-bottom:.25rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-\\[env\\(safe-area-inset-bottom\\)\\]{padding-bottom:env(safe-area-inset-bottom)}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-8{padding-left:2rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--schmancy-font-family), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}.text-2xl{font-size:1.5rem;line-height:var(--tw-leading,calc(2 / 1.5))}.text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}.text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}.text-sm{font-size:.875rem;line-height:var(--tw-leading,calc(1.25 / .875))}.text-xl{font-size:1.25rem;line-height:var(--tw-leading,calc(1.75 / 1.25))}.text-xs{font-size:.75rem;line-height:var(--tw-leading,calc(1 / .75))}.text-\\[8px\\]{font-size:8px}.text-\\[10px\\]{font-size:10px}.text-\\[18px\\]{font-size:18px}.leading-3{--tw-leading:calc(.25rem * 3);line-height:.75rem}.leading-4{--tw-leading:calc(.25rem * 4);line-height:1rem}.leading-5{--tw-leading:calc(.25rem * 5);line-height:1.25rem}.leading-6{--tw-leading:calc(.25rem * 6);line-height:1.5rem}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:1.25;line-height:1.25}.font-bold{--tw-font-weight:700;font-weight:700}.font-medium{--tw-font-weight:500;font-weight:500}.font-semibold{--tw-font-weight:600;font-weight:600}.tracking-\\[0\\.01em\\]{--tw-tracking:.01em;letter-spacing:.01em}.tracking-\\[0\\.1px\\]{--tw-tracking:.1px;letter-spacing:.1px}.tracking-wide{--tw-tracking:.025em;letter-spacing:.025em}.break-all{word-break:break-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-error,.text-error-default{color:var(--schmancy-sys-color-error-default)}.text-error-on{color:var(--schmancy-sys-color-error-on)}.text-error-onContainer{color:var(--schmancy-sys-color-error-onContainer)}.text-info-default{color:var(--schmancy-sys-color-info-default)}.text-info-on{color:var(--schmancy-sys-color-info-on)}.text-info-onContainer{color:var(--schmancy-sys-color-info-onContainer)}.text-primary,.text-primary-default{color:var(--schmancy-sys-color-primary-default)}.text-primary-on{color:var(--schmancy-sys-color-primary-on)}.text-primary-onContainer{color:var(--schmancy-sys-color-primary-onContainer)}.text-secondary-default{color:var(--schmancy-sys-color-secondary-default)}.text-secondary-on{color:var(--schmancy-sys-color-secondary-on)}.text-secondary-onContainer{color:var(--schmancy-sys-color-secondary-onContainer)}.text-success,.text-success-default{color:var(--schmancy-sys-color-success-default)}.text-success-on{color:var(--schmancy-sys-color-success-on)}.text-success-on-container,.text-success-onContainer{color:var(--schmancy-sys-color-success-onContainer)}.text-surface-on{color:var(--schmancy-sys-color-surface-on)}.text-surface-on-variant{color:var(--schmancy-sys-color-surface-onVariant)}.text-surface-on\\/40{color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.text-surface-on\\/40{color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 40%, transparent)}}.text-surface-onVariant{color:var(--schmancy-sys-color-surface-onVariant)}.text-tertiary-default{color:var(--schmancy-sys-color-tertiary-default)}.text-tertiary-on{color:var(--schmancy-sys-color-tertiary-on)}.text-warning-default{color:var(--schmancy-sys-color-warning-default)}.text-warning-on{color:var(--schmancy-sys-color-warning-on)}.text-warning-onContainer{color:var(--schmancy-sys-color-warning-onContainer)}.text-white{color:#fff}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.caret-transparent{caret-color:#0000}.opacity-0{opacity:0}.opacity-1{opacity:.01}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-38{opacity:.38}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-95{opacity:.95}.opacity-100{opacity:1}.opacity-\\[0\\.12\\]{opacity:.12}.opacity-\\[0\\.38\\]{opacity:.38}.opacity-\\[var\\(--schmancy-sys-state-disabled-opacity\\)\\]{opacity:var(--schmancy-sys-state-disabled-opacity)}.opacity-\\[var\\(--schmancy-sys-state-pressed-opacity\\)\\]{opacity:var(--schmancy-sys-state-pressed-opacity)}.shadow-1{--tw-shadow:var(--schmancy-sys-elevation-1);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[0_0_20px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:0 0 20px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[inset_0_1px_1px_0_rgba\\(255\\,255\\,255\\,0\\.2\\)\\]{--tw-shadow:inset 0 1px 1px 0 var(--tw-shadow-color,#fff3);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\\[inset_0_1px_2px_0_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:inset 0 1px 2px 0 var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-error-default{--tw-ring-color:var(--schmancy-sys-color-error-default)}.ring-outline-variant\\/40{--tw-ring-color:var(--schmancy-sys-color-outlineVariant)}@supports (color:color-mix(in lab, red, red)){.ring-outline-variant\\/40{--tw-ring-color:color-mix(in oklab, var(--schmancy-sys-color-outlineVariant) 40%, transparent)}}.ring-primary,.ring-primary-default\\/15{--tw-ring-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.ring-primary-default\\/15{--tw-ring-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 15%, transparent)}}.ring-primary-default\\/30{--tw-ring-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.ring-primary-default\\/30{--tw-ring-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 30%, transparent)}}.ring-secondary-default{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.ring-transparent{--tw-ring-color:transparent}.ring-offset-1{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-secondary-default{outline-color:var(--schmancy-sys-color-secondary-default)}.brightness-110{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\\[16px\\],.backdrop-blur-lg{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-blur-xs{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-brightness-105{--tw-backdrop-brightness:brightness(105%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-saturate-150{--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in{--tw-ease:cubic-bezier(.4, 0, 1, 1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{--tw-ease:cubic-bezier(.4, 0, .2, 1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{--tw-ease:cubic-bezier(0, 0, .2, 1);transition-timing-function:cubic-bezier(0,0,.2,1)}.will-change-\\[clip-path\\]{will-change:clip-path}.will-change-\\[opacity\\]{will-change:opacity}.will-change-transform{will-change:transform}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\\:scale-110:is(:where(.group):hover *){--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\\:scale-125:is(:where(.group):hover *){--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\\:border-primary-default:is(:where(.group):hover *){border-color:var(--schmancy-sys-color-primary-default)}.group-hover\\:bg-primary-container:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-primary-container)}.group-hover\\:bg-primary-default:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-primary-default)}.group-hover\\:bg-surface-containerHighest:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-surface-containerHighest)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}.group-hover\\:shadow-lg:is(:where(.group):hover *){--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}}.before\\:absolute:before{content:var(--tw-content);position:absolute}.before\\:top-1\\/2:before{content:var(--tw-content);top:50%}.before\\:left-1\\/2:before{content:var(--tw-content);left:50%}.before\\:h-0:before{content:var(--tw-content);height:0}.before\\:h-\\[200\\%\\]:before{content:var(--tw-content);height:200%}.before\\:w-0:before{content:var(--tw-content);width:0}.before\\:w-\\[200\\%\\]:before{content:var(--tw-content);width:200%}.before\\:-translate-x-1\\/2:before{content:var(--tw-content);--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\\:-translate-y-1\\/2:before{content:var(--tw-content);--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.before\\:rounded-full:before{content:var(--tw-content);border-radius:3.40282e38px}.before\\:bg-current:before{content:var(--tw-content);background-color:currentColor}.before\\:opacity-0:before{content:var(--tw-content);opacity:0}.before\\:opacity-12:before{content:var(--tw-content);opacity:.12}.before\\:transition-all:before{content:var(--tw-content);transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.before\\:duration-300:before{content:var(--tw-content);--tw-duration:.3s;transition-duration:.3s}.before\\:content-\\[\\"\\"\\]:before{--tw-content:"";content:var(--tw-content)}.after\\:absolute:after{content:var(--tw-content);position:absolute}.after\\:right-3:after{content:var(--tw-content);right:.75rem}.after\\:bottom-\\[-4px\\]:after{content:var(--tw-content);bottom:-4px}.after\\:left-3:after{content:var(--tw-content);left:.75rem}.after\\:h-px:after{content:var(--tw-content);height:1px}.after\\:bg-outline-variant:after{content:var(--tw-content);background-color:var(--schmancy-sys-color-outlineVariant)}.after\\:opacity-12:after{content:var(--tw-content);opacity:.12}.focus-within\\:ring-1:focus-within{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-within\\:ring-error-default:focus-within{--tw-ring-color:var(--schmancy-sys-color-error-default)}.focus-within\\:ring-secondary-default:focus-within{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.focus-within\\:ring-inset:focus-within{--tw-ring-inset:inset}@media (hover:hover){.hover\\:z-\\[100\\]:hover{z-index:100}.hover\\:translate-x-0:hover{--tw-translate-x:calc(.25rem * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\\:-translate-y-px:hover{--tw-translate-y:-1px;translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\\:scale-\\[1\\.02\\]:hover{scale:1.02}.hover\\:border-outlineVariant:hover{border-color:var(--schmancy-sys-color-outlineVariant)}.hover\\:bg-error-container:hover{background-color:var(--schmancy-sys-color-error-container)}.hover\\:bg-error-default:hover{background-color:var(--schmancy-sys-color-error-default)}.hover\\:bg-error-on:hover{background-color:var(--schmancy-sys-color-error-on)}.hover\\:bg-info-container:hover{background-color:var(--schmancy-sys-color-info-container)}.hover\\:bg-info-default:hover{background-color:var(--schmancy-sys-color-info-default)}.hover\\:bg-info-on:hover{background-color:var(--schmancy-sys-color-info-on)}.hover\\:bg-primary-container:hover{background-color:var(--schmancy-sys-color-primary-container)}.hover\\:bg-primary-default:hover{background-color:var(--schmancy-sys-color-primary-default)}.hover\\:bg-primary-on:hover{background-color:var(--schmancy-sys-color-primary-on)}.hover\\:bg-secondary-container:hover{background-color:var(--schmancy-sys-color-secondary-container)}.hover\\:bg-secondary-default:hover{background-color:var(--schmancy-sys-color-secondary-default)}.hover\\:bg-secondary-on:hover{background-color:var(--schmancy-sys-color-secondary-on)}.hover\\:bg-success-container:hover{background-color:var(--schmancy-sys-color-success-container)}.hover\\:bg-success-default:hover{background-color:var(--schmancy-sys-color-success-default)}.hover\\:bg-success-on:hover{background-color:var(--schmancy-sys-color-success-on)}.hover\\:bg-surface-container:hover{background-color:var(--schmancy-sys-color-surface-container)}.hover\\:bg-surface-containerHigh:hover{background-color:var(--schmancy-sys-color-surface-containerHigh)}.hover\\:bg-surface-containerHighest:hover{background-color:var(--schmancy-sys-color-surface-containerHighest)}.hover\\:bg-surface-containerLow:hover{background-color:var(--schmancy-sys-color-surface-containerLow)}.hover\\:bg-surface-high:hover{background-color:var(--schmancy-sys-color-surface-high)}.hover\\:bg-surface-on:hover,.hover\\:bg-surface-on\\/5:hover{background-color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-surface-on\\/5:hover{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 5%, transparent)}}.hover\\:bg-surface-onVariant:hover{background-color:var(--schmancy-sys-color-surface-onVariant)}.hover\\:bg-warning-container:hover{background-color:var(--schmancy-sys-color-warning-container)}.hover\\:bg-warning-default:hover{background-color:var(--schmancy-sys-color-warning-default)}.hover\\:bg-warning-on:hover{background-color:var(--schmancy-sys-color-warning-on)}.hover\\:bg-white\\/25:hover{background-color:oklab(100% 0 5.96046e-8/.25)}.hover\\:bg-white\\/30:hover{background-color:oklab(100% 0 5.96046e-8/.3)}.hover\\:text-error-container:hover{color:var(--schmancy-sys-color-error-container)}.hover\\:text-surface-on:hover{color:var(--schmancy-sys-color-surface-on)}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-100:hover{opacity:1}.hover\\:opacity-\\[0\\.08\\]:hover{opacity:.08}.hover\\:opacity-\\[var\\(--schmancy-sys-state-hover-opacity\\)\\]:hover{opacity:var(--schmancy-sys-state-hover-opacity)}.hover\\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:shadow-xs:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\\:ring-outline-variant\\/40:hover{--tw-ring-color:var(--schmancy-sys-color-outlineVariant)}@supports (color:color-mix(in lab, red, red)){.hover\\:ring-outline-variant\\/40:hover{--tw-ring-color:color-mix(in oklab, var(--schmancy-sys-color-outlineVariant) 40%, transparent)}}.hover\\:brightness-95:hover{--tw-brightness:brightness(95%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hover\\:brightness-\\[0\\.92\\]:hover{--tw-brightness:brightness(.92);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hover\\:brightness-\\[0\\.98\\]:hover{--tw-brightness:brightness(.98);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:border-secondary-default:focus{border-color:var(--schmancy-sys-color-secondary-default)}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\\:ring-error-default:focus{--tw-ring-color:var(--schmancy-sys-color-error-default)}.focus\\:ring-primary-container:focus{--tw-ring-color:var(--schmancy-sys-color-primary-container)}.focus\\:ring-primary-default:focus{--tw-ring-color:var(--schmancy-sys-color-primary-default)}.focus\\:ring-secondary-default:focus{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\\:outline-1:focus{outline-style:var(--tw-outline-style);outline-width:1px}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\\:ring-inset:focus{--tw-ring-inset:inset}.focus-visible\\:z-1:focus-visible{z-index:1}.focus-visible\\:opacity-\\[0\\.10\\]:focus-visible{opacity:.1}.focus-visible\\:opacity-\\[var\\(--schmancy-sys-state-focus-opacity\\)\\]:focus-visible{opacity:var(--schmancy-sys-state-focus-opacity)}.focus-visible\\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\\:ring-primary-default\\/50:focus-visible{--tw-ring-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab, red, red)){.focus-visible\\:ring-primary-default\\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--schmancy-sys-color-primary-default) 50%, transparent)}}.focus-visible\\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-primary:focus-visible,.focus-visible\\:outline-primary-default:focus-visible{outline-color:var(--schmancy-sys-color-primary-default)}.focus-visible\\:outline-solid:focus-visible{--tw-outline-style:solid;outline-style:solid}.active\\:scale-95:active{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.active\\:cursor-grabbing:active{cursor:grabbing}.active\\:bg-surface-on\\/8:active{background-color:var(--schmancy-sys-color-surface-on)}@supports (color:color-mix(in lab, red, red)){.active\\:bg-surface-on\\/8:active{background-color:color-mix(in oklab, var(--schmancy-sys-color-surface-on) 8%, transparent)}}.active\\:opacity-\\[0\\.10\\]:active{opacity:.1}.active\\:brightness-90:active{--tw-brightness:brightness(90%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.active\\:brightness-\\[0\\.85\\]:active{--tw-brightness:brightness(.85);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}@media (width>=40rem){.sm\\:top-2{top:.5rem}.sm\\:right-2{right:.5rem}.sm\\:bottom-\\[-3rem\\]{bottom:-3rem}.sm\\:left-4{left:1rem}.sm\\:-mx-2{margin-inline:-.5rem}.sm\\:mt-1{margin-top:.25rem}.sm\\:mt-4{margin-top:1rem}.sm\\:ml-6{margin-left:1.5rem}.sm\\:ml-10{margin-left:2.5rem}.sm\\:h-5{height:1.25rem}.sm\\:h-12{height:3rem}.sm\\:min-h-\\[40px\\]{min-height:40px}.sm\\:w-5{width:1.25rem}.sm\\:w-auto{width:auto}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:flex-row{flex-direction:row}.sm\\:items-center{align-items:center}.sm\\:justify-between{justify-content:space-between}.sm\\:px-2{padding-inline:.5rem}.sm\\:px-3{padding-inline:.75rem}.sm\\:py-2{padding-block:.5rem}.sm\\:py-3{padding-block:.75rem}.sm\\:pb-8{padding-bottom:2rem}.sm\\:text-3xl{font-size:1.875rem;line-height:var(--tw-leading,calc(2.25 / 1.875))}}@media (width>=48rem){.md\\:top-4{top:1rem}.md\\:right-4{right:1rem}.md\\:bottom-\\[-3\\.5rem\\]{bottom:-3.5rem}.md\\:text-4xl{font-size:2.25rem;line-height:var(--tw-leading,calc(2.5 / 2.25))}.md\\:text-base{font-size:1rem;line-height:var(--tw-leading,calc(1.5 / 1))}}@media (width>=64rem){.lg\\:flex{display:flex}.lg\\:hidden{display:none}.lg\\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\\:text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75 / 1.125))}}@media (width>=80rem){.xl\\:w-1\\/2{width:50%}.xl\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\\:flex-row{flex-direction:row}}.\\[\\&\\>\\.ripple\\]\\:scale-100>.ripple{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x) var(--tw-scale-y)}}@layer schmancy.tokens;@layer schmancy.base{:host,:root{font-family:var(--schmancy-font-family);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:host,:root{--lightningcss-light: ;--lightningcss-dark:initial}}:host,:host *,*{touch-action:pan-x pan-y}.interactive{transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .4s,filter .2s}.interactive:hover{filter:brightness(1.03);box-shadow:0 4px 20px -6px var(--schmancy-sys-color-primary-default);transform:translateY(-1px)}@supports (color:color-mix(in lab, red, red)){.interactive:hover{box-shadow:0 4px 20px -6px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 18%, transparent)}}.interactive:active{filter:brightness(.96);box-shadow:none;transition-duration:.1s;transform:scale(.97)}@media (prefers-reduced-motion:reduce){.interactive{transition:filter .15s}.interactive:hover{box-shadow:none;transform:none}.interactive:active{transform:none}}}@layer schmancy.components;@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes pulse{50%{opacity:.5}}`),b=e=>{class t extends a.LitElement{static{this.styles=[(0,a.unsafeCSS)(e),y]}}return t},x=e=>{class t extends v(b(e)){constructor(...e){super(...e),this.disconnectedCallback=()=>{super.disconnectedCallback()}}}return t};Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return f}});
|