:root{--primary:#2563eb;--primary-hover:#1d4ed8;--primary-light:#dbeafe;--success:#16a34a;--success-light:#dcfce7;--danger:#dc2626;--danger-light:#fef2f2;--warning:#f59e0b;--warning-light:#fffbeb;--text:#1f2937;--text-secondary:#6b7280;--bg:#f8fafc;--card-bg:#fff;--border:#e5e7eb;--shadow:0 1px 3px #0000001a, 0 1px 2px #0000000f;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -2px #0000000d;--radius:12px;--radius-sm:8px;color:var(--text);background:var(--bg);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5}@media (prefers-color-scheme:dark){:root{--primary:#60a5fa;--primary-hover:#3b82f6;--primary-light:#1e3a5f;--success:#4ade80;--success-light:#1a3a2a;--danger:#f87171;--danger-light:#3a1a1a;--warning:#fbbf24;--warning-light:#3a2f1a;--text:#f3f4f6;--text-secondary:#9ca3af;--bg:#0f172a;--card-bg:#1e293b;--border:#334155;--shadow:0 1px 3px #0000004d;--shadow-lg:0 10px 15px -3px #0000004d}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);min-height:100vh}#root,.app{flex-direction:column;min-height:100vh;display:flex}.header{background:var(--card-bg);border-bottom:1px solid var(--border);box-shadow:var(--shadow);z-index:100;justify-content:space-between;align-items:center;padding:16px 24px;display:flex;position:sticky;top:0}.header-left{align-items:center;gap:12px;display:flex}.header h1{color:var(--primary);letter-spacing:-.5px;font-size:20px;font-weight:700}.header .version{color:var(--text-secondary);background:var(--primary-light);border-radius:12px;padding:2px 8px;font-size:12px;font-weight:500}.header-right{align-items:center;gap:12px;display:flex}.user-info{color:var(--text-secondary);font-size:14px}.user-info strong{color:var(--text)}.main-content{flex:1;width:100%;max-width:600px;margin:0 auto;padding:32px 16px}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.card-header{border-bottom:1px solid var(--border);background:var(--bg);padding:20px 24px}.card-header h2{color:var(--text);font-size:18px;font-weight:600}.card-header p{color:var(--text-secondary);margin-top:4px;font-size:14px}.card-body{padding:24px}.form-group{margin-bottom:20px}.form-group label{color:var(--text);margin-bottom:6px;font-size:14px;font-weight:600;display:block}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text);background:var(--card-bg);outline:none;padding:10px 14px;font-size:15px;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.form-group textarea{resize:vertical;min-height:80px}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.btn{border-radius:var(--radius-sm);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-size:15px;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);box-shadow:var(--shadow-lg)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){opacity:.9}.btn-outline{color:var(--text-secondary);border:1px solid var(--border);background:0 0}.btn-outline:hover:not(:disabled){background:var(--bg);color:var(--text)}.btn-block{width:100%}.btn-lg{padding:14px 24px;font-size:16px}.alert{border-radius:var(--radius-sm);align-items:center;gap:8px;margin-bottom:16px;padding:12px 16px;font-size:14px;display:flex}.alert-success{background:var(--success-light);color:var(--success);border:1px solid var(--success)}.alert-error{background:var(--danger-light);color:var(--danger);border:1px solid var(--danger)}.alert-warning{background:var(--warning-light);color:var(--warning);border:1px solid var(--warning)}.login-container{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{width:100%;max-width:420px}.login-logo{text-align:center;padding:32px 24px 8px}.login-logo h1{color:var(--primary);letter-spacing:-1px;font-size:28px;font-weight:800}.login-logo p{color:var(--text-secondary);margin-top:4px;font-size:14px}.dashboard-grid{flex-direction:column;gap:20px;display:flex}.quick-action{text-align:center;padding:24px}.quick-action h3{color:var(--text);margin-bottom:8px;font-size:16px}.quick-action p{color:var(--text-secondary);margin-bottom:20px;font-size:14px}.schedule-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 0;display:flex}.schedule-row:last-child{border-bottom:none}.schedule-toggle{flex-shrink:0;width:44px;height:24px;position:relative}.schedule-toggle input{opacity:0;width:0;height:0}.schedule-toggle .slider{background:var(--border);cursor:pointer;border-radius:24px;transition:all .3s;position:absolute;inset:0}.schedule-toggle .slider:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:all .3s;position:absolute;bottom:3px;left:3px}.schedule-toggle input:checked+.slider{background:var(--primary)}.schedule-toggle input:checked+.slider:before{transform:translate(20px)}.log-container{background:var(--bg);border-radius:var(--radius-sm);max-height:300px;padding:16px;font-family:Consolas,Monaco,monospace;font-size:13px;overflow-y:auto}.log-entry{gap:8px;padding:4px 0;display:flex}.log-time{color:var(--text-secondary);flex-shrink:0}.log-message{word-break:break-all}.log-success{color:var(--success)}.log-error{color:var(--danger)}.log-info{color:var(--primary)}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:20px;height:20px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.pass-list{list-style:none}.pass-item{border-bottom:1px solid var(--border);padding:12px 0;font-size:14px}.pass-item:last-child{border-bottom:none}@media (width<=480px){.form-row{grid-template-columns:1fr}.header{padding:12px 16px}.header h1{font-size:16px}.main-content{padding:16px 12px}}
