@nice2dev/ui-mobile 1.0.10

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/style.css ADDED
@@ -0,0 +1 @@
1
+ .nice-ptr{--ptr-primary: #6366f1;--ptr-success: #22c55e;--ptr-error: #ef4444;--ptr-bg: #ffffff;--ptr-text: #374151;--ptr-text-muted: #9ca3af;--ptr-transition: .3s cubic-bezier(.23, 1, .32, 1);position:relative;width:100%;height:100%;overflow:hidden;touch-action:pan-y;-webkit-overflow-scrolling:touch;outline:none}.nice-ptr:focus-visible{outline:2px solid var(--ptr-primary);outline-offset:-2px}.nice-ptr[data-disabled]{pointer-events:none}.nice-ptr-indicator-wrapper{position:absolute;top:0;left:0;right:0;display:flex;align-items:flex-end;justify-content:center;overflow:hidden;transition:opacity var(--ptr-transition);z-index:10}.nice-ptr-content{position:relative;width:100%;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;will-change:transform}.ptr-indicator{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12px;transition:all var(--ptr-transition)}.ptr-indicator-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--ptr-bg);box-shadow:0 2px 8px #0000001a;color:var(--ptr-primary);transition:all var(--ptr-transition)}.ptr-indicator--ready .ptr-indicator-icon{background:var(--ptr-primary);color:#fff}.ptr-indicator--success .ptr-indicator-icon{background:var(--ptr-success);color:#fff}.ptr-indicator--error .ptr-indicator-icon{background:var(--ptr-error);color:#fff}.ptr-indicator-text{font-size:12px;font-weight:500;color:var(--ptr-text-muted)}.ptr-indicator--success .ptr-indicator-text{color:var(--ptr-success)}.ptr-indicator--error .ptr-indicator-text{color:var(--ptr-error)}.ptr-icon{width:20px;height:20px;transition:transform var(--ptr-transition)}.ptr-icon-arrow{transition:transform .2s ease}.ptr-icon-ready{animation:ptr-ready-pulse .5s ease}@keyframes ptr-ready-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.ptr-icon-spinner{animation:ptr-spin 1s linear infinite}@keyframes ptr-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ptr-icon-success{animation:ptr-success-scale .3s ease}@keyframes ptr-success-scale{0%{transform:scale(0);opacity:0}50%{transform:scale(1.3)}to{transform:scale(1);opacity:1}}.ptr-icon-error{animation:ptr-error-shake .3s ease}@keyframes ptr-error-shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.ptr-progress-ring{position:absolute}.ptr-progress-bg{stroke:#e5e7eb}.ptr-progress-fill{stroke:var(--ptr-primary);transition:stroke-dasharray .1s ease}.ptr-dots{display:flex;align-items:center;justify-content:center;gap:8px;padding:16px}.ptr-dot{width:10px;height:10px;border-radius:50%;background:var(--ptr-primary);transition:all var(--ptr-transition)}.ptr-dots--refreshing .ptr-dot{animation:ptr-dots-bounce .6s ease infinite}.ptr-dots--refreshing .ptr-dot:nth-child(2){animation-delay:.2s}.ptr-dots--refreshing .ptr-dot:nth-child(3){animation-delay:.4s}@keyframes ptr-dots-bounce{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(1.4);opacity:1}}.ptr-dots--success .ptr-dot{background:var(--ptr-success)}.ptr-dots--error .ptr-dot{background:var(--ptr-error)}.ptr-line{width:100%;height:3px;background:#e5e7eb;overflow:hidden}.ptr-line-fill{height:100%;background:var(--ptr-primary);transition:width .1s ease}.ptr-line--refreshing .ptr-line-fill{width:100%!important;animation:ptr-line-shimmer 1.5s ease infinite;background:linear-gradient(90deg,var(--ptr-primary) 0%,#a5b4fc 50%,var(--ptr-primary) 100%);background-size:200% 100%}@keyframes ptr-line-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.ptr-line--success .ptr-line-fill{background:var(--ptr-success)}.ptr-line--error .ptr-line-fill{background:var(--ptr-error)}.ptr-emoji{padding:16px;text-align:center}.ptr-emoji-icon{font-size:32px;display:inline-block;transition:transform var(--ptr-transition)}.ptr-emoji--refreshing .ptr-emoji-icon{animation:ptr-emoji-spin 1s linear infinite}@keyframes ptr-emoji-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ptr-emoji--success .ptr-emoji-icon,.ptr-emoji--error .ptr-emoji-icon{animation:ptr-emoji-pop .3s ease}@keyframes ptr-emoji-pop{0%{transform:scale(0)}50%{transform:scale(1.3)}to{transform:scale(1)}}.ptr-ios{display:flex;align-items:center;justify-content:center;padding:16px}.ptr-ios-spinner{position:relative;width:24px;height:24px}.ptr-ios-bar{position:absolute;top:50%;left:50%;width:2px;height:6px;background:#8e8e93;border-radius:1px;transform-origin:center center}.ptr-ios--refreshing .ptr-ios-bar{animation:ptr-ios-fade 1s linear infinite}@keyframes ptr-ios-fade{0%,to{opacity:.2}50%{opacity:1}}.ptr-ios--refreshing .ptr-ios-bar:nth-child(1){animation-delay:0s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(2){animation-delay:83ms}.ptr-ios--refreshing .ptr-ios-bar:nth-child(3){animation-delay:.166s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(4){animation-delay:.25s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(5){animation-delay:.333s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(6){animation-delay:.416s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(7){animation-delay:.5s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(8){animation-delay:.583s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(9){animation-delay:.666s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(10){animation-delay:.75s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(11){animation-delay:.833s}.ptr-ios--refreshing .ptr-ios-bar:nth-child(12){animation-delay:.916s}.ptr-material{display:flex;align-items:center;justify-content:center;padding:16px;position:relative}.ptr-material-circle{transition:transform var(--ptr-transition)}.ptr-material--refreshing .ptr-material-circle{animation:ptr-material-rotate 2s linear infinite}@keyframes ptr-material-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.ptr-material-bg{stroke:#e5e7eb}.ptr-material-progress{stroke:var(--ptr-primary);transition:stroke-dasharray .1s ease}.ptr-material--refreshing .ptr-material-progress{animation:ptr-material-dash 1.5s ease-in-out infinite}@keyframes ptr-material-dash{0%{stroke-dasharray:1,100;stroke-dashoffset:0}50%{stroke-dasharray:90,100;stroke-dashoffset:-35}to{stroke-dasharray:90,100;stroke-dashoffset:-124}}.ptr-material--success .ptr-material-progress{stroke:var(--ptr-success)}.ptr-material--error .ptr-material-progress{stroke:var(--ptr-error)}.ptr-material-icon{position:absolute;font-size:14px;font-weight:700;animation:ptr-material-icon-pop .3s ease}@keyframes ptr-material-icon-pop{0%{transform:scale(0)}to{transform:scale(1)}}.ptr-material--success .ptr-material-icon{color:var(--ptr-success)}.ptr-material--error .ptr-material-icon{color:var(--ptr-error)}@media (prefers-color-scheme: dark){.nice-ptr{--ptr-bg: #1f2937;--ptr-text: #f9fafb;--ptr-text-muted: #9ca3af}.ptr-indicator-icon{box-shadow:0 2px 8px #0000004d}.ptr-progress-bg,.ptr-material-bg,.ptr-line{stroke:#374151;background:#374151}.ptr-ios-bar{background:#9ca3af}}@media (prefers-reduced-motion: reduce){.nice-ptr,.nice-ptr *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.nice-swipe-container{position:relative;overflow:hidden;width:100%;touch-action:pan-y;outline:none}.nice-swipe-container:focus-visible{outline:2px solid #6366f1;outline-offset:-2px}.nice-swipe-container[data-disabled]{pointer-events:none;opacity:.6}.nice-swipe-content{position:relative;background:#fff;z-index:1;will-change:transform}@media (prefers-color-scheme: dark){.nice-swipe-content{background:#1f2937}}.nice-swipe-actions{position:absolute;top:0;bottom:0;display:flex;align-items:stretch}.nice-swipe-actions--left{left:0;transform:translate(-100%)}.nice-swipe-actions--right{right:0;transform:translate(100%)}.nice-swipe-container--open-left .nice-swipe-actions--right,.nice-swipe-container--open-right .nice-swipe-actions--left{z-index:0}.nice-swipe-action{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px;border:none;cursor:pointer;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .25s ease,background .15s ease;transform-origin:center}.nice-swipe-action:hover{filter:brightness(1.1)}.nice-swipe-action:active{filter:brightness(.9)}.nice-swipe-action--destructive{font-weight:600}.nice-swipe-action-icon{display:flex;align-items:center;justify-content:center;font-size:24px}.nice-swipe-action-icon svg{width:24px;height:24px}.nice-swipe-action-label{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.nice-swipe-list{display:flex;flex-direction:column}.nice-swipe-list>.nice-swipe-container{border-bottom:1px solid #e5e7eb}.nice-swipe-list>.nice-swipe-container:last-child{border-bottom:none}@media (prefers-color-scheme: dark){.nice-swipe-list>.nice-swipe-container{border-bottom-color:#374151}}@keyframes swipe-action-pop{0%{transform:scale(0);opacity:0}50%{transform:scale(1.1)}to{transform:scale(1);opacity:1}}.nice-swipe-container--open-left .nice-swipe-action--left,.nice-swipe-container--open-right .nice-swipe-action--right{animation:swipe-action-pop .3s ease forwards}.nice-swipe-action[data-action=delete]{background:#ef4444}.nice-swipe-action[data-action=edit]{background:#3b82f6}.nice-swipe-action[data-action=archive]{background:#6b7280}.nice-swipe-action[data-action=star]{background:#eab308}.nice-swipe-action[data-action=share]{background:#22c55e}.nice-swipe-action[data-action=pin]{background:#8b5cf6}.nice-swipe-action[data-action=mute]{background:#64748b}.nice-swipe-action[data-action=reply]{background:#0ea5e9}@media (prefers-reduced-motion: reduce){.nice-swipe-action,.nice-swipe-content{transition:none!important;animation:none!important}}@media (forced-colors: active){.nice-swipe-action{border:2px solid ButtonText}.nice-swipe-action:focus{outline:3px solid Highlight}}.nice-bottom-sheet-container{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}.nice-bottom-sheet-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#000;transition:opacity .3s ease;pointer-events:auto}.nice-bottom-sheet{position:absolute;bottom:0;left:0;right:0;background-color:var(--nice-surface, #ffffff);box-shadow:0 -4px 20px #00000026;display:flex;flex-direction:column;overflow:hidden;pointer-events:auto;touch-action:none;will-change:height}.nice-bottom-sheet--dragging{-webkit-user-select:none;user-select:none}.nice-bottom-sheet-handle{flex-shrink:0;display:flex;justify-content:center;align-items:center;padding:12px 0 8px;cursor:grab;touch-action:none}.nice-bottom-sheet-handle:active{cursor:grabbing}.nice-bottom-sheet-handle-bar{width:40px;height:5px;border-radius:2.5px;background-color:var(--nice-border, #d1d5db);transition:background-color .2s ease}.nice-bottom-sheet-handle:hover .nice-bottom-sheet-handle-bar{background-color:var(--nice-border-hover, #9ca3af)}.nice-bottom-sheet-header{flex-shrink:0;padding:0 16px 12px;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-bottom-sheet-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:16px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.nice-bottom-sheet-footer{flex-shrink:0;padding:12px 16px;border-top:1px solid var(--nice-border, #e5e7eb);background-color:var(--nice-surface, #ffffff)}@media (prefers-color-scheme: dark){.nice-bottom-sheet{background-color:var(--nice-surface-dark, #1f2937)}.nice-bottom-sheet-backdrop{background-color:#000}.nice-bottom-sheet-handle-bar{background-color:var(--nice-border-dark, #4b5563)}.nice-bottom-sheet-handle:hover .nice-bottom-sheet-handle-bar{background-color:var(--nice-border-hover-dark, #6b7280)}.nice-bottom-sheet-header,.nice-bottom-sheet-footer{border-color:var(--nice-border-dark, #374151)}.nice-bottom-sheet-footer{background-color:var(--nice-surface-dark, #1f2937)}}@keyframes nice-bottom-sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes nice-bottom-sheet-out{0%{transform:translateY(0)}to{transform:translateY(100%)}}@supports (padding-bottom: env(safe-area-inset-bottom)){.nice-bottom-sheet{padding-bottom:env(safe-area-inset-bottom)}}@media (prefers-reduced-motion: reduce){.nice-bottom-sheet,.nice-bottom-sheet-backdrop{transition:none!important}}@media (min-width: 768px){.nice-bottom-sheet{max-width:640px;left:50%;transform:translate(-50%);border-top-left-radius:16px;border-top-right-radius:16px}}.nice-image-gallery{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background-color:#000000f2;user-select:none;-webkit-user-select:none;touch-action:none}.nice-image-gallery-header{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:linear-gradient(to bottom,rgba(0,0,0,.7),transparent);z-index:10}.nice-image-gallery-counter{color:#fff;font-size:14px;font-weight:500;text-shadow:0 1px 2px rgba(0,0,0,.5)}.nice-image-gallery-actions{display:flex;gap:8px}.nice-image-gallery-btn{width:40px;height:40px;border:none;border-radius:50%;background-color:#ffffff26;color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease}.nice-image-gallery-btn:hover{background-color:#ffffff40}.nice-image-gallery-btn:disabled{opacity:.3;cursor:not-allowed}.nice-image-gallery-close{font-size:28px}.nice-image-gallery-viewport{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.nice-image-gallery-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border:none;border-radius:50%;background-color:#ffffff26;color:#fff;font-size:32px;cursor:pointer;z-index:10;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease,opacity .2s ease;opacity:.7}.nice-image-gallery-nav:hover{background-color:#ffffff4d;opacity:1}.nice-image-gallery-nav:disabled{opacity:0;pointer-events:none}.nice-image-gallery-nav--prev{left:16px}.nice-image-gallery-nav--next{right:16px}@media (hover: none) and (pointer: coarse){.nice-image-gallery-nav{display:none}}.nice-image-gallery-image-container{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center}.nice-image-gallery-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center}.nice-image-gallery-image{max-width:100%;max-height:100%;object-fit:contain;touch-action:none;will-change:transform}.nice-image-gallery-image--animating{transition:transform .3s cubic-bezier(.4,0,.2,1)}.nice-image-gallery-caption{flex-shrink:0;padding:12px 16px;background:linear-gradient(to top,rgba(0,0,0,.7),transparent);color:#fff;text-align:center}.nice-image-gallery-caption h3{margin:0;font-size:16px;font-weight:600}.nice-image-gallery-caption p{margin:4px 0 0;font-size:14px;opacity:.8}.nice-image-gallery-thumbnails{flex-shrink:0;display:flex;gap:8px;padding:12px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;background-color:#00000080}.nice-image-gallery-thumbnails::-webkit-scrollbar{display:none}.nice-image-gallery-thumb{flex-shrink:0;width:60px;height:60px;padding:0;border:2px solid transparent;border-radius:4px;background:transparent;cursor:pointer;overflow:hidden;transition:border-color .2s ease,opacity .2s ease;opacity:.6}.nice-image-gallery-thumb:hover{opacity:.9}.nice-image-gallery-thumb--active{border-color:#fff;opacity:1}.nice-image-gallery-thumb img{width:100%;height:100%;object-fit:cover}.nice-image-gallery-dots{flex-shrink:0;display:flex;justify-content:center;gap:8px;padding:16px}.nice-image-gallery-dot{width:8px;height:8px;padding:0;border:none;border-radius:50%;background-color:#fff6;cursor:pointer;transition:background-color .2s ease,transform .2s ease}.nice-image-gallery-dot:hover{background-color:#fff9}.nice-image-gallery-dot--active{background-color:#fff;transform:scale(1.25)}@supports (padding-top: env(safe-area-inset-top)){.nice-image-gallery-header{padding-top:calc(12px + env(safe-area-inset-top))}.nice-image-gallery-thumbnails,.nice-image-gallery-dots{padding-bottom:calc(12px + env(safe-area-inset-bottom))}}@media (prefers-reduced-motion: reduce){.nice-image-gallery-image,.nice-image-gallery-image--animating,.nice-image-gallery-btn,.nice-image-gallery-nav,.nice-image-gallery-thumb,.nice-image-gallery-dot{transition:none!important}}@keyframes nice-gallery-spin{to{transform:rotate(360deg)}}.nice-image-gallery-loading{width:40px;height:40px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:nice-gallery-spin .8s linear infinite}.nice-infinite-container{--infinite-primary: #6366f1;--infinite-text: #374151;--infinite-text-muted: #9ca3af;--infinite-bg: #ffffff;--infinite-border: #e5e7eb;--infinite-error: #ef4444;position:relative;width:100%;height:100%;overflow:auto;-webkit-overflow-scrolling:touch;outline:none}.nice-infinite-container:focus-visible{outline:2px solid var(--infinite-primary);outline-offset:-2px}.nice-infinite-container--vertical{overflow-y:auto;overflow-x:hidden}.nice-infinite-container--horizontal{overflow-x:auto;overflow-y:hidden;display:flex;flex-direction:row}.nice-infinite-container--horizontal .nice-infinite-items{display:flex;flex-direction:row}.nice-infinite-container--reverse .nice-infinite-items{display:flex;flex-direction:column-reverse}.nice-infinite-container--empty{display:flex;align-items:center;justify-content:center}.nice-infinite-items{display:flex;flex-direction:column}.nice-infinite-item{flex-shrink:0}.nice-infinite-header,.nice-infinite-footer{position:sticky;z-index:10;background:var(--infinite-bg)}.nice-infinite-header{top:0;border-bottom:1px solid var(--infinite-border)}.nice-infinite-footer{bottom:0;border-top:1px solid var(--infinite-border)}.nice-infinite-sentinel{height:1px;width:100%;pointer-events:none}.nice-infinite-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;color:var(--infinite-text-muted)}.nice-infinite-spinner{animation:infinite-spin 1s linear infinite}.nice-infinite-spinner-track{stroke:var(--infinite-border)}.nice-infinite-spinner-fill{stroke:var(--infinite-primary);stroke-dasharray:60;stroke-dashoffset:0;animation:infinite-dash 1.5s ease-in-out infinite}@keyframes infinite-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes infinite-dash{0%{stroke-dasharray:1,63;stroke-dashoffset:0}50%{stroke-dasharray:45,63;stroke-dashoffset:-15}to{stroke-dasharray:45,63;stroke-dashoffset:-60}}.nice-infinite-loading-text{font-size:13px;font-weight:500}.nice-infinite-end{display:flex;align-items:center;justify-content:center;gap:16px;padding:24px;color:var(--infinite-text-muted)}.nice-infinite-end-line{flex:1;max-width:100px;height:1px;background:var(--infinite-border)}.nice-infinite-end-text{font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.nice-infinite-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;color:var(--infinite-error)}.nice-infinite-error-icon{width:32px;height:32px}.nice-infinite-error-text{font-size:14px;text-align:center}.nice-infinite-error-retry{padding:8px 20px;border:none;border-radius:6px;background:var(--infinite-error);color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:background .2s ease}.nice-infinite-error-retry:hover{background:#dc2626}.nice-infinite-error-retry:focus-visible{outline:2px solid var(--infinite-error);outline-offset:2px}.nice-infinite-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:48px 24px;color:var(--infinite-text-muted);text-align:center}.nice-infinite-empty-icon{opacity:.5}.nice-infinite-empty-text{margin:0;font-size:15px}.nice-infinite-pull{padding:16px;text-align:center}.nice-infinite-scroll-top{position:fixed;bottom:24px;right:24px;width:48px;height:48px;display:flex;align-items:center;justify-content:center;border:none;border-radius:50%;background:var(--infinite-primary);color:#fff;box-shadow:0 4px 12px #6366f14d;cursor:pointer;opacity:0;transform:scale(.8) translateY(10px);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:100}.nice-infinite-scroll-top--visible{opacity:1;transform:scale(1) translateY(0)}.nice-infinite-scroll-top:hover{background:#4f46e5;transform:scale(1.05) translateY(0)}.nice-infinite-scroll-top:active{transform:scale(.95) translateY(0)}.nice-infinite-scroll-top:focus-visible{outline:2px solid var(--infinite-primary);outline-offset:2px}@media (prefers-color-scheme: dark){.nice-infinite-container{--infinite-text: #f9fafb;--infinite-text-muted: #9ca3af;--infinite-bg: #1f2937;--infinite-border: #374151}.nice-infinite-scroll-top{box-shadow:0 4px 12px #0006}}@media (prefers-reduced-motion: reduce){.nice-infinite-spinner,.nice-infinite-scroll-top{animation:none!important;transition:opacity .01ms!important}.nice-infinite-spinner-fill{animation:none;stroke-dasharray:45,63}}@media (forced-colors: active){.nice-infinite-error-retry,.nice-infinite-scroll-top{border:2px solid ButtonText}}.nice-drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;-webkit-tap-highlight-color:transparent}.nice-drawer-overlay--visible{opacity:1;visibility:visible}.nice-drawer{--drawer-bg: #ffffff;--drawer-text: #1f2937;--drawer-text-muted: #6b7280;--drawer-border: #e5e7eb;--drawer-primary: #6366f1;--drawer-hover: #f3f4f6;--drawer-active: #e0e7ff;--drawer-shadow: 0 25px 50px -12px rgba(0, 0, 0, .25);position:fixed;display:flex;flex-direction:column;background:var(--drawer-bg);box-shadow:var(--drawer-shadow);will-change:transform;transition:transform .3s cubic-bezier(.4,0,.2,1);overflow:hidden}.nice-drawer--dragging{transition:none}.nice-drawer--left{top:0;left:0;bottom:0;border-right:1px solid var(--drawer-border)}.nice-drawer--right{top:0;right:0;bottom:0;border-left:1px solid var(--drawer-border)}.nice-drawer--top{top:0;left:0;right:0;border-bottom:1px solid var(--drawer-border)}.nice-drawer--bottom{bottom:0;left:0;right:0;border-top:1px solid var(--drawer-border);border-radius:16px 16px 0 0}.nice-drawer--persistent{box-shadow:none}.nice-drawer--persistent.nice-drawer--left,.nice-drawer--persistent.nice-drawer--right{position:relative}.nice-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--drawer-border);flex-shrink:0}.nice-drawer-close{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:8px;background:transparent;color:var(--drawer-text-muted);cursor:pointer;transition:all .2s ease}.nice-drawer-close:hover{background:var(--drawer-hover);color:var(--drawer-text)}.nice-drawer-close:focus-visible{outline:2px solid var(--drawer-primary);outline-offset:2px}.nice-drawer-content{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.nice-drawer-footer{padding:16px;border-top:1px solid var(--drawer-border);flex-shrink:0}.nice-drawer-nav{padding:8px 0}.nice-drawer-nav-item-wrapper{width:100%}.nice-drawer-nav-item{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;border:none;background:transparent;color:var(--drawer-text);font-size:14px;font-weight:500;text-align:left;cursor:pointer;transition:all .15s ease}.nice-drawer-nav-item:hover{background:var(--drawer-hover)}.nice-drawer-nav-item:focus-visible{outline:none;background:var(--drawer-hover);box-shadow:inset 3px 0 0 var(--drawer-primary)}.nice-drawer-nav-item--active{background:var(--drawer-active);color:var(--drawer-primary);box-shadow:inset 3px 0 0 var(--drawer-primary)}.nice-drawer-nav-item--active:hover{background:var(--drawer-active)}.nice-drawer-nav-item--disabled{opacity:.5;cursor:not-allowed}.nice-drawer-nav-item--disabled:hover{background:transparent}.nice-drawer-nav-item--depth-1{font-size:13px}.nice-drawer-nav-item--depth-2{font-size:12px}.nice-drawer-nav-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;color:var(--drawer-text-muted)}.nice-drawer-nav-item--active .nice-drawer-nav-icon{color:var(--drawer-primary)}.nice-drawer-nav-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nice-drawer-nav-badge{padding:2px 8px;background:var(--drawer-primary);color:#fff;border-radius:10px;font-size:11px;font-weight:600;flex-shrink:0}.nice-drawer-nav-chevron{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:var(--drawer-text-muted);transition:transform .2s ease}.nice-drawer-nav-chevron--expanded{transform:rotate(180deg)}.nice-drawer-nav-children{background:#00000005}.nice-drawer-divider{height:1px;margin:8px 16px;background:var(--drawer-border)}.nice-drawer-section{padding:16px 16px 8px}.nice-drawer-section-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--drawer-text-muted)}@media (prefers-color-scheme: dark){.nice-drawer{--drawer-bg: #1f2937;--drawer-text: #f9fafb;--drawer-text-muted: #9ca3af;--drawer-border: #374151;--drawer-hover: #374151;--drawer-active: rgba(99, 102, 241, .2)}.nice-drawer-overlay{background:#000000b3}.nice-drawer-nav-children{background:#0003}}@media (prefers-reduced-motion: reduce){.nice-drawer,.nice-drawer-overlay,.nice-drawer-nav-item,.nice-drawer-nav-chevron,.nice-drawer-close{transition:none!important}}@media (forced-colors: active){.nice-drawer{border:2px solid ButtonText}.nice-drawer-nav-item:focus-visible,.nice-drawer-nav-item--active{outline:2px solid Highlight}}@supports (padding-bottom: env(safe-area-inset-bottom)){.nice-drawer--left,.nice-drawer--right{padding-bottom:env(safe-area-inset-bottom)}.nice-drawer--bottom{padding-bottom:calc(16px + env(safe-area-inset-bottom))}}.nice-mobile-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease;z-index:999;-webkit-tap-highlight-color:transparent}.nice-mobile-modal-overlay--visible{opacity:1;visibility:visible}.nice-modal-sheet{--modal-bg: #ffffff;--modal-text: #1f2937;--modal-text-muted: #6b7280;--modal-border: #e5e7eb;--modal-primary: #6366f1;--modal-primary-hover: #4f46e5;--modal-danger: #ef4444;--modal-danger-hover: #dc2626;--modal-hover: #f3f4f6;--modal-shadow: 0 -10px 40px -10px rgba(0, 0, 0, .2);position:fixed;bottom:0;left:0;right:0;display:flex;flex-direction:column;background:var(--modal-bg);box-shadow:var(--modal-shadow);z-index:1000;max-height:calc(100vh - env(safe-area-inset-top,20px));transition:height .3s cubic-bezier(.4,0,.2,1);will-change:height}.nice-modal-sheet--dragging{transition:none}.nice-modal-handle-area{display:flex;align-items:center;justify-content:center;padding:12px 0;cursor:grab;flex-shrink:0;touch-action:none}.nice-modal-handle-area:active{cursor:grabbing}.nice-modal-handle{width:36px;height:5px;background:var(--modal-border);border-radius:3px;transition:background .2s ease}.nice-modal-handle-area:hover .nice-modal-handle,.nice-modal-sheet--dragging .nice-modal-handle{background:var(--modal-text-muted)}.nice-modal-header{display:flex;align-items:center;justify-content:space-between;padding:0 16px 16px;flex-shrink:0}.nice-modal-title{margin:0;font-size:18px;font-weight:600;color:var(--modal-text)}.nice-modal-close{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:50%;background:var(--modal-hover);color:var(--modal-text-muted);cursor:pointer;transition:all .2s ease;margin-left:auto}.nice-modal-close:hover{background:var(--modal-border);color:var(--modal-text)}.nice-modal-close:focus-visible{outline:2px solid var(--modal-primary);outline-offset:2px}.nice-modal-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:0 16px 16px;-webkit-overflow-scrolling:touch}.nice-modal-footer{padding:16px;border-top:1px solid var(--modal-border);flex-shrink:0;background:var(--modal-bg)}.nice-action-sheet{display:flex;flex-direction:column;gap:1px;padding:0 8px 8px}.nice-action-sheet-item{display:flex;align-items:center;gap:12px;width:100%;padding:16px;border:none;border-radius:12px;background:transparent;color:var(--modal-text);font-size:16px;font-weight:500;text-align:left;cursor:pointer;transition:background .15s ease}.nice-action-sheet-item:hover{background:var(--modal-hover)}.nice-action-sheet-item:focus-visible{outline:none;background:var(--modal-hover);box-shadow:inset 0 0 0 2px var(--modal-primary)}.nice-action-sheet-item:disabled{opacity:.4;cursor:not-allowed}.nice-action-sheet-item:disabled:hover{background:transparent}.nice-action-sheet-item--destructive{color:var(--modal-danger)}.nice-action-sheet-item--cancel{font-weight:600;margin-top:8px;background:var(--modal-hover)}.nice-action-sheet-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0}.nice-action-sheet-divider{height:1px;margin:8px 0;background:var(--modal-border)}.nice-confirm-sheet-message{font-size:15px;color:var(--modal-text-muted);line-height:1.5}.nice-confirm-sheet-buttons{display:flex;gap:12px}.nice-confirm-sheet-btn{flex:1;padding:14px 20px;border:none;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s ease}.nice-confirm-sheet-btn--cancel{background:var(--modal-hover);color:var(--modal-text)}.nice-confirm-sheet-btn--cancel:hover{background:var(--modal-border)}.nice-confirm-sheet-btn--confirm{background:var(--modal-primary);color:#fff}.nice-confirm-sheet-btn--confirm:hover{background:var(--modal-primary-hover)}.nice-confirm-sheet-btn--destructive{background:var(--modal-danger)}.nice-confirm-sheet-btn--destructive:hover{background:var(--modal-danger-hover)}.nice-confirm-sheet-btn:focus-visible{outline:2px solid var(--modal-primary);outline-offset:2px}@media (prefers-color-scheme: dark){.nice-modal-sheet{--modal-bg: #1f2937;--modal-text: #f9fafb;--modal-text-muted: #9ca3af;--modal-border: #374151;--modal-hover: #374151}.nice-mobile-modal-overlay{background:#000000b3}.nice-action-sheet-item--cancel{background:var(--modal-border)}}@media (prefers-reduced-motion: reduce){.nice-modal-sheet,.nice-mobile-modal-overlay,.nice-modal-close,.nice-modal-handle,.nice-action-sheet-item,.nice-confirm-sheet-btn{transition:none!important}}@media (forced-colors: active){.nice-modal-sheet{border:2px solid ButtonText}.nice-action-sheet-item:focus-visible,.nice-confirm-sheet-btn:focus-visible,.nice-modal-close:focus-visible{outline:2px solid Highlight}}@supports (padding-bottom: env(safe-area-inset-bottom)){.nice-modal-footer{padding-bottom:calc(16px + env(safe-area-inset-bottom))}.nice-action-sheet{padding-bottom:calc(8px + env(safe-area-inset-bottom))}.nice-modal-content:last-child{padding-bottom:calc(16px + env(safe-area-inset-bottom))}}.nice-mobile-tabs{--tabs-bg: #ffffff;--tabs-text: #6b7280;--tabs-text-active: #6366f1;--tabs-border: #e5e7eb;--tabs-badge-bg: #ef4444;--tabs-badge-text: #ffffff;--tabs-shadow: 0 -2px 10px rgba(0, 0, 0, .05);display:flex;align-items:stretch;justify-content:space-around;background:var(--tabs-bg);box-shadow:var(--tabs-shadow);transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:50}.nice-mobile-tabs--hidden{transform:translateY(100%)}.nice-mobile-tabs--bottom{position:fixed;bottom:0;left:0;right:0;border-top:1px solid var(--tabs-border)}.nice-mobile-tabs--top{position:fixed;top:0;left:0;right:0;border-bottom:1px solid var(--tabs-border)}.nice-mobile-tabs--top.nice-mobile-tabs--hidden{transform:translateY(-100%)}@supports (padding-bottom: env(safe-area-inset-bottom)){.nice-mobile-tabs--bottom.nice-mobile-tabs--safe-area{padding-bottom:env(safe-area-inset-bottom)}.nice-mobile-tabs--top.nice-mobile-tabs--safe-area{padding-top:env(safe-area-inset-top)}}.nice-mobile-tabs--default{min-height:56px}.nice-mobile-tabs--minimal{min-height:48px;box-shadow:none}.nice-mobile-tabs--floating{position:fixed;bottom:16px;left:16px;right:16px;min-height:64px;border:none;border-radius:20px;box-shadow:0 4px 20px #00000026}@supports (padding-bottom: env(safe-area-inset-bottom)){.nice-mobile-tabs--floating.nice-mobile-tabs--safe-area{bottom:calc(16px + env(safe-area-inset-bottom));padding-bottom:0}}.nice-mobile-tabs--shifted{min-height:56px}.nice-mobile-tabs--shifted .nice-tab-button:nth-child(3){margin-top:-16px;background:var(--tabs-text-active);color:#fff;border-radius:50%;width:56px;height:56px;padding:0;box-shadow:0 4px 12px #6366f166}.nice-mobile-tabs--shifted .nice-tab-button:nth-child(3) .nice-tab-label{display:none}.nice-mobile-tabs--shifted .nice-tab-button:nth-child(3).nice-tab-button--active{background:var(--tabs-text-active)}.nice-tab-button{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-width:64px;max-width:168px;padding:8px 12px;border:none;background:transparent;color:var(--tabs-text);text-decoration:none;cursor:pointer;transition:color .2s ease;position:relative;-webkit-tap-highlight-color:transparent}.nice-tab-button:focus-visible{outline:none;background:#6366f11a}.nice-tab-button--active{color:var(--tabs-text-active)}.nice-tab-button--disabled{opacity:.4;cursor:not-allowed}.nice-tab-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;transition:transform .2s cubic-bezier(.4,0,.2,1)}.nice-tab-button--active .nice-tab-icon{transform:scale(1)}.nice-tab-label{margin-top:2px;font-size:10px;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.nice-tab-button--active .nice-tab-label{font-weight:600}.nice-tab-badge{position:absolute;top:4px;right:calc(50% - 20px);background:var(--tabs-badge-bg);color:var(--tabs-badge-text);border-radius:10px;animation:nice-badge-pop .3s ease}.nice-tab-badge--dot{width:8px;height:8px;right:calc(50% - 14px)}.nice-tab-badge--count{min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:600;line-height:16px;text-align:center}@keyframes nice-badge-pop{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}@media (prefers-color-scheme: dark){.nice-mobile-tabs{--tabs-bg: #1f2937;--tabs-text: #9ca3af;--tabs-text-active: #818cf8;--tabs-border: #374151;--tabs-shadow: 0 -2px 10px rgba(0, 0, 0, .3)}.nice-mobile-tabs--shifted .nice-tab-button:nth-child(3){box-shadow:0 4px 12px #6366f14d}}@media (prefers-reduced-motion: reduce){.nice-mobile-tabs,.nice-tab-button,.nice-tab-icon,.nice-tab-badge{transition:none!important;animation:none!important}}@media (forced-colors: active){.nice-mobile-tabs{border:2px solid ButtonText}.nice-tab-button--active{outline:2px solid Highlight}.nice-tab-button:focus-visible{outline:2px solid Highlight}}@media (orientation: landscape) and (max-height: 500px){.nice-mobile-tabs--default,.nice-mobile-tabs--minimal{min-height:48px}.nice-tab-button{flex-direction:row;gap:8px;padding:8px 16px}.nice-tab-label{margin-top:0;font-size:12px}.nice-tab-badge{position:relative;top:auto;right:auto;margin-left:4px}.nice-tab-badge--dot{width:6px;height:6px}}@media (max-width: 320px){.nice-tab-button{min-width:48px;padding:6px 4px}.nice-tab-label{font-size:9px}}.nice-mobile-header{--header-bg: #ffffff;--header-text: #1f2937;--header-text-muted: #6b7280;--header-border: #e5e7eb;--header-primary: #6366f1;--header-shadow: 0 2px 8px rgba(0, 0, 0, .1);position:relative;display:flex;flex-direction:column;background:var(--header-bg);color:var(--header-text);overflow:hidden;will-change:height;transition:transform .3s cubic-bezier(.4,0,.2,1)}.nice-mobile-header--sticky{position:fixed;top:0;left:0;right:0}.nice-mobile-header--hidden{transform:translateY(-100%)}.nice-mobile-header--shadow{box-shadow:var(--header-shadow)}.nice-mobile-header--border{border-bottom:1px solid var(--header-border)}@supports (padding-top: env(safe-area-inset-top)){.nice-mobile-header--safe-area{padding-top:env(safe-area-inset-top)}}.nice-header-spacer{flex-shrink:0}.nice-mobile-header--default{background:var(--header-bg)}.nice-mobile-header--transparent{background:transparent}.nice-mobile-header--blur{background:#fffc;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.nice-mobile-header--solid{background:var(--header-primary);color:#fff}.nice-mobile-header--solid .nice-header-action{color:#fff}.nice-header-background{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;will-change:transform,opacity}.nice-header-background>*{width:100%;height:100%;object-fit:cover}.nice-header-toolbar{display:flex;align-items:center;padding:0 4px;flex-shrink:0;position:relative;z-index:2}.nice-header-left,.nice-header-right{display:flex;align-items:center;gap:4px;flex-shrink:0}.nice-header-left{min-width:48px}.nice-header-right{min-width:48px;justify-content:flex-end}.nice-header-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;padding:0 8px;text-align:center;will-change:opacity}.nice-header-title{font-size:17px;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.nice-header-subtitle{font-size:12px;color:var(--header-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.nice-mobile-header--solid .nice-header-subtitle{color:#fffc}.nice-header-action{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border:none;border-radius:22px;background:transparent;color:inherit;cursor:pointer;transition:background .15s ease;position:relative;-webkit-tap-highlight-color:transparent}.nice-header-action:hover{background:#0000000d}.nice-mobile-header--solid .nice-header-action:hover{background:#ffffff1a}.nice-header-action:focus-visible{outline:none;background:#6366f11a}.nice-header-action--disabled{opacity:.4;cursor:not-allowed}.nice-header-action--disabled:hover{background:transparent}.nice-header-badge{position:absolute;top:8px;right:8px;min-width:16px;height:16px;padding:0 4px;background:#ef4444;color:#fff;border-radius:8px;font-size:10px;font-weight:600;line-height:16px;text-align:center}.nice-header-badge--dot{width:8px;height:8px;min-width:8px;padding:0;top:10px;right:10px}.nice-header-expanded{flex:1;display:flex;flex-direction:column;justify-content:flex-end;padding:0 16px 12px;position:relative;z-index:1;will-change:opacity}.nice-header-large-title-container{display:flex;flex-direction:column;gap:2px}.nice-header-large-title{margin:0;font-size:34px;font-weight:700;line-height:1.1;letter-spacing:-.5px}.nice-header-large-subtitle{margin:0;font-size:14px;color:var(--header-text-muted)}.nice-mobile-header--transparent .nice-header-large-title,.nice-mobile-header--transparent .nice-header-large-subtitle{color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.3)}@media (prefers-color-scheme: dark){.nice-mobile-header{--header-bg: #1f2937;--header-text: #f9fafb;--header-text-muted: #9ca3af;--header-border: #374151;--header-shadow: 0 2px 8px rgba(0, 0, 0, .3)}.nice-mobile-header--blur{background:#1f2937cc}.nice-header-action:hover{background:#ffffff1a}}@media (prefers-reduced-motion: reduce){.nice-mobile-header,.nice-header-background,.nice-header-center,.nice-header-expanded,.nice-header-action{transition:none!important}}@media (forced-colors: active){.nice-mobile-header{border-bottom:1px solid ButtonText}.nice-header-action:focus-visible{outline:2px solid Highlight}}@media (min-width: 768px){.nice-header-center{align-items:flex-start;text-align:left;padding-left:16px}.nice-header-large-title{font-size:28px}}.nice-mobile-picker{--picker-bg: #ffffff;--picker-text: #1f2937;--picker-text-muted: #9ca3af;--picker-indicator: rgba(99, 102, 241, .1);--picker-indicator-border: rgba(99, 102, 241, .3);--picker-gradient-start: rgba(255, 255, 255, 1);--picker-gradient-end: rgba(255, 255, 255, 0);display:flex;flex-direction:column;background:var(--picker-bg);border-radius:12px;overflow:hidden;user-select:none;-webkit-user-select:none}.nice-picker-labels{display:flex;padding:0 8px;margin-bottom:4px}.nice-picker-label{flex:1;padding:4px 8px;font-size:12px;font-weight:500;color:var(--picker-text-muted);text-align:center}.nice-picker-body{position:relative;flex:1;overflow:hidden}.nice-picker-indicator{position:absolute;left:8px;right:8px;background:var(--picker-indicator);border-top:1px solid var(--picker-indicator-border);border-bottom:1px solid var(--picker-indicator-border);border-radius:8px;pointer-events:none;z-index:1}.nice-picker-columns{display:flex;height:100%;position:relative;z-index:2}.nice-picker-column{flex:1;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.nice-picker-column::-webkit-scrollbar{display:none}.nice-picker-column-inner{display:flex;flex-direction:column}.nice-picker-item{display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0 8px;font-size:18px;font-weight:500;color:var(--picker-text);text-align:center;cursor:pointer;scroll-snap-align:center;transition:transform .15s ease,opacity .15s ease;will-change:transform,opacity;-webkit-tap-highlight-color:transparent}.nice-picker-item--selected{font-weight:600;color:var(--picker-text)}.nice-picker-item--disabled{opacity:.3;cursor:not-allowed}.nice-picker-gradient{position:absolute;left:0;right:0;height:40%;pointer-events:none;z-index:3}.nice-picker-gradient--top{top:0;background:linear-gradient(to bottom,var(--picker-gradient-start) 0%,var(--picker-gradient-end) 100%)}.nice-picker-gradient--bottom{bottom:0;background:linear-gradient(to top,var(--picker-gradient-start) 0%,var(--picker-gradient-end) 100%)}@media (prefers-color-scheme: dark){.nice-mobile-picker{--picker-bg: #1f2937;--picker-text: #f9fafb;--picker-text-muted: #6b7280;--picker-indicator: rgba(99, 102, 241, .2);--picker-indicator-border: rgba(99, 102, 241, .4);--picker-gradient-start: rgba(31, 41, 55, 1);--picker-gradient-end: rgba(31, 41, 55, 0)}}@media (prefers-reduced-motion: reduce){.nice-picker-item{transition:none}.nice-picker-column{scroll-behavior:auto}}@media (forced-colors: active){.nice-picker-indicator{border:2px solid Highlight;background:transparent}.nice-picker-item--selected{outline:2px solid Highlight}.nice-picker-gradient--top,.nice-picker-gradient--bottom{display:none}}.nice-picker-item:active:not(.nice-picker-item--disabled){transform:scale(.95)}.nice-mobile-picker--compact .nice-picker-item{font-size:16px}.nice-mobile-picker--compact .nice-picker-indicator{border-radius:6px}.nice-mobile-picker--large .nice-picker-item{font-size:22px}.nice-mobile-picker--large .nice-picker-indicator{border-radius:12px}.nice-mobile-calendar{--calendar-bg: #ffffff;--calendar-text: #1f2937;--calendar-text-muted: #9ca3af;--calendar-border: #e5e7eb;--calendar-primary: #6366f1;--calendar-primary-light: rgba(99, 102, 241, .1);--calendar-today-bg: #f3f4f6;--calendar-selected-bg: var(--calendar-primary);--calendar-selected-text: #ffffff;--calendar-range-bg: rgba(99, 102, 241, .15);--calendar-weekend-text: #ef4444;--calendar-disabled-text: #d1d5db;--calendar-nav-hover: #f3f4f6;--calendar-radius: 12px;--calendar-cell-size: 44px;--calendar-gap: 2px;display:flex;flex-direction:column;background:var(--calendar-bg);border-radius:var(--calendar-radius);overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.nice-mobile-calendar--compact{--calendar-cell-size: 36px}@media (prefers-color-scheme: dark){.nice-mobile-calendar{--calendar-bg: #1f2937;--calendar-text: #f9fafb;--calendar-text-muted: #6b7280;--calendar-border: #374151;--calendar-today-bg: #374151;--calendar-nav-hover: #374151;--calendar-disabled-text: #4b5563}}.nice-calendar-header{display:flex;align-items:center;justify-content:space-between;padding:12px 8px;gap:8px}.nice-calendar-nav-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;border-radius:50%;background:transparent;color:var(--calendar-text);cursor:pointer;transition:background-color .15s ease;-webkit-tap-highlight-color:transparent}.nice-calendar-nav-btn:hover{background:var(--calendar-nav-hover)}.nice-calendar-nav-btn:active{transform:scale(.95)}.nice-calendar-nav-btn svg{width:20px;height:20px}.nice-calendar-title-btn{display:flex;align-items:center;justify-content:center;gap:6px;flex:1;padding:8px 16px;border:none;border-radius:8px;background:transparent;color:var(--calendar-text);font-size:16px;font-weight:600;cursor:pointer;transition:background-color .15s ease}.nice-calendar-title-btn:hover{background:var(--calendar-nav-hover)}.nice-calendar-month{flex-shrink:0}.nice-calendar-year{color:var(--calendar-text-muted);font-weight:400}.nice-calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);padding:8px 4px;border-bottom:1px solid var(--calendar-border)}.nice-calendar-weekdays--with-numbers{grid-template-columns:32px repeat(7,1fr)}.nice-calendar-weekday{display:flex;align-items:center;justify-content:center;height:32px;color:var(--calendar-text-muted);font-size:12px;font-weight:500;text-transform:uppercase}.nice-calendar-weekday--number{color:var(--calendar-text-muted);font-size:10px}.nice-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--calendar-gap);padding:4px}.nice-calendar-grid--with-numbers{grid-template-columns:32px repeat(7,1fr)}.nice-calendar-week-number{display:flex;align-items:center;justify-content:center;width:32px;height:var(--calendar-cell-size);color:var(--calendar-text-muted);font-size:11px;font-weight:500}.nice-calendar-day{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:var(--calendar-cell-size);padding:4px;border:none;border-radius:50%;background:transparent;color:var(--calendar-text);font-size:14px;cursor:pointer;transition:all .15s ease;-webkit-tap-highlight-color:transparent}.nice-calendar-day:active:not(:disabled){transform:scale(.9)}.nice-calendar-day--empty{cursor:default}.nice-calendar-day--other-month{color:var(--calendar-text-muted);opacity:.5}.nice-calendar-day--today{background:var(--calendar-today-bg);font-weight:600}.nice-calendar-day--weekend:not(.nice-calendar-day--selected):not(.nice-calendar-day--in-range){color:var(--calendar-weekend-text)}.nice-calendar-day--selected{background:var(--calendar-selected-bg);color:var(--calendar-selected-text);font-weight:600}.nice-calendar-day--selected.nice-calendar-day--today{background:var(--calendar-selected-bg)}.nice-calendar-day--in-range{background:var(--calendar-range-bg);border-radius:0}.nice-calendar-day--range-start{background:var(--calendar-selected-bg);color:var(--calendar-selected-text);border-radius:50% 0 0 50%}.nice-calendar-day--range-end{background:var(--calendar-selected-bg);color:var(--calendar-selected-text);border-radius:0 50% 50% 0}.nice-calendar-day--range-start.nice-calendar-day--range-end{border-radius:50%}.nice-calendar-day--disabled{color:var(--calendar-disabled-text);cursor:not-allowed;opacity:.5}.nice-calendar-day-number{position:relative;z-index:1}.nice-calendar-day-dots{display:flex;gap:2px;margin-top:2px}.nice-calendar-day-dot{width:4px;height:4px;border-radius:50%;background:var(--calendar-primary)}.nice-calendar-day--selected .nice-calendar-day-dot{background:#fffc}.nice-calendar-months{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:16px}.nice-calendar-month-btn{display:flex;align-items:center;justify-content:center;height:48px;padding:8px;border:none;border-radius:12px;background:transparent;color:var(--calendar-text);font-size:14px;cursor:pointer;transition:all .15s ease;-webkit-tap-highlight-color:transparent}.nice-calendar-month-btn:hover{background:var(--calendar-nav-hover)}.nice-calendar-month-btn:active{transform:scale(.95)}.nice-calendar-month-btn--selected{background:var(--calendar-selected-bg);color:var(--calendar-selected-text);font-weight:600}.nice-calendar-years{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:16px;max-height:300px;overflow-y:auto;-webkit-overflow-scrolling:touch}.nice-calendar-year-btn{display:flex;align-items:center;justify-content:center;height:40px;padding:8px;border:none;border-radius:8px;background:transparent;color:var(--calendar-text);font-size:14px;cursor:pointer;transition:all .15s ease;-webkit-tap-highlight-color:transparent}.nice-calendar-year-btn:hover{background:var(--calendar-nav-hover)}.nice-calendar-year-btn:active{transform:scale(.95)}.nice-calendar-year-btn--selected{background:var(--calendar-selected-bg);color:var(--calendar-selected-text);font-weight:600}.nice-calendar-footer{display:flex;justify-content:center;padding:12px 16px;border-top:1px solid var(--calendar-border)}.nice-calendar-today-btn{padding:8px 24px;border:none;border-radius:8px;background:var(--calendar-primary-light);color:var(--calendar-primary);font-size:14px;font-weight:500;cursor:pointer;transition:all .15s ease;-webkit-tap-highlight-color:transparent}.nice-calendar-today-btn:hover{background:var(--calendar-primary);color:#fff}.nice-calendar-today-btn:active{transform:scale(.95)}@supports (padding-bottom: env(safe-area-inset-bottom)){.nice-calendar-footer{padding-bottom:calc(12px + env(safe-area-inset-bottom))}}@keyframes calendar-slide-in-left{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes calendar-slide-in-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.nice-calendar-grid--slide-left{animation:calendar-slide-in-left .2s ease-out}.nice-calendar-grid--slide-right{animation:calendar-slide-in-right .2s ease-out}@media (prefers-reduced-motion: reduce){.nice-calendar-day,.nice-calendar-nav-btn,.nice-calendar-title-btn,.nice-calendar-month-btn,.nice-calendar-year-btn,.nice-calendar-today-btn{transition:none}.nice-calendar-nav-btn:active,.nice-calendar-day:active:not(:disabled),.nice-calendar-month-btn:active,.nice-calendar-year-btn:active,.nice-calendar-today-btn:active{transform:none}}.nice-gestures{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;will-change:transform}.nice-gestures--active{cursor:grabbing}.nice-gestures[data-debug=true]:after{content:attr(data-scale) " / " attr(data-rotation) "° / " attr(data-x) ", " attr(data-y);position:absolute;top:8px;left:8px;padding:4px 8px;background:#000000bf;color:#fff;font-size:11px;font-family:monospace;border-radius:4px;pointer-events:none;z-index:1000}.nice-pinch-zoom{overflow:hidden;touch-action:none}.nice-pinch-zoom>*{pointer-events:none}.nice-pinch-zoom--active>*{pointer-events:auto}.nice-draggable{cursor:grab;touch-action:none}.nice-draggable--dragging{cursor:grabbing}.nice-swipeable{overflow:hidden}.nice-gesture-indicator{position:fixed;pointer-events:none;z-index:10000}.nice-gesture-indicator--pinch{width:60px;height:60px;border:2px solid rgba(99,102,241,.5);border-radius:50%;transform:translate(-50%,-50%);animation:gesture-pulse .3s ease-out}.nice-gesture-indicator--tap{width:40px;height:40px;background:#6366f14d;border-radius:50%;transform:translate(-50%,-50%);animation:gesture-ripple .4s ease-out forwards}.nice-gesture-indicator--long-press{width:40px;height:40px;border:3px solid rgba(99,102,241,.8);border-radius:50%;transform:translate(-50%,-50%);animation:gesture-long-press .5s ease-out forwards}@keyframes gesture-pulse{0%{opacity:1;transform:translate(-50%,-50%) scale(.8)}to{opacity:0;transform:translate(-50%,-50%) scale(1.5)}}@keyframes gesture-ripple{0%{opacity:1;transform:translate(-50%,-50%) scale(0)}to{opacity:0;transform:translate(-50%,-50%) scale(2)}}@keyframes gesture-long-press{0%{opacity:1;border-width:3px;transform:translate(-50%,-50%) scale(1)}50%{border-width:6px}to{opacity:0;border-width:3px;transform:translate(-50%,-50%) scale(1.2)}}@media (prefers-reduced-motion: reduce){.nice-gestures{will-change:auto}.nice-gesture-indicator--pinch,.nice-gesture-indicator--tap,.nice-gesture-indicator--long-press{animation:none;opacity:.5}}.nice-touch-btn{--btn-bg: #6366f1;--btn-text: #ffffff;--btn-border: transparent;--btn-hover-bg: #5558e6;--btn-active-bg: #4f46e5;--btn-disabled-bg: #e5e7eb;--btn-disabled-text: #9ca3af;--btn-radius: 12px;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;min-width:44px;padding:12px 20px;border:2px solid var(--btn-border);border-radius:var(--btn-radius);background:var(--btn-bg);color:var(--btn-text);font-family:inherit;font-size:16px;font-weight:600;line-height:1.25;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:all .15s ease;overflow:hidden}.nice-touch-btn:focus-visible{outline:3px solid rgba(99,102,241,.5);outline-offset:2px}.nice-touch-btn:disabled{background:var(--btn-disabled-bg);color:var(--btn-disabled-text);border-color:transparent;cursor:not-allowed}.nice-touch-btn--sm{min-height:44px;padding:10px 16px;font-size:14px}.nice-touch-btn--md{min-height:48px;padding:12px 20px;font-size:16px}.nice-touch-btn--lg{min-height:56px;padding:16px 28px;font-size:18px}.nice-touch-btn--xl{min-height:64px;padding:20px 36px;font-size:20px}.nice-touch-btn--primary{--btn-bg: #6366f1;--btn-hover-bg: #5558e6;--btn-active-bg: #4f46e5}.nice-touch-btn--secondary{--btn-bg: #64748b;--btn-hover-bg: #5b6879;--btn-active-bg: #475569}.nice-touch-btn--outline{--btn-bg: transparent;--btn-text: #6366f1;--btn-border: #6366f1;--btn-hover-bg: rgba(99, 102, 241, .1);--btn-active-bg: rgba(99, 102, 241, .2)}.nice-touch-btn--ghost{--btn-bg: transparent;--btn-text: #374151;--btn-border: transparent;--btn-hover-bg: rgba(0, 0, 0, .05);--btn-active-bg: rgba(0, 0, 0, .1)}.nice-touch-btn--danger{--btn-bg: #ef4444;--btn-hover-bg: #dc2626;--btn-active-bg: #b91c1c}.nice-touch-btn--success{--btn-bg: #22c55e;--btn-hover-bg: #16a34a;--btn-active-bg: #15803d}.nice-touch-btn--warning{--btn-bg: #f59e0b;--btn-hover-bg: #d97706;--btn-active-bg: #b45309}.nice-touch-btn--rounded{--btn-radius: 12px}.nice-touch-btn--pill{--btn-radius: 9999px}.nice-touch-btn--square{--btn-radius: 0}.nice-touch-btn--circle{--btn-radius: 50%;padding:12px;aspect-ratio:1}.nice-touch-btn--pressed,.nice-touch-btn:active:not(:disabled){background:var(--btn-active-bg);transform:scale(.97)}.nice-touch-btn--active{background:var(--btn-active-bg);box-shadow:inset 0 2px 4px #0000001a}@media (hover: hover){.nice-touch-btn:hover:not(:disabled){background:var(--btn-hover-bg)}}.nice-touch-btn--full-width{width:100%}.nice-touch-btn--icon-only{padding:12px}.nice-touch-btn--icon-only.nice-touch-btn--sm{padding:10px}.nice-touch-btn--icon-only.nice-touch-btn--lg{padding:16px}.nice-touch-btn--icon-only.nice-touch-btn--xl{padding:20px}.nice-touch-btn--loading{cursor:wait;pointer-events:none}.nice-touch-btn-spinner{position:absolute;display:flex;align-items:center;justify-content:center}.nice-touch-btn-spinner-svg{width:20px;height:20px;animation:btn-spinner 1s linear infinite}@keyframes btn-spinner{0%{transform:rotate(0);stroke-dashoffset:32}50%{stroke-dashoffset:8}to{transform:rotate(360deg);stroke-dashoffset:32}}.nice-touch-btn-content{display:flex;align-items:center;justify-content:center;gap:8px;transition:opacity .15s ease}.nice-touch-btn-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0}.nice-touch-btn-icon svg{width:1.25em;height:1.25em}.nice-touch-btn-ripple{position:absolute;width:0;height:0;border-radius:50%;background:#ffffff4d;transform:translate(-50%,-50%);animation:btn-ripple .6s ease-out forwards;pointer-events:none}@keyframes btn-ripple{0%{width:0;height:0;opacity:1}to{width:400px;height:400px;opacity:0}}.nice-fab{position:fixed;z-index:1000;box-shadow:0 4px 12px #00000026,0 2px 4px #0000001a}.nice-fab--bottom-right{bottom:24px;right:24px}.nice-fab--bottom-left{bottom:24px;left:24px}.nice-fab--bottom-center{bottom:24px;left:50%;transform:translate(-50%)}.nice-fab--top-right{top:24px;right:24px}.nice-fab--top-left{top:24px;left:24px}@supports (bottom: env(safe-area-inset-bottom)){.nice-fab--bottom-right,.nice-fab--bottom-left,.nice-fab--bottom-center{bottom:calc(24px + env(safe-area-inset-bottom))}}@media (prefers-color-scheme: dark){.nice-touch-btn--ghost{--btn-text: #f3f4f6;--btn-hover-bg: rgba(255, 255, 255, .1);--btn-active-bg: rgba(255, 255, 255, .15)}.nice-touch-btn:disabled{--btn-disabled-bg: #374151;--btn-disabled-text: #6b7280}}@media (prefers-reduced-motion: reduce){.nice-touch-btn{transition:none}.nice-touch-btn--pressed,.nice-touch-btn:active:not(:disabled){transform:none}.nice-touch-btn-spinner-svg{animation:none}.nice-touch-btn-ripple{animation:none;display:none}}.nice-touch-slider{--thumb-size: 44px;--track-height: 8px;--track-color: #e5e7eb;--fill-color: #6366f1;--thumb-color: #ffffff;--thumb-border: #6366f1;--thumb-shadow: 0 2px 8px rgba(0, 0, 0, .15);--label-bg: #1f2937;--label-text: #ffffff;display:flex;align-items:center;gap:12px;-webkit-user-select:none;user-select:none;touch-action:none;-webkit-tap-highlight-color:transparent}.nice-touch-slider--horizontal{flex-direction:row;width:100%;min-height:var(--thumb-size)}.nice-touch-slider--horizontal .nice-touch-slider-track-container{flex:1;height:var(--thumb-size);display:flex;align-items:center;position:relative;cursor:pointer}.nice-touch-slider--horizontal .nice-touch-slider-track{width:100%;height:var(--track-height);border-radius:calc(var(--track-height) / 2);background:var(--track-color)}.nice-touch-slider--horizontal .nice-touch-slider-fill{position:absolute;height:var(--track-height);border-radius:calc(var(--track-height) / 2);background:var(--fill-color)}.nice-touch-slider--horizontal .nice-touch-slider-thumb{position:absolute;top:50%;transform:translate(-50%,-50%)}.nice-touch-slider--vertical{flex-direction:column;height:200px;width:var(--thumb-size)}.nice-touch-slider--vertical .nice-touch-slider-track-container{flex:1;width:var(--thumb-size);display:flex;justify-content:center;position:relative;cursor:pointer}.nice-touch-slider--vertical .nice-touch-slider-track{width:var(--track-height);height:100%;border-radius:calc(var(--track-height) / 2);background:var(--track-color)}.nice-touch-slider--vertical .nice-touch-slider-fill{position:absolute;width:var(--track-height);border-radius:calc(var(--track-height) / 2);background:var(--fill-color)}.nice-touch-slider--vertical .nice-touch-slider-thumb{position:absolute;left:50%;transform:translate(-50%,50%)}.nice-touch-slider-thumb{display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--thumb-color);border:3px solid var(--thumb-border);box-shadow:var(--thumb-shadow);cursor:grab;z-index:2;transition:transform .1s ease,box-shadow .15s ease}.nice-touch-slider-thumb:focus-visible{outline:none;box-shadow:var(--thumb-shadow),0 0 0 4px #6366f14d}.nice-touch-slider-thumb--active,.nice-touch-slider--dragging .nice-touch-slider-thumb{cursor:grabbing;transform:translate(-50%,-50%) scale(1.1)}.nice-touch-slider--vertical .nice-touch-slider-thumb--active,.nice-touch-slider--vertical.nice-touch-slider--dragging .nice-touch-slider-thumb{transform:translate(-50%,50%) scale(1.1)}.nice-touch-slider-label{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);padding:6px 10px;background:var(--label-bg);color:var(--label-text);font-size:12px;font-weight:600;border-radius:6px;white-space:nowrap;pointer-events:none;animation:slider-label-pop .15s ease}.nice-touch-slider-label:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:6px solid transparent;border-top-color:var(--label-bg)}.nice-touch-slider--vertical .nice-touch-slider-label{bottom:auto;left:calc(100% + 8px);transform:translateY(-50%)}.nice-touch-slider--vertical .nice-touch-slider-label:after{top:50%;left:-6px;transform:translateY(-50%);border:6px solid transparent;border-right-color:var(--label-bg)}@keyframes slider-label-pop{0%{opacity:0;transform:translate(-50%) scale(.8)}to{opacity:1;transform:translate(-50%) scale(1)}}.nice-touch-slider-marks{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.nice-touch-slider-mark{position:absolute;display:flex;flex-direction:column;align-items:center}.nice-touch-slider--horizontal .nice-touch-slider-mark{top:50%;transform:translate(-50%)}.nice-touch-slider--vertical .nice-touch-slider-mark{left:50%;transform:translateY(50%);flex-direction:row}.nice-touch-slider-mark-dot{width:6px;height:6px;border-radius:50%;background:var(--track-color);border:2px solid #ffffff;z-index:1}.nice-touch-slider-mark-label{margin-top:calc(var(--thumb-size) / 2 + 8px);color:#6b7280;font-size:12px;white-space:nowrap}.nice-touch-slider--vertical .nice-touch-slider-mark-label{margin-top:0;margin-left:calc(var(--thumb-size) / 2 + 8px)}.nice-touch-slider-min,.nice-touch-slider-max{color:#6b7280;font-size:14px;font-weight:500;flex-shrink:0}.nice-touch-slider--disabled{opacity:.5;pointer-events:none}.nice-touch-slider--disabled .nice-touch-slider-thumb{cursor:not-allowed}@media (prefers-color-scheme: dark){.nice-touch-slider{--track-color: #374151;--thumb-color: #f9fafb;--thumb-border: #818cf8}.nice-touch-slider-mark-dot{border-color:#374151}.nice-touch-slider-min,.nice-touch-slider-max,.nice-touch-slider-mark-label{color:#9ca3af}}@media (prefers-reduced-motion: reduce){.nice-touch-slider-thumb{transition:none}.nice-touch-slider-thumb--active,.nice-touch-slider--dragging .nice-touch-slider-thumb{transform:translate(-50%,-50%)}.nice-touch-slider--vertical .nice-touch-slider-thumb--active,.nice-touch-slider--vertical.nice-touch-slider--dragging .nice-touch-slider-thumb{transform:translate(-50%,50%)}.nice-touch-slider-label{animation:none}}.nice-touch-color-picker{display:flex;flex-direction:column;gap:16px;padding:16px;background:#fff;border-radius:16px;-webkit-user-select:none;user-select:none;touch-action:none;-webkit-tap-highlight-color:transparent}.nice-touch-color-picker-wheel-container{position:relative;display:flex;align-items:center;justify-content:center;margin:0 auto}.nice-touch-color-picker-wheel{position:absolute;touch-action:none;cursor:crosshair}.nice-touch-color-picker-hue-indicator{position:absolute;width:24px;height:24px;border-radius:50%;border:3px solid #ffffff;box-shadow:0 2px 8px #0000004d;transform:translate(-50%,-50%);pointer-events:none;z-index:2}.nice-touch-color-picker-sl-container{position:absolute;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.nice-touch-color-picker-sl{display:block;touch-action:none;cursor:crosshair;border-radius:8px}.nice-touch-color-picker-sl-indicator{position:absolute;width:20px;height:20px;border-radius:50%;border:3px solid #ffffff;box-shadow:0 2px 6px #0000004d;transform:translate(-50%,-50%);pointer-events:none}.nice-touch-color-picker-controls{display:flex;align-items:center;gap:12px}.nice-touch-color-picker-preview{width:48px;height:48px;border-radius:12px;border:3px solid #e5e7eb;flex-shrink:0}.nice-touch-color-picker-input{flex:1;height:48px;padding:0 16px;border:2px solid #e5e7eb;border-radius:12px;background:#fff;color:#1f2937;font-size:16px;font-family:monospace;text-transform:uppercase;outline:none;transition:border-color .15s ease}.nice-touch-color-picker-input:focus{border-color:#6366f1}.nice-touch-color-picker-alpha{padding:8px 0}.nice-touch-color-picker-alpha-slider{width:100%;height:24px;-moz-appearance:none;appearance:none;-webkit-appearance:none;border-radius:12px;cursor:pointer;background-image:linear-gradient(45deg,#ccc 25%,transparent 25%),linear-gradient(-45deg,#ccc 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ccc 75%),linear-gradient(-45deg,transparent 75%,#ccc 75%);background-size:12px 12px;background-position:0 0,0 6px,6px -6px,-6px 0}.nice-touch-color-picker-alpha-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:28px;height:28px;border-radius:50%;background:#fff;border:3px solid #6366f1;box-shadow:0 2px 6px #0003;cursor:grab}.nice-touch-color-picker-alpha-slider::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.1)}.nice-touch-color-picker-presets{display:flex;flex-direction:column;gap:8px}.nice-touch-color-picker-presets-label{font-size:12px;font-weight:500;color:#6b7280;text-transform:uppercase;letter-spacing:.05em}.nice-touch-color-picker-presets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:8px}.nice-touch-color-picker-preset{width:100%;aspect-ratio:1;min-height:40px;border:none;border-radius:10px;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;-webkit-tap-highlight-color:transparent}.nice-touch-color-picker-preset:hover{transform:scale(1.05)}.nice-touch-color-picker-preset:active{transform:scale(.95)}.nice-touch-color-picker-preset--selected{box-shadow:0 0 0 3px #6366f1}@media (prefers-color-scheme: dark){.nice-touch-color-picker{background:#1f2937}.nice-touch-color-picker-preview{border-color:#374151}.nice-touch-color-picker-input{background:#374151;border-color:#4b5563;color:#f9fafb}.nice-touch-color-picker-input:focus{border-color:#818cf8}.nice-touch-color-picker-presets-label{color:#9ca3af}}@media (prefers-reduced-motion: reduce){.nice-touch-color-picker-input,.nice-touch-color-picker-preset{transition:none}.nice-touch-color-picker-preset:hover,.nice-touch-color-picker-preset:active{transform:none}}.nice-signature-pad{position:relative;display:inline-block;border-radius:var(--nice-radius-md, 8px);overflow:hidden;box-shadow:var(--nice-shadow-sm, 0 1px 2px rgba(0, 0, 0, .05));border:1px solid var(--nice-border-color, #e5e7eb)}.nice-signature-pad--disabled{opacity:.6;pointer-events:none}.nice-signature-pad-canvas{display:block;cursor:crosshair;border-radius:inherit;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.nice-signature-pad--disabled .nice-signature-pad-canvas{cursor:not-allowed}.nice-signature-pad-placeholder{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--nice-text-muted, #9ca3af);font-size:.875rem;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:.7}.nice-signature-toolbar{display:flex;gap:.5rem;padding:.5rem;background:var(--nice-bg-secondary, #f9fafb);border-top:1px solid var(--nice-border-color, #e5e7eb)}.nice-signature-toolbar button{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:.5rem 1rem;border:none;border-radius:var(--nice-radius-md, 8px);background:var(--nice-bg-primary, #ffffff);color:var(--nice-text-primary, #1f2937);font-size:.875rem;font-weight:500;cursor:pointer;transition:background-color .15s,box-shadow .15s}.nice-signature-toolbar button:hover{background:var(--nice-bg-hover, #f3f4f6)}.nice-signature-toolbar button:active{background:var(--nice-bg-active, #e5e7eb)}.nice-signature-toolbar button:disabled{opacity:.5;cursor:not-allowed}.nice-signature-toolbar button.primary{background:var(--nice-primary, #3b82f6);color:#fff}.nice-signature-toolbar button.primary:hover{background:var(--nice-primary-hover, #2563eb)}.nice-signature-toolbar button.danger{background:var(--nice-danger, #ef4444);color:#fff}.nice-signature-toolbar button.danger:hover{background:var(--nice-danger-hover, #dc2626)}@media (max-width: 480px){.nice-signature-pad{width:100%}.nice-signature-pad-canvas{width:100%!important;height:150px!important}.nice-signature-pad-placeholder{font-size:.75rem}}@media (prefers-color-scheme: dark){.nice-signature-pad{border-color:var(--nice-border-color-dark, #374151)}.nice-signature-pad-placeholder{color:var(--nice-text-muted-dark, #6b7280)}.nice-signature-toolbar{background:var(--nice-bg-secondary-dark, #1f2937);border-top-color:var(--nice-border-color-dark, #374151)}.nice-signature-toolbar button{background:var(--nice-bg-primary-dark, #111827);color:var(--nice-text-primary-dark, #f9fafb)}.nice-signature-toolbar button:hover{background:var(--nice-bg-hover-dark, #374151)}}@media (prefers-reduced-motion: reduce){.nice-signature-toolbar button{transition:none}}.nice-touch-drawing{position:relative;display:inline-block;border-radius:var(--nice-radius-md, 8px);overflow:hidden;box-shadow:var(--nice-shadow-md, 0 4px 6px -1px rgba(0, 0, 0, .1));border:1px solid var(--nice-border-color, #e5e7eb)}.nice-touch-drawing--disabled{opacity:.6;pointer-events:none}.nice-touch-drawing-canvas{display:block;border-radius:inherit;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.nice-drawing-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem;background:var(--nice-bg-secondary, #f9fafb);border:1px solid var(--nice-border-color, #e5e7eb);border-radius:var(--nice-radius-md, 8px)}.nice-drawing-toolbar-section{display:flex;align-items:center;gap:.25rem}.nice-drawing-toolbar-divider{width:1px;height:32px;background:var(--nice-border-color, #e5e7eb);margin:0 .25rem}.nice-drawing-tool-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:2px solid transparent;border-radius:var(--nice-radius-md, 8px);background:var(--nice-bg-primary, #ffffff);font-size:1.25rem;cursor:pointer;transition:background-color .15s,border-color .15s,transform .1s}.nice-drawing-tool-btn:hover{background:var(--nice-bg-hover, #f3f4f6)}.nice-drawing-tool-btn:active{transform:scale(.95)}.nice-drawing-tool-btn.active{border-color:var(--nice-primary, #3b82f6);background:var(--nice-primary-light, #dbeafe)}.nice-drawing-colors{flex-wrap:wrap;max-width:200px}.nice-drawing-color-btn{width:32px;height:32px;padding:0;border:2px solid transparent;border-radius:50%;cursor:pointer;transition:transform .1s,box-shadow .15s}.nice-drawing-color-btn:hover{transform:scale(1.1)}.nice-drawing-color-btn:active{transform:scale(.95)}.nice-drawing-color-btn.active{box-shadow:0 0 0 3px var(--nice-primary, #3b82f6);transform:scale(1.1)}.nice-drawing-stroke-label{display:flex;flex-direction:column;align-items:center;gap:.25rem;font-size:.75rem;color:var(--nice-text-secondary, #6b7280)}.nice-drawing-stroke-slider{width:80px;height:24px;cursor:pointer;accent-color:var(--nice-primary, #3b82f6)}.nice-drawing-actions{gap:.5rem}.nice-drawing-action-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:none;border-radius:var(--nice-radius-md, 8px);background:var(--nice-bg-primary, #ffffff);font-size:1.25rem;cursor:pointer;transition:background-color .15s,opacity .15s}.nice-drawing-action-btn:hover{background:var(--nice-bg-hover, #f3f4f6)}.nice-drawing-action-btn:disabled{opacity:.4;cursor:not-allowed}.nice-drawing-action-btn.danger:hover:not(:disabled){background:var(--nice-danger-light, #fee2e2)}@media (max-width: 480px){.nice-touch-drawing{width:100%}.nice-touch-drawing-canvas{width:100%!important}.nice-drawing-toolbar{padding:.5rem;gap:.25rem}.nice-drawing-toolbar-divider{display:none}.nice-drawing-toolbar-section{flex-wrap:wrap}.nice-drawing-tool-btn,.nice-drawing-action-btn{width:40px;height:40px;font-size:1rem}.nice-drawing-color-btn{width:28px;height:28px}.nice-drawing-colors{max-width:100%}.nice-drawing-stroke-slider{width:60px}}@media (prefers-color-scheme: dark){.nice-touch-drawing{border-color:var(--nice-border-color-dark, #374151)}.nice-drawing-toolbar{background:var(--nice-bg-secondary-dark, #1f2937);border-color:var(--nice-border-color-dark, #374151)}.nice-drawing-toolbar-divider{background:var(--nice-border-color-dark, #374151)}.nice-drawing-tool-btn,.nice-drawing-action-btn{background:var(--nice-bg-primary-dark, #111827)}.nice-drawing-tool-btn:hover,.nice-drawing-action-btn:hover{background:var(--nice-bg-hover-dark, #374151)}.nice-drawing-tool-btn.active{background:var(--nice-primary-dark, #1d4ed8);border-color:var(--nice-primary, #3b82f6)}.nice-drawing-stroke-label{color:var(--nice-text-secondary-dark, #9ca3af)}}@media (prefers-reduced-motion: reduce){.nice-drawing-tool-btn,.nice-drawing-color-btn,.nice-drawing-action-btn{transition:none}}.nice-touch-keyboard{display:flex;flex-direction:column;background:var(--nice-bg-keyboard, var(--bg-secondary, #d1d5db));color:var(--text-primary, #1f2937);--nice-bg-primary: var(--bg-elevated, var(--bg-primary, #ffffff));--nice-bg-secondary: var(--bg-secondary, #9ca3af);--nice-bg-hover: var(--hover-bg, rgba(0,0,0,.06));--nice-bg-active: var(--bg-active, var(--hover-bg, #e5e7eb));--nice-text-primary: var(--text-primary, #1f2937);--nice-text-secondary: var(--text-secondary, #6b7280);--nice-text-muted: var(--text-muted, #9ca3af);--nice-border-color: var(--border-color, #d1d5db);--nice-primary: var(--color-primary, #3b82f6);border-radius:var(--nice-radius-lg, 12px);padding:.5rem;gap:.375rem;user-select:none;-webkit-user-select:none;max-width:100%}.nice-touch-keyboard--disabled{opacity:.6;pointer-events:none}.nice-touch-keyboard--light{background:#d1d5db;--nice-bg-primary: #ffffff;--nice-bg-secondary: #9ca3af;--nice-bg-hover: #f3f4f6;--nice-bg-active: #e5e7eb;--nice-text-primary: #1f2937;--nice-text-muted: #6b7280;--nice-border-color: #d1d5db}.nice-touch-keyboard--dark{background:#1f2937;--nice-bg-primary: #374151;--nice-bg-secondary: #1f2937;--nice-bg-hover: #4b5563;--nice-bg-active: #6b7280;--nice-text-primary: #f3f4f6;--nice-text-muted: #9ca3af;--nice-border-color: #4b5563}.nice-touch-keyboard[dir=rtl] .nice-touch-keyboard-row{direction:rtl}.nice-touch-keyboard--minimal{max-width:240px}.nice-touch-keyboard--compact{max-width:540px}.nice-touch-keyboard--standard{max-width:640px}.nice-touch-keyboard--full{max-width:900px}.nice-touch-keyboard-langbar{display:flex;gap:4px;padding:2px 0;overflow-x:auto;scrollbar-width:none}.nice-touch-keyboard-langbar::-webkit-scrollbar{display:none}.nice-touch-keyboard-langbar__btn{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border:none;border-radius:var(--nice-radius-sm, 6px);background:transparent;color:var(--nice-text-secondary, #6b7280);font-size:.75rem;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .15s,color .15s}.nice-touch-keyboard-langbar__btn:hover{background:var(--nice-bg-hover, rgba(0,0,0,.06))}.nice-touch-keyboard-langbar__btn.active{background:var(--nice-primary, #3b82f6);color:#fff}.nice-touch-keyboard-preview{display:flex;align-items:center;min-height:44px;padding:.5rem .75rem;background:var(--nice-bg-primary, #ffffff);border-radius:var(--nice-radius-md, 8px);font-size:1.125rem;font-family:inherit;letter-spacing:.02em;overflow:hidden}.nice-touch-keyboard-placeholder{color:var(--nice-text-muted, #9ca3af)}.nice-touch-keyboard-cursor{display:inline-block;width:2px;height:1.2em;background:var(--nice-primary, #3b82f6);margin-left:2px;animation:nice-cursor-blink 1s infinite}@keyframes nice-cursor-blink{0%,50%{opacity:1}51%,to{opacity:0}}.nice-touch-keyboard-keys{display:flex;flex-direction:column;gap:.3rem}.nice-touch-keyboard-row{display:flex;justify-content:center;gap:.3rem}.nice-touch-keyboard-key{display:inline-flex;align-items:center;justify-content:center;position:relative;min-width:28px;min-height:42px;padding:.375rem .5rem;border:none;border-radius:var(--nice-radius-md, 8px);background:var(--nice-bg-primary, #ffffff);color:var(--nice-text-primary, #1f2937);font-size:1rem;font-weight:500;font-family:inherit;cursor:pointer;box-shadow:0 1px 2px #00000014;transition:background-color .1s,transform .05s,box-shadow .1s}.nice-touch-keyboard-key:hover{background:var(--nice-bg-hover, #f3f4f6)}.nice-touch-keyboard-key:active{transform:scale(.95);box-shadow:none;background:var(--nice-bg-active, #e5e7eb)}.nice-touch-keyboard-key:disabled{opacity:.5;cursor:not-allowed}.nice-touch-keyboard-key.active{background:var(--nice-primary, #3b82f6);color:#fff}.nice-touch-keyboard-key--has-accent:after{content:"";position:absolute;bottom:3px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:var(--nice-primary, #3b82f6);opacity:.5}.nice-touch-keyboard-key--char{flex:1;max-width:48px}.nice-touch-keyboard-key--space{flex:5;max-width:none;font-size:.8125rem;text-transform:lowercase}.nice-touch-keyboard-key--backspace,.nice-touch-keyboard-key--enter,.nice-touch-keyboard-key--shift,.nice-touch-keyboard-key--caps,.nice-touch-keyboard-key--tab,.nice-touch-keyboard-key--fn,.nice-touch-keyboard-key--lang{background:var(--nice-bg-secondary, #9ca3af);color:var(--nice-text-primary, #1f2937);font-size:.875rem}.nice-touch-keyboard-key--backspace:hover,.nice-touch-keyboard-key--enter:hover,.nice-touch-keyboard-key--shift:hover,.nice-touch-keyboard-key--caps:hover,.nice-touch-keyboard-key--tab:hover,.nice-touch-keyboard-key--fn:hover,.nice-touch-keyboard-key--lang:hover{background:var(--nice-bg-hover-secondary, #6b7280)}.nice-touch-keyboard-key--enter{background:var(--nice-primary, #3b82f6);color:#fff}.nice-touch-keyboard-key--enter:hover{background:var(--nice-primary-hover, #2563eb)}.nice-touch-keyboard-key--lang{font-size:1.125rem}.nice-touch-keyboard-key--special{background:var(--nice-bg-secondary, #f3f4f6);color:var(--nice-primary, #3b82f6);font-weight:600}.nice-touch-keyboard-status{display:flex;justify-content:flex-end;gap:8px;padding:2px 4px 0;min-height:16px}.nice-touch-keyboard-status__item{font-size:.625rem;font-weight:600;text-transform:uppercase;color:var(--nice-text-muted, #9ca3af);letter-spacing:.05em}.nice-touch-keyboard--minimal .nice-touch-keyboard-key{min-width:56px;min-height:48px;font-size:1.25rem}.nice-touch-keyboard--compact .nice-touch-keyboard-key{min-height:40px;font-size:.9375rem}.nice-touch-keyboard--full .nice-touch-keyboard-row:first-child .nice-touch-keyboard-key--fn{min-height:28px;font-size:.6875rem;padding:.25rem .375rem;background:var(--nice-bg-secondary, #e5e7eb)}.nice-touch-keyboard[data-layout=pin] .nice-touch-keyboard-key{min-width:72px;min-height:56px;font-size:1.5rem}.nice-touch-keyboard[data-layout=phone] .nice-touch-keyboard-key{flex-direction:column;min-height:56px;gap:.125rem}.nice-touch-keyboard[data-layout=phone] .nice-touch-keyboard-key .sub-label{font-size:.625rem;text-transform:uppercase;letter-spacing:.05em;opacity:.7}.nice-touch-keyboard[data-layout=numpad]{max-width:280px}.nice-touch-keyboard[data-layout=numpad] .nice-touch-keyboard-key--special{background:var(--nice-warning, #f59e0b);color:#fff}.nice-touch-keyboard[data-layout=numpad] .nice-touch-keyboard-key--enter{background:var(--nice-success, #22c55e)}@media (max-width: 480px){.nice-touch-keyboard{padding:.375rem;border-radius:0}.nice-touch-keyboard-row,.nice-touch-keyboard-keys{gap:.2rem}.nice-touch-keyboard-key{min-height:38px;padding:.3rem .375rem;font-size:.875rem;border-radius:var(--nice-radius-sm, 6px)}.nice-touch-keyboard-preview{min-height:36px;padding:.375rem .5rem;font-size:.9375rem}.nice-touch-keyboard--full,.nice-touch-keyboard--standard{max-width:100%}}@media (min-width: 768px){.nice-touch-keyboard-key{min-height:48px;font-size:1.125rem}}@media (prefers-color-scheme: dark){.nice-touch-keyboard:not(.nice-touch-keyboard--light){background:var(--nice-bg-keyboard-dark, #1f2937)}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-preview{background:var(--nice-bg-primary-dark, #111827);color:var(--nice-text-primary-dark, #f9fafb)}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-key{background:var(--nice-bg-key-dark, #374151);color:var(--nice-text-primary-dark, #f9fafb);box-shadow:0 1px 3px #0000004d}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-key:hover{background:var(--nice-bg-hover-dark, #4b5563)}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-key:active{background:var(--nice-bg-active-dark, #6b7280)}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-key--backspace,.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-key--shift,.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-key--caps,.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-key--tab,.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-key--fn,.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-key--lang{background:var(--nice-bg-fn-dark, #4b5563)}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-langbar__btn{color:var(--nice-text-muted-dark, #9ca3af)}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-langbar__btn:hover{background:#ffffff14}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-placeholder{color:var(--nice-text-muted-dark, #6b7280)}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard-status__item{color:var(--nice-text-muted-dark, #6b7280)}.nice-touch-keyboard:not(.nice-touch-keyboard--light) .nice-touch-keyboard--full .nice-touch-keyboard-row:first-child .nice-touch-keyboard-key--fn{background:var(--nice-bg-fn-dark, #4b5563)}}@media (prefers-reduced-motion: reduce){.nice-touch-keyboard-key{transition:none}.nice-touch-keyboard-cursor{animation:none;opacity:1}}.nice-touch-menu-trigger{display:inline-block;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.nice-touch-menu-trigger.disabled{opacity:.6;pointer-events:none}.nice-touch-menu-popover{position:fixed;z-index:9999;min-width:200px;max-width:280px;padding:.5rem;background:var(--nice-bg-primary, #ffffff);border:1px solid var(--nice-border-color, #e5e7eb);border-radius:var(--nice-radius-lg, 12px);box-shadow:var(--nice-shadow-xl, 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04));animation:nice-menu-appear .15s ease-out}@keyframes nice-menu-appear{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}.nice-touch-menu-submenu{position:absolute}.nice-touch-menu-item{display:flex;align-items:center;gap:.75rem;width:100%;min-height:44px;padding:.75rem 1rem;border:none;border-radius:var(--nice-radius-md, 8px);background:transparent;color:var(--nice-text-primary, #1f2937);font-size:1rem;font-family:inherit;text-align:left;cursor:pointer;transition:background-color .1s}.nice-touch-menu-item:hover,.nice-touch-menu-item:focus,.nice-touch-menu-item.active{background:var(--nice-bg-hover, #f3f4f6);outline:none}.nice-touch-menu-item:active{background:var(--nice-bg-active, #e5e7eb)}.nice-touch-menu-item.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.nice-touch-menu-item.danger{color:var(--nice-danger, #ef4444)}.nice-touch-menu-item.danger:hover{background:var(--nice-danger-light, #fee2e2)}.nice-touch-menu-item-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:1.125rem}.nice-touch-menu-item-label{flex:1}.nice-touch-menu-item-shortcut{font-size:.75rem;color:var(--nice-text-muted, #9ca3af)}.nice-touch-menu-item-arrow{font-size:1.25rem;color:var(--nice-text-muted, #9ca3af)}.nice-touch-menu-divider{height:1px;margin:.25rem .5rem;background:var(--nice-border-color, #e5e7eb)}.nice-action-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9998;display:flex;flex-direction:column;justify-content:flex-end;background:#0006;animation:nice-backdrop-appear .2s ease-out}@keyframes nice-backdrop-appear{0%{opacity:0}to{opacity:1}}.nice-action-sheet{display:flex;flex-direction:column;gap:.5rem;padding:.75rem;padding-bottom:calc(.75rem + env(safe-area-inset-bottom,0));animation:nice-sheet-slide .3s ease-out}@keyframes nice-sheet-slide{0%{transform:translateY(100%)}to{transform:translateY(0)}}.nice-action-sheet-content{background:var(--nice-bg-primary, #ffffff);border-radius:var(--nice-radius-xl, 16px);overflow:hidden}.nice-action-sheet-title{padding:1rem;font-size:.8125rem;font-weight:500;color:var(--nice-text-muted, #9ca3af);text-align:center;border-bottom:1px solid var(--nice-border-color, #e5e7eb)}.nice-action-sheet-item{display:flex;align-items:center;justify-content:center;gap:.75rem;width:100%;min-height:56px;padding:1rem;border:none;background:transparent;color:var(--nice-primary, #3b82f6);font-size:1.125rem;font-family:inherit;cursor:pointer;transition:background-color .1s}.nice-action-sheet-item:not(:last-child){border-bottom:1px solid var(--nice-border-color, #e5e7eb)}.nice-action-sheet-item:hover,.nice-action-sheet-item:focus{background:var(--nice-bg-hover, #f3f4f6);outline:none}.nice-action-sheet-item:active{background:var(--nice-bg-active, #e5e7eb)}.nice-action-sheet-item.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.nice-action-sheet-item.danger{color:var(--nice-danger, #ef4444)}.nice-action-sheet-item-icon{font-size:1.25rem}.nice-action-sheet-item-label{font-weight:500}.nice-action-sheet-cancel{width:100%;min-height:56px;padding:1rem;border:none;border-radius:var(--nice-radius-xl, 16px);background:var(--nice-bg-primary, #ffffff);color:var(--nice-primary, #3b82f6);font-size:1.125rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background-color .1s}.nice-action-sheet-cancel:hover,.nice-action-sheet-cancel:focus{background:var(--nice-bg-hover, #f3f4f6);outline:none}.nice-action-sheet-cancel:active{background:var(--nice-bg-active, #e5e7eb)}@media (max-width: 480px){.nice-touch-menu-popover{min-width:180px;max-width:calc(100vw - 32px)}.nice-touch-menu-item{min-height:48px;padding:.875rem 1rem}.nice-action-sheet-item,.nice-action-sheet-cancel{min-height:52px}}@media (prefers-color-scheme: dark){.nice-touch-menu-popover{background:var(--nice-bg-primary-dark, #1f2937);border-color:var(--nice-border-color-dark, #374151)}.nice-touch-menu-item{color:var(--nice-text-primary-dark, #f9fafb)}.nice-touch-menu-item:hover,.nice-touch-menu-item:focus,.nice-touch-menu-item.active{background:var(--nice-bg-hover-dark, #374151)}.nice-touch-menu-item:active{background:var(--nice-bg-active-dark, #4b5563)}.nice-touch-menu-divider{background:var(--nice-border-color-dark, #374151)}.nice-action-sheet-backdrop{background:#0009}.nice-action-sheet-content,.nice-action-sheet-cancel{background:var(--nice-bg-primary-dark, #1f2937)}.nice-action-sheet-title{color:var(--nice-text-muted-dark, #9ca3af);border-bottom-color:var(--nice-border-color-dark, #374151)}.nice-action-sheet-item{color:var(--nice-primary-light, #60a5fa);border-bottom-color:var(--nice-border-color-dark, #374151)}.nice-action-sheet-item:hover,.nice-action-sheet-cancel:hover{background:var(--nice-bg-hover-dark, #374151)}.nice-action-sheet-cancel{color:var(--nice-primary-light, #60a5fa)}}@media (prefers-reduced-motion: reduce){.nice-touch-menu-popover,.nice-action-sheet-backdrop,.nice-action-sheet{animation:none}.nice-touch-menu-item,.nice-action-sheet-item,.nice-action-sheet-cancel{transition:none}}.nice-touch-table-container{position:relative;width:100%;background:var(--nice-bg-primary, #ffffff);border-radius:var(--nice-radius-md, 8px);border:1px solid var(--nice-border-color, #e5e7eb);overflow:hidden}.nice-touch-table-container.loading{pointer-events:none}.nice-touch-table-scroll{width:100%;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch;scrollbar-width:thin}.nice-touch-table-scroll::-webkit-scrollbar{height:6px}.nice-touch-table-scroll::-webkit-scrollbar-track{background:var(--nice-bg-secondary, #f3f4f6)}.nice-touch-table-scroll::-webkit-scrollbar-thumb{background:var(--nice-border-color, #d1d5db);border-radius:3px}.nice-touch-table{width:100%;min-width:max-content;border-collapse:collapse;table-layout:fixed}.nice-touch-table-head{position:sticky;top:0;z-index:10;background:var(--nice-bg-secondary, #f9fafb)}.nice-touch-table-header{padding:.875rem 1rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--nice-text-secondary, #6b7280);text-align:left;white-space:nowrap;border-bottom:1px solid var(--nice-border-color, #e5e7eb);-webkit-user-select:none;user-select:none}.nice-touch-table-header.sticky{position:sticky;left:0;z-index:11;background:var(--nice-bg-secondary, #f9fafb);box-shadow:2px 0 4px #0000000d}.nice-touch-table-header.sortable{cursor:pointer}.nice-touch-table-header.sortable:hover{background:var(--nice-bg-hover, #f3f4f6)}.nice-touch-table-header .header-content{display:inline-flex;align-items:center;gap:.5rem}.nice-touch-table-header .sort-indicator{font-size:.875rem;color:var(--nice-primary, #3b82f6)}.nice-touch-table-header--checkbox{width:48px;padding:.875rem;text-align:center}.nice-touch-table-header--checkbox input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--nice-primary, #3b82f6)}.nice-touch-table-body{position:relative}.nice-touch-table-row{position:relative;background:var(--nice-bg-primary, #ffffff);transition:background-color .15s}.nice-touch-table-row:hover{background:var(--nice-bg-hover, #f9fafb)}.nice-touch-table-row.selected{background:var(--nice-primary-light, #dbeafe)}.nice-touch-table-row.swiping{-webkit-user-select:none;user-select:none}.nice-touch-table-row-content{display:table-row;width:100%}.nice-touch-table-cell{padding:1rem;font-size:.9375rem;color:var(--nice-text-primary, #1f2937);border-bottom:1px solid var(--nice-border-color, #e5e7eb);vertical-align:middle}.nice-touch-table-cell.sticky{position:sticky;left:0;z-index:5;background:inherit;box-shadow:2px 0 4px #0000000d}.nice-touch-table-cell--checkbox{width:48px;padding:1rem;text-align:center}.nice-touch-table-cell--checkbox input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:var(--nice-primary, #3b82f6)}.nice-touch-table-actions{position:absolute;top:0;bottom:0;display:flex;align-items:stretch;z-index:4}.nice-touch-table-actions--left{left:0;transform:translate(-100%)}.nice-touch-table-actions--right{right:0;transform:translate(100%)}.nice-touch-table-action{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;border:none;cursor:pointer;font-family:inherit;transition:opacity .1s}.nice-touch-table-action:hover{opacity:.9}.nice-touch-table-action .action-icon{font-size:1.25rem}.nice-touch-table-action .action-label{font-size:.6875rem;font-weight:500;text-transform:uppercase}.nice-touch-table-empty{background:var(--nice-bg-primary, #ffffff)}.nice-touch-table-empty td{padding:3rem 1rem;text-align:center;color:var(--nice-text-muted, #9ca3af);font-size:.9375rem}.nice-touch-table-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#fffc;z-index:20}.nice-touch-table-spinner{width:32px;height:32px;border:3px solid var(--nice-border-color, #e5e7eb);border-top-color:var(--nice-primary, #3b82f6);border-radius:50%;animation:nice-table-spin .8s linear infinite}@keyframes nice-table-spin{to{transform:rotate(360deg)}}@media (max-width: 480px){.nice-touch-table-header{padding:.75rem;font-size:.6875rem}.nice-touch-table-cell{padding:.875rem .75rem;font-size:.875rem}.nice-touch-table-action{gap:.125rem}.nice-touch-table-action .action-icon{font-size:1rem}.nice-touch-table-action .action-label{font-size:.5625rem}}@media (prefers-color-scheme: dark){.nice-touch-table-container{background:var(--nice-bg-primary-dark, #111827);border-color:var(--nice-border-color-dark, #374151)}.nice-touch-table-scroll::-webkit-scrollbar-track{background:var(--nice-bg-secondary-dark, #1f2937)}.nice-touch-table-scroll::-webkit-scrollbar-thumb{background:var(--nice-border-color-dark, #4b5563)}.nice-touch-table-head,.nice-touch-table-header.sticky{background:var(--nice-bg-secondary-dark, #1f2937)}.nice-touch-table-header{color:var(--nice-text-secondary-dark, #9ca3af);border-bottom-color:var(--nice-border-color-dark, #374151)}.nice-touch-table-header.sortable:hover{background:var(--nice-bg-hover-dark, #374151)}.nice-touch-table-row{background:var(--nice-bg-primary-dark, #111827)}.nice-touch-table-row:hover{background:var(--nice-bg-hover-dark, #1f2937)}.nice-touch-table-row.selected{background:var(--nice-primary-dark, #1e40af)}.nice-touch-table-cell{color:var(--nice-text-primary-dark, #f9fafb);border-bottom-color:var(--nice-border-color-dark, #374151)}.nice-touch-table-empty td{color:var(--nice-text-muted-dark, #6b7280)}.nice-touch-table-loading{background:#111827cc}.nice-touch-table-spinner{border-color:var(--nice-border-color-dark, #374151);border-top-color:var(--nice-primary, #3b82f6)}}@media (prefers-reduced-motion: reduce){.nice-touch-table-row,.nice-touch-table-row-content,.nice-touch-table-action{transition:none}.nice-touch-table-spinner{animation:none}}.nice-touch-form{display:flex;flex-direction:column;gap:1.25rem}.nice-touch-form.disabled{opacity:.6;pointer-events:none}.nice-touch-form.submitting{pointer-events:none}.nice-touch-field{display:flex;flex-direction:column;gap:.5rem}.nice-touch-field.disabled{opacity:.6}.nice-touch-field-label{display:flex;align-items:center;gap:.25rem;font-size:.875rem;font-weight:500;color:var(--nice-text-secondary, #374151)}.nice-touch-field-label .required-indicator{color:var(--nice-danger, #ef4444)}.nice-touch-field-input-wrapper{position:relative;display:flex;align-items:center}.nice-touch-field-input{width:100%;min-height:52px;padding:.875rem 1rem;border:2px solid var(--nice-border-color, #d1d5db);border-radius:var(--nice-radius-lg, 12px);background:var(--nice-bg-primary, #ffffff);color:var(--nice-text-primary, #1f2937);font-size:1rem;font-family:inherit;transition:border-color .15s,box-shadow .15s}.nice-touch-field-input::placeholder{color:var(--nice-text-muted, #9ca3af)}.nice-touch-field-input:focus{outline:none;border-color:var(--nice-primary, #3b82f6);box-shadow:0 0 0 3px var(--nice-primary-light, rgba(59, 130, 246, .2))}.nice-touch-field-input:disabled{background:var(--nice-bg-secondary, #f3f4f6);cursor:not-allowed}.nice-touch-field-input:read-only{background:var(--nice-bg-secondary, #f3f4f6)}.nice-touch-field-input-wrapper:has(.nice-touch-field-icon.left) .nice-touch-field-input{padding-left:3rem}.nice-touch-field-input-wrapper:has(.nice-touch-field-icon.right) .nice-touch-field-input{padding-right:3rem}.nice-touch-field-icon{position:absolute;display:flex;align-items:center;justify-content:center;width:44px;height:44px;color:var(--nice-text-muted, #9ca3af);pointer-events:none}.nice-touch-field-icon.left{left:4px}.nice-touch-field-icon.right{right:4px}.nice-touch-field.error .nice-touch-field-input{border-color:var(--nice-danger, #ef4444)}.nice-touch-field.error .nice-touch-field-input:focus{box-shadow:0 0 0 3px var(--nice-danger-light, rgba(239, 68, 68, .2))}.nice-touch-field-helper,.nice-touch-field-error{font-size:.8125rem;padding-left:.25rem}.nice-touch-field-helper{color:var(--nice-text-muted, #6b7280)}.nice-touch-field-error{color:var(--nice-danger, #ef4444);font-weight:500}.nice-touch-submit{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:.875rem 1.5rem;border:none;border-radius:var(--nice-radius-lg, 12px);background:var(--nice-primary, #3b82f6);color:#fff;font-size:1.0625rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background-color .15s,transform .1s}.nice-touch-submit:hover:not(:disabled){background:var(--nice-primary-hover, #2563eb)}.nice-touch-submit:active:not(:disabled){transform:scale(.98)}.nice-touch-submit:disabled{opacity:.6;cursor:not-allowed}.nice-touch-submit.full-width{width:100%}.nice-touch-submit.loading{color:transparent}.nice-touch-submit-spinner{position:absolute;width:24px;height:24px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:nice-form-spin .8s linear infinite}@keyframes nice-form-spin{to{transform:rotate(360deg)}}.nice-touch-navbar{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;background:var(--nice-bg-secondary, #f3f4f6);border-top:1px solid var(--nice-border-color, #e5e7eb)}.nice-touch-navbar-arrows{display:flex;gap:.5rem}.nice-touch-navbar-arrows button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:36px;border:none;border-radius:var(--nice-radius-md, 8px);background:var(--nice-bg-primary, #ffffff);color:var(--nice-primary, #3b82f6);font-size:1.5rem;font-weight:700;cursor:pointer;transition:background-color .1s}.nice-touch-navbar-arrows button:hover{background:var(--nice-bg-hover, #e5e7eb)}.nice-touch-navbar-arrows button:active{background:var(--nice-bg-active, #d1d5db)}.nice-touch-navbar-done{padding:.5rem 1rem;border:none;border-radius:var(--nice-radius-md, 8px);background:transparent;color:var(--nice-primary, #3b82f6);font-size:1rem;font-weight:600;font-family:inherit;cursor:pointer}.nice-touch-navbar-done:hover{background:var(--nice-bg-primary, #ffffff)}@media (max-width: 480px){.nice-touch-form{gap:1rem}.nice-touch-field-input{min-height:48px;padding:.75rem .875rem;font-size:1rem}.nice-touch-submit{min-height:48px;font-size:1rem}}@media (prefers-color-scheme: dark){.nice-touch-field-label{color:var(--nice-text-secondary-dark, #d1d5db)}.nice-touch-field-input{background:var(--nice-bg-primary-dark, #111827);border-color:var(--nice-border-color-dark, #374151);color:var(--nice-text-primary-dark, #f9fafb)}.nice-touch-field-input::placeholder{color:var(--nice-text-muted-dark, #6b7280)}.nice-touch-field-input:focus{border-color:var(--nice-primary, #3b82f6)}.nice-touch-field-input:disabled,.nice-touch-field-input:read-only{background:var(--nice-bg-secondary-dark, #1f2937)}.nice-touch-field-helper{color:var(--nice-text-muted-dark, #9ca3af)}.nice-touch-navbar{background:var(--nice-bg-secondary-dark, #1f2937);border-top-color:var(--nice-border-color-dark, #374151)}.nice-touch-navbar-arrows button{background:var(--nice-bg-primary-dark, #111827);color:var(--nice-primary-light, #60a5fa)}.nice-touch-navbar-arrows button:hover{background:var(--nice-bg-hover-dark, #374151)}.nice-touch-navbar-done{color:var(--nice-primary-light, #60a5fa)}.nice-touch-navbar-done:hover{background:var(--nice-bg-primary-dark, #111827)}}@media (prefers-reduced-motion: reduce){.nice-touch-field-input,.nice-touch-submit,.nice-touch-navbar-arrows button{transition:none}.nice-touch-submit-spinner{animation:none}}
package/package.json ADDED
@@ -0,0 +1,66 @@
1
+ {
2
+ "name": "@nice2dev/ui-mobile",
3
+ "version": "1.0.10",
4
+ "description": "Nice2Dev UI Mobile - Touch-first React components: BottomSheet, MobileTabs, TouchKeyboard, SwipeActions, Gestures, Haptics, ImageGallery and more",
5
+ "type": "module",
6
+ "sideEffects": [
7
+ "*.css"
8
+ ],
9
+ "main": "./dist/index.cjs",
10
+ "module": "./dist/index.mjs",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "import": "./dist/index.mjs",
15
+ "require": "./dist/index.cjs",
16
+ "types": "./dist/index.d.ts"
17
+ },
18
+ "./style.css": "./dist/style.css"
19
+ },
20
+ "files": [
21
+ "dist",
22
+ "README.md"
23
+ ],
24
+ "scripts": {
25
+ "build": "vite build",
26
+ "build:types": "tsc --emitDeclarationOnly",
27
+ "dev": "vite build --watch",
28
+ "lint": "eslint src --ext .ts,.tsx",
29
+ "test": "vitest run --passWithNoTests",
30
+ "test:watch": "vitest"
31
+ },
32
+ "dependencies": {},
33
+ "peerDependencies": {
34
+ "react": ">=17.0.0",
35
+ "react-dom": ">=17.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "@testing-library/react": "^14.1.0",
39
+ "@types/react": "^18.2.0",
40
+ "@types/react-dom": "^18.2.0",
41
+ "react": "^18.2.0",
42
+ "react-dom": "^18.2.0",
43
+ "typescript": "^5.3.0",
44
+ "vite": "^5.0.0",
45
+ "vite-plugin-dts": "^4.5.4",
46
+ "vitest": "^4.1.0"
47
+ },
48
+ "keywords": [
49
+ "mobile",
50
+ "touch",
51
+ "responsive",
52
+ "bottom-sheet",
53
+ "swipe",
54
+ "gestures",
55
+ "haptics",
56
+ "nice2dev",
57
+ "react"
58
+ ],
59
+ "author": "Nice2Dev",
60
+ "license": "MIT",
61
+ "repository": {
62
+ "type": "git",
63
+ "url": "https://github.com/nicetoDev/nicetoDev-ui.git",
64
+ "directory": "packages/ui-mobile"
65
+ }
66
+ }