:root{--ipm-green:#1a6b3c;--ipm-green-dark:#0f4626;--ipm-green-light:#2d8a52;--ipm-green-pale:#e8f5ed;--ipm-gold:#c8971a;--ipm-gold-light:#f4d03f;--ipm-gold-pale:#fef9e7;--text-primary:#1a1a2e;--text-secondary:#4a5568;--text-muted:#718096;--text-inverse:#fff;--bg-base:#f8faf9;--bg-card:#fff;--bg-elevated:#f0f5f2;--border:#1a6b3c26;--border-strong:#1a6b3c4d;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--info:#3b82f6;--glass-bg:#ffffffd9;--glass-border:1px solid #fff6;--glass-shadow:0 8px 32px #00000014;--header-height:60px;--bottom-nav-height:68px;--sidebar-width:260px;--content-max-width:1200px;--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--radius-sm:6px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s ease;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 16px #0000001a;--shadow-lg:0 8px 32px #0000001f;--shadow-green:0 4px 24px #1a6b3c33}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;font-size:16px}body{font-family:var(--font-sans);background-color:var(--bg-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;line-height:1.6;overflow-x:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--ipm-green)}h1,h2,h3,h4,h5,h6{color:var(--text-primary);font-weight:700;line-height:1.3}a{color:var(--ipm-green);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--ipm-green-light)}img,video{max-width:100%;height:auto;display:block}.btn{border-radius:var(--radius-md);font-family:var(--font-sans);cursor:pointer;transition:all var(--transition-base);white-space:nowrap;border:none;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn:after{content:"";transition:background var(--transition-fast);background:#fff0;position:absolute;inset:0}.btn:hover:after{background:#ffffff1a}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(135deg, var(--ipm-green), var(--ipm-green-light));color:#fff;box-shadow:var(--shadow-green)}.btn-primary:hover{background:linear-gradient(135deg, var(--ipm-green-dark), var(--ipm-green));transform:translateY(-1px);box-shadow:0 6px 32px #1a6b3c59}.btn-secondary{background:var(--bg-card);color:var(--ipm-green);border:1.5px solid var(--border-strong)}.btn-secondary:hover{background:var(--ipm-green-pale);border-color:var(--ipm-green)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover{background:var(--bg-elevated);color:var(--text-primary)}.btn-danger{color:#fff;background:linear-gradient(135deg,#dc2626,#ef4444)}.btn-sm{padding:6px 14px;font-size:.8rem}.btn-lg{padding:14px 28px;font-size:1rem}.btn-block{width:100%}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.form-group{margin-bottom:20px}.form-label{color:var(--text-primary);margin-bottom:6px;font-size:.875rem;font-weight:600;display:block}.form-control{border:1.5px solid var(--border);border-radius:var(--radius-md);width:100%;font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-card);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;padding:10px 14px;font-size:.9375rem}.form-control:focus{border-color:var(--ipm-green);box-shadow:0 0 0 3px #1a6b3c1f}.form-control::placeholder{color:var(--text-muted)}.card{background:var(--bg-card);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base), transform var(--transition-base);overflow:hidden}.card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.card-body{padding:20px}.card-header{border-bottom:1px solid var(--border);padding:16px 20px}.card-footer{border-top:1px solid var(--border);padding:16px 20px}.badge{border-radius:var(--radius-full);align-items:center;gap:4px;padding:3px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.badge-green{background:var(--ipm-green-pale);color:var(--ipm-green-dark)}.badge-gold{background:var(--ipm-gold-pale);color:#7d5a00}.badge-red{color:#991b1b;background:#fee2e2}.badge-blue{color:#1e40af;background:#dbeafe}.badge-gray{color:#374151;background:#f3f4f6}.container{width:100%;max-width:var(--content-max-width);margin:0 auto;padding:0 16px}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.text-center{text-align:center}.text-muted{color:var(--text-muted)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-green{color:var(--ipm-green)}.flex{display:flex}.flex-center{justify-content:center;align-items:center;display:flex}.gap-2{gap:8px}.gap-4{gap:16px}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{border-radius:var(--radius-md);background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%) 0 0/800px 100%;animation:1.5s infinite shimmer}.toast-container{bottom:calc(var(--bottom-nav-height) + 16px);z-index:9999;pointer-events:none;flex-direction:column;gap:8px;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{border-radius:var(--radius-md);background:var(--text-primary);color:#fff;box-shadow:var(--shadow-lg);pointer-events:all;white-space:nowrap;align-items:center;gap:10px;max-width:340px;padding:12px 18px;font-size:.875rem;font-weight:500;animation:.3s toastIn;display:flex}.toast-success{background:var(--ipm-green)}.toast-error{background:var(--danger)}.toast-warning{background:var(--warning);color:var(--text-primary)}@keyframes toastIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width:768px){:root{--header-height:56px}.hide-mobile{display:none!important}}@media (min-width:769px){.hide-desktop{display:none!important}.container{padding:0 24px}}
