/* ===== Modern MC Report System ===== */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap'); :root { --p: #6366f1; --pd: #4f46e5; --pl: #eef2ff; --pg: linear-gradient(135deg,#6366f1,#8b5cf6); --s: #10b981; --sd: #059669; --sg: linear-gradient(135deg,#10b981,#34d399); --w: #f59e0b; --wd: #d97706; --wg: linear-gradient(135deg,#f59e0b,#fbbf24); --d: #ef4444; --dd: #dc2626; --dg: linear-gradient(135deg,#ef4444,#f87171); --i: #3b82f6; --id: #2563eb; --ig: linear-gradient(135deg,#3b82f6,#60a5fa); --g0: #ffffff; --g1: #f8fafc; --g2: #f1f5f9; --g3: #e2e8f0; --g4: #cbd5e1; --g5: #94a3b8; --g6: #64748b; --g7: #475569; --g8: #334155; --g9: #1e293b; --g10: #0f172a; --sw: 250px; --r: 10px; --rl: 14px; --rr: 9999px; --sh-sm: 0 1px 2px rgba(0,0,0,.05); --sh: 0 1px 3px rgba(0,0,0,.08),0 2px 8px rgba(0,0,0,.04); --sh-md: 0 4px 6px rgba(0,0,0,.06),0 8px 24px rgba(0,0,0,.04); --sh-lg: 0 10px 30px rgba(0,0,0,.08),0 20px 60px rgba(0,0,0,.04); --sh-xl: 0 20px 60px rgba(0,0,0,.12); } *{margin:0;padding:0;box-sizing:border-box} body{ font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans SC',sans-serif; background:var(--g1);color:var(--g8);line-height:1.6;min-height:100vh; -webkit-font-smoothing:antialiased; } .hidden{display:none!important} /* ===== Top Bar ===== */ #top-bar{ background:rgba(15,23,42,.95);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px); color:white;position:sticky;top:0;z-index:200;border-bottom:1px solid rgba(255,255,255,.08); } .top-bar-inner{max-width:1280px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 28px;height:52px} .top-logo{color:white;text-decoration:none;font-size:17px;font-weight:700;display:flex;align-items:center;gap:10px;letter-spacing:-.5px} .top-logo i{font-size:22px;background:var(--pg);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text} #top-auth{display:flex;gap:10px;align-items:center} /* ===== Public Pages ===== */ #public-page{ min-height:100vh;display:flex;align-items:center;justify-content:center; background:linear-gradient(135deg,#0f172a 0%,#1e1b4b 35%,#312e81 70%,#4c1d95 100%); position:relative;overflow:hidden; } #public-page::before{ content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%; background:radial-gradient(circle at 20% 50%,rgba(99,102,241,.15) 0%,transparent 40%), radial-gradient(circle at 80% 20%,rgba(139,92,246,.1) 0%,transparent 40%), radial-gradient(circle at 40% 80%,rgba(16,185,129,.08) 0%,transparent 40%); pointer-events:none; } .pub-card{ background:rgba(255,255,255,.97);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px); border-radius:20px;padding:44px 40px;width:460px;max-width:92vw; box-shadow:0 24px 80px rgba(0,0,0,.3),0 0 0 1px rgba(255,255,255,.1); position:relative;z-index:1; } .pub-card .logo{text-align:center;margin-bottom:32px} .pub-card .logo i{font-size:48px;background:var(--pg);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text} .pub-card .logo h2{margin-top:12px;font-size:24px;font-weight:800;color:var(--g9);letter-spacing:-1px} .pub-card .logo p{color:var(--g5);font-size:14px;margin-top:4px} .pub-card.wide{width:580px} /* ===== Forms ===== */ .form-group{margin-bottom:16px} .form-group label{display:block;font-size:12.5px;font-weight:600;color:var(--g7);margin-bottom:5px;letter-spacing:.3px;text-transform:uppercase} .form-group input,.form-group select,.form-group textarea{ width:100%;padding:11px 14px;border:1.5px solid var(--g3);border-radius:var(--r); font-size:14px;transition:all .2s;background:var(--g1);color:var(--g9);font-family:inherit; } .form-group input:focus,.form-group select:focus,.form-group textarea:focus{ outline:none;border-color:var(--p);box-shadow:0 0 0 4px rgba(99,102,241,.1);background:white; } .form-group textarea{min-height:80px;resize:vertical} .form-group .help{font-size:11px;color:var(--g5);margin-top:3px} /* ===== Buttons ===== */ .btn{ display:inline-flex;align-items:center;gap:7px;padding:10px 20px; border:none;border-radius:var(--r);font-size:14px;font-weight:600; cursor:pointer;transition:all .2s;white-space:nowrap;text-decoration:none;font-family:inherit; } .btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none} .btn-p{background:var(--pg);color:white;box-shadow:0 2px 8px rgba(99,102,241,.3)} .btn-p:hover:not(:disabled){box-shadow:0 4px 16px rgba(99,102,241,.4);transform:translateY(-1px)} .btn-s{background:var(--sg);color:white;box-shadow:0 2px 8px rgba(16,185,129,.3)} .btn-s:hover:not(:disabled){box-shadow:0 4px 16px rgba(16,185,129,.4);transform:translateY(-1px)} .btn-w{background:var(--wg);color:white;box-shadow:0 2px 8px rgba(245,158,11,.3)} .btn-w:hover:not(:disabled){box-shadow:0 4px 16px rgba(245,158,11,.4);transform:translateY(-1px)} .btn-d{background:var(--dg);color:white;box-shadow:0 2px 8px rgba(239,68,68,.3)} .btn-d:hover:not(:disabled){box-shadow:0 4px 16px rgba(239,68,68,.4);transform:translateY(-1px)} .btn-i{background:var(--ig);color:white;box-shadow:0 2px 8px rgba(59,130,246,.3)} .btn-i:hover:not(:disabled){box-shadow:0 4px 16px rgba(59,130,246,.4);transform:translateY(-1px)} .btn-o{background:transparent;border:1.5px solid var(--g3);color:var(--g7)} .btn-o:hover:not(:disabled){background:var(--g2);border-color:var(--g4)} .btn-sm{padding:6px 13px;font-size:12.5px}.btn-lg{padding:12px 26px;font-size:15px} .w-full{width:100%;justify-content:center} /* ===== Layout ===== */ #main-layout{display:flex;min-height:100vh} #sidebar{ width:var(--sw);background:linear-gradient(180deg,#0f172a 0%,#1e293b 100%); color:white;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0; z-index:100;border-right:1px solid rgba(255,255,255,.06); } .sidebar-header{ padding:18px 22px;font-size:16px;font-weight:700;display:flex;align-items:center; gap:10px;border-bottom:1px solid rgba(255,255,255,.08);letter-spacing:-.5px; } .sidebar-header i{font-size:24px;background:var(--pg);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text} #sidebar-nav{flex:1;padding:10px 0;overflow-y:auto} .nav-item{ display:flex;align-items:center;gap:11px;padding:11px 22px;color:var(--g5); cursor:pointer;transition:all .15s;font-size:13.5px;font-weight:500; border-left:3px solid transparent;margin:1px 0; } .nav-item:hover{color:white;background:rgba(255,255,255,.04)} .nav-item.active{color:white;background:rgba(99,102,241,.12);border-left-color:var(--p);font-weight:600} .nav-item i{width:20px;text-align:center;font-size:15px} .sidebar-footer{padding:14px 16px;border-top:1px solid rgba(255,255,255,.08)} .user-info{display:flex;align-items:center;gap:10px;padding:8px 4px;margin-bottom:10px} .user-info .av{ width:36px;height:36px;border-radius:var(--r);background:var(--pg); display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex-shrink:0; } .user-info .dt{flex:1;min-width:0} .user-info .dt .nm{font-size:13px;font-weight:600;color:white} .user-info .dt .rl{font-size:11px;color:var(--g5)} #main-content{flex:1;margin-left:var(--sw);background:var(--g1);min-height:100vh} #page-header{ display:flex;align-items:center;justify-content:space-between; padding:18px 32px;background:rgba(255,255,255,.9);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px); border-bottom:1px solid var(--g2);position:sticky;top:0;z-index:50; } #page-title{font-size:22px;font-weight:800;color:var(--g9);letter-spacing:-.5px} #page-actions{display:flex;gap:10px;align-items:center} #page-content{padding:28px 32px} /* ===== Cards ===== */ .card{ background:white;border-radius:var(--rl);box-shadow:var(--sh); margin-bottom:20px;border:1px solid var(--g2);overflow:hidden;transition:box-shadow .2s; } .card:hover{box-shadow:var(--sh-md)} .card-h{ padding:15px 22px;border-bottom:1px solid var(--g2);font-size:14px;font-weight:700; display:flex;align-items:center;justify-content:space-between;color:var(--g8); } .card-b{padding:20px 22px} .card-f{padding:12px 22px;border-top:1px solid var(--g2);font-size:12px;color:var(--g5)} /* ===== Stats ===== */ .stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:18px;margin-bottom:24px} .stat-card{ background:white;border-radius:var(--rl);padding:22px;box-shadow:var(--sh); display:flex;align-items:center;gap:18px;border:1px solid var(--g2); transition:transform .2s,box-shadow .2s; } .stat-card:hover{transform:translateY(-2px);box-shadow:var(--sh-md)} .stat-card .si{ width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center; font-size:20px;flex-shrink:0; } .stat-card .sv{font-size:30px;font-weight:800;line-height:1.1;color:var(--g9);letter-spacing:-1px} .stat-card .sl{font-size:12.5px;color:var(--g5);margin-top:2px;font-weight:500} /* ===== Table ===== */ .table-wrap{overflow-x:auto} table{width:100%;border-collapse:collapse;font-size:13.5px} thead th{ background:var(--g1);padding:11px 16px;text-align:left;font-weight:600;font-size:11px; text-transform:uppercase;color:var(--g5);border-bottom:2px solid var(--g2); white-space:nowrap;letter-spacing:.5px; } tbody td{padding:12px 16px;border-bottom:1px solid var(--g2);vertical-align:middle} tbody tr{transition:background .15s} tbody tr:hover{background:var(--g1)} tbody tr:last-child td{border-bottom:none} /* ===== Badges ===== */ .badge{display:inline-block;padding:3px 11px;border-radius:var(--rr);font-size:11.5px;font-weight:600;white-space:nowrap;letter-spacing:.2px} .bg-pending{background:#fef9c3;color:#854d0e} .bg-processing{background:#ede9fe;color:#6d28d9} .bg-awaiting_info{background:#fed7aa;color:#9a3412} .bg-resolved{background:#d1fae5;color:#065f46} .bg-rejected{background:#fee2e2;color:#991b1b} .bg-closed{background:var(--g2);color:var(--g7)} .bg-report{background:#fce7f3;color:#9d174d} .bg-suggestion{background:#dbeafe;color:#1e40af} .bg-appeal{background:#fef3c7;color:#92400e} .bg-low{background:#e0f2fe;color:#0369a1} .bg-medium{background:#fef9c3;color:#854d0e} .bg-high{background:#fee2e2;color:#991b1b} .bg-urgent{background:#fecaca;color:#7f1d1d} .bg-owner{background:var(--dg);color:white} .bg-admin{background:var(--ig);color:white} .bg-player{background:var(--g3);color:var(--g7)} /* ===== Filters ===== */ .filter-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px} .filter-bar select,.filter-bar input{ padding:9px 14px;border:1.5px solid var(--g3);border-radius:var(--r); font-size:13px;background:white;color:var(--g8);transition:border-color .2s;font-family:inherit; } .filter-bar select:focus,.filter-bar input:focus{outline:none;border-color:var(--p)} .filter-bar input{min-width:200px} /* ===== Modal ===== */ #modal-overlay{ position:fixed;top:0;left:0;right:0;bottom:0; background:rgba(15,23,42,.6);backdrop-filter:blur(4px); display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px; } #modal-overlay.hidden{display:none} .modal-box{ background:white;border-radius:16px;width:620px;max-width:100%;max-height:82vh; display:flex;flex-direction:column;box-shadow:var(--sh-xl);animation:modalIn .2s ease-out; } @keyframes modalIn{from{opacity:0;transform:scale(.96) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}} .modal-h{ display:flex;align-items:center;justify-content:space-between; padding:18px 24px;border-bottom:1px solid var(--g2); } .modal-h h3{font-size:16px;font-weight:700;color:var(--g9)} .modal-h button{background:none;border:none;font-size:24px;cursor:pointer;color:var(--g5);padding:0 4px;line-height:1;transition:color .15s} .modal-h button:hover{color:var(--g8)} .modal-b{padding:24px;overflow-y:auto;flex:1} .modal-f{display:flex;gap:10px;justify-content:flex-end;padding:14px 24px;border-top:1px solid var(--g2)} /* ===== Detail ===== */ .detail-grid{display:grid;grid-template-columns:2fr 1fr;gap:22px} .detail-section{margin-bottom:20px} .detail-section h4{ font-size:12px;font-weight:700;color:var(--g7);margin-bottom:10px;padding-bottom:8px; border-bottom:1px solid var(--g2);text-transform:uppercase;letter-spacing:.5px; } .detail-row{display:flex;padding:6px 0;font-size:13.5px} .detail-row .lbl{width:100px;color:var(--g5);flex-shrink:0;font-weight:500} .detail-row .val{flex:1;color:var(--g8)} /* ===== Timeline ===== */ .timeline{position:relative;padding-left:26px} .timeline::before{content:'';position:absolute;left:9px;top:0;bottom:0;width:2px;background:var(--g3);border-radius:1px} .timeline-item{position:relative;margin-bottom:16px} .timeline-item::before{ content:'';position:absolute;left:-22px;top:20px; width:11px;height:11px;border-radius:50%; background:var(--p);border:3px solid white;box-shadow:0 0 0 2px var(--pl); } .timeline-item .th{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:12px;color:var(--g5)} .timeline-item .th .tn{font-weight:600;color:var(--g7)} .timeline-item .tc{ background:var(--g1);padding:12px 16px;border-radius:var(--r); font-size:13.5px;line-height:1.7;white-space:pre-wrap;border:1px solid var(--g2); } .timeline-item.staff .tc{background:var(--pl);border-color:rgba(99,102,241,.2)} /* ===== Empty / Loading / Alert ===== */ .empty{text-align:center;padding:60px 24px;color:var(--g5)} .empty i{font-size:44px;margin-bottom:12px;color:var(--g3)} .empty p{font-size:14px} .alert{padding:12px 18px;border-radius:var(--r);font-size:13.5px;margin-bottom:14px;border:1px solid transparent} .alert-s{background:#d1fae5;color:#065f46;border-color:#a7f3d0} .alert-e{background:#fee2e2;color:#991b1b;border-color:#fecaca} .alert-i{background:#dbeafe;color:#1e40af;border-color:#bfdbfe} .loading{text-align:center;padding:48px;color:var(--g5)} .loading i{font-size:32px;animation:spin 1s linear infinite} @keyframes spin{to{transform:rotate(360deg)}} /* ===== Utilities ===== */ .grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px} .grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px} .mt-2{margin-top:8px}.mt-4{margin-top:16px}.mb-4{margin-bottom:16px} .flex{display:flex}.g2{gap:8px}.g4{gap:16px}.aic{align-items:center}.jcb{justify-content:space-between} .ts{font-size:12px}.tm{color:var(--g5)}.fb{font-weight:700}.tc{text-align:center}.tr{text-align:right} /* ===== File Upload ===== */ .file-upload{ border:2px dashed var(--g3);border-radius:var(--r);padding:32px;text-align:center; cursor:pointer;transition:all .2s;background:var(--g1); } .file-upload:hover{border-color:var(--p);background:var(--pl)} .file-upload i{font-size:32px;color:var(--g4);margin-bottom:8px} .file-upload p{font-size:14px;color:var(--g5)} .file-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px} .file-item{ display:flex;align-items:center;gap:8px;background:var(--g1); padding:6px 12px;border-radius:var(--r);font-size:12.5px;border:1px solid var(--g2); } .file-item button{background:none;border:none;color:var(--d);cursor:pointer;font-size:15px;padding:2px} /* ===== Tab Nav ===== */ .tab-nav{display:flex;gap:0;border-bottom:2px solid var(--g2);margin-bottom:18px} .tab-nav button{ padding:10px 22px;border:none;background:none;font-size:13.5px;font-weight:600; color:var(--g5);cursor:pointer;border-bottom:3px solid transparent;transition:all .2s; margin-bottom:-2px;font-family:inherit; } .tab-nav button:hover{color:var(--g7)} .tab-nav button.active{color:var(--p);border-bottom-color:var(--p)} /* ===== Footer ===== */ #page-footer{background:var(--g10);color:var(--g5);padding:18px 28px;font-size:13px;text-align:center} .footer-inner{max-width:1280px;margin:0 auto;display:flex;justify-content:center;gap:28px;flex-wrap:wrap} .footer-inner a{color:var(--g4);text-decoration:none;transition:color .2s} .footer-inner a:hover{color:white} #app{min-height:calc(100vh - 52px);display:flex;flex-direction:column} #public-page,#main-layout{flex:1} /* ===== Install Page ===== */ #install-steps .card{max-width:640px;margin:0 auto 20px} /* ===== Responsive ===== */ @media(max-width:768px){ #sidebar{width:60px;overflow:hidden} #sidebar .sidebar-header span,#sidebar .nav-item span,#sidebar .user-info .dt{display:none} .sidebar-header{padding:18px 12px;justify-content:center} .nav-item{padding:11px 12px;justify-content:center} #main-content{margin-left:60px} #page-content{padding:20px 16px} #page-header{padding:16px 20px} .detail-grid{grid-template-columns:1fr} .grid-2,.grid-3{grid-template-columns:1fr} .pub-card{padding:32px 24px} .top-bar-inner{padding:0 16px} } /* ===== Scrollbar ===== */ ::-webkit-scrollbar{width:6px} ::-webkit-scrollbar-track{background:transparent} ::-webkit-scrollbar-thumb{background:var(--g4);border-radius:3px} ::-webkit-scrollbar-thumb:hover{background:var(--g5)}