*,:before,:after{box-sizing:border-box}body{color:#1a1a2e;background:#f0f2f5;margin:0;font-family:Arial,sans-serif}.app-shell{background:#f0f2f5;min-height:100vh;display:flex}.left-nav{color:#dbe2ff;background:#1a1a2e;border-right:1px solid #2d3556;flex-direction:column;gap:16px;width:260px;padding:20px 14px;display:flex}.left-nav-brand{border-bottom:1px solid #2d3556;padding:2px 8px 12px}.left-nav-brand-title{color:#fff;letter-spacing:.4px;font-size:20px;font-weight:700}.left-nav-brand-subtitle{color:#aeb7df;letter-spacing:1px;text-transform:uppercase;margin-top:4px;font-size:11px}.left-nav-group{flex-direction:column;gap:7px;display:flex}.left-nav-group-title{color:#9fa8d1;text-transform:uppercase;letter-spacing:1px;padding:0 8px;font-size:11px;font-weight:700}.left-nav-items{flex-direction:column;gap:5px;display:flex}.left-nav-item{color:#dbe2ff;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:10px 12px;font-size:14px}.left-nav-item:hover{background:#242c49}.left-nav-item--active{color:#fff;background:#4361ee;font-weight:600}.left-nav-item--action{color:#ffd2d2}.left-nav-item--action:hover{background:#4f2434}.left-nav-group--admin{border-top:1px solid #2d3556;margin-top:12px;padding-top:12px}.app-main{flex:1;min-width:0}.screen{width:100%;padding:24px 16px}.screen-header{border-bottom:2px solid #e8ecf0;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:24px;padding-bottom:20px;display:flex}.screen-header h2{color:#1a1a2e;border-left:4px solid #4361ee;margin:0;padding-left:14px;font-size:22px;font-weight:700;line-height:1.2}.btn-primary{color:#fff;cursor:pointer;background:#4361ee;border:none;border-radius:6px;flex:1;padding:10px 16px;font-size:14px;font-weight:500}.btn-primary:hover{background:#3451d1}.btn-cancel{color:#fff;cursor:pointer;background:#6c757d;border:none;border-radius:6px;padding:10px 20px;font-size:14px}.btn-edit{color:#4361ee;cursor:pointer;background:#e8f0fe;border:1px solid #c5d4f8;border-radius:5px;padding:6px 12px;font-size:13px}.btn-edit:hover{background:#d0e0fd}.btn-add{color:#276c3a;cursor:pointer;background:#d4edda;border:1px solid #b3d9be;border-radius:5px;padding:6px 12px;font-size:13px}.btn-add:hover{background:#bcd8c5}.btn-delete{color:#dc3545;cursor:pointer;background:#fde8e8;border:1px solid #f5c6cb;border-radius:5px;padding:6px 12px;font-size:13px}.btn-delete:hover{background:#fbd0d0}.btn-delete:disabled{opacity:.4;cursor:not-allowed}.btn-delete:disabled:hover{background:#fde8e8}.grid-12{grid-template-columns:repeat(12,1fr);gap:14px;display:grid}.col-1{grid-column:span 1}.col-2{grid-column:span 2}.col-3{grid-column:span 3}.col-4{grid-column:span 4}.col-5{grid-column:span 5}.col-6{grid-column:span 6}.col-7{grid-column:span 7}.col-8{grid-column:span 8}.col-9{grid-column:span 9}.col-10{grid-column:span 10}.col-11{grid-column:span 11}.col-12{grid-column:span 12}.form-card{background:#fff;border:1px solid #e0e0e0;border-radius:10px;margin-bottom:24px;padding:20px;box-shadow:0 1px 4px #0000000f}.form-grid{grid-template-columns:repeat(12,1fr);gap:14px;display:grid}.form-field{flex-direction:column;gap:4px;display:flex}.form-field label{color:#555;font-size:13px;font-weight:500}.form-field input,.form-field select{background:#fff;border:1px solid #d0d0d0;border-radius:6px;width:100%;padding:9px 10px;font-size:14px}.form-field input:focus,.form-field select:focus{border-color:#4361ee;outline:none;box-shadow:0 0 0 3px #4361ee1a}.form-section-title{color:#aaa;text-transform:uppercase;letter-spacing:.5px;border-top:1px solid #f0f0f0;grid-column:span 12;margin-top:2px;padding-top:6px;font-size:12px;font-weight:700}.form-actions{grid-column:span 12;gap:10px;margin-top:4px;display:flex}.checkbox-group{flex-wrap:wrap;grid-column:span 12;align-items:center;gap:14px 24px;padding:4px 0;display:flex}.checkbox-group label{cursor:pointer;align-items:center;gap:6px;font-size:14px;display:flex}.days-group{flex-wrap:wrap;grid-column:span 12;gap:10px;display:flex}.days-group label{cursor:pointer;background:#f8f9fa;border:1px solid #ddd;border-radius:6px;align-items:center;gap:5px;padding:5px 10px;font-size:14px;display:flex}.days-group input[type=checkbox]:checked+span{color:#4361ee;font-weight:600}.card-list{flex-direction:column;gap:10px;display:flex}.list-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex;box-shadow:0 1px 3px #0000000d}.list-card-info .title{font-size:15px;font-weight:600}.list-card-info .subtitle{color:#777;margin-top:3px;font-size:13px}.list-card-actions{flex-shrink:0;gap:8px;display:flex}.field-hint{color:#dc3545;margin-top:3px;font-size:12px}.back-page{padding:16px}@media (width<=640px){.form-grid{grid-template-columns:1fr}.form-grid>*{grid-column:1/-1}.form-actions{flex-direction:column}.btn-primary{flex:none;width:100%}.list-card{flex-direction:column;align-items:flex-start}.list-card-actions{width:100%}.btn-edit,.btn-delete{text-align:center;flex:1}.screen{padding:12px}.app-shell{flex-direction:column}.left-nav{border-bottom:1px solid #2d3556;border-right:none;width:100%}}.login-page{background:linear-gradient(135deg,#1a1a2e 0%,#16213e 60%,#0f3460 100%);flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-brand{text-align:center;margin-bottom:32px}.login-brand-name{color:#fff;letter-spacing:1px;margin-top:16px;font-size:32px;font-weight:800;line-height:1.1}.login-brand-tagline{color:#7b9eff;letter-spacing:2px;text-transform:uppercase;margin-top:6px;font-size:13px}.login-card{background:#fff;border-radius:16px;width:100%;max-width:380px;padding:36px 32px;box-shadow:0 20px 60px #0006,inset 0 1px #fffc}.login-card-title{color:#1a1a2e;margin:0 0 6px;font-size:20px;font-weight:700}.login-card-subtitle{color:#888;margin:0 0 24px;font-size:13px}.login-form{flex-direction:column;gap:16px;display:flex}.login-input{box-sizing:border-box;background:#fff;border:1.5px solid #d0d0d0;border-radius:8px;outline:none;width:100%;padding:10px 12px;font-family:inherit;font-size:14px;transition:border-color .2s,box-shadow .2s}.login-input:focus{border-color:#4361ee;box-shadow:0 0 0 3px #4361ee1f}.login-error{color:#dc3545;background:#fde8e8;border:1px solid #f5c6cb;border-radius:8px;padding:10px 12px;font-size:13px}.login-submit-btn{color:#fff;cursor:pointer;background:#4361ee;border:none;border-radius:8px;width:100%;margin-top:4px;padding:12px;font-family:inherit;font-size:15px;font-weight:600;transition:background .2s,transform .1s;position:relative;overflow:hidden}.login-submit-btn:hover:not(:disabled){background:#3451d1}.login-submit-btn:active:not(:disabled){transform:scale(.98)}.login-submit-btn:disabled{cursor:not-allowed;background:#a0aee0}@keyframes loginShimmer{0%{transform:translate(-150%)}to{transform:translate(250%)}}.login-submit-btn--loading:after{content:"";background:linear-gradient(90deg,#0000,#ffffff47,#0000);width:40%;height:100%;animation:1.3s infinite loginShimmer;position:absolute;top:0;left:0}.upload-type-pills{flex-wrap:wrap;gap:8px;display:flex}.upload-type-pill{color:#555;cursor:pointer;background:#fff;border:1.5px solid #d0d4e8;border-radius:20px;padding:6px 18px;font-family:inherit;font-size:13px;font-weight:500;transition:border-color .18s,color .18s,background .18s}.upload-type-pill:hover:not(:disabled){color:#4361ee;background:#f0f3ff;border-color:#4361ee}.upload-type-pill--active{color:#fff;background:#4361ee;border-color:#4361ee}.upload-type-pill--active:hover:not(:disabled){background:#3451d1;border-color:#3451d1}.upload-type-pill:disabled{opacity:.5;cursor:not-allowed}.upload-dropzone{text-align:center;cursor:pointer;background:#f8f9fe;border:2px dashed #c5cde8;border-radius:12px;padding:36px 20px 28px;transition:border-color .2s,background .2s,transform .15s;position:relative}.upload-dropzone:hover{background:#f0f3ff;border-color:#4361ee}.upload-dropzone--active{background:#e8edff;border-color:#4361ee;transform:scale(1.01)}.upload-dropzone-icon{color:#4361ee;opacity:.65;width:40px;height:40px;margin:0 auto 12px;transition:opacity .2s,transform .2s;display:block}.upload-dropzone:hover .upload-dropzone-icon,.upload-dropzone--active .upload-dropzone-icon{opacity:1;transform:translateY(-3px)}.upload-dropzone-text{color:#2a2a3e;margin-bottom:4px;font-size:14px;font-weight:600}.upload-dropzone-hint{color:#999;font-size:12px}.upload-selected-file{color:#3451d1;background:#e8edff;border-radius:20px;align-items:center;gap:7px;max-width:100%;margin-top:14px;padding:6px 14px;font-size:13px;font-weight:500;display:inline-flex;overflow:hidden}.upload-selected-file span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.upload-progress-wrap{margin:4px 0}.upload-progress-track{background:#e8ecf4;border-radius:4px;width:100%;height:8px;overflow:hidden}.upload-progress-fill{background:linear-gradient(90deg,#4361ee,#7b9eff);border-radius:4px;height:100%;transition:width .5s;position:relative;overflow:hidden}@keyframes progressShimmer{0%{transform:translate(-150%)}to{transform:translate(250%)}}.upload-progress-fill:after{content:"";background:linear-gradient(90deg,#0000,#ffffff73,#0000);width:40%;height:100%;animation:1.4s infinite progressShimmer;position:absolute;top:0;left:0}.upload-progress-meta{justify-content:space-between;align-items:center;margin-top:6px;display:flex}.upload-progress-status{color:#666;font-size:12px}.upload-progress-pct{color:#4361ee;font-size:12px;font-weight:700}.upload-message{border-radius:8px;align-items:center;gap:8px;margin-top:14px;padding:10px 14px;font-size:13px;font-weight:500;display:flex}.upload-message--success{color:#1a7a4a;background:#edfaf3;border:1px solid #b7e8cf}.upload-message--error{color:#dc3545;background:#fde8e8;border:1px solid #f5c6cb}.dv-section-label{color:#aaa;text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px;font-size:11px;font-weight:700}.dv-file-picker{background:#fff;border:1.5px solid #e0e4f0;border-radius:10px;margin-bottom:20px;overflow:hidden}.dv-file-search{background:#f8f9fe;border-bottom:1px solid #e0e4f0;align-items:center;gap:8px;padding:8px 12px;display:flex}.dv-file-search-icon{color:#aaa;flex-shrink:0}.dv-file-search input{color:#1a1a2e;background:0 0;border:none;outline:none;width:100%;font-family:inherit;font-size:13px}.dv-file-search input::placeholder{color:#bbb}.dv-file-list{max-height:200px;overflow-y:auto}.dv-file-list::-webkit-scrollbar{width:4px}.dv-file-list::-webkit-scrollbar-track{background:#f0f2f5}.dv-file-list::-webkit-scrollbar-thumb{background:#c5cde8;border-radius:2px}.dv-file-row{cursor:pointer;border-bottom:1px solid #f0f2f5;align-items:center;gap:10px;padding:9px 14px;transition:background .15s;display:flex}.dv-file-row:last-child{border-bottom:none}.dv-file-row:hover,.dv-file-row--active{background:#f0f3ff}.dv-file-row-icon{color:#4361ee;opacity:.7;flex-shrink:0}.dv-file-row--active .dv-file-row-icon{opacity:1}.dv-file-row-info{flex:1;min-width:0}.dv-file-row-name{color:#1a1a2e;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.dv-file-row--active .dv-file-row-name{color:#4361ee;font-weight:700}.dv-file-row-date{color:#999;margin-top:1px;font-size:11px}.dv-file-row-check{color:#4361ee;flex-shrink:0}.dv-file-empty{text-align:center;color:#bbb;padding:20px;font-size:13px;font-style:italic}.dv-empty-files{text-align:center;color:#aaa;background:#f8f9fe;border:1.5px dashed #d0d4e8;border-radius:10px;margin-bottom:20px;padding:28px;font-size:14px;font-style:italic}.dv-toolbar{background:#fff;border:1px solid #e0e4f0;border-radius:10px;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;padding:12px 16px;display:flex}.dv-toolbar-sheets{flex-wrap:wrap;flex:1;gap:6px;min-width:0;display:flex}.dv-toolbar-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.dv-badge{color:#666;white-space:nowrap;background:#f0f2f5;border-radius:6px;padding:4px 10px;font-size:12px}.dv-loading{text-align:center;color:#4361ee;padding:24px;font-size:14px;font-weight:500}.dv-warnings{color:#856404;background:#fff3cd;border:1px solid #ffc107;border-radius:8px;margin-bottom:12px;padding:10px 14px;font-size:13px}.dv-warnings ul{margin:6px 0 0;padding-left:20px}.dv-process-result{background:#f8f9fe;border:1px solid #e0e4f0;border-radius:8px;margin-top:16px;margin-bottom:16px;padding:16px;font-size:12px;overflow-x:auto}.dv-table-wrap{border:1px solid #e0e4f0;border-radius:10px;width:100%;overflow:hidden}.dv-table-scroll{width:100%;max-height:65vh;overflow-x:auto}.dv-pagination{color:#555;background:#f8f9fe;border-top:1px solid #e0e4f0;justify-content:center;align-items:center;gap:12px;padding:10px 16px;font-size:13px;display:flex}.dv-pagination button{cursor:pointer;background:#fff;border:1px solid #d0d4e8;border-radius:6px;padding:5px 12px;font-family:inherit;font-size:13px;transition:background .15s,border-color .15s}.dv-pagination button:hover:not(:disabled){color:#4361ee;background:#f0f3ff;border-color:#4361ee}.dv-pagination button:disabled{opacity:.4;cursor:not-allowed}.dv-modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.dv-modal{background:#fff;border-radius:12px;flex-direction:column;width:80vw;max-height:85vh;display:flex;overflow:hidden;box-shadow:0 20px 60px #0000004d}.dv-modal-header{color:#1a1a2e;border-bottom:1px solid #e0e4f0;flex-shrink:0;justify-content:space-between;align-items:center;padding:16px 20px;font-size:15px;font-weight:700;display:flex}.dv-modal-actions{gap:8px;display:flex}.dv-modal-pre{background:#f8f9fe;flex:1;margin:0;padding:16px;font-family:monospace;font-size:12px;overflow-y:auto}
