:root{--bg: #f4f6fa;--ink: #1a2332;--muted: #6a7a8e;--line: #d8dee8;--line-soft: #e9ecf2;--primary: #1F4E79;--primary-2: #2E75B6;--success: #3F8624;--warn: #FF9900;--danger: #DD344C;--soft-success: #e8f3e2;--soft-warn: #fff4e6;--soft-danger: #fde8eb;--soft-primary: #e8f0f9;--shadow-lg: 0 12px 40px rgba(20,30,50,.18)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--ink);font:14px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}button{font:inherit;cursor:pointer}a{color:var(--primary-2);text-decoration:none}.loading{padding:40px;text-align:center;color:var(--muted)}.loading:before{content:"";display:block;width:30px;height:30px;margin:0 auto 14px;border:3px solid var(--line-soft);border-top-color:var(--primary-2);border-radius:50%;animation:gp-spin .75s linear infinite}@keyframes gp-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.loading:before{animation:none}}.login-screen{min-height:100vh;display:grid;place-items:center;padding:32px}.login-screen.org{background:radial-gradient(120% 80% at 30% 20%,#1f4e79,#0f1c2e 60%,#07101e)}.login-screen.super{background:radial-gradient(120% 80% at 70% 30%,#4a0d1a,#1a0510 60%,#07000a)}.login-card{width:100%;max-width:420px;background:#fff;border-radius:14px;padding:32px;box-shadow:var(--shadow-lg)}.login-card .brand{display:flex;align-items:center;gap:10px;margin-bottom:4px}.login-card .brand-name{font-weight:700;font-size:17px;color:var(--primary)}.login-card .brand-name.super{color:var(--danger)}.login-card .console-tag{display:inline-block;background:var(--soft-danger);color:var(--danger);font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:4px;letter-spacing:.05em;margin-left:6px}.login-card h2{margin:18px 0 4px;font-size:22px;letter-spacing:-.01em}.login-card .sub{color:var(--muted);margin-bottom:22px;font-size:13.5px}.field{margin-bottom:14px}.field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink);margin-bottom:6px}.field input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--line);font:inherit;outline:none;transition:border-color .15s,box-shadow .15s}.field input:focus{border-color:var(--primary-2);box-shadow:0 0 0 3px #2e75b626}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:600;font-size:13px}.btn:hover{border-color:var(--primary-2);color:var(--primary-2)}.btn.primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn.primary:hover{background:var(--primary-2);border-color:var(--primary-2);color:#fff}.btn.dark{background:#0f1c2e;color:#fff;border-color:#0f1c2e}.btn.dark:hover{background:#1a2a40;border-color:#1a2a40;color:#fff}.btn-block{width:100%;padding:11px;font-size:14px}.btn:disabled{opacity:.6;cursor:not-allowed}.error{background:var(--soft-danger);color:var(--danger);padding:10px 12px;border-radius:6px;font-size:13px;margin-bottom:12px}.login-foot{display:flex;justify-content:space-between;margin-top:14px;font-size:12.5px;color:var(--muted)}.topbar{height:60px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 22px;gap:16px;position:sticky;top:0;z-index:1600}.topbar .logo{font-weight:700;font-size:15px;color:var(--primary);display:flex;align-items:center;gap:8px}.topbar .breadcrumb{color:var(--muted);font-size:13px}.topbar .spacer{flex:1}.topbar .role-badge{padding:4px 10px;border-radius:999px;font-weight:600;font-size:11.5px;letter-spacing:.02em}.role-super{background:var(--soft-danger);color:var(--danger)}.role-admin{background:var(--soft-warn);color:#b56a00}.role-viewer{background:var(--soft-success);color:var(--success)}.topbar .signout{color:var(--muted);font-size:13px;cursor:pointer;padding:6px 10px;border-radius:6px}.topbar .signout:hover{background:var(--soft-primary);color:var(--danger)}.topbar .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary-2));color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12.5px}.layout{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 60px)}.sidebar{background:#fff;border-right:1px solid var(--line);padding:18px 12px}.sidebar .section-label{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;padding:10px 10px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:6px;color:#2a3a4f;cursor:pointer;font-size:13.5px}.nav-item:hover{background:var(--soft-primary)}.nav-item.current{background:var(--soft-primary);color:var(--primary);font-weight:600}.nav-item:focus-visible,.signout:focus-visible{outline:2px solid var(--primary-2);outline-offset:-2px}.viewer-toast{position:absolute;bottom:24px;left:50%;z-index:30;background:#0f1c2ef0;color:#fff;padding:10px 18px;border-radius:8px;font-size:13px;font-weight:600;box-shadow:0 6px 20px #0006;max-width:80%;animation:gp-toast-in .2s ease both}@keyframes gp-toast-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion: reduce){.viewer-toast{animation:none;transform:translate(-50%)}}.vbtn{display:inline-flex;align-items:center;gap:6px;background:#fffffff5;color:var(--ink);border:1px solid var(--line);padding:7px 13px;border-radius:8px;font-weight:600;font-size:13px;cursor:pointer;box-shadow:0 1px 2px #141e320f;transition:background .15s,border-color .15s,box-shadow .15s,transform .07s,color .15s}.vbtn:hover{border-color:var(--primary-2);box-shadow:0 3px 10px #141e3224}.vbtn:active{transform:translateY(1px)}.vbtn.open{background:var(--soft-primary);border-color:var(--primary-2);color:var(--primary)}.vbtn .caret{transition:transform .15s;font-size:10px;opacity:.7}.vbtn.open .caret{transform:rotate(180deg)}.vbtn:focus-visible{outline:2px solid var(--primary-2);outline-offset:2px}.vmenu{position:absolute;top:100%;right:0;margin-top:8px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-lg);z-index:4000;overflow:hidden;transform-origin:top right;animation:gp-menu-in .13s ease both}@keyframes gp-menu-in{0%{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}.vmenu-item{display:flex;align-items:center;gap:9px;padding:9px 14px;cursor:pointer;font-size:13px;color:var(--ink);transition:background .12s,color .12s;border:none;background:none;width:100%;text-align:left}.vmenu-item:hover{background:var(--soft-primary)}.vmenu-item.active{background:var(--soft-primary);color:var(--primary);font-weight:600}.vmenu-item .check{margin-left:auto;color:var(--primary);font-weight:700}@media (prefers-reduced-motion: reduce){.vmenu{animation:none}.vbtn,.vbtn .caret{transition:none}}.dataset-tree{margin-top:2px}.tree-filter{width:calc(100% - 20px);margin:0 10px 8px;padding:6px 10px;border:1px solid var(--line);border-radius:6px;font:inherit;font-size:12.5px;outline:none;transition:border-color .15s,box-shadow .15s}.tree-filter:focus{border-color:var(--primary-2);box-shadow:0 0 0 3px #2e75b626}.dataset-tree .tree-group,.dataset-tree .tree-leaf{transition:background .12s ease}.dataset-tree .tree-group:hover{background:var(--line-soft)}.dataset-tree .tree-leaf:not(:disabled):hover{background:var(--soft-primary)}.dataset-tree .tree-leaf.active:hover{background:var(--soft-primary)}.dataset-tree button:focus-visible,.dataset-tree a:focus-visible{outline:2px solid var(--primary-2);outline-offset:-2px;border-radius:6px}@keyframes gp-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.content>*{animation:gp-fade-in .22s ease both}.dataset-tree{animation:gp-fade-in .22s ease both}@media (prefers-reduced-motion: reduce){.content>*,.dataset-tree,.dataset-tree *{animation:none!important;transition:none!important}}.gp-skel-row{display:flex;flex-direction:column;gap:4px;padding:6px 10px}.gp-skel-bar{height:10px;border-radius:5px;background:linear-gradient(90deg,var(--line-soft) 25%,#f2f5fa 37%,var(--line-soft) 63%);background-size:400% 100%;animation:gp-shimmer 1.3s ease infinite}@keyframes gp-shimmer{0%{background-position:100% 0}to{background-position:0 0}}@media (prefers-reduced-motion: reduce){.gp-skel-bar{animation:none}}.content{padding:24px 28px;min-width:0}.content h1{margin:4px 0 8px;font-size:22px;letter-spacing:-.01em}.content .sub{color:var(--muted);font-size:13px;margin-bottom:18px}.card{background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px 20px}.card h2{margin:0 0 8px;font-size:16px}.card ul{margin:8px 0;padding-left:20px}.card li{margin-bottom:4px}.card code{background:#f4f6fa;padding:2px 6px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px}
