html,body{background-color:#f3f4f6;width:100%;height:100%;margin:0;padding:0}#root{width:100%;height:100%}*{box-sizing:border-box}.layout-container{background-color:#f3f4f6;width:100vw;height:100vh;font-family:Pretendard,sans-serif;display:flex}.sidebar{background-color:#fff;border-right:1px solid #e5e7eb;flex-direction:column;flex-shrink:0;width:260px;display:flex}.sidebar-header{border-bottom:1px solid #f3f4f6;padding:30px 20px 20px}.logo{color:#111827;margin:0 0 15px;font-size:22px}.user-profile{flex-direction:row;align-items:center;gap:8px;margin-top:5px;display:flex}.user-name{color:#374151;font-size:16px;font-weight:700}.user-role{white-space:nowrap;border-radius:4px;padding:3px 6px;font-size:11px;font-weight:700;display:inline-block}.role-admin{color:#ef4444;background-color:#fee2e2}.role-clergy{color:#22c55e;background-color:#dcfce3}.role-broadcast{color:#4f46e5;background-color:#e0e7ff}.sidebar-nav{flex-direction:column;flex:1;gap:5px;padding:20px 10px;display:flex;overflow-y:auto}.nav-item{color:#4b5563;border-radius:8px;padding:12px 15px;font-weight:500;text-decoration:none;transition:all .2s}.nav-item:hover{color:#111827;background-color:#f3f4f6}.nav-item.active{color:#2563eb;background-color:#eff6ff;font-weight:700}.sidebar-footer{border-top:1px solid #f3f4f6;padding:20px}.btn-logout{color:#6b7280;cursor:pointer;background-color:#0000;border:1px solid #d1d5db;border-radius:8px;width:100%;padding:10px;font-weight:700;transition:all .2s}.btn-logout:hover{color:#ef4444;background-color:#fee2e2;border-color:#fca5a5}.main-content{flex-direction:column;flex:1;display:flex;overflow:hidden}.mobile-header{background-color:#fff;border-bottom:1px solid #e5e7eb;padding:15px 20px;display:none}.mobile-header h2{margin:0;font-size:18px}.content-area{flex:1;padding:40px;overflow-y:auto}@media (width<=768px){.sidebar{display:none}.mobile-header{display:block}.content-area{padding:20px}}.login-container{background-color:#f3f4f6;justify-content:center;align-items:center;height:100vh;font-family:Pretendard,sans-serif;display:flex}.login-box{text-align:center;background-color:#fff;border-radius:16px;width:100%;max-width:420px;padding:50px;box-shadow:0 10px 30px #00000014}.login-title{color:#111827;margin:0 0 12px;font-size:28px;font-weight:800}.login-subtitle{color:#6b7280;margin-bottom:40px;font-size:15px}.btn-google{color:#374151;cursor:pointer;box-sizing:border-box;background-color:#fff;border:1px solid #d1d5db;border-radius:10px;justify-content:center;align-items:center;gap:12px;width:100%;margin-bottom:25px;padding:14px;font-size:15px;font-weight:700;transition:background-color .2s,box-shadow .2s;display:flex}.btn-google:hover{background-color:#f9fafb;box-shadow:0 2px 5px #0000000d}.google-icon{width:20px;height:20px}.divider{text-align:center;margin:30px 0;position:relative}.divider:before{content:"";z-index:1;background-color:#e5e7eb;height:1px;position:absolute;top:50%;left:0;right:0}.divider span{color:#9ca3af;z-index:2;background-color:#fff;padding:0 15px;font-size:13px;position:relative}.login-form{flex-direction:column;gap:18px;display:flex}.login-input{box-sizing:border-box;border:1px solid #d1d5db;border-radius:10px;outline:none;width:100%;padding:14px;font-size:15px;transition:border-color .2s,box-shadow .2s}.login-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f626}.error-message{color:#ef4444;text-align:left;margin-top:-8px;font-size:14px}.btn-submit{color:#fff;cursor:pointer;box-sizing:border-box;background-color:#3b82f6;border:none;border-radius:10px;width:100%;margin-top:10px;padding:14px;font-size:17px;font-weight:700;transition:background-color .2s}.btn-submit:hover{background-color:#2563eb}.dashboard-container{flex-direction:column;gap:24px;animation:.4s ease-out fadeIn;display:flex}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.welcome-banner{color:#fff;background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%);border-radius:16px;justify-content:space-between;align-items:center;padding:32px;display:flex;box-shadow:0 10px 20px #2563eb26}.welcome-title{margin:0 0 8px;font-size:26px;font-weight:800}.welcome-subtitle{opacity:.9;margin:0;font-size:15px}.date-badge{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:#fff3;border-radius:30px;padding:10px 18px;font-size:14px;font-weight:700}.widget-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px;display:grid}.widget-card{background-color:#fff;border:1px solid #f3f4f6;border-radius:16px;flex-direction:column;padding:24px;display:flex;box-shadow:0 4px 6px #00000008}.widget-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.widget-title{color:#1f2937;margin:0 0 20px;font-size:18px}.widget-header .widget-title{margin:0}.more-link{color:#3b82f6;cursor:pointer;font-size:13px;font-weight:700}.more-link:hover{text-decoration:underline}.quick-links{flex-direction:column;gap:15px;margin:0;padding:0;list-style:none;display:flex}.quick-links li{background-color:#f9fafb;border-radius:10px;align-items:center;gap:15px;padding:12px;transition:transform .2s,background-color .2s;display:flex}.quick-links li:hover{background-color:#f3f4f6;transform:translateY(-2px)}.link-icon{background-color:#fff;border-radius:10px;justify-content:center;align-items:center;width:45px;height:45px;font-size:24px;display:flex;box-shadow:0 2px 4px #0000000d}.link-info{flex-direction:column;flex:1;display:flex}.link-name{color:#374151;font-size:15px;font-weight:700}.link-desc{color:#6b7280;margin-top:3px;font-size:12px}.btn-go{cursor:pointer;color:#4b5563;background-color:#fff;border:1px solid #d1d5db;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:700}.btn-go:hover{color:#111827;border-color:#9ca3af}.status-container{flex-direction:column;gap:12px;display:flex}.status-item{border:1px solid #e5e7eb;border-radius:10px;justify-content:space-between;align-items:center;padding:14px;display:flex}.status-label{color:#4b5563;font-size:15px;font-weight:500}.status-badge{border-radius:20px;padding:5px 10px;font-size:12px;font-weight:700}.status-badge.online{color:#16a34a;background-color:#dcfce3}.status-badge.offline{color:#dc2626;background-color:#fee2e2}.status-badge.standby{color:#ca8a04;background-color:#fef08a}.recent-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.recent-list li{border-bottom:1px solid #f3f4f6;align-items:center;gap:12px;padding-bottom:12px;display:flex}.recent-list li:last-child{border-bottom:none;padding-bottom:0}.doc-tag{border-radius:4px;padding:4px 8px;font-size:11px;font-weight:700}.type-bulletin{color:#7c3aed;background-color:#ede9fe}.type-cuesheet{color:#0284c7;background-color:#e0f2fe}.type-media{color:#ea580c;background-color:#ffedd5}.doc-title{color:#374151;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14px;overflow:hidden}.doc-date{color:#9ca3af;font-size:12px}.materials-container{flex-direction:column;gap:20px;animation:.4s ease-out fadeIn;display:flex}.page-header{justify-content:space-between;align-items:flex-end;margin-bottom:10px;display:flex}.page-title{color:#1f2937;margin:0 0 8px;font-size:24px}.page-subtitle{color:#6b7280;margin:0;font-size:14px}.btn-upload{color:#fff;cursor:pointer;background-color:#3b82f6;border:none;border-radius:8px;padding:10px 20px;font-weight:700;transition:background-color .2s}.btn-upload:hover{background-color:#2563eb}.filter-bar{background-color:#fff;border:1px solid #e5e7eb;border-radius:12px;justify-content:space-between;padding:15px;display:flex;box-shadow:0 2px 4px #00000005}.filter-select{color:#374151;border:1px solid #d1d5db;border-radius:6px;outline:none;padding:8px 12px}.search-box{gap:10px;display:flex}.search-input{border:1px solid #d1d5db;border-radius:6px;outline:none;width:250px;padding:8px 15px}.search-input:focus{border-color:#3b82f6}.btn-search{cursor:pointer;color:#374151;background-color:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;padding:8px 15px;font-weight:700}.btn-search:hover{background-color:#e5e7eb}.table-container{background-color:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden;box-shadow:0 4px 6px #00000008}.materials-table{border-collapse:collapse;table-layout:fixed;width:100%}.materials-table th{color:#4b5563;text-align:center;white-space:nowrap;background-color:#f9fafb;border-bottom:2px solid #e5e7eb;padding:15px;font-size:14px;font-weight:700}.materials-table th:nth-child(3){text-align:left}.materials-table td{color:#1f2937;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #f3f4f6;padding:15px;font-size:14px;overflow:hidden}.table-row{cursor:pointer;transition:background-color .2s}.table-row:hover{background-color:#f9fafb}.title-cell{color:#111827;font-weight:500}.text-center{text-align:center}.text-muted{color:#6b7280}.cat-badge{border-radius:20px;padding:4px 10px;font-size:12px;font-weight:700}.cat-bulletin{color:#7c3aed;background-color:#ede9fe}.cat-cuesheet{color:#0284c7;background-color:#e0f2fe}.cat-media{color:#ea580c;background-color:#ffedd5}.cat-score{color:#16a34a;background-color:#dcfce3}.empty-message{text-align:center;color:#6b7280;padding:40px!important}.pagination{justify-content:center;gap:5px;margin-top:10px;display:flex}.page-btn{cursor:pointer;color:#374151;background-color:#fff;border:1px solid #d1d5db;border-radius:6px;width:35px;height:35px;font-weight:700;transition:all .2s}.page-btn:hover{background-color:#f3f4f6}.page-btn.active{color:#fff;background-color:#3b82f6;border-color:#3b82f6}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background-color:#00000080;justify-content:center;align-items:center;width:100vw;height:100vh;animation:.2s ease-out fadeIn;display:flex;position:fixed;top:0;left:0}.modal-box{background-color:#fff;border-radius:16px;width:100%;max-width:500px;animation:.3s ease-out slideUp;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:20px 25px;display:flex}.modal-header h2{color:#1f2937;margin:0;font-size:20px}.btn-close{color:#9ca3af;cursor:pointer;background:0 0;border:none;font-size:20px;transition:color .2s}.btn-close:hover{color:#ef4444}.upload-form{flex-direction:column;gap:20px;padding:25px;display:flex}.form-group{flex-direction:column;gap:8px;display:flex}.form-group label{color:#374151;font-size:14px;font-weight:700}.form-input{color:#1f2937;border:1px solid #d1d5db;border-radius:8px;outline:none;padding:12px;font-size:14px;transition:border-color .2s}.form-input:focus{border-color:#3b82f6}.file-input{background-color:#f9fafb;padding:9px}.modal-footer{justify-content:flex-end;gap:10px;margin-top:10px;display:flex}.btn-cancel{color:#374151;cursor:pointer;background-color:#fff;border:1px solid #d1d5db;border-radius:8px;padding:10px 20px;font-weight:700;transition:background-color .2s}.btn-cancel:hover{background-color:#f3f4f6}.btn-submit-upload{color:#fff;cursor:pointer;background-color:#3b82f6;border:none;border-radius:8px;padding:10px 20px;font-weight:700;transition:background-color .2s}.btn-submit-upload:hover{background-color:#2563eb}.detail-content{flex-direction:column;gap:15px;padding:25px;display:flex}.detail-meta{justify-content:space-between;align-items:center;display:flex}.detail-title{color:#111827;margin:10px 0;font-size:22px;line-height:1.4}.detail-info{color:#4b5563;border-bottom:1px solid #f3f4f6;gap:15px;padding-bottom:20px;font-size:14px;display:flex}.download-section{background-color:#f9fafb;border:1px dashed #d1d5db;border-radius:10px;margin-top:10px;padding:20px}.download-section h4{color:#374151;margin:0 0 15px;font-size:15px}.btn-download{color:#fff;background-color:#10b981;border-radius:8px;padding:12px 20px;font-weight:700;text-decoration:none;transition:background-color .2s,transform .1s;display:inline-block}.btn-download:hover{background-color:#059669;transform:translateY(-2px)}.no-file{color:#9ca3af;font-size:14px;font-style:italic}.btn-delete{color:#ef4444;cursor:pointer;background-color:#fee2e2;border:1px solid #fca5a5;border-radius:8px;margin-right:auto;padding:10px 20px;font-weight:700;transition:all .2s}.btn-delete:hover{color:#fff;background-color:#ef4444}
