:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color:#111827;background-color:#f8fafc;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0}button{border-radius:8px;border:1px solid #cbd5e1;background:#fff;padding:8px 12px;cursor:pointer}button:hover{background:#f8fafc}.sidebar.is-collapsed .menu-item{justify-content:center;padding:8px;min-height:40px}.sidebar.is-collapsed .menu-item-text{font-weight:600;text-align:center;line-height:1.2}.mobile-header{display:none;background:#fff;border-bottom:1px solid #e2e8f0;padding:12px 16px;position:sticky;top:0;z-index:1002}.mobile-menu-btn{background:none;border:none;font-size:20px;padding:8px;cursor:pointer}.mobile-logo img{height:32px}.mobile-menu-overlay{position:fixed;inset:64px 0 0;background:#00000080;z-index:1000;display:none}.mobile-menu{position:fixed;top:64px;left:0;right:0;width:100%;background:#fff;z-index:1001;box-shadow:0 4px 6px #0000001a;max-height:0;overflow:hidden;transition:max-height .3s ease-out;display:none}.mobile-menu.open{max-height:500px}.mobile-menu.open~.mobile-menu-overlay{display:block}.mobile-menu-close{background:none;border:none;font-size:18px;padding:8px;cursor:pointer}.mobile-menu-nav{padding:16px;display:flex;flex-direction:column;gap:8px}.mobile-menu-nav a{display:block;padding:12px;color:#64748b;text-decoration:none;border-radius:8px}.mobile-menu-nav a.active,.mobile-menu-nav a:hover{background:#f1f5f9;color:#0f172a}@media(max-width:768px){.app-shell{flex-direction:column}.sidebar{display:none!important;width:0!important;padding:0!important;border:none!important}.mobile-header{display:block;width:100%}.mobile-menu{display:block}.content{padding:12px;width:100%}.mobile-header{padding:16px}.mobile-logo img{height:40px;max-width:100%}}@media(max-width:480px){.mobile-logo img{height:32px}}.dropzones{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.dropzone-title{font-size:16px;font-weight:600;margin-bottom:4px}.dropzone-box{display:flex;align-items:center;gap:8px;justify-content:center;border:2px dashed #94a3b8;border-radius:12px;padding:24px;color:#64748b;background:#f8fafc;margin-top:2%}.dropzone-box:hover{background:#f1f5f9}.dropzone-icon{font-size:18px}.dropzone-panel{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:12px}.upload-date-section{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;padding:12px;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.upload-date-info{display:flex;align-items:center;gap:8px}.upload-date-text{font-weight:600;color:#374151}.prediction-execution-section{display:flex;align-items:center;gap:16px;margin-top:16px;padding:16px;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.progress-container{flex:1;position:relative}.progress-bar{width:100%;height:8px;background:#e2e8f0;border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#1d4ed8);border-radius:4px;transition:width .3s ease}.progress-text{position:absolute;top:-24px;right:0;font-size:12px;color:#64748b;font-weight:600}.predict-button{background:#1e293b;color:#fff;border:none;padding:12px 24px;border-radius:8px;font-weight:600;cursor:pointer;transition:background .2s ease}.predict-button:hover:not(:disabled){background:#3b82f6}.predict-button:disabled{background:#94a3b8;cursor:not-allowed}.settings-container{display:flex;justify-content:space-between;align-items:center;gap:16px}.settings-inline{display:flex;align-items:center;gap:12px}.settings-inline .label{font-size:14px;font-weight:600;color:#64748b}.settings-inline input{padding:8px 12px;border:1px solid #cbd5e1;border-radius:6px;font-size:14px}.settings-inline button{background:#1e293b;color:#fff;border:none;padding:8px 16px;border-radius:6px;font-weight:600;cursor:pointer}.settings-inline button:hover{background:#3b82f6}.download-section{display:flex;align-items:center}.download-button{background:#10b981;color:#fff;border:none;padding:8px 16px;border-radius:6px;font-weight:600;cursor:pointer}.download-button:hover{background:#059669}.popup-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.popup-content{background:#fff;padding:24px;border-radius:12px;text-align:center;max-width:400px;width:90%}.popup-content h3{margin:0 0 16px;color:#1f2937}.popup-content p{margin:0 0 24px;color:#6b7280;line-height:1.5}.popup-button{background:#3b82f6;color:#fff;border:none;padding:12px 24px;border-radius:8px;font-weight:600;cursor:pointer}.popup-button:hover{background:#2563eb}.popup-warning{border:2px solid #dc2626;background:#fff}.popup-warning h3{color:#dc2626;font-weight:700}.warning-message{color:#374151;font-size:14px;line-height:1.8;text-align:left;padding:16px;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.warning-message strong{color:#0f172a;font-weight:700}.popup-button-warning{background:#3b82f6;color:#fff}.popup-button-warning:hover{background:#2563eb}.page.blurred{filter:blur(4px);pointer-events:none;-webkit-user-select:none;user-select:none;position:relative}.password-modal-overlay{position:fixed;inset:0;background:transparent;display:flex;align-items:center;justify-content:center;z-index:2000;filter:none}.password-modal{background:#fff;border-radius:12px;box-shadow:0 10px 25px #0000001a;max-width:400px;width:90%}.password-modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e2e8f0}.password-modal-header h3{margin:0;font-size:20px;font-weight:600;color:#1f2937}.password-modal-close{background:transparent;border:none;font-size:24px;color:#64748b;cursor:pointer;padding:0;line-height:1;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .2s}.password-modal-close:hover{background:#f3f4f6;color:#1f2937}.password-modal-body{padding:24px}.password-modal-description{margin:0 0 16px;color:#64748b;font-size:14px;line-height:1.5}.password-input{width:100%;padding:12px 16px;border:2px solid #e2e8f0;border-radius:8px;font-size:16px;margin-bottom:12px;box-sizing:border-box;transition:border-color .2s}.password-input:focus{outline:none;border-color:#3b82f6}.password-error{color:#ef4444;font-size:14px;margin:0 0 16px;text-align:center;white-space:pre-line;line-height:1.6}.password-modal-buttons{display:flex;gap:12px;justify-content:flex-end}.password-cancel,.password-submit{padding:10px 20px;border:none;border-radius:8px;font-weight:600;cursor:pointer;font-size:14px;transition:all .2s}.password-cancel{background:#f3f4f6;color:#374151}.password-cancel:hover{background:#e5e7eb}.password-submit{background:#3b82f6;color:#fff}.password-submit:hover{background:#2563eb}.predicting-overlay{position:fixed;inset:0;background:#0003;z-index:999;pointer-events:auto}.prediction-execution-section.predicting-active{position:relative;z-index:1000;pointer-events:auto}.page.predicting{pointer-events:none}.page.predicting .prediction-execution-section.predicting-active{pointer-events:auto}@media(max-width:1024px){.dropzones{grid-template-columns:1fr 1fr}.settings-container{flex-direction:column;align-items:stretch}.settings-inline{justify-content:center}}@media(max-width:640px){.dropzones{grid-template-columns:1fr}.settings-inline{flex-direction:column;gap:8px}.prediction-execution-section{flex-direction:column;align-items:stretch}}.page h1{margin:0 0 16px;font-size:20px}.card{background:#fff;color:#111827;border:1px solid #e2e8f0;border-radius:12px;padding:16px;margin-bottom:16px}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:16px}.loading-spinner{width:40px;height:40px;border:4px solid #f3f4f6;border-top:4px solid #3b82f6;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-container p{color:#6b7280;font-size:14px;margin:0}.prediction-section{display:grid;grid-template-columns:2fr 1fr;gap:24px;margin-top:12px;background:transparent}.table-card{position:relative;margin-top:0;height:300px;overflow:auto;margin-bottom:4px}.table-card h3{margin:0 0 16px;color:#1f2937;font-size:18px;font-weight:600}.table-header-overlay{display:flex;width:100%;margin-bottom:0;border:1px solid #e2e8f0;border-bottom:none;font-size:12px}.header-cell{padding:12px 8px;text-align:center;border-right:1px solid #e2e8f0;font-weight:600;color:#fff;background-color:#1e293b}.header-cell:last-child{border-right:none}.header-cell.first-column-header{background-color:#fff;width:80px;flex-shrink:0}.header-cell.date-header-14{background-color:#f59e0b;flex:1}.header-cell.date-header-15,.header-cell.date-header-16,.header-cell.date-header-17{background-color:#1e293b;flex:1}.prediction-table{width:100%;border-collapse:collapse}.prediction-table thead{display:show}.prediction-table td:first-child{width:80px;min-width:80px;max-width:80px}.prediction-table th,.prediction-table td{padding:8px 6px;text-align:center;border:1px solid #e2e8f0;font-size:12px}.prediction-table th{background-color:#94a3b8;font-weight:600;color:#fff}.prediction-table th.first-column{background-color:#3b82f6;color:#fff}.prediction-table th.predicted-column{background-color:#1e293b;color:#fff}.prediction-table tbody tr td:first-child{color:#fff;font-weight:600}.prediction-table tbody tr:first-child td:first-child,.prediction-table tbody tr:nth-child(2) td:first-child{background-color:#0891b2}.prediction-table tbody tr:last-child td:first-child{background-color:#16a34a}.prediction-table tr:nth-child(2n){background-color:#f9fafb}.prediction-table tr:hover{background-color:#f3f4f6}.calendar-card{display:flex;flex-direction:column;margin-top:0;max-height:300px;overflow:hidden;margin-bottom:4px}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:0}.calendar-header h3{margin:0}.calendar-controls{display:flex;gap:10px}.year-select,.month-select{padding:5px 10px;border:1px solid #d1d5db;border-radius:4px;background:#fff;font-size:14px}.year-select:focus,.month-select:focus{outline:none;border-color:#3b82f6}.results-section{display:grid;grid-template-columns:2fr 1fr;gap:24px;margin-top:12px;background:transparent}.chart-card{display:flex;flex-direction:column}.chart-card h3{margin-top:0;margin-bottom:8px}.chart-type-buttons{display:flex;gap:8px;margin-top:16px;justify-content:center}.chart-type-btn{padding:8px 16px;border:1px solid #94a3b8;border-radius:6px;background:#94a3b8;color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.chart-type-btn:hover{background-color:#1e293b;border-color:#1e293b}.chart-type-btn.active{background-color:#1e293b;border-color:#1e293b;color:#fff}.group-table-card{display:flex;flex-direction:column;margin-top:0;margin-bottom:4px}.group-table-card h3{margin-top:0;margin-bottom:8px}.group-table{width:100%}.group-table th{background:#f9fafb;color:#374151;font-weight:600;border:1px solid #e2e8f0;padding:12px 8px;text-align:center}.group-table td{border:1px solid #e2e8f0;padding:8px;text-align:center}@media(max-width:1024px){.prediction-section,.results-section{grid-template-columns:1fr;gap:16px}}@media(max-width:768px){.calendar-header{flex-direction:column;gap:12px;align-items:stretch}.calendar-controls{justify-content:center}.chart-type-buttons{flex-wrap:wrap}}@media(max-width:640px){.table-header-overlay{font-size:10px}.header-cell{padding:8px 4px;font-size:10px}.header-cell.first-column-header{width:50px}.prediction-table{font-size:10px}.prediction-table td:first-child{width:50px;min-width:50px;max-width:50px}.prediction-table th,.prediction-table td{padding:4px 2px}}.upload-date-wrapper{font-size:20px;font-weight:700;display:inline-flex;align-items:center;padding:6px 12px;border:2px solid #e2e8f0;border-radius:8px;background-color:#f8fafc;gap:12px;flex-wrap:wrap}.upload-date-label{color:#111827}.upload-date-selectors{display:flex;gap:8px;align-items:center}.upload-select{padding:4px 8px;border:1px solid #cbd5e1;border-radius:4px;background-color:#fff;color:#111827;cursor:pointer;min-width:120px}.upload-select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.upload-date-wrapper .upload-select:nth-of-type(1){min-width:80px;width:80px}.upload-date-wrapper .upload-select:nth-of-type(2),.upload-date-wrapper .upload-select:nth-of-type(3){min-width:60px;width:60px}.upload-date-unit{font-size:14px;color:#4b5563}.upload-date-hint{font-size:12px;color:#6b7280;font-style:italic}.app-shell{display:flex;min-height:100vh}.sidebar{position:sticky;top:0;width:260px;height:100vh;background:#fff;color:#0f172a;display:flex;flex-direction:column;gap:16px;padding:16px;border-right:1px solid #e2e8f0;transition:width .2s ease;flex-shrink:0}.brand-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.sidebar.is-collapsed .brand-row{flex-direction:column;align-items:stretch}.sidebar.is-collapsed .hamburger{order:-1;align-self:flex-end}.brand-logo{max-width:160px;height:auto}.hamburger{background:transparent;border:none;font-size:22px;line-height:1;padding:6px 8px}.hamburger:hover{background:#3b82f6;color:#fff}.menu{display:flex;flex-direction:column;gap:8px}.menu a{display:block;color:#64748b;text-decoration:none}.menu a.active,.menu a:hover{background:#f1f5f9;color:#0f172a}.collapse-btn{margin-top:auto;background:#1e293b;color:#fff}.content{flex:1;padding:20px;background:#f8fafc;min-height:100vh;transition:all .2s ease;overflow-x:hidden}.settings-row{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.settings-box{display:grid;grid-template-columns:1fr;gap:8px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:12px}.settings-box label{font-size:12px;color:#64748b}.settings-box input[type=date],.settings-box input[type=number]{padding:8px;border-radius:8px;border:1px solid #cbd5e1}.settings-box button{justify-self:end}@media(max-width:768px){.brand-logo{max-width:120px}}@media(max-width:480px){.brand-logo{max-width:96px}}.dt-layout-cell{text-align:center}.brand-link{text-decoration:none;display:block}.brand-link:hover{opacity:.8}.brand-logo.compact{max-width:40px}.sidebar.is-collapsed{width:72px}.sidebar.is-collapsed .brand-row{flex-direction:column;align-items:stretch;gap:8px}.sidebar.is-collapsed .hamburger{align-self:flex-end}.menu .menu-item{display:flex;align-items:center;padding:10px 12px;border:1px solid transparent;border-radius:10px;background:#fff;transition:all .1s ease}.menu .menu-item:hover{background:#f8fafc;border-color:#e2e8f0}.menu .menu-item.active{background:#eef2ff;border-color:#c7d2fe;color:#0f172a}.dataTables_wrapper{font-size:14px}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{margin-bottom:16px}.dataTables_wrapper .dataTables_paginate .paginate_button{padding:4px 8px;margin:0 2px;border:1px solid #d1d5db;border-radius:4px;background:#fff;color:#374151;cursor:pointer}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{background:#f3f4f6;border-color:#9ca3af}.dataTables_wrapper .dataTables_paginate .paginate_button.current{background:#1e293b;color:#fff;border-color:#1e293b}.mobile-header{display:none;background:#fff;border-bottom:1px solid #e2e8f0;padding:12px 16px;position:sticky;top:0;z-index:100}.mobile-header-content{display:flex;align-items:center;justify-content:space-between}.mobile-menu-btn{background:none;border:none;font-size:20px;cursor:pointer;padding:8px;border-radius:4px;transition:background-color .2s}.mobile-menu-btn:hover{background:#f3f4f6}.mobile-logo img{height:32px;width:auto}.mobile-menu-overlay{position:fixed;inset:0;background:#00000080;z-index:200}.mobile-menu{position:fixed;top:0;left:-280px;width:280px;height:100vh;background:#fff;z-index:300;transition:left .3s ease;box-shadow:2px 0 10px #0000001a}.mobile-menu.open{left:0}.mobile-menu-header{padding:16px;border-bottom:1px solid #e2e8f0;display:flex;justify-content:flex-end}.mobile-menu-close{background:none;border:none;font-size:18px;cursor:pointer;padding:8px;border-radius:4px;transition:background-color .2s}.mobile-menu-close:hover{background:#f3f4f6}.mobile-menu-nav{padding:16px}.mobile-menu-nav .menu-item{display:block;padding:12px 16px;margin-bottom:8px;border-radius:8px;text-decoration:none;color:#374151;font-weight:500;transition:all .2s}.mobile-menu-nav .menu-item:hover{background:#f3f4f6;color:#1f2937}.mobile-menu-nav .menu-item.active{background:#1e293b;color:#fff}@media(max-width:768px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.mobile-header{display:block}.content{padding-top:0}.brand-logo{max-width:120px}}@media(max-width:480px){.brand-logo{max-width:96px}.content,.card{padding:12px}}
