.pwa-install-banner-item{width:100%;height:100%;display:flex;align-items:center;background:linear-gradient(135deg,#1ba20214,#22c55e14);border-left:3px solid #1ba202}.pwa-banner-content{display:flex;align-items:center;gap:16px;max-width:1400px;margin:0 auto;width:100%;height:100%;padding:0 24px}.pwa-banner-content svg{flex-shrink:0;color:#1ba202;opacity:.9}@media(max-width:768px){.pwa-banner-content{padding:0 16px;gap:12px}}@media(max-width:480px){.pwa-banner-content{padding:0 12px;gap:10px}}.pwa-banner-text{flex:1;font-size:13px;font-weight:500;color:#000;line-height:1.5;letter-spacing:-.01em}@media(max-width:480px){.pwa-banner-text{font-size:12px}}.pwa-banner-action-button{padding:6px 16px;background:#1ba202;color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;letter-spacing:-.01em;box-shadow:0 2px 4px #1ba20233}.pwa-banner-action-button:hover{background:#159001;transform:translateY(-1px);box-shadow:0 4px 8px #1ba2024d}.pwa-banner-action-button:active{transform:translateY(0);box-shadow:0 2px 4px #1ba20233}@media(max-width:480px){.pwa-banner-action-button{padding:5px 14px;font-size:12px}}.pwa-install-popup-backdrop{position:fixed;inset:0;background:#00000080;z-index:3000;animation:pwaFadeIn .3s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.pwa-install-popup{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;padding:32px 24px 24px;z-index:3001;max-width:450px;width:calc(100% - 32px);box-shadow:0 8px 32px #0003;animation:pwaPopupSlideIn .3s cubic-bezier(.4,0,.2,1);border:1px solid #e0e0e0}@media(max-width:480px){.pwa-install-popup{padding:24px 20px 20px;max-width:calc(100% - 24px)}}.popup-close-button{position:absolute;top:12px;right:12px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:#f5f5f5;border-radius:8px;cursor:pointer;color:#666;transition:all .2s ease;padding:0}.popup-close-button:hover{background:#e8e8e8;color:#000}.popup-icon{display:flex;align-items:center;justify-content:center;width:64px;height:64px;background:#1ba2021a;border-radius:50%;margin:0 auto 20px;color:#1ba202}.popup-icon svg{animation:pwaPulse 2s ease-in-out infinite}.popup-title{font-size:22px;font-weight:600;color:#000;text-align:center;margin:0 0 12px;line-height:1.3}@media(max-width:480px){.popup-title{font-size:20px}}.popup-message{font-size:15px;color:#666;text-align:center;margin:0 0 24px;line-height:1.5}@media(max-width:480px){.popup-message{font-size:14px}}.popup-instructions{background:#f5f5f5;border-radius:12px;padding:20px;margin:0 0 24px}.instruction-step{display:flex;align-items:flex-start;gap:16px;margin-bottom:20px}.instruction-step:last-child{margin-bottom:0}@media(max-width:480px){.instruction-step{gap:12px;margin-bottom:16px}}.step-number{flex-shrink:0;width:28px;height:28px;background:#1ba202;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600}@media(max-width:480px){.step-number{width:24px;height:24px;font-size:12px}}.step-content{flex:1;padding-top:2px}.step-content p{font-size:14px;color:#666;line-height:1.6;margin:0}.step-content p strong{color:#000;font-weight:600}@media(max-width:480px){.step-content p{font-size:13px}}.icon-placeholder{display:inline-block;font-size:16px;margin:0 4px;color:#000}.popup-actions{display:flex;flex-direction:column;gap:12px}.popup-button{padding:12px 24px;border:none;border-radius:10px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s ease;width:100%}.popup-button:disabled{opacity:.6;cursor:not-allowed}@media(max-width:480px){.popup-button{padding:10px 20px;font-size:14px}}.popup-button-primary{background:#1ba202;color:#fff}.popup-button-primary:hover:not(:disabled){background:#159001;transform:translateY(-1px);box-shadow:0 4px 12px #1ba2024d}.popup-button-primary:active:not(:disabled){transform:translateY(0)}.popup-button-secondary{background:#f5f5f5;color:#666;border:1px solid #e0e0e0}.popup-button-secondary:hover{background:#e8e8e8;color:#000;border-color:#ccc}@keyframes pwaFadeIn{0%{opacity:0}to{opacity:1}}@keyframes pwaPopupSlideIn{0%{transform:translate(-50%,-48%);opacity:0;scale:.95}to{transform:translate(-50%,-50%);opacity:1;scale:1}}@keyframes pwaPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.dummy-banner-item{width:100%;height:100%;display:flex;align-items:center;background:linear-gradient(135deg,#fa7e1914,#ffc10714);border-left:3px solid #fa7e19;position:relative;overflow:hidden}.dummy-banner-item:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(250,126,25,.03) 50%,transparent 100%);animation:shimmer 3s ease-in-out infinite}.banner-content{display:flex;align-items:center;gap:16px;max-width:1400px;margin:0 auto;width:100%;height:100%;padding:0 24px;position:relative;z-index:1}@media(max-width:768px){.banner-content{padding:0 16px;gap:12px}}@media(max-width:480px){.banner-content{padding:0 12px;gap:10px;flex-wrap:wrap}}.banner-icon-wrapper{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:#fa7e1926;border-radius:8px;flex-shrink:0;animation:pulse-icon 2s ease-in-out infinite}.banner-icon{color:#fa7e19;width:18px;height:18px;animation:shake 3s ease-in-out infinite}.banner-text-wrapper{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}@media(max-width:480px){.banner-text-wrapper{width:100%;order:2}}.banner-title{font-size:11px;font-weight:600;color:#fa7e19;line-height:1.4;letter-spacing:-.01em;text-transform:uppercase;opacity:.9}@media(max-width:480px){.banner-title{font-size:10px}}.banner-text{font-size:13px;font-weight:500;color:#000;line-height:1.5;letter-spacing:-.01em}.banner-text strong{font-weight:600;color:#000}@media(max-width:768px){.banner-text{font-size:12px}}@media(max-width:480px){.banner-text{font-size:11px;line-height:1.4}}.banner-time-indicator{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#fa7e191a;border-radius:6px;flex-shrink:0;border:1px solid rgba(250,126,25,.2)}.banner-time-indicator svg{width:14px;height:14px;color:#fa7e19;flex-shrink:0}.banner-time-indicator span{font-size:12px;font-weight:600;color:#fa7e19;white-space:nowrap;letter-spacing:-.01em}@media(max-width:768px){.banner-time-indicator{padding:5px 10px;gap:5px}.banner-time-indicator svg{width:12px;height:12px}.banner-time-indicator span{font-size:11px}}@media(max-width:480px){.banner-time-indicator{width:100%;order:1;justify-content:center;padding:6px 12px}}@keyframes shimmer{0%,to{transform:translate(-100%)}50%{transform:translate(100%)}}@keyframes pulse-icon{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.9}}@keyframes shake{0%,to{transform:rotate(0)}25%{transform:rotate(-5deg)}75%{transform:rotate(5deg)}}.banner-container{position:fixed;top:0;left:0;right:0;z-index:2000;background:#fff;border-bottom:1px solid #e0e0e0;display:flex;align-items:center;min-height:48px;overflow:hidden}@media(max-width:768px){.banner-container{min-height:44px}}@media(max-width:480px){.banner-container{min-height:42px}}.banner-wrapper{flex:1;overflow:hidden;position:relative;height:100%}.banner-slider{display:flex;transition:transform .4s cubic-bezier(.4,0,.2,1);height:100%;align-items:center}.banner-slide{min-width:100%;flex-shrink:0;height:100%;display:flex;align-items:center;justify-content:center}.banner-nav-button{display:flex;align-items:center;justify-content:center;width:40px;height:100%;background:transparent;border:none;cursor:pointer;color:#666;transition:all .2s ease;flex-shrink:0;padding:0;z-index:10}.banner-nav-button:hover{background:#f5f5f5;color:#000}.banner-nav-button:active{transform:scale(.95)}.banner-nav-button svg{width:18px;height:18px}@media(max-width:480px){.banner-nav-button{width:36px}.banner-nav-button svg{width:16px;height:16px}}.banner-nav-button-left{border-right:1px solid #e0e0e0}.banner-nav-button-right{border-left:1px solid #e0e0e0}.banner-indicators{position:absolute;bottom:4px;left:50%;transform:translate(-50%);display:flex;gap:6px;z-index:10;padding:0 8px}.banner-indicator{width:6px;height:6px;border-radius:50%;border:none;background:#999;cursor:pointer;transition:all .2s ease;padding:0;opacity:.4}.banner-indicator:hover{opacity:.7;transform:scale(1.2)}.banner-indicator.active{opacity:1;background:#fa7e19;width:20px;border-radius:3px}.tab-bar-container{display:flex;align-items:flex-end;width:100%;background:#fff;border-bottom:1px solid #f8f8f8;padding:10px 16px 0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.tab-bar-container::-webkit-scrollbar{display:none}[data-theme=dark] .tab-bar-container{background:#252525;border-bottom-color:#333}.nav-controls{display:flex;align-items:center;gap:2px;margin-right:12px;margin-bottom:4px;flex-shrink:0}.nav-button{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;border-radius:6px;cursor:pointer;color:#666;transition:all .2s cubic-bezier(.4,0,.2,1);padding:0}.nav-button:hover{background:#f0f0f0;color:#000}.nav-button:active{background:#e0e0e0;transform:scale(.95)}[data-theme=dark] .nav-button{color:#b0b0b0}[data-theme=dark] .nav-button:hover{background:#3a3a3a;color:#fff}[data-theme=dark] .nav-button:active{background:#444}.nav-button.theme-toggle{margin-left:4px}.nav-button.install-button{margin-left:auto;margin-bottom:4px;flex-shrink:0;color:#555;gap:5px}.nav-button.install-button:hover{background:#f0f0f0;color:#1ba202}[data-theme=dark] .nav-button.install-button{color:#b0b0b0}[data-theme=dark] .nav-button.install-button:hover{background:#3a3a3a;color:#4ec94e}.nav-button svg{display:block}.tab-bar{display:flex;align-items:flex-end;gap:4px;min-width:fit-content;height:38px}.tab{display:flex;align-items:center;min-width:140px;max-width:260px;height:34px;border:1px solid transparent;border-radius:10px 10px 0 0;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;margin-bottom:-1px;background:#f5f5f5}.tab:hover:not(.active){background:#eee;border-color:#d0d0d0;transform:translateY(-1px)}.tab.active{background:#fff;z-index:2;height:36px;margin-bottom:0;box-shadow:0 -2px 12px #00000014;border-bottom-color:transparent}[data-theme=dark] .tab.active{background:#333;box-shadow:0 -2px 12px #0006}[data-theme=dark] .tab{background:#2d2d2d}[data-theme=dark] .tab:hover:not(.active){background:#353535;border-color:#444}.tab.first{border-top-left-radius:10px}.tab.last{border-top-right-radius:10px}.tab-content{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0 14px;gap:10px;height:100%}.tab-title{font-size:13px;font-weight:500;color:#666;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;transition:color .25s ease;letter-spacing:-.01em;line-height:1.4}.tab.active .tab-title{color:#000;font-weight:600}[data-theme=dark] .tab.active .tab-title{color:#f0f0f0}[data-theme=dark] .tab-title{color:#909090}.tab-actions{display:flex;align-items:center;gap:6px;opacity:0;transition:opacity .25s ease,transform .2s ease}.tab:hover .tab-actions,.tab.active .tab-actions{opacity:1}[data-theme=dark] .tab-actions .tab-close{color:gray}[data-theme=dark] .tab-actions .tab-close:hover{background:#444;color:#e0e0e0}.tab-close{display:flex;align-items:center;justify-content:center;width:12px;height:12px;border:none;background:transparent;border-radius:10px;cursor:pointer;color:#999;transition:all .2s cubic-bezier(.4,0,.2,1);padding:0;flex-shrink:0}.tab-close:hover{background:#e0e0e0;color:#262626;transform:scale(1.05)}.tab-close:active{transform:scale(.9);background:#d0d0d0}.tab-close .tab-icon{width:100%;height:100%;display:block;stroke:currentColor}.new-tab-button{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;background-color:transparent;border-radius:8px;cursor:pointer;color:#666;transition:all .25s cubic-bezier(.4,0,.2,1);margin-left:6px;margin-bottom:-1px;flex-shrink:0}.new-tab-button:hover{background:#eee;color:#1ba202;transform:translateY(-1px) scale(1.02);box-shadow:0 2px 8px #1ba20226}[data-theme=dark] .new-tab-button:hover{background:#3a3a3a}[data-theme=dark] .new-tab-button{color:#909090}.new-tab-button:active{transform:translateY(0) scale(.98)}.new-tab-button .new-tab-icon{width:13px;height:13px;display:block;stroke:currentColor;transition:transform .2s ease}.new-tab-button:hover .new-tab-icon{transform:rotate(90deg)}@media(max-width:768px){.tab-bar-container{padding:8px 12px 0}.nav-controls{gap:1px;margin-right:8px}.nav-button{width:26px;height:26px}.nav-button svg{width:14px;height:14px}.tab-bar{height:36px;gap:3px}.tab{min-width:110px;max-width:180px;height:32px}.tab.active{height:34px}.tab-content{padding:0 10px;gap:8px}.tab-title{font-size:12px}.tab-close{width:18px;height:18px}.tab-close .tab-icon{width:11px;height:11px}.new-tab-button{width:32px;height:32px;margin-left:4px}.new-tab-button .new-tab-icon{width:13px;height:13px}}.module-selector{min-height:100%;padding:5rem 2rem;display:flex;align-items:flex-start;justify-content:center;transition:background-color .3s ease;background:#fff}[data-theme=dark] .module-selector{background:#1a1a1a}.module-selector .module-selector-container{max-width:680px;width:100%}.module-selector .module-selector-header{margin-bottom:3rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;position:relative}.module-selector .module-selector-header .module-selector-title{font-size:1.75rem;font-weight:600;color:#000;margin:0;letter-spacing:-.01em;transition:color .3s ease}[data-theme=dark] .module-selector .module-selector-header .module-selector-title{color:#f0f0f0}.module-selector .module-selector-theme-toggle{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:#f0f0f0;border-radius:10px;cursor:pointer;color:#333;transition:all .2s ease}.module-selector .module-selector-theme-toggle:hover{background:#e0e0e0;color:#000}.module-selector .module-selector-theme-toggle:active{transform:scale(.96)}[data-theme=dark] .module-selector .module-selector-theme-toggle{background:#333;color:#e0e0e0}[data-theme=dark] .module-selector .module-selector-theme-toggle:hover{background:#444;color:#fff}.module-selector .module-selector-theme-toggle svg{display:block}.module-selector .modules-list{display:flex;flex-direction:column;gap:1rem}.module-selector .module-card{background:#fff;border:1px solid #e0e0e0;border-radius:12px;padding:1.5rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:1.25rem;position:relative}[data-theme=dark] .module-selector .module-card{background:#252525;border-color:#3a3a3a}.module-selector .module-card:hover{border-color:#000;box-shadow:0 2px 8px #00000014}[data-theme=dark] .module-selector .module-card:hover{border-color:#555;box-shadow:0 2px 12px #0000004d}.module-selector .module-card:hover .module-action{opacity:1;transform:translate(2px)}.module-selector .module-card .module-icon-wrapper{flex-shrink:0;width:48px;height:48px;display:flex;align-items:center;justify-content:center;color:#000;transition:color .3s ease}[data-theme=dark] .module-selector .module-card .module-icon-wrapper{color:#e0e0e0}.module-selector .module-card .module-content{flex:1;min-width:0}.module-selector .module-card .module-content .module-name{font-size:1rem;font-weight:600;color:#000;margin:0 0 .25rem;letter-spacing:-.01em;transition:color .3s ease}[data-theme=dark] .module-selector .module-card .module-content .module-name{color:#f0f0f0}.module-selector .module-card .module-content .module-description{font-size:.875rem;color:#666;margin:0 0 .5rem;line-height:1.4;transition:color .3s ease}[data-theme=dark] .module-selector .module-card .module-content .module-description{color:#a0a0a0}.module-selector .module-card .module-content .module-meta .module-host{font-size:.8125rem;color:#666;font-family:SF Mono,Monaco,Menlo,Courier New,monospace;transition:color .3s ease}[data-theme=dark] .module-selector .module-card .module-content .module-meta .module-host{color:gray}.module-selector .module-card .module-action{flex-shrink:0;color:#000;opacity:.4;transition:all .2s ease;display:flex;align-items:center}[data-theme=dark] .module-selector .module-card .module-action{color:#e0e0e0}@media(max-width:768px){.module-selector{padding:3rem 1.5rem}.module-selector .module-selector-header{margin-bottom:2rem}.module-selector .module-selector-header .module-selector-title{font-size:1.5rem}.module-selector .module-card{padding:1.25rem;gap:1rem}.module-selector .module-card .module-icon-wrapper{width:40px;height:40px}}.module-viewer{width:100%;height:100%;min-height:100%;position:relative;overflow:hidden;display:flex;flex-direction:column;flex:1}.module-viewer.hidden{display:none}.module-viewer .module-iframe{width:100%;height:100%;flex:1;min-height:0;border:none;display:block}.module-viewer-error{display:flex;align-items:center;justify-content:center;height:100%;color:#d32f2f;font-size:1.125rem}.module-viewer-error.hidden{display:none}.app{min-height:100vh;display:flex;flex-direction:column;background:#fff}[data-theme=dark] .app{background:#1a1a1a}.app.has-banner-container{padding-top:48px}@media(max-width:768px){.app.has-banner-container{padding-top:44px}}@media(max-width:480px){.app.has-banner-container{padding-top:42px}}.app-content{flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0}.page-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:2rem;color:#666}[data-theme=dark] .page-placeholder{color:#a0a0a0}.page-placeholder h2{font-size:1.5rem;font-weight:600;margin-bottom:.5rem;color:#000}[data-theme=dark] .page-placeholder h2{color:#e0e0e0}.page-placeholder p{font-size:1rem;color:#999}[data-theme=dark] .page-placeholder p{color:gray}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5}[data-theme=dark] body{background-color:#1a1a1a}#root{min-height:100vh}
