:root{--primary-color: #2196F3;--secondary-color: #FFC107;--background-color: #f5f5f5;--card-background: #f5f5f5;--text-color: #333333;--border-color: #e0e0e0;--success-color: #4CAF50;--warning-color: #FF9800;--error-color: #F44336}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;background-color:var(--background-color);color:var(--text-color);line-height:1.6}#app{min-height:100vh;display:flex;flex-direction:column}.ui5-bar{background-color:var(--primary-color)!important;color:#fff!important;box-shadow:0 2px 4px #0000001a}.ui5-bar .ui5-title{color:#fff!important}.ui5-bar .ui5-link{color:#fff!important;text-decoration:none}.ui5-bar .ui5-link:hover{text-decoration:underline}.header-links{display:flex;align-items:center;gap:8px}.header-delimiter{color:#fff;margin:0 8px;opacity:.7}.login-container{display:flex;justify-content:center;align-items:center;min-height:60vh;padding:20px}.login-content{padding:24px;text-align:center}.login-description{margin-bottom:24px}.login-description p{margin:8px 0;color:var(--text-color);line-height:1.5}.login-actions{display:flex;flex-direction:column;align-items:center;gap:16px}.demo-section{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border-color)}.demo-text{font-size:14px;color:var(--text-color);opacity:.8;margin:0}.login-required{display:flex;justify-content:center;align-items:center}.unauthorized-container{display:flex;justify-content:center;align-items:center;min-height:60vh;padding:20px}.unauthorized-container .ui5-card{max-width:500px;width:100%}.unauthorized-content{padding:24px;text-align:center}.unauthorized-description{margin-bottom:24px}.unauthorized-description p{margin:0 0 16px;line-height:1.6}.user-info-text{font-weight:500;color:var(--primary-color);background:#2196f31a;padding:12px;border-radius:8px;border-left:4px solid var(--primary-color)}.unauthorized-actions{display:flex;justify-content:center;gap:12px}.user-profile{display:inline-flex;align-items:center;gap:8px}.user-info{display:inline-flex;align-items:center;gap:8px;color:#ccc}.user-info ui5-button{--_ui5_button_base_color: #ccc !important;--_ui5_button_base_hover_color: white !important}.user-avatar{width:24px;height:24px;border-radius:50%;border:1px solid rgba(255,255,255,.3)}.user-name{color:#ccc;font-size:14px;font-weight:500}:host([media-range="M"]) .ui5-tc__content,:host([media-range="L"]) .ui5-tc__content{padding:1rem 0}.ui5-tc__content,:host([media-range="L"]) .ui5-tc__content{padding:1rem 0}.app-container{display:flex;flex-direction:column;min-height:100vh}.main-content{flex:1;margin:20px 0 0;width:100%;box-sizing:border-box}.constrained-wrapper{width:100%;max-width:800px;margin:0 auto 20px}.lake-tabs{width:100%!important;margin:0!important}.tab-container-wrapper ui5-tabcontainer{width:100%!important}.constrained-wrapper ui5-tabcontainer::part(content){padding:1em 0 0}.webcams-vertical{display:flex;flex-direction:column}.webcam-vertical-item{width:100%;max-width:1600px;margin:0 auto}.webcam-error{padding:20px;background:#ff00001a;border:1px solid rgba(255,0,0,.3);border-radius:8px;color:#ffffffe6;text-align:center}.ui5-card{background-color:var(--card-background);border-radius:4px;box-shadow:0 1px 3px #0000001a;margin-bottom:8px;overflow:hidden}.card-content{background-color:var(--card-background);display:flex;flex-direction:column;gap:8px}.ui5-input{width:100%;max-width:400px}.ui5-label{font-weight:500;margin-bottom:8px;display:block}.footer{padding:15px;text-align:center;background-color:#fff;border-top:1px solid var(--border-color)}.footer p{margin:0;color:var(--text-color);font-size:14px}@media (max-width: 768px){.main-content,.card-content{padding:16px}.greeting{margin-top:16px;padding:16px}}@media (max-width: 480px){.main-content{padding:12px}.card-content{padding:12px;gap:12px}}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.hello-world-container{animation:fadeIn .6s ease-out}.ui5-input:focus{outline:2px solid var(--primary-color);outline-offset:2px}.ui5-card:hover{box-shadow:0 4px 12px #00000026;transition:box-shadow .3s ease}.image-upload-section{margin-bottom:24px}.upload-method{margin-bottom:20px;padding:16px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--card-background)}.upload-method:last-child{margin-bottom:0}.image-input{width:100%;max-width:400px;padding:12px;border:2px dashed var(--border-color);border-radius:8px;background-color:var(--background-color);cursor:pointer;transition:border-color .3s ease}.image-input:hover{border-color:var(--primary-color)}.image-input:focus{outline:2px solid var(--primary-color);outline-offset:2px;border-color:var(--primary-color)}.url-input-container{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.url-input-container .ui5-input{flex:1;min-width:250px}.url-input-container .ui5-button{flex-shrink:0}.webcam-section{background:linear-gradient(135deg,#e3f2fd,#f3e5f5)}.webcam-footer{display:flex;justify-content:space-between;align-items:center;margin-top:6px;font-size:12px}.footer-left{color:#666;font-weight:500;text-decoration:none}.footer-right:hover{color:#888;text-decoration:none}.footer-right{color:#666;text-decoration:none}.footer-right:hover,.webcam-footer a:hover{color:#888;text-decoration:none}.webcam-footer .ui5-button{flex-shrink:0}.webcam-status{margin-top:16px;padding:12px;border-radius:6px;font-weight:500}.status-active{background-color:#4caf501a;color:var(--success-color);border:1px solid var(--success-color)}.status-inactive{background-color:#9e9e9e1a;color:#666;border:1px solid #ccc}.last-update{margin:8px 0 0;font-size:12px;font-weight:400;opacity:.8}.current-url{margin-top:12px;padding:8px;background-color:#ffffff1a;border-radius:4px;border:1px solid rgba(255,255,255,.2)}.url-label{margin:0 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;opacity:.7}.url-text{margin:0;font-size:10px;font-family:monospace;word-break:break-all;line-height:1.3;opacity:.9}.webcam-image-section{margin-top:8px;padding:8px;background-color:#ffffff80;border-radius:4px;border:1px solid rgba(255,255,255,.3)}.webcam-image-container{text-align:center}.webcam-image{max-width:100%;max-height:300px;border-radius:8px;box-shadow:0 2px 8px #0000001a;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.webcam-image:hover{transform:scale(1.02);box-shadow:0 4px 12px #0003}.webcam-image-hint{margin:8px 0 0;font-size:12px;color:#fffc;font-style:italic;text-align:right}.webcam-loading{display:flex;align-items:center;justify-content:center;padding:60px;background:#ffffff1a;border-radius:8px;border:2px dashed rgba(255,255,255,.3);min-height:200px}.loading-spinner{width:40px;height:40px;border:4px solid rgba(170,170,170,.3);border-top:4px solid rgba(170,170,170,.8);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.video-webcam-view{width:100%}.video-container{position:relative;width:100%;margin:8px 0;border-radius:4px;overflow:hidden;background:#000}.video-iframe{width:100%;height:450px;border:none;border-radius:4px}.video-player{width:100%;height:450px;border-radius:4px;background:#000}.video-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:300px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:4px;color:#fff;text-align:center}.video-placeholder p{margin:8px 0;font-size:16px}.video-link{display:inline-block;padding:12px 24px;background:#fff3;color:#fff;text-decoration:none;border-radius:6px;border:2px solid rgba(255,255,255,.3);transition:all .3s ease;font-weight:500}.video-link:hover{background:#ffffff4d;border-color:#ffffff80;transform:translateY(-2px);text-decoration:none;color:#fff}@media (max-width: 768px){.video-iframe{height:300px}}@media (max-width: 480px){.video-iframe{height:250px}}.windy-webcam-view{width:100%}.windy-container{position:relative;width:100%;margin:0;border-radius:6px;overflow:hidden;background:#f0f0f0;min-height:300px}.windy-container a[name=windy-webcam-timelapse-player]{display:block;width:100%;height:100%;text-decoration:none;color:#333;font-weight:500}@media (max-width: 768px){.windy-container{min-height:250px}}@media (max-width: 480px){.windy-container{min-height:200px}}.image-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:#000000e6;display:flex;justify-content:center;align-items:center;z-index:1000;cursor:pointer}.overlay-close-button{position:absolute;top:20px;right:20px;background:#fff3;border:2px solid rgba(255,255,255,.5);color:#fff;font-size:24px;width:50px;height:50px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease;z-index:1001}.overlay-close-button:hover{background:#ffffff4d}.overlay-image{max-width:95vw;max-height:85vh;object-fit:contain;border-radius:8px;box-shadow:0 8px 32px #00000080;cursor:default}.overlay-slideshow-controls{position:absolute;bottom:30px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:20px;background:#000000b3;padding:15px 25px;border-radius:25px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.overlay-nav-button{background:#aaa3;border:2px solid rgba(170,170,170,.4);border-radius:50%;width:50px;height:50px;color:#aaa;font-size:24px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.overlay-nav-button:hover{background:#aaaaaa4d;border-color:#aaa9;transform:scale(1.1)}.overlay-nav-button:active{transform:scale(.95)}.overlay-slide-counter{color:#aaa;font-size:16px;font-weight:500;min-width:60px;text-align:center;background:#aaaaaa1a;padding:8px 16px;border-radius:15px;border:1px solid rgba(170,170,170,.2)}.thumbnail-gallery{margin-top:8px}.thumbnail-container{background-color:#ffffff4d;border-radius:4px;padding:8px;border:1px solid rgba(255,255,255,.2)}.thumbnail-header{display:flex;align-items:flex-start;gap:12px;justify-content:center;position:relative}.thumbnail-grid{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;align-items:flex-start}.thumbnail-item{display:flex;flex-direction:column;align-items:center;gap:2px}.thumbnail-time{margin:0;font-size:10px;color:#aaa;font-weight:500;text-align:center;line-height:1}.thumbnail-image{width:60px;height:45px;object-fit:cover;border-radius:4px;border:2px solid rgba(255,255,255,.3);cursor:pointer;transition:all .2s ease;opacity:.8}.thumbnail-image:hover{border-color:var(--primary-color);opacity:1;transform:scale(1.1);box-shadow:0 2px 8px #0000004d}.thumbnail-image:active{transform:scale(.95)}.play-button{background:#aaaaaa26;border:1px solid rgba(170,170,170,.3);border-radius:50%;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:0;transition:all .3s ease;position:absolute;right:0;top:6px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 1px 4px #0000001a}.play-button:before{content:"";transition:all .2s ease}.play-button:not(.playing):before{width:0;height:0;border-left:8px solid #aaa;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:none;background:none;box-shadow:none;margin-left:0;transform:translate(2px)}.play-button.playing:before{width:2px;height:10px;background:#aaa;box-shadow:4px 0 #aaa;border:none;margin-left:0;transform:translate(-2px)}.play-button:hover{background:#aaaaaa40;border-color:#aaaaaa80;transform:scale(1.05);box-shadow:0 4px 12px #00000026}.play-button:hover:before{opacity:.9}.play-button:active{transform:scale(.95)}.image-display-section{margin-top:24px}.uploaded-image-container{text-align:center}.uploaded-image{max-width:100%;max-height:400px;border-radius:8px;box-shadow:0 2px 8px #0000001a;margin:16px 0}.image-info-header{margin-bottom:16px;padding:12px;background-color:var(--background-color);border-radius:6px;border-left:4px solid var(--primary-color)}.image-info-header p{margin:4px 0;font-size:14px}.image-name{color:var(--text-color)}.image-url{color:var(--text-color);word-break:break-all}.image-success{color:var(--success-color);font-weight:500;margin:16px 0;text-align:center}.no-image-placeholder{text-align:center;padding:40px 20px;background-color:var(--background-color);border-radius:8px;border:2px dashed var(--border-color)}.no-image-placeholder p{color:var(--text-color);margin:8px 0}.no-image-placeholder p:first-child{font-size:18px;margin-bottom:12px}.no-image-placeholder p:last-child{font-style:italic;font-size:14px}.web-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000c;display:flex;align-items:center;justify-content:center;z-index:10000}.web-overlay-content{background:#fff;border-radius:12px;width:90%;height:90%;max-width:1200px;max-height:800px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 10px 30px #0000004d}.web-overlay-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#f8f9fa;border-bottom:1px solid #dee2e6}.web-overlay-title{margin:0;font-size:18px;font-weight:600;color:#333}.web-overlay-close-button{background:none;border:none;font-size:24px;cursor:pointer;color:#666;padding:4px 8px;border-radius:4px;transition:background-color .2s}.web-overlay-close-button:hover{background:#e9ecef;color:#333}.web-overlay-iframe{flex:1;width:100%;border:none;background:#fff}.webcam-title-row{display:flex;justify-content:space-between;align-items:center;width:100%}.webcam-title-row .webcam-title{margin:0;flex:1}.webcam-reload-button{margin-left:16px;flex-shrink:0;background:none!important;border:none!important;box-shadow:none!important;outline:none!important}.webcam-reload-button:hover{color:#666;background:none!important;border:none!important;box-shadow:none!important;outline:none!important}.webcam-reload-button:focus{background:none!important;border:none!important;box-shadow:none!important;outline:none!important}.webcam-reload-button:active{background:none!important;border:none!important;box-shadow:none!important;outline:none!important}.webcam-reload-button::part(button){background:none!important;border:none!important;box-shadow:none!important;outline:none!important}.webcam-reload-button ui5-button{background:none!important;border:none!important;box-shadow:none!important;outline:none!important}ui5-button.webcam-reload-button{--_ui5_button_base_border_color: transparent !important;--_ui5_button_border_color: transparent !important;--_ui5_button_active_border_color: transparent !important;--_ui5_button_emphasized_border_color: transparent !important;--_ui5_button_base_background: transparent !important;--_ui5_button_background: transparent !important;--_ui5_button_active_background: transparent !important;--_ui5_button_emphasized_background: transparent !important;background:transparent!important;border:none!important;box-shadow:none!important;outline:none!important}ui5-button.webcam-reload-button:hover{background:transparent!important;border:none!important;box-shadow:none!important;outline:none!important}ui5-button.webcam-reload-button:focus{background:transparent!important;border:none!important;box-shadow:none!important;outline:none!important}ui5-button.webcam-reload-button:active{background:transparent!important;border:none!important;box-shadow:none!important;outline:none!important}ui5-button.webcam-reload-button,ui5-button.webcam-reload-button .ui5-button-root,ui5-button.webcam-reload-button .ui5-button-inner,ui5-button.webcam-reload-button button{background:transparent!important;border:0!important;border-width:0!important;border-style:none!important;border-color:transparent!important;box-shadow:none!important;outline:none!important;-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important}ui5-button.webcam-reload-button:hover,ui5-button.webcam-reload-button:focus,ui5-button.webcam-reload-button:active,ui5-button.webcam-reload-button:hover .ui5-button-root,ui5-button.webcam-reload-button:focus .ui5-button-root,ui5-button.webcam-reload-button:active .ui5-button-root,ui5-button.webcam-reload-button:hover button,ui5-button.webcam-reload-button:focus button,ui5-button.webcam-reload-button:active button{background:transparent!important;border:0!important;border-width:0!important;border-style:none!important;border-color:transparent!important;box-shadow:none!important;outline:none!important}.webcam-reload-button-custom{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:8px;margin-left:16px;flex-shrink:0;border-radius:4px;transition:color .2s ease;background:none;border:none;outline:none}.webcam-reload-button-custom:hover{color:#666;background:none}.webcam-reload-button-custom:focus{outline:none}.webcam-reload-button-custom:active{transform:scale(.95)}.webcam-reload-button-custom ui5-icon{font-size:16px;color:inherit}.webcam-capture-button-custom{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:8px;margin-left:8px;border-radius:4px;transition:color .2s ease,transform .1s ease;color:#333;background:none;border:none;outline:none}.webcam-capture-button-custom:hover{color:#007acc;background:none}.webcam-capture-button-custom:focus{outline:none}.webcam-capture-button-custom:active{transform:scale(.95)}.webcam-capture-button-custom ui5-icon{font-size:16px;color:inherit}.webcam-header,.youtube-webcam-view{width:100%}.youtube-container{position:relative;width:100%;margin:0;border-radius:6px;overflow:hidden;background:#f0f0f0;min-height:300px}.youtube-container iframe{display:block;width:100%;height:100%}@media (max-width: 768px){.youtube-container{min-height:250px}}@media (max-width: 480px){.youtube-container{min-height:200px}}.tabs-bar-container{position:relative;width:100%}.tabs-toggle-container{position:absolute;top:-2px;right:8px;z-index:10}.tabs-toggle-wrapper{display:flex;align-items:center;background:transparent;padding:0;transform:scale(.7);transform-origin:center}.webcam-reload-button-disabled,.webcam-capture-button-disabled{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background-color:#e0e0e0;color:#9e9e9e;cursor:not-allowed;opacity:.6}.webcam-reload-button-disabled:hover,.webcam-capture-button-disabled:hover{background-color:#e0e0e0;transform:none}.webcam-disabled-placeholder,.video-disabled-placeholder,.youtube-disabled-placeholder,.windy-disabled-placeholder{display:flex;align-items:center;justify-content:center;min-height:300px;background-color:#f5f5f5;border:2px dashed #bdbdbd;border-radius:8px}.disabled-content{text-align:center;color:#757575}.disabled-icon{font-size:48px;margin-bottom:16px}.disabled-text{font-size:18px;font-weight:500;margin-bottom:8px}.disabled-subtitle{font-size:14px;opacity:.8}
