cic-kit 0.0.22 → 0.0.23

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/cic-kit.css CHANGED
@@ -1 +1 @@
1
- @charset "UTF-8";.spinner-border[data-v-02f82e55]{vertical-align:middle}.btn-ms-link[data-v-02f82e55]{background-color:transparent!important;border:none;color:var(--bs-btn-color)!important}.btn-ms-link[data-v-02f82e55]:hover{text-decoration:underline}.hideAfter[data-v-02f82e55]:after{display:none}.toast-wrapper[data-v-e724e2c2]{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:6px;z-index:999999}.toast-card[data-v-e724e2c2]{width:330px;min-height:80px;border-radius:8px;padding:10px 12px;background-color:#fff;box-shadow:0 8px 24px #00000026;display:flex;align-items:center;justify-content:center;gap:12px;cursor:default;transition:all .3s ease,transform .3s ease;overflow:hidden;opacity:1}.toast-card .icon-container[data-v-e724e2c2]{width:35px;height:35px;display:flex;justify-content:center;align-items:center;border-radius:50%;flex-shrink:0;transition:all .3s ease}.toast-card .message-text[data-v-e724e2c2]{font-size:17px;font-weight:700}.toast-card .sub-text[data-v-e724e2c2]{color:#555;font-size:14px}.toast-card .cross-icon[data-v-e724e2c2]{width:18px;height:18px;color:#555;cursor:pointer;flex-shrink:0}.toast-card[data-v-e724e2c2]:not(.expanded){min-height:40px;max-height:40px;padding-top:6px;padding-bottom:6px;opacity:.7}.toast-card:not(.expanded) .icon-container[data-v-e724e2c2]{width:18px;height:18px}.toast-card:not(.expanded) .message-text[data-v-e724e2c2]{font-size:14px}.toast-card:not(.expanded) .sub-content[data-v-e724e2c2]{display:none}.toast-card:not(.expanded) .cross-icon[data-v-e724e2c2]{width:14px;height:14px}.toast-fade-enter-from[data-v-e724e2c2],.toast-fade-leave-to[data-v-e724e2c2]{opacity:0;transform:translateY(20px)}.toast-fade-enter-active[data-v-e724e2c2],.toast-fade-leave-active[data-v-e724e2c2]{transition:all .3s ease}.message-text-container[data-v-e724e2c2]{flex-grow:1}.toast-card.info[data-v-e724e2c2]{border-right:5px solid var(--bs-info)}.toast-card.info .icon-container[data-v-e724e2c2]{color:var(--bs-info)}.toast-card.success[data-v-e724e2c2]{border-right:5px solid var(--bs-success)}.toast-card.success .icon-container[data-v-e724e2c2]{color:var(--bs-success)}.toast-card.warning[data-v-e724e2c2]{border-right:5px solid var(--bs-warning)}.toast-card.warning .icon-container[data-v-e724e2c2]{color:var(--bs-warning)}.toast-card.error[data-v-e724e2c2]{border-right:5px solid var(--bs-danger)}.toast-card.error .icon-container[data-v-e724e2c2]{color:var(--bs-danger)}.toast-card.primary[data-v-e724e2c2]{border-right:5px solid var(--bs-primary)}.toast-card.primary .icon-container[data-v-e724e2c2]{color:var(--bs-primary)}.toast-card.secondary[data-v-e724e2c2]{border-right:5px solid var(--bs-secondary)}.toast-card.secondary .icon-container[data-v-e724e2c2]{color:var(--bs-secondary)}.prefix-width[data-v-a5d73642]{width:60px}.bg-glass[data-v-d4945b09]{width:100%;z-index:1;background:var(--colors-theme-bg-accent-hover-alpha, rgba(0, 0, 0, .0235294118));-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);box-shadow:0 6px 24px #00000014;border-radius:4px}.scope-btn[data-v-20a95d83]{border-radius:4px;border:none;transition:all .5s ease-in-out;display:flex;align-items:center;background:var(--colors-theme-bg-accent-hover-alpha, rgba(0, 0, 0, .0235294118));-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);box-shadow:0 6px 24px #00000014;position:relative;padding:4px 8px;overflow:hidden}.scope-btn .scope-icon[data-v-20a95d83]{position:absolute;left:8px;transition:all .3s}.scope-btn .scope-text[data-v-20a95d83]{margin-left:24px}.scope-btn[data-v-20a95d83]:hover,.scope-btn.loading[data-v-20a95d83]{box-shadow:0 0 20px #2e2e2e3a}.scope-btn:hover .scope-icon[data-v-20a95d83],.scope-btn.loading .scope-icon[data-v-20a95d83]{transition:all .3s;left:50%;transform:translate(-50%)}.scope-btn:hover .scope-text[data-v-20a95d83],.scope-btn.loading .scope-text[data-v-20a95d83]{transition:all .3s;transform:translate(100%);opacity:0}.scope-btn:active .scope-icon[data-v-20a95d83]{left:50%;transform:scale(.6) translate(-80%)}.scope-btn[data-v-20a95d83]:focus{outline:none}.fix-to-top[data-v-570e865d]{position:sticky;z-index:1}.ms_tab[data-v-5204c1f0]{width:100%;text-align:left;display:flex;align-items:center;gap:.5em;padding:.25em .5em;border-radius:6px;cursor:pointer;transition:background-color .16s ease,transform .14s ease,box-shadow .16s ease;transform:translate(0)}.ms_tab[data-v-5204c1f0]:hover{transform:translate(2px)}.ms_tab.active[data-v-5204c1f0]{font-weight:700;transform:translate(2px)}.bg-glass[data-v-aaeee2ed]{width:100%;z-index:1;background:var(--colors-theme-bg-accent-hover-alpha, rgba(0, 0, 0, .0235294118));-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);box-shadow:0 6px 24px #00000014;border-radius:4px}.home-page[data-v-f13913df]{min-height:100%}.loader[data-v-b93a83a2]{position:fixed;top:0;left:0;z-index:9999;width:100%;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:wait;background-color:#000c}.banter-loader[data-v-b93a83a2]{position:relative;width:72px;height:72px;margin-left:-36px;margin-top:-36px}.banter-loader__box[data-v-b93a83a2]{float:left;position:relative;width:20px;height:20px;margin-right:6px}.banter-loader__box[data-v-b93a83a2]:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:#fff}.banter-loader__box[data-v-b93a83a2]:nth-child(3n){margin-right:0;margin-bottom:6px}.banter-loader__box[data-v-b93a83a2]:nth-child(1):before,.banter-loader__box[data-v-b93a83a2]:nth-child(4):before{margin-left:26px}.banter-loader__box[data-v-b93a83a2]:nth-child(3):before{margin-top:52px}.banter-loader__box[data-v-b93a83a2]:last-child{margin-bottom:0}@keyframes moveBox-1-b93a83a2{9.0909090909%{transform:translate(-26px)}18.1818181818%{transform:translate(0)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(26px)}45.4545454545%{transform:translate(26px,26px)}54.5454545455%{transform:translate(26px,26px)}63.6363636364%{transform:translate(26px,26px)}72.7272727273%{transform:translate(26px)}81.8181818182%{transform:translate(0)}90.9090909091%{transform:translate(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-b93a83a2]:nth-child(1){animation:moveBox-1-b93a83a2 4s infinite}@keyframes moveBox-2-b93a83a2{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(26px)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(26px)}45.4545454545%{transform:translate(26px,26px)}54.5454545455%{transform:translate(26px,26px)}63.6363636364%{transform:translate(26px,26px)}72.7272727273%{transform:translate(26px,26px)}81.8181818182%{transform:translateY(26px)}90.9090909091%{transform:translateY(26px)}to{transform:translate(0)}}.banter-loader__box[data-v-b93a83a2]:nth-child(2){animation:moveBox-2-b93a83a2 4s infinite}@keyframes moveBox-3-b93a83a2{9.0909090909%{transform:translate(-26px)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(-26px)}45.4545454545%{transform:translate(-26px)}54.5454545455%{transform:translate(-26px)}63.6363636364%{transform:translate(-26px)}72.7272727273%{transform:translate(-26px)}81.8181818182%{transform:translate(-26px,-26px)}90.9090909091%{transform:translateY(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-b93a83a2]:nth-child(3){animation:moveBox-3-b93a83a2 4s infinite}@keyframes moveBox-4-b93a83a2{9.0909090909%{transform:translate(-26px)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(-26px,-26px)}36.3636363636%{transform:translateY(-26px)}45.4545454545%{transform:translate(0)}54.5454545455%{transform:translateY(-26px)}63.6363636364%{transform:translateY(-26px)}72.7272727273%{transform:translateY(-26px)}81.8181818182%{transform:translate(-26px,-26px)}90.9090909091%{transform:translate(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-b93a83a2]:nth-child(4){animation:moveBox-4-b93a83a2 4s infinite}@keyframes moveBox-5-b93a83a2{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(0)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(26px)}45.4545454545%{transform:translate(26px)}54.5454545455%{transform:translate(26px)}63.6363636364%{transform:translate(26px)}72.7272727273%{transform:translate(26px)}81.8181818182%{transform:translate(26px,-26px)}90.9090909091%{transform:translateY(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-b93a83a2]:nth-child(5){animation:moveBox-5-b93a83a2 4s infinite}@keyframes moveBox-6-b93a83a2{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(-26px)}36.3636363636%{transform:translate(0)}45.4545454545%{transform:translate(0)}54.5454545455%{transform:translate(0)}63.6363636364%{transform:translate(0)}72.7272727273%{transform:translateY(26px)}81.8181818182%{transform:translate(-26px,26px)}90.9090909091%{transform:translate(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-b93a83a2]:nth-child(6){animation:moveBox-6-b93a83a2 4s infinite}@keyframes moveBox-7-b93a83a2{9.0909090909%{transform:translate(26px)}18.1818181818%{transform:translate(26px)}27.2727272727%{transform:translate(26px)}36.3636363636%{transform:translate(0)}45.4545454545%{transform:translateY(-26px)}54.5454545455%{transform:translate(26px,-26px)}63.6363636364%{transform:translateY(-26px)}72.7272727273%{transform:translateY(-26px)}81.8181818182%{transform:translate(0)}90.9090909091%{transform:translate(26px)}to{transform:translate(0)}}.banter-loader__box[data-v-b93a83a2]:nth-child(7){animation:moveBox-7-b93a83a2 4s infinite}@keyframes moveBox-8-b93a83a2{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(-26px,-26px)}36.3636363636%{transform:translateY(-26px)}45.4545454545%{transform:translateY(-26px)}54.5454545455%{transform:translateY(-26px)}63.6363636364%{transform:translateY(-26px)}72.7272727273%{transform:translateY(-26px)}81.8181818182%{transform:translate(26px,-26px)}90.9090909091%{transform:translate(26px)}to{transform:translate(0)}}.banter-loader__box[data-v-b93a83a2]:nth-child(8){animation:moveBox-8-b93a83a2 4s infinite}@keyframes moveBox-9-b93a83a2{9.0909090909%{transform:translate(-26px)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(-26px)}45.4545454545%{transform:translate(0)}54.5454545455%{transform:translate(0)}63.6363636364%{transform:translate(-26px)}72.7272727273%{transform:translate(-26px)}81.8181818182%{transform:translate(-52px)}90.9090909091%{transform:translate(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-b93a83a2]:nth-child(9){animation:moveBox-9-b93a83a2 4s infinite}.btn-google[data-v-b17b6ae7]{font-family:Roboto,arial,sans-serif;background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-google[data-v-b17b6ae7]:hover{border-color:none}.btn-google svg[data-v-b17b6ae7]{width:30px;margin-right:6px}.btn-pwa-update[data-v-12205a11]{cursor:pointer;border:none;background:#7808d0;color:#fff;width:80px;height:80px;border-radius:50%;overflow:hidden;position:relative;display:grid;place-content:center;transition:background .3s,transform .2s;font-weight:600}.btn-pwa-update .btn-pwa-text[data-v-12205a11]{position:absolute;inset:0;animation:text-rotation-12205a11 8s linear infinite;margin-bottom:0}.btn-pwa-update .btn-pwa-text>span[data-v-12205a11]{position:absolute;transform:rotate(calc(18deg * var(--index)));inset:2px}.btn-pwa-update .btn-pwa-circle[data-v-12205a11]{position:relative;width:32px;height:32px;overflow:hidden;background:#fff;color:#7808d0;border-radius:50%;display:flex;align-items:center;justify-content:center}.btn-pwa-update .btn-pwa-icon-copy[data-v-12205a11]{position:absolute;transform:translate(-150%,150%)}.btn-pwa-update[data-v-12205a11]:hover{background:#000;transform:scale(1.05)}.btn-pwa-update:hover .btn-pwa-icon[data-v-12205a11],.btn-pwa-update:hover .spinner-border[data-v-12205a11]{color:#000}.btn-pwa-update:hover .btn-pwa-icon[data-v-12205a11]:first-child{transition:transform .3s ease-in-out;transform:translate(150%,-150%)}.btn-pwa-update:hover .btn-pwa-icon-copy[data-v-12205a11]{transition:transform .3s ease-in-out .1s;transform:translate(0)}@keyframes text-rotation-12205a11{to{rotate:360deg}}.avatar-display[data-v-41b1b08b]{position:relative;overflow:hidden;-webkit-user-select:none;user-select:none;border:1px solid var(--border, #e5e7eb);background:#f3f4f6}.shape--circle[data-v-41b1b08b]{border-radius:999px}.shape--square[data-v-41b1b08b]{border-radius:0}.avatar-img[data-v-41b1b08b]{width:100%;height:100%;object-fit:cover;display:block}.centered[data-v-41b1b08b]{position:absolute;inset:0;display:grid;place-items:center}.avatar-initials[data-v-41b1b08b]{color:#374151;background:#f9fafb;font-weight:600}.avatar-placeholder[data-v-41b1b08b]{color:#9ca3af;background:#f9fafb;font-weight:500;border:1px dashed #e5e7eb}.logo-wrapper[data-v-684b8f53]{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:transform .2s ease;position:relative}.logo-wrapper .scope-logo-bk[data-v-684b8f53]{position:absolute;width:100%;height:100%;top:0;left:0;opacity:0;transition:all .3s}.logo-wrapper:hover .scope-logo-bk[data-v-684b8f53]{opacity:1}.logo-wrapper[data-v-684b8f53]:active{transform:scale(.98)}.logo-wrapper.size-lg[data-v-684b8f53]{width:6em}.logo-wrapper.size-md[data-v-684b8f53]{width:4.5em}.logo-wrapper.size-sm[data-v-684b8f53]{width:3em}.logo-wrapper .square[data-v-684b8f53]{border-radius:0}.logo-wrapper .circle[data-v-684b8f53]{border-radius:50%}.logo-app[data-v-684b8f53]{inline-size:auto;display:block}.logo-wrapper.size-lg .logo-app[data-v-684b8f53]{height:6em}.logo-wrapper.size-md .logo-app[data-v-684b8f53]{height:4.5em}.logo-wrapper.size-sm .logo-app[data-v-684b8f53]{height:3em}@media(max-width:576px){.logo-wrapper.size-lg[data-v-684b8f53]{width:3em}.logo-wrapper.size-md[data-v-684b8f53]{width:2.5em}.logo-wrapper.size-sm[data-v-684b8f53]{width:2em}.logo-wrapper.size-lg .logo-app[data-v-684b8f53]{height:3em}.logo-wrapper.size-md .logo-app[data-v-684b8f53]{height:2.5em}.logo-wrapper.size-sm .logo-app[data-v-684b8f53]{height:2em}}.logo-shadows[data-v-684b8f53]{will-change:filter;transition:filter .3s}.logo-shadows[data-v-684b8f53]:hover{filter:drop-shadow(0 0 2em rgba(129,129,129,.5))}.is-loading[data-v-684b8f53]{animation:blink-684b8f53 .8s linear infinite}@keyframes blink-684b8f53{0%{opacity:.9}50%{opacity:.25}to{opacity:.9}}@media(prefers-reduced-motion:reduce){.logo-wrapper[data-v-684b8f53],.logo-shadows[data-v-684b8f53]{transition:none}.is-loading[data-v-684b8f53]{animation:none}}.user-page[data-v-9a948294]{min-height:100%}.user-card[data-v-9a948294]{background:#fff;border-radius:18px;padding:2rem;border:1px solid rgba(48,71,94,.12);box-shadow:0 26px 60px #30475e1f;animation:fadeUp-9a948294 .6s ease both}.user-header[data-v-9a948294]{display:flex;gap:12px;align-items:center;margin-bottom:1.5rem}.brand-logo[data-v-9a948294]{width:44px;height:44px}.empty-state[data-v-9a948294]{text-align:center;color:#5c6c78}.empty-state .material-symbols-outlined[data-v-9a948294]{font-size:48px;color:var(--brand-accent);margin-bottom:.5rem}.profile-body[data-v-9a948294]{display:flex;flex-direction:column;gap:1.5rem}.profile-card[data-v-9a948294]{display:flex;gap:16px;align-items:center;padding:1.2rem;border-radius:14px;background:#f9fafb;border:1px solid rgba(48,71,94,.08)}.avatar[data-v-9a948294]{width:72px;height:72px;border-radius:50%;background:#30475e14;display:flex;align-items:center;justify-content:center;overflow:hidden}.avatar img[data-v-9a948294]{width:100%;height:100%;object-fit:cover}.avatar .material-symbols-outlined[data-v-9a948294]{font-size:36px;color:var(--brand-dark)}.profile-grid[data-v-9a948294]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.profile-item[data-v-9a948294]{display:flex;gap:10px;align-items:center;background:#f9fafb;border-radius:12px;padding:12px 14px;border:1px solid rgba(48,71,94,.08);color:#4c5b66}.profile-item .material-symbols-outlined[data-v-9a948294]{font-size:22px;color:var(--brand-accent)}.profile-item strong[data-v-9a948294]{display:block;color:var(--brand-dark);font-size:.95rem}.profile-item div span[data-v-9a948294]{font-size:.85rem}.profile-actions[data-v-9a948294]{display:flex;flex-wrap:wrap;gap:12px}@keyframes fadeUp-9a948294{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.auth-page[data-v-02b6024a]{min-height:100%}.auth-card[data-v-02b6024a]{background:#fff;border-radius:18px;padding:2rem;border:1px solid rgba(48,71,94,.12);box-shadow:0 26px 60px #30475e1f;animation:fadeUp-02b6024a .6s ease both}.auth-header[data-v-02b6024a]{display:flex;gap:12px;align-items:center;margin-bottom:1.5rem}.brand-logo[data-v-02b6024a]{width:44px;height:44px}.social-block[data-v-02b6024a]{margin-bottom:1.5rem}.divider[data-v-02b6024a]{display:flex;align-items:center;margin:1rem 0 .5rem;color:#83919b}.divider[data-v-02b6024a]:before,.divider[data-v-02b6024a]:after{content:"";height:1px;background:#30475e1f;flex:1}.divider span[data-v-02b6024a]{padding:0 12px;font-size:.85rem}.form-group[data-v-02b6024a]{margin-bottom:1rem}.input-icon[data-v-02b6024a]{position:relative}.input-icon .material-symbols-outlined[data-v-02b6024a]{position:absolute;top:50%;left:12px;transform:translateY(-50%);color:var(--brand-dark);opacity:.6}.input-icon .form-control[data-v-02b6024a]{padding-left:2.4rem}.field-error[data-v-02b6024a]{color:var(--brand-accent);font-size:.85rem;margin-top:.3rem;display:block}.link-row[data-v-02b6024a]{margin-top:1.5rem;display:flex;flex-direction:column;gap:8px}@keyframes fadeUp-02b6024a{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.auth-page[data-v-bedacedd]{min-height:100%}.auth-card[data-v-bedacedd]{background:#fff;border-radius:18px;padding:2rem;border:1px solid rgba(48,71,94,.12);box-shadow:0 26px 60px #30475e1f;animation:fadeUp-bedacedd .6s ease both}.auth-header[data-v-bedacedd]{display:flex;gap:12px;align-items:center;margin-bottom:1.5rem}.brand-logo[data-v-bedacedd]{width:44px;height:44px}.form-grid[data-v-bedacedd]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.form-group[data-v-bedacedd]{margin-bottom:1rem}.input-icon[data-v-bedacedd]{position:relative}.input-icon .material-symbols-outlined[data-v-bedacedd]{position:absolute;top:50%;left:12px;transform:translateY(-50%);color:var(--brand-dark);opacity:.6}.input-icon .form-control[data-v-bedacedd]{padding-left:2.4rem}.field-error[data-v-bedacedd]{color:var(--brand-accent);font-size:.85rem;margin-top:.3rem;display:block}.link-row[data-v-bedacedd]{margin-top:1.5rem}@keyframes fadeUp-bedacedd{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.auth-page[data-v-dd5b1fc7]{min-height:100%}.auth-card[data-v-dd5b1fc7]{background:#fff;border-radius:18px;padding:2rem;border:1px solid rgba(48,71,94,.12);box-shadow:0 26px 60px #30475e1f;animation:fadeUp-dd5b1fc7 .6s ease both}.auth-header[data-v-dd5b1fc7]{display:flex;gap:12px;align-items:center;margin-bottom:1.5rem}.brand-logo[data-v-dd5b1fc7]{width:44px;height:44px}.form-group[data-v-dd5b1fc7]{margin-bottom:1rem}.input-icon[data-v-dd5b1fc7]{position:relative}.input-icon .material-symbols-outlined[data-v-dd5b1fc7]{position:absolute;top:50%;left:12px;transform:translateY(-50%);color:var(--brand-dark);opacity:.6}.input-icon .form-control[data-v-dd5b1fc7]{padding-left:2.4rem}.field-error[data-v-dd5b1fc7]{color:var(--brand-accent);font-size:.85rem;margin-top:.3rem;display:block}.link-row[data-v-dd5b1fc7]{margin-top:1.5rem}@keyframes fadeUp-dd5b1fc7{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.home-page[data-v-17f88a6d]{--brand-dark: #30475e;--brand-accent: #f05454;--brand-soft: #f7f4f4;min-height:100%}.brand-bar[data-v-17f88a6d]{display:flex;align-items:center;gap:12px}.brand-logo[data-v-17f88a6d]{width:48px;height:48px}.brand-title[data-v-17f88a6d]{font-size:1.5rem;letter-spacing:.5px;color:var(--brand-dark)}.brand-sub[data-v-17f88a6d]{font-size:.9rem;color:#6a7b86}.hero-card[data-v-17f88a6d]{background:#fff;border:1px solid rgba(48,71,94,.12);border-radius:20px;padding:2rem;box-shadow:0 24px 60px #30475e1f;animation:fadeUp-17f88a6d .6s ease both}.hero-pill[data-v-17f88a6d]{display:inline-flex;align-items:center;gap:8px;background:#f0545414;color:var(--brand-accent);border-radius:999px;padding:6px 14px;font-weight:600;font-size:.85rem;margin-bottom:1rem}.hero-title[data-v-17f88a6d]{font-size:clamp(1.8rem,2.5vw,2.6rem);color:var(--brand-dark);margin-bottom:1rem}.hero-lead[data-v-17f88a6d]{color:#5c6c78;margin-bottom:1.5rem}.hero-actions[data-v-17f88a6d]{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:1.5rem}.hero-grid[data-v-17f88a6d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.hero-item[data-v-17f88a6d]{display:flex;gap:10px;align-items:center;background:#f9fafb;border-radius:12px;padding:10px 12px;border:1px solid rgba(48,71,94,.08);color:#4c5b66}.hero-item .material-symbols-outlined[data-v-17f88a6d]{font-size:22px;color:var(--brand-accent)}.hero-item strong[data-v-17f88a6d]{display:block;color:var(--brand-dark);font-size:.95rem}.hero-item div span[data-v-17f88a6d]{font-size:.85rem}.avatar-card[data-v-17f88a6d]{background:linear-gradient(140deg,#30475e14,#f0545414);border-radius:24px;padding:2rem;text-align:center;border:1px solid rgba(48,71,94,.1);animation:fadeUp-17f88a6d .6s ease both;animation-delay:.1s}.avatar-card img[data-v-17f88a6d]{max-width:min(320px,90%)}.avatar-caption[data-v-17f88a6d]{margin-top:1rem;display:inline-flex;align-items:center;gap:8px;color:#5c6c78;font-weight:600}@keyframes fadeUp-17f88a6d{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
1
+ @charset "UTF-8";.scope-accordion-button[data-v-b7f53834]:focus{outline:none;box-shadow:none}.scope-accordion-button[data-v-b7f53834]:not(.collapsed){color:initial!important;background-color:transparent!important}.spinner-border[data-v-02f82e55]{vertical-align:middle}.btn-ms-link[data-v-02f82e55]{background-color:transparent!important;border:none;color:var(--bs-btn-color)!important}.btn-ms-link[data-v-02f82e55]:hover{text-decoration:underline}.hideAfter[data-v-02f82e55]:after{display:none}.toast-wrapper[data-v-e724e2c2]{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:6px;z-index:999999}.toast-card[data-v-e724e2c2]{width:330px;min-height:80px;border-radius:8px;padding:10px 12px;background-color:#fff;box-shadow:0 8px 24px #00000026;display:flex;align-items:center;justify-content:center;gap:12px;cursor:default;transition:all .3s ease,transform .3s ease;overflow:hidden;opacity:1}.toast-card .icon-container[data-v-e724e2c2]{width:35px;height:35px;display:flex;justify-content:center;align-items:center;border-radius:50%;flex-shrink:0;transition:all .3s ease}.toast-card .message-text[data-v-e724e2c2]{font-size:17px;font-weight:700}.toast-card .sub-text[data-v-e724e2c2]{color:#555;font-size:14px}.toast-card .cross-icon[data-v-e724e2c2]{width:18px;height:18px;color:#555;cursor:pointer;flex-shrink:0}.toast-card[data-v-e724e2c2]:not(.expanded){min-height:40px;max-height:40px;padding-top:6px;padding-bottom:6px;opacity:.7}.toast-card:not(.expanded) .icon-container[data-v-e724e2c2]{width:18px;height:18px}.toast-card:not(.expanded) .message-text[data-v-e724e2c2]{font-size:14px}.toast-card:not(.expanded) .sub-content[data-v-e724e2c2]{display:none}.toast-card:not(.expanded) .cross-icon[data-v-e724e2c2]{width:14px;height:14px}.toast-fade-enter-from[data-v-e724e2c2],.toast-fade-leave-to[data-v-e724e2c2]{opacity:0;transform:translateY(20px)}.toast-fade-enter-active[data-v-e724e2c2],.toast-fade-leave-active[data-v-e724e2c2]{transition:all .3s ease}.message-text-container[data-v-e724e2c2]{flex-grow:1}.toast-card.info[data-v-e724e2c2]{border-right:5px solid var(--bs-info)}.toast-card.info .icon-container[data-v-e724e2c2]{color:var(--bs-info)}.toast-card.success[data-v-e724e2c2]{border-right:5px solid var(--bs-success)}.toast-card.success .icon-container[data-v-e724e2c2]{color:var(--bs-success)}.toast-card.warning[data-v-e724e2c2]{border-right:5px solid var(--bs-warning)}.toast-card.warning .icon-container[data-v-e724e2c2]{color:var(--bs-warning)}.toast-card.error[data-v-e724e2c2]{border-right:5px solid var(--bs-danger)}.toast-card.error .icon-container[data-v-e724e2c2]{color:var(--bs-danger)}.toast-card.primary[data-v-e724e2c2]{border-right:5px solid var(--bs-primary)}.toast-card.primary .icon-container[data-v-e724e2c2]{color:var(--bs-primary)}.toast-card.secondary[data-v-e724e2c2]{border-right:5px solid var(--bs-secondary)}.toast-card.secondary .icon-container[data-v-e724e2c2]{color:var(--bs-secondary)}.prefix-width[data-v-a5d73642]{width:60px}.bg-glass[data-v-d4945b09]{width:100%;z-index:1;background:var(--colors-theme-bg-accent-hover-alpha, rgba(0, 0, 0, .0235294118));-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);box-shadow:0 6px 24px #00000014;border-radius:4px}.scope-btn[data-v-20a95d83]{border-radius:4px;border:none;transition:all .5s ease-in-out;display:flex;align-items:center;background:var(--colors-theme-bg-accent-hover-alpha, rgba(0, 0, 0, .0235294118));-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);box-shadow:0 6px 24px #00000014;position:relative;padding:4px 8px;overflow:hidden}.scope-btn .scope-icon[data-v-20a95d83]{position:absolute;left:8px;transition:all .3s}.scope-btn .scope-text[data-v-20a95d83]{margin-left:24px}.scope-btn[data-v-20a95d83]:hover,.scope-btn.loading[data-v-20a95d83]{box-shadow:0 0 20px #2e2e2e3a}.scope-btn:hover .scope-icon[data-v-20a95d83],.scope-btn.loading .scope-icon[data-v-20a95d83]{transition:all .3s;left:50%;transform:translate(-50%)}.scope-btn:hover .scope-text[data-v-20a95d83],.scope-btn.loading .scope-text[data-v-20a95d83]{transition:all .3s;transform:translate(100%);opacity:0}.scope-btn:active .scope-icon[data-v-20a95d83]{left:50%;transform:scale(.6) translate(-80%)}.scope-btn[data-v-20a95d83]:focus{outline:none}.fix-to-top[data-v-570e865d]{position:sticky;z-index:1}.ms_tab[data-v-5204c1f0]{width:100%;text-align:left;display:flex;align-items:center;gap:.5em;padding:.25em .5em;border-radius:6px;cursor:pointer;transition:background-color .16s ease,transform .14s ease,box-shadow .16s ease;transform:translate(0)}.ms_tab[data-v-5204c1f0]:hover{transform:translate(2px)}.ms_tab.active[data-v-5204c1f0]{font-weight:700;transform:translate(2px)}.bg-glass[data-v-aaeee2ed]{width:100%;z-index:1;background:var(--colors-theme-bg-accent-hover-alpha, rgba(0, 0, 0, .0235294118));-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);box-shadow:0 6px 24px #00000014;border-radius:4px}.home-page[data-v-f13913df]{min-height:100%}.loader[data-v-82b9a30d]{position:fixed;top:0;left:0;z-index:9999;width:100%;height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:wait;background-color:#000c}.banter-loader[data-v-82b9a30d]{position:relative;width:72px;height:72px;margin-left:-36px;margin-top:-36px}.banter-loader__box[data-v-82b9a30d]{float:left;position:relative;width:20px;height:20px;margin-right:6px}.banter-loader__box[data-v-82b9a30d]:before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;background:#fff}.banter-loader__box[data-v-82b9a30d]:nth-child(3n){margin-right:0;margin-bottom:6px}.banter-loader__box[data-v-82b9a30d]:nth-child(1):before,.banter-loader__box[data-v-82b9a30d]:nth-child(4):before{margin-left:26px}.banter-loader__box[data-v-82b9a30d]:nth-child(3):before{margin-top:52px}.banter-loader__box[data-v-82b9a30d]:last-child{margin-bottom:0}@keyframes moveBox-1-82b9a30d{9.0909090909%{transform:translate(-26px)}18.1818181818%{transform:translate(0)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(26px)}45.4545454545%{transform:translate(26px,26px)}54.5454545455%{transform:translate(26px,26px)}63.6363636364%{transform:translate(26px,26px)}72.7272727273%{transform:translate(26px)}81.8181818182%{transform:translate(0)}90.9090909091%{transform:translate(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-82b9a30d]:nth-child(1){animation:moveBox-1-82b9a30d 4s infinite}@keyframes moveBox-2-82b9a30d{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(26px)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(26px)}45.4545454545%{transform:translate(26px,26px)}54.5454545455%{transform:translate(26px,26px)}63.6363636364%{transform:translate(26px,26px)}72.7272727273%{transform:translate(26px,26px)}81.8181818182%{transform:translateY(26px)}90.9090909091%{transform:translateY(26px)}to{transform:translate(0)}}.banter-loader__box[data-v-82b9a30d]:nth-child(2){animation:moveBox-2-82b9a30d 4s infinite}@keyframes moveBox-3-82b9a30d{9.0909090909%{transform:translate(-26px)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(-26px)}45.4545454545%{transform:translate(-26px)}54.5454545455%{transform:translate(-26px)}63.6363636364%{transform:translate(-26px)}72.7272727273%{transform:translate(-26px)}81.8181818182%{transform:translate(-26px,-26px)}90.9090909091%{transform:translateY(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-82b9a30d]:nth-child(3){animation:moveBox-3-82b9a30d 4s infinite}@keyframes moveBox-4-82b9a30d{9.0909090909%{transform:translate(-26px)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(-26px,-26px)}36.3636363636%{transform:translateY(-26px)}45.4545454545%{transform:translate(0)}54.5454545455%{transform:translateY(-26px)}63.6363636364%{transform:translateY(-26px)}72.7272727273%{transform:translateY(-26px)}81.8181818182%{transform:translate(-26px,-26px)}90.9090909091%{transform:translate(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-82b9a30d]:nth-child(4){animation:moveBox-4-82b9a30d 4s infinite}@keyframes moveBox-5-82b9a30d{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(0)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(26px)}45.4545454545%{transform:translate(26px)}54.5454545455%{transform:translate(26px)}63.6363636364%{transform:translate(26px)}72.7272727273%{transform:translate(26px)}81.8181818182%{transform:translate(26px,-26px)}90.9090909091%{transform:translateY(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-82b9a30d]:nth-child(5){animation:moveBox-5-82b9a30d 4s infinite}@keyframes moveBox-6-82b9a30d{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(-26px)}36.3636363636%{transform:translate(0)}45.4545454545%{transform:translate(0)}54.5454545455%{transform:translate(0)}63.6363636364%{transform:translate(0)}72.7272727273%{transform:translateY(26px)}81.8181818182%{transform:translate(-26px,26px)}90.9090909091%{transform:translate(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-82b9a30d]:nth-child(6){animation:moveBox-6-82b9a30d 4s infinite}@keyframes moveBox-7-82b9a30d{9.0909090909%{transform:translate(26px)}18.1818181818%{transform:translate(26px)}27.2727272727%{transform:translate(26px)}36.3636363636%{transform:translate(0)}45.4545454545%{transform:translateY(-26px)}54.5454545455%{transform:translate(26px,-26px)}63.6363636364%{transform:translateY(-26px)}72.7272727273%{transform:translateY(-26px)}81.8181818182%{transform:translate(0)}90.9090909091%{transform:translate(26px)}to{transform:translate(0)}}.banter-loader__box[data-v-82b9a30d]:nth-child(7){animation:moveBox-7-82b9a30d 4s infinite}@keyframes moveBox-8-82b9a30d{9.0909090909%{transform:translate(0)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(-26px,-26px)}36.3636363636%{transform:translateY(-26px)}45.4545454545%{transform:translateY(-26px)}54.5454545455%{transform:translateY(-26px)}63.6363636364%{transform:translateY(-26px)}72.7272727273%{transform:translateY(-26px)}81.8181818182%{transform:translate(26px,-26px)}90.9090909091%{transform:translate(26px)}to{transform:translate(0)}}.banter-loader__box[data-v-82b9a30d]:nth-child(8){animation:moveBox-8-82b9a30d 4s infinite}@keyframes moveBox-9-82b9a30d{9.0909090909%{transform:translate(-26px)}18.1818181818%{transform:translate(-26px)}27.2727272727%{transform:translate(0)}36.3636363636%{transform:translate(-26px)}45.4545454545%{transform:translate(0)}54.5454545455%{transform:translate(0)}63.6363636364%{transform:translate(-26px)}72.7272727273%{transform:translate(-26px)}81.8181818182%{transform:translate(-52px)}90.9090909091%{transform:translate(-26px)}to{transform:translate(0)}}.banter-loader__box[data-v-82b9a30d]:nth-child(9){animation:moveBox-9-82b9a30d 4s infinite}.btn-google[data-v-b17b6ae7]{font-family:Roboto,arial,sans-serif;background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-google[data-v-b17b6ae7]:hover{border-color:none}.btn-google svg[data-v-b17b6ae7]{width:30px;margin-right:6px}.btn-pwa-update[data-v-12205a11]{cursor:pointer;border:none;background:#7808d0;color:#fff;width:80px;height:80px;border-radius:50%;overflow:hidden;position:relative;display:grid;place-content:center;transition:background .3s,transform .2s;font-weight:600}.btn-pwa-update .btn-pwa-text[data-v-12205a11]{position:absolute;inset:0;animation:text-rotation-12205a11 8s linear infinite;margin-bottom:0}.btn-pwa-update .btn-pwa-text>span[data-v-12205a11]{position:absolute;transform:rotate(calc(18deg * var(--index)));inset:2px}.btn-pwa-update .btn-pwa-circle[data-v-12205a11]{position:relative;width:32px;height:32px;overflow:hidden;background:#fff;color:#7808d0;border-radius:50%;display:flex;align-items:center;justify-content:center}.btn-pwa-update .btn-pwa-icon-copy[data-v-12205a11]{position:absolute;transform:translate(-150%,150%)}.btn-pwa-update[data-v-12205a11]:hover{background:#000;transform:scale(1.05)}.btn-pwa-update:hover .btn-pwa-icon[data-v-12205a11],.btn-pwa-update:hover .spinner-border[data-v-12205a11]{color:#000}.btn-pwa-update:hover .btn-pwa-icon[data-v-12205a11]:first-child{transition:transform .3s ease-in-out;transform:translate(150%,-150%)}.btn-pwa-update:hover .btn-pwa-icon-copy[data-v-12205a11]{transition:transform .3s ease-in-out .1s;transform:translate(0)}@keyframes text-rotation-12205a11{to{rotate:360deg}}.avatar-display[data-v-41b1b08b]{position:relative;overflow:hidden;-webkit-user-select:none;user-select:none;border:1px solid var(--border, #e5e7eb);background:#f3f4f6}.shape--circle[data-v-41b1b08b]{border-radius:999px}.shape--square[data-v-41b1b08b]{border-radius:0}.avatar-img[data-v-41b1b08b]{width:100%;height:100%;object-fit:cover;display:block}.centered[data-v-41b1b08b]{position:absolute;inset:0;display:grid;place-items:center}.avatar-initials[data-v-41b1b08b]{color:#374151;background:#f9fafb;font-weight:600}.avatar-placeholder[data-v-41b1b08b]{color:#9ca3af;background:#f9fafb;font-weight:500;border:1px dashed #e5e7eb}.logo-wrapper[data-v-684b8f53]{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:transform .2s ease;position:relative}.logo-wrapper .scope-logo-bk[data-v-684b8f53]{position:absolute;width:100%;height:100%;top:0;left:0;opacity:0;transition:all .3s}.logo-wrapper:hover .scope-logo-bk[data-v-684b8f53]{opacity:1}.logo-wrapper[data-v-684b8f53]:active{transform:scale(.98)}.logo-wrapper.size-lg[data-v-684b8f53]{width:6em}.logo-wrapper.size-md[data-v-684b8f53]{width:4.5em}.logo-wrapper.size-sm[data-v-684b8f53]{width:3em}.logo-wrapper .square[data-v-684b8f53]{border-radius:0}.logo-wrapper .circle[data-v-684b8f53]{border-radius:50%}.logo-app[data-v-684b8f53]{inline-size:auto;display:block}.logo-wrapper.size-lg .logo-app[data-v-684b8f53]{height:6em}.logo-wrapper.size-md .logo-app[data-v-684b8f53]{height:4.5em}.logo-wrapper.size-sm .logo-app[data-v-684b8f53]{height:3em}@media(max-width:576px){.logo-wrapper.size-lg[data-v-684b8f53]{width:3em}.logo-wrapper.size-md[data-v-684b8f53]{width:2.5em}.logo-wrapper.size-sm[data-v-684b8f53]{width:2em}.logo-wrapper.size-lg .logo-app[data-v-684b8f53]{height:3em}.logo-wrapper.size-md .logo-app[data-v-684b8f53]{height:2.5em}.logo-wrapper.size-sm .logo-app[data-v-684b8f53]{height:2em}}.logo-shadows[data-v-684b8f53]{will-change:filter;transition:filter .3s}.logo-shadows[data-v-684b8f53]:hover{filter:drop-shadow(0 0 2em rgba(129,129,129,.5))}.is-loading[data-v-684b8f53]{animation:blink-684b8f53 .8s linear infinite}@keyframes blink-684b8f53{0%{opacity:.9}50%{opacity:.25}to{opacity:.9}}@media(prefers-reduced-motion:reduce){.logo-wrapper[data-v-684b8f53],.logo-shadows[data-v-684b8f53]{transition:none}.is-loading[data-v-684b8f53]{animation:none}}.auth-page[data-v-02b6024a]{min-height:100%}.auth-card[data-v-02b6024a]{background:#fff;border-radius:18px;padding:2rem;border:1px solid rgba(48,71,94,.12);box-shadow:0 26px 60px #30475e1f;animation:fadeUp-02b6024a .6s ease both}.auth-header[data-v-02b6024a]{display:flex;gap:12px;align-items:center;margin-bottom:1.5rem}.brand-logo[data-v-02b6024a]{width:44px;height:44px}.social-block[data-v-02b6024a]{margin-bottom:1.5rem}.divider[data-v-02b6024a]{display:flex;align-items:center;margin:1rem 0 .5rem;color:#83919b}.divider[data-v-02b6024a]:before,.divider[data-v-02b6024a]:after{content:"";height:1px;background:#30475e1f;flex:1}.divider span[data-v-02b6024a]{padding:0 12px;font-size:.85rem}.form-group[data-v-02b6024a]{margin-bottom:1rem}.input-icon[data-v-02b6024a]{position:relative}.input-icon .material-symbols-outlined[data-v-02b6024a]{position:absolute;top:50%;left:12px;transform:translateY(-50%);color:var(--brand-dark);opacity:.6}.input-icon .form-control[data-v-02b6024a]{padding-left:2.4rem}.field-error[data-v-02b6024a]{color:var(--brand-accent);font-size:.85rem;margin-top:.3rem;display:block}.link-row[data-v-02b6024a]{margin-top:1.5rem;display:flex;flex-direction:column;gap:8px}@keyframes fadeUp-02b6024a{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.auth-page[data-v-bedacedd]{min-height:100%}.auth-card[data-v-bedacedd]{background:#fff;border-radius:18px;padding:2rem;border:1px solid rgba(48,71,94,.12);box-shadow:0 26px 60px #30475e1f;animation:fadeUp-bedacedd .6s ease both}.auth-header[data-v-bedacedd]{display:flex;gap:12px;align-items:center;margin-bottom:1.5rem}.brand-logo[data-v-bedacedd]{width:44px;height:44px}.form-grid[data-v-bedacedd]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.form-group[data-v-bedacedd]{margin-bottom:1rem}.input-icon[data-v-bedacedd]{position:relative}.input-icon .material-symbols-outlined[data-v-bedacedd]{position:absolute;top:50%;left:12px;transform:translateY(-50%);color:var(--brand-dark);opacity:.6}.input-icon .form-control[data-v-bedacedd]{padding-left:2.4rem}.field-error[data-v-bedacedd]{color:var(--brand-accent);font-size:.85rem;margin-top:.3rem;display:block}.link-row[data-v-bedacedd]{margin-top:1.5rem}@keyframes fadeUp-bedacedd{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.auth-page[data-v-dd5b1fc7]{min-height:100%}.auth-card[data-v-dd5b1fc7]{background:#fff;border-radius:18px;padding:2rem;border:1px solid rgba(48,71,94,.12);box-shadow:0 26px 60px #30475e1f;animation:fadeUp-dd5b1fc7 .6s ease both}.auth-header[data-v-dd5b1fc7]{display:flex;gap:12px;align-items:center;margin-bottom:1.5rem}.brand-logo[data-v-dd5b1fc7]{width:44px;height:44px}.form-group[data-v-dd5b1fc7]{margin-bottom:1rem}.input-icon[data-v-dd5b1fc7]{position:relative}.input-icon .material-symbols-outlined[data-v-dd5b1fc7]{position:absolute;top:50%;left:12px;transform:translateY(-50%);color:var(--brand-dark);opacity:.6}.input-icon .form-control[data-v-dd5b1fc7]{padding-left:2.4rem}.field-error[data-v-dd5b1fc7]{color:var(--brand-accent);font-size:.85rem;margin-top:.3rem;display:block}.link-row[data-v-dd5b1fc7]{margin-top:1.5rem}@keyframes fadeUp-dd5b1fc7{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.home-page[data-v-17f88a6d]{--brand-dark: #30475e;--brand-accent: #f05454;--brand-soft: #f7f4f4;min-height:100%}.brand-bar[data-v-17f88a6d]{display:flex;align-items:center;gap:12px}.brand-logo[data-v-17f88a6d]{width:48px;height:48px}.brand-title[data-v-17f88a6d]{font-size:1.5rem;letter-spacing:.5px;color:var(--brand-dark)}.brand-sub[data-v-17f88a6d]{font-size:.9rem;color:#6a7b86}.hero-card[data-v-17f88a6d]{background:#fff;border:1px solid rgba(48,71,94,.12);border-radius:20px;padding:2rem;box-shadow:0 24px 60px #30475e1f;animation:fadeUp-17f88a6d .6s ease both}.hero-pill[data-v-17f88a6d]{display:inline-flex;align-items:center;gap:8px;background:#f0545414;color:var(--brand-accent);border-radius:999px;padding:6px 14px;font-weight:600;font-size:.85rem;margin-bottom:1rem}.hero-title[data-v-17f88a6d]{font-size:clamp(1.8rem,2.5vw,2.6rem);color:var(--brand-dark);margin-bottom:1rem}.hero-lead[data-v-17f88a6d]{color:#5c6c78;margin-bottom:1.5rem}.hero-actions[data-v-17f88a6d]{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:1.5rem}.hero-grid[data-v-17f88a6d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.hero-item[data-v-17f88a6d]{display:flex;gap:10px;align-items:center;background:#f9fafb;border-radius:12px;padding:10px 12px;border:1px solid rgba(48,71,94,.08);color:#4c5b66}.hero-item .material-symbols-outlined[data-v-17f88a6d]{font-size:22px;color:var(--brand-accent)}.hero-item strong[data-v-17f88a6d]{display:block;color:var(--brand-dark);font-size:.95rem}.hero-item div span[data-v-17f88a6d]{font-size:.85rem}.avatar-card[data-v-17f88a6d]{background:linear-gradient(140deg,#30475e14,#f0545414);border-radius:24px;padding:2rem;text-align:center;border:1px solid rgba(48,71,94,.1);animation:fadeUp-17f88a6d .6s ease both;animation-delay:.1s}.avatar-card img[data-v-17f88a6d]{max-width:min(320px,90%)}.avatar-caption[data-v-17f88a6d]{margin-top:1rem;display:inline-flex;align-items:center;gap:8px;color:#5c6c78;font-weight:600}@keyframes fadeUp-17f88a6d{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.field-file-input[data-v-7fc37b19]{display:none}.field-file-dropzone[data-v-7fc37b19]{border:1px dashed rgba(15,23,42,.2);border-radius:10px;padding:.75rem;min-height:56px;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;background:#f8fafc;transition:border-color .2s ease,background-color .2s ease}.field-file-dropzone.is-dragging[data-v-7fc37b19]{border-color:#3b82f6b3;background:#3b82f614}.field-file-dropzone.is-disabled[data-v-7fc37b19]{opacity:.6;cursor:not-allowed}.field-file-dropzone-default[data-v-7fc37b19]{border:0;background:transparent;font-size:1.5rem;font-weight:600;line-height:1;color:#0f172a;padding:.1rem .4rem}.field-file-list[data-v-7fc37b19]{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem}.field-file-item[data-v-7fc37b19]{display:flex;align-items:center;gap:.5rem;font-size:.9rem}.field-file-name[data-v-7fc37b19]{flex:1;color:#1f2937}.field-file-size[data-v-7fc37b19]{color:#64748b;font-size:.8rem}.field-file-remove[data-v-7fc37b19]{border:0;background:transparent;color:#ef4444;font-size:1.2rem;line-height:1;cursor:pointer}.avatar-dropzone[data-v-219cf050]{border:0;background:transparent;padding:0;width:100%;display:flex;align-items:center;gap:12px;text-align:left}.avatar-preview[data-v-219cf050]{width:64px;height:64px;border-radius:50%;background:#0f172a14;display:flex;align-items:center;justify-content:center;overflow:hidden}.avatar-preview img[data-v-219cf050]{width:100%;height:100%;object-fit:cover}.avatar-preview .material-symbols-outlined[data-v-219cf050]{font-size:28px;color:var(--brand-dark, #0f172a)}.avatar-dropzone.is-dragging .avatar-preview[data-v-219cf050]{box-shadow:0 0 0 3px #3b82f640}.avatar-copy[data-v-219cf050]{display:flex;flex-direction:column;gap:2px}.avatar-title[data-v-219cf050]{font-weight:600;color:var(--brand-dark, #0f172a)}.avatar-hint[data-v-219cf050]{font-size:.8rem;color:#64748b}.public-keys-toggle[data-v-219cf050]{display:flex;flex-wrap:wrap;gap:.5rem}.public-keys-toggle .btn[data-v-219cf050]{border-radius:999px;padding:.35rem .9rem}.user-page[data-v-217462f0]{min-height:100%}.user-card[data-v-217462f0]{background:#fff;border-radius:18px;padding:2rem;border:1px solid rgba(48,71,94,.12);box-shadow:0 26px 60px #30475e1f;animation:fadeUp-217462f0 .6s ease both}.user-header[data-v-217462f0]{display:flex;gap:12px;align-items:center;margin-bottom:1.5rem}.brand-logo[data-v-217462f0]{width:44px;height:44px}.empty-state[data-v-217462f0]{text-align:center;color:#5c6c78}.empty-state .material-symbols-outlined[data-v-217462f0]{font-size:48px;color:var(--brand-accent);margin-bottom:.5rem}.profile-body[data-v-217462f0]{display:flex;flex-direction:column;gap:1.5rem}.profile-card[data-v-217462f0]{display:flex;gap:16px;align-items:center;padding:1.2rem 1.2rem 1.2rem .6rem}.avatar[data-v-217462f0]{width:72px;height:72px;border-radius:50%;background:#30475e14;display:flex;align-items:center;justify-content:center;overflow:hidden}.avatar img[data-v-217462f0]{width:100%;height:100%;object-fit:cover}.avatar .material-symbols-outlined[data-v-217462f0]{font-size:36px;color:var(--brand-dark)}.profile-grid[data-v-217462f0]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.profile-item[data-v-217462f0]{display:flex;gap:10px;align-items:center;background:#f9fafb;border-radius:12px;padding:12px 14px;border:1px solid rgba(48,71,94,.08);color:#4c5b66}.profile-item .material-symbols-outlined[data-v-217462f0]{font-size:22px;color:var(--brand-accent)}.profile-item strong[data-v-217462f0]{display:block;color:var(--brand-dark);font-size:.95rem}.profile-item div span[data-v-217462f0]{font-size:.85rem}.profile-actions[data-v-217462f0]{display:flex;flex-wrap:wrap;gap:12px}@keyframes fadeUp-217462f0{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@@ -2,6 +2,7 @@ type __VLS_Props = {
2
2
  id?: string;
3
3
  title?: string;
4
4
  defaultOpen?: boolean;
5
+ modelValue?: boolean;
5
6
  disabled?: boolean;
6
7
  };
7
8
  declare var __VLS_1: {}, __VLS_3: {};
@@ -11,9 +12,13 @@ type __VLS_Slots = {} & {
11
12
  default?: (props: typeof __VLS_3) => any;
12
13
  };
13
14
  declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
14
- open: (ev: MouseEvent) => any;
15
+ "update:modelValue": (v: boolean) => any;
16
+ open: (ev?: MouseEvent | undefined) => any;
17
+ close: (ev?: MouseEvent | undefined) => any;
15
18
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
16
- onOpen?: ((ev: MouseEvent) => any) | undefined;
19
+ "onUpdate:modelValue"?: ((v: boolean) => any) | undefined;
20
+ onOpen?: ((ev?: MouseEvent | undefined) => any) | undefined;
21
+ onClose?: ((ev?: MouseEvent | undefined) => any) | undefined;
17
22
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
18
23
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
19
24
  declare const _default: typeof __VLS_export;
@@ -2,6 +2,7 @@ import { type User as FirebaseUser } from 'firebase/auth';
2
2
  import { type UnwrapNestedRefs } from 'vue';
3
3
  import { FirestoreModel } from '../firebase/FirestoreModel';
4
4
  import { _CurrentUser } from './_CurrentUser';
5
+ import { FirebaseFolder } from '../firebase/FirebaseStrorage';
5
6
  type FirestoreModelStatics = Pick<typeof FirestoreModel, 'get' | 'collectionName'>;
6
7
  export type CurrentUserClass<TCurrentUser extends _CurrentUser = _CurrentUser> = {
7
8
  new (data: any): TCurrentUser;
@@ -9,6 +10,8 @@ export type CurrentUserClass<TCurrentUser extends _CurrentUser = _CurrentUser> =
9
10
  declare class AuthClass<TCurrentUser extends _CurrentUser> {
10
11
  user?: TCurrentUser;
11
12
  firebaseUser?: FirebaseUser;
13
+ userFolder?: FirebaseFolder;
14
+ publicUserFolder?: FirebaseFolder;
12
15
  isOnLoginProcess?: boolean;
13
16
  CurrentUserClass: CurrentUserClass<TCurrentUser>;
14
17
  constructor(CurrentUserClass: CurrentUserClass<TCurrentUser>);
@@ -16,9 +19,11 @@ declare class AuthClass<TCurrentUser extends _CurrentUser> {
16
19
  checkAuth(): void;
17
20
  logout(opts?: {
18
21
  showToast?: boolean;
22
+ redirectToHome?: boolean;
19
23
  }): Promise<void>;
20
24
  loginWithGoogle(): Promise<void>;
21
25
  loginWithPassword(email: string, password: string): Promise<void>;
26
+ onLogin(): Promise<void>;
22
27
  register(name: string, surname: string, email: string, password: string): Promise<void>;
23
28
  resetPassword(email: string): Promise<void>;
24
29
  /**
@@ -50,8 +50,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
50
50
  required: false;
51
51
  };
52
52
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
53
- select: (tab: SideTabComponent) => any;
54
53
  "update:modelValue": (value: string) => any;
54
+ select: (tab: SideTabComponent) => any;
55
55
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
56
56
  tabs: {
57
57
  type: PropType<SideTabs>;
@@ -98,8 +98,8 @@ declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPro
98
98
  required: false;
99
99
  };
100
100
  }>> & Readonly<{
101
- onSelect?: ((tab: SideTabComponent) => any) | undefined;
102
101
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
102
+ onSelect?: ((tab: SideTabComponent) => any) | undefined;
103
103
  }>, {
104
104
  modelValue: string;
105
105
  hoverBgOpacity: number;
@@ -57,16 +57,16 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
57
57
  close: typeof close;
58
58
  toggle: typeof toggle;
59
59
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
60
- close: () => any;
61
60
  "update:modelValue": (v: boolean) => any;
61
+ close: () => any;
62
62
  hidden: () => any;
63
63
  show: () => any;
64
64
  hide: () => any;
65
65
  cancel: () => any;
66
66
  shown: () => any;
67
67
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
68
- onClose?: (() => any) | undefined;
69
68
  "onUpdate:modelValue"?: ((v: boolean) => any) | undefined;
69
+ onClose?: (() => any) | undefined;
70
70
  onHidden?: (() => any) | undefined;
71
71
  onShow?: (() => any) | undefined;
72
72
  onHide?: (() => any) | undefined;
@@ -1,3 +1,4 @@
1
- import type { Router, RouterOptions } from 'vue-router';
1
+ import type { RouteLocationRaw, Router, RouterOptions } from 'vue-router';
2
2
  export declare let _router: Router | null;
3
3
  export declare function initRouter(options: RouterOptions): Router;
4
+ export declare function _routeTo(to: RouteLocationRaw): void;
@@ -16,16 +16,38 @@ export interface FileInfo {
16
16
  updated?: string;
17
17
  customMetadata?: Record<string, string> | null;
18
18
  }
19
+ export interface FirebaseFolderOpts {
20
+ storage: FirebaseStorage;
21
+ }
22
+ export type FirebaseImageResizeFit = 'contain' | 'cover';
23
+ export interface FirebaseImageResizeOpts {
24
+ max?: number;
25
+ width?: number;
26
+ height?: number;
27
+ fit?: FirebaseImageResizeFit;
28
+ mimeType?: string;
29
+ quality?: number;
30
+ }
31
+ export interface FirebaseFileAddOpts {
32
+ resize?: FirebaseImageResizeOpts;
33
+ metadata?: UploadMetadata;
34
+ }
19
35
  export declare class FirebaseFolder {
20
36
  /** Istanza di Firebase Storage */
21
37
  private storage;
22
38
  /** Path base della “cartella” (senza trailing slash obbligatorio) */
23
39
  readonly basePath: string;
24
- constructor(storage: FirebaseStorage, basePath: string);
40
+ constructor(basePath: string, opts?: FirebaseFolderOpts);
25
41
  /** Riferimento alla cartella */
26
42
  private folderRef;
27
43
  /** Riferimento a un file nella cartella */
28
44
  private fileRef;
45
+ private static normalizePath;
46
+ private static createAlreadyExistsError;
47
+ private static withContentType;
48
+ private static resizeImageIfNeeded;
49
+ private static computeTargetSize;
50
+ private static loadImageFromBlob;
29
51
  /** Converte i metadati in un FileInfo */
30
52
  private toFileInfo;
31
53
  /**
@@ -33,14 +55,14 @@ export declare class FirebaseFolder {
33
55
  */
34
56
  get(filename: string): Promise<FileInfo | null>;
35
57
  /**
36
- * add: crea un nuovo file (o lo sovrascrive se già presente).
58
+ * add: crea un nuovo file. Se già presente, lancia errore.
37
59
  * Usa uploadBytes per semplicità (se ti serve progress, gestiscilo con uploadBytesResumable nel parent).
38
60
  */
39
- add(filename: string, data: Blob | Uint8Array | ArrayBuffer, metadata?: UploadMetadata): Promise<FileInfo>;
61
+ add(filename: string, data: Blob | Uint8Array | ArrayBuffer, fileOpts?: FirebaseFileAddOpts): Promise<FileInfo>;
40
62
  /**
41
- * update: alias di add (sovrascrive se esiste).
63
+ * update: sovrascrive se esiste, crea se non esiste.
42
64
  */
43
- update(filename: string, data: Blob | Uint8Array | ArrayBuffer, metadata?: UploadMetadata): Promise<FileInfo>;
65
+ update(filename: string, data: Blob | Uint8Array | ArrayBuffer, fileOpts?: FirebaseFileAddOpts): Promise<FileInfo>;
44
66
  /**
45
67
  * remove: elimina un file (non fallisce se già assente).
46
68
  */
@@ -0,0 +1,68 @@
1
+ import { type RuleExpression } from 'vee-validate';
2
+ import { type FieldFileValue } from './File';
3
+ type __VLS_Props = {
4
+ name: string;
5
+ modelValue?: FieldFileValue;
6
+ rules?: RuleExpression<FieldFileValue>;
7
+ label?: string;
8
+ className?: any;
9
+ showList?: boolean;
10
+ showErrors?: boolean;
11
+ showSize?: boolean;
12
+ removable?: boolean;
13
+ multiple?: boolean;
14
+ accept?: string;
15
+ disabled?: boolean;
16
+ required?: boolean;
17
+ capture?: "user" | "environment" | boolean;
18
+ listClass?: any;
19
+ };
20
+ declare function open(): void;
21
+ declare function clear(): void;
22
+ declare var __VLS_1: {
23
+ open: typeof open;
24
+ clear: typeof clear;
25
+ files: File[];
26
+ disabled: boolean;
27
+ dragging: boolean;
28
+ errorMessage: string | undefined;
29
+ meta: import("vee-validate").FieldMeta<FieldFileValue>;
30
+ };
31
+ type __VLS_Slots = {} & {
32
+ dropzone?: (props: typeof __VLS_1) => any;
33
+ };
34
+ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
35
+ open: typeof open;
36
+ clear: typeof clear;
37
+ files: import("vue").ComputedRef<File[]>;
38
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
39
+ "update:modelValue": (v: FieldFileValue) => any;
40
+ open: () => any;
41
+ remove: (file: File, index: number) => any;
42
+ clear: () => any;
43
+ change: (files: File[]) => any;
44
+ }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
45
+ "onUpdate:modelValue"?: ((v: FieldFileValue) => any) | undefined;
46
+ onOpen?: (() => any) | undefined;
47
+ onRemove?: ((file: File, index: number) => any) | undefined;
48
+ onClear?: (() => any) | undefined;
49
+ onChange?: ((files: File[]) => any) | undefined;
50
+ }>, {
51
+ disabled: boolean;
52
+ label: string;
53
+ required: boolean;
54
+ multiple: boolean;
55
+ className: any;
56
+ showList: boolean;
57
+ showErrors: boolean;
58
+ showSize: boolean;
59
+ removable: boolean;
60
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
61
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
62
+ declare const _default: typeof __VLS_export;
63
+ export default _default;
64
+ type __VLS_WithSlots<T, S> = T & {
65
+ new (): {
66
+ $slots: S;
67
+ };
68
+ };
@@ -0,0 +1,5 @@
1
+ export type FieldFileValue = File | File[] | null;
2
+ export declare function toFileArray(value: FieldFileValue): File[];
3
+ export declare function toFileValue(files: File[], multiple: boolean): FieldFileValue;
4
+ export declare function formatFileSize(size?: number): string;
5
+ export declare function getFileExtension(fileOrName: File | string): string;
@@ -11,16 +11,16 @@ type __VLS_Props = {
11
11
  defaultColor?: string;
12
12
  };
13
13
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
14
+ "update:modelValue": (value: ColorTag[]) => any;
14
15
  add: (tag: ColorTag) => any;
15
16
  remove: (tag: ColorTag) => any;
16
- "update:modelValue": (value: ColorTag[]) => any;
17
17
  change: (type: OnChangeColorTag, changedTag: ColorTag, value: ColorTag[]) => any;
18
18
  newSuggestion: (tag: ColorTag) => any;
19
19
  deleteSuggestion: (tag: ColorTag) => any;
20
20
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
21
+ "onUpdate:modelValue"?: ((value: ColorTag[]) => any) | undefined;
21
22
  onAdd?: ((tag: ColorTag) => any) | undefined;
22
23
  onRemove?: ((tag: ColorTag) => any) | undefined;
23
- "onUpdate:modelValue"?: ((value: ColorTag[]) => any) | undefined;
24
24
  onChange?: ((type: OnChangeColorTag, changedTag: ColorTag, value: ColorTag[]) => any) | undefined;
25
25
  onNewSuggestion?: ((tag: ColorTag) => any) | undefined;
26
26
  onDeleteSuggestion?: ((tag: ColorTag) => any) | undefined;
@@ -7,14 +7,14 @@ type __VLS_Props = {
7
7
  maxTags?: number | null;
8
8
  };
9
9
  declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
10
+ "update:modelValue": (value: string[]) => any;
10
11
  add: (tag: string) => any;
11
12
  remove: (tag: string) => any;
12
- "update:modelValue": (value: string[]) => any;
13
13
  change: (value: string[]) => any;
14
14
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
15
+ "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
15
16
  onAdd?: ((tag: string) => any) | undefined;
16
17
  onRemove?: ((tag: string) => any) | undefined;
17
- "onUpdate:modelValue"?: ((value: string[]) => any) | undefined;
18
18
  onChange?: ((value: string[]) => any) | undefined;
19
19
  }>, {
20
20
  placeholder: string;
@@ -1,8 +1,13 @@
1
1
  export declare const loading: {
2
2
  state: boolean;
3
3
  msg: string;
4
+ keys: string[];
5
+ messages: Record<string, string>;
4
6
  defaultMsg: string[];
5
- on: (msg?: string) => void;
6
- off: () => void;
7
+ on: (key: string, msg?: string) => void;
8
+ off: (key: string) => void;
9
+ clear: () => void;
10
+ sync: () => void;
11
+ makeKey: () => string;
7
12
  run: <T>(fn: () => T | Promise<T>, msg?: string) => Promise<T>;
8
13
  };
@@ -48,16 +48,16 @@ declare const __VLS_base: import("vue").DefineComponent<__VLS_Props, {
48
48
  close: typeof close;
49
49
  toggle: typeof toggle;
50
50
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
51
- close: () => any;
52
51
  "update:modelValue": (v: boolean) => any;
52
+ close: () => any;
53
53
  hidden: () => any;
54
54
  show: () => any;
55
55
  hide: () => any;
56
56
  cancel: () => any;
57
57
  shown: () => any;
58
58
  }, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
59
- onClose?: (() => any) | undefined;
60
59
  "onUpdate:modelValue"?: ((v: boolean) => any) | undefined;
60
+ onClose?: (() => any) | undefined;
61
61
  onHidden?: (() => any) | undefined;
62
62
  onShow?: (() => any) | undefined;
63
63
  onHide?: (() => any) | undefined;
@@ -0,0 +1,3 @@
1
+ declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ declare const _default: typeof __VLS_export;
3
+ export default _default;