@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&display=swap";:root{--font-sans:"DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--color-bg:#f8fafc;--color-surface:#fff;--color-surface-muted:#f1f5fd;--color-border:#e2e8f0;--color-border-strong:#cbd5e1;--color-text:#1e293b;--color-text-secondary:#334155;--color-text-tertiary:#475569;--color-text-on-primary:#fff;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-bg:#dbeafe;--color-secondary:#3b82f6;--gradient-primary:linear-gradient(135deg, #2563eb, #3b82f6);--color-accent:#ea580c;--color-accent-hover:#c2410c;--gradient-accent:linear-gradient(135deg, #ea580c, #f97316);--color-danger:#dc2626;--color-danger-hover:#b91c1c;--color-danger-bg:#fef2f2;--color-danger-border:#fecaca;--glass-bg:#ffffffb8;--glass-bg-strong:#ffffffd9;--glass-border:#fff9;--glass-blur:blur(16px);--shadow-glass-sm:0 1px 2px #0f172a0a, 0 6px 16px #2563eb14;--shadow-glass-md:0 2px 4px #0f172a0d, 0 16px 40px #2563eb1f;--shadow-glass-lg:0 4px 8px #0f172a0f, 0 24px 56px #2563eb29;--badge-blue-bg:#dbeafe;--badge-blue-text:#1d4ed8;--badge-indigo-bg:#e0e7ff;--badge-indigo-text:#4338ca;--badge-amber-bg:#fef3c7;--badge-amber-text:#b45309;--badge-purple-bg:#ede9fe;--badge-purple-text:#6d28d9;--badge-teal-bg:#ccfbf1;--badge-teal-text:#0f766e;--badge-cyan-bg:#cffafe;--badge-cyan-text:#0e7490;--badge-green-bg:#dcfce7;--badge-green-text:#15803d;--badge-red-bg:#fee2e2;--badge-red-text:#b91c1c;--badge-orange-bg:#ffedd5;--badge-orange-text:#c2410c;--badge-gray-bg:#f1f2f4;--badge-gray-text:#4b5563;--shadow-sm:0 1px 2px #1018280d;--shadow-md:0 4px 10px #10182814;--radius-sm:6px;--radius-md:8px;font-family:var(--font-sans);color:var(--color-text-secondary);background:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{background:radial-gradient(ellipse 900px 600px at 8% -10%, #2563eb1a, transparent 60%), radial-gradient(ellipse 800px 600px at 100% 0%, #3b82f614, transparent 55%), radial-gradient(ellipse 900px 700px at 50% 110%, #ea580c0d, transparent 55%), var(--color-bg);background-attachment:fixed;min-height:100vh;margin:0}#root{min-height:100vh}h1,h2,h3{font-family:var(--font-sans);color:var(--color-text);margin:0}p{margin:0}a{color:var(--color-primary)}.page{max-width:1180px;margin:0 auto;padding:28px 32px 64px}.page-narrow{max-width:880px}@media (width<=900px){.page{padding:20px 16px 48px}}.page-header{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-glass-md);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;padding:20px 24px;display:flex}.filter-bar{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-glass-sm);flex-wrap:wrap;align-items:flex-end;gap:16px;margin-bottom:20px;padding:16px 20px;display:flex}.filter-bar .form-field,.filter-bar>button{margin-bottom:0}.page-title{letter-spacing:-.2px;background:var(--gradient-primary);color:#0000;filter:drop-shadow(0 1px 1px #2563eb2e);-webkit-background-clip:text;background-clip:text;font-size:22px;font-weight:700;display:inline-block}.page-subtitle{color:var(--color-text-tertiary);margin-top:2px;font-size:14px}.top-bar-meta{color:var(--color-text-tertiary);align-items:center;gap:14px;font-size:14px;display:flex}.card{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-glass-sm);padding:20px}.section{background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-glass-sm);margin-bottom:20px;padding:20px 22px}.section-title{color:var(--color-text);margin-bottom:4px;padding-left:12px;font-size:15px;font-weight:700;position:relative}.section-title:before{content:"";background:var(--gradient-primary);border-radius:2px;width:4px;position:absolute;top:2px;bottom:2px;left:0;box-shadow:0 1px 3px #2563eb59}.section-hint{color:var(--color-text-tertiary);margin-bottom:14px;font-size:13px}.collapsible-section{padding:16px 22px}.collapsible-header{cursor:pointer;width:100%;font-family:var(--font-sans);text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:12px;margin:0;padding:4px 0;display:flex}.collapsible-caret{color:var(--color-text-tertiary);flex-shrink:0;transition:transform .2s}.collapsible-caret.open{transform:rotate(180deg)}.collapsible-body{margin-top:14px}.back-link{color:var(--color-text-secondary);align-items:center;gap:6px;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--color-text)}.text-muted{color:var(--color-text-tertiary)}.text-caption{color:var(--color-text-tertiary);font-size:12px}.field-label{color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.03em;margin-bottom:6px;font-size:12px;font-weight:500;display:block}.input,.select,.textarea{font-family:var(--font-sans);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:8px 10px;font-size:14px;line-height:1.4;transition:border-color .15s,box-shadow .15s}.textarea{font-family:var(--font-sans);resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg);outline:none}.form-row{flex-wrap:wrap;gap:16px;margin-bottom:16px;display:flex}.form-field{flex-direction:column;display:flex}.btn{font-family:var(--font-sans);border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;align-items:center;gap:6px;padding:8px 14px;font-size:13.5px;font-weight:500;line-height:1.3;transition:background .15s,border-color .15s,color .15s,opacity .15s,transform .15s,box-shadow .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--gradient-primary);color:var(--color-text-on-primary);box-shadow:var(--shadow-glass-sm);border-color:#0000}.btn-primary:hover:not(:disabled){box-shadow:var(--shadow-glass-md)}.btn-accent{background:var(--gradient-accent);color:var(--color-text-on-primary);border-color:#0000;box-shadow:0 1px 2px #0f172a0a,0 6px 16px #ea580c2e}.btn-accent:hover:not(:disabled){box-shadow:0 2px 4px #0f172a0d,0 16px 32px #ea580c3d}@media (prefers-reduced-motion:no-preference){.btn-primary:hover:not(:disabled),.btn-accent:hover:not(:disabled){transform:translateY(-1px)}}.btn-secondary{background:var(--glass-bg-strong);border-color:var(--glass-border);color:var(--color-text-secondary)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-text)}.btn-danger{background:var(--color-danger);border-color:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover);border-color:var(--color-danger-hover)}.btn-danger-outline{background:var(--color-danger-bg);border-color:var(--color-danger-border);color:var(--color-danger)}.btn-danger-outline:hover:not(:disabled){background:var(--color-danger-border)}.btn-ghost{color:var(--color-text-tertiary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--color-surface-muted);color:var(--color-text)}.btn-sm{padding:5px 10px;font-size:12.5px}.badge{white-space:nowrap;border:1px solid #ffffff80;border-radius:999px;align-items:center;gap:4px;padding:3px 9px;font-size:12px;font-weight:600;line-height:1.5;display:inline-flex}.badge-icon{flex-shrink:0;display:inline-flex}.badge-blue{background:var(--badge-blue-bg);color:var(--badge-blue-text)}.badge-indigo{background:var(--badge-indigo-bg);color:var(--badge-indigo-text)}.badge-amber{background:var(--badge-amber-bg);color:var(--badge-amber-text)}.badge-purple{background:var(--badge-purple-bg);color:var(--badge-purple-text)}.badge-teal{background:var(--badge-teal-bg);color:var(--badge-teal-text)}.badge-cyan{background:var(--badge-cyan-bg);color:var(--badge-cyan-text)}.badge-green{background:var(--badge-green-bg);color:var(--badge-green-text)}.badge-red{background:var(--badge-red-bg);color:var(--badge-red-text)}.badge-orange{background:var(--badge-orange-bg);color:var(--badge-orange-text)}.badge-gray{background:var(--badge-gray-bg);color:var(--badge-gray-text)}.table-wrap{border:1px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass-bg);-webkit-backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-glass-sm);overflow-x:auto}table.data-table{border-collapse:collapse;width:100%;font-size:13.5px}.data-table thead th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-tertiary);background:linear-gradient(180deg, var(--color-surface-muted), #e2e8f099);border-bottom:1px solid var(--color-border);white-space:nowrap;padding:11px 16px;font-size:11.5px;font-weight:700;box-shadow:inset 0 1px #fffc}.data-table tbody td{border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);vertical-align:middle;overflow-wrap:anywhere;padding:13px 16px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr.row-clickable{cursor:pointer;transition:background .1s}.data-table tbody tr.row-clickable:hover{background:var(--color-surface-muted)}.data-table .cell-primary{color:var(--color-text);font-weight:500}.data-table .cell-empty{text-align:center;color:var(--color-text-tertiary);padding:40px 16px}table.detail-table{border-collapse:collapse;width:100%}.detail-table tr{border-bottom:1px solid var(--color-border)}.detail-table tr:last-child{border-bottom:none}.detail-table td{padding:10px 4px;font-size:14px}.detail-table td.detail-label{width:160px;color:var(--color-text-tertiary);vertical-align:top;font-weight:500}.detail-table td.detail-value{color:var(--color-text);overflow-wrap:anywhere}.state-message{text-align:center;color:var(--color-text-tertiary);padding:40px 20px;font-size:14px}.error-banner{background:var(--color-danger-bg);border:1px solid var(--color-danger-border);color:var(--color-danger);border-radius:var(--radius-sm);margin-bottom:14px;padding:10px 14px;font-size:13.5px}.spinner{border:2px solid var(--color-border-strong);border-top-color:var(--color-primary);vertical-align:-2px;border-radius:50%;width:14px;height:14px;margin-right:8px;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.callout-instructions{border-radius:var(--radius-md);background:#fffbeb;border:1px solid #fde68a;margin-bottom:22px;padding:16px 18px}.callout-instructions .section-title{color:#92400e}.callout-instructions .section-title:before{background:linear-gradient(#f59e0b,#d97706);box-shadow:0 1px 3px #d9770659}.callout-internal{background:var(--color-danger-bg);border-color:var(--color-danger-border)}.callout-internal .section-title{color:var(--color-danger)}.callout-internal .section-title:before{background:linear-gradient(#ef4444,#b91c1c);box-shadow:0 1px 3px #b91c1c59}.callout-sp-visible{background:var(--badge-blue-bg);border-radius:var(--radius-md);border:1px solid #bfdbfe;margin-bottom:20px;padding:20px 22px}.callout-sp-visible .section-title{color:var(--badge-blue-text)}.callout-revert{background:var(--color-danger-bg);border:1px solid var(--color-danger-border);border-radius:var(--radius-sm);margin-top:12px;padding:14px 16px}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;background:#0f172a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:var(--glass-bg-strong);width:100%;max-width:400px;-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-glass-lg);padding:22px}.modal-title{color:var(--color-text);margin-bottom:8px;font-size:16px;font-weight:700}.modal-message{color:var(--color-text-secondary);margin-bottom:20px;font-size:13.5px;line-height:1.5}.modal-actions{justify-content:flex-end;gap:10px;display:flex}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--glass-bg-strong);width:100%;max-width:380px;-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-glass-lg);padding:32px}.login-logo{border-radius:var(--radius-sm);width:100%;max-width:220px;height:auto;box-shadow:var(--shadow-glass-sm);margin:0 auto 18px;display:block}.login-title{text-align:center;background:var(--gradient-primary);color:#0000;filter:drop-shadow(0 1px 1px #2563eb2e);-webkit-background-clip:text;background-clip:text;margin-bottom:22px;font-size:18px;font-weight:700}.app-shell{min-height:100vh;display:flex}.sidebar{width:232px;-webkit-backdrop-filter:var(--glass-blur);box-shadow:var(--shadow-glass-lg);background:linear-gradient(#0f172a,#1e293b);border-right:1px solid #ffffff0f;flex-direction:column;flex-shrink:0;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.sidebar-brand{padding:6px 4px 22px}.sidebar-logo{border-radius:var(--radius-sm);width:100%;height:auto;box-shadow:var(--shadow-glass-sm);background:#fff;padding:8px 10px;display:block}.sidebar-nav{flex-direction:column;flex:1;gap:3px;display:flex}.sidebar-link{border-radius:var(--radius-sm);color:#94a3b8;align-items:center;gap:10px;padding:9px 12px;font-size:13.5px;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.sidebar-link:hover{color:#f1f5f9;background:#ffffff0f}.sidebar-link.active{background:var(--gradient-primary);color:#fff;box-shadow:0 2px 4px #0003,0 8px 20px #2563eb59}.sidebar-badge{background:var(--gradient-accent);color:#fff;border-radius:999px;flex-shrink:0;margin-left:auto;padding:3px 7px;font-size:11px;font-weight:700;line-height:1}.sidebar-user{border-top:1px solid #ffffff14;margin-top:10px;padding-top:14px}.sidebar-user-name{color:#f1f5f9;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;overflow:hidden}.sidebar-user .text-caption{color:#64748b}.sidebar-user .btn-ghost{color:#94a3b8}.sidebar-user .btn-ghost:hover:not(:disabled){color:#f1f5f9;background:#ffffff14}.app-content{flex:1;min-width:0}@media (width<=900px){.app-shell{flex-direction:column}.sidebar{flex-direction:row;align-items:center;width:100%;height:auto;padding:10px 14px;position:static;overflow-x:auto}.sidebar-brand{padding:0 12px 0 0}.sidebar-nav{flex-direction:row}.sidebar-user{border-top:none;border-left:1px solid #ffffff14;margin:0 0 0 auto;padding:0 0 0 12px}}
