:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--color-white: #ffffff;--color-gray-50: #f9fafb;--color-gray-100: #f3f4f6;--color-gray-200: #e5e7eb;--color-gray-300: #d1d5db;--color-gray-400: #9ca3af;--color-gray-500: #6b7280;--color-gray-600: #4b5563;--color-gray-700: #374151;--color-gray-800: #1f2937;--color-gray-900: #111827;--color-primary: #1d4ed8;--color-primary-hover: #1e40af;--color-primary-light: #dbeafe;--color-danger: #dc2626;--color-danger-hover: #b91c1c;--color-danger-light: #fee2e2;--color-success: #16a34a;--color-success-hover: #15803d;--color-success-light: #dcfce7;--color-success-fg: #15803d;--color-warning: #d97706;--color-warning-light: #fef3c7;--color-warning-hover: #b45309;--color-warning-fg: #b45309;--color-input-border: var(--color-gray-500);--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;--radius-sm: .25rem;--radius: .375rem;--radius-lg: .5rem;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--color-text: var(--color-gray-900);--color-text-muted: var(--color-gray-500);--color-bg: var(--color-gray-50);--color-border: var(--color-gray-200);--color-accent: var(--color-primary);--color-error-light: var(--color-danger-light);--color-error-fg: var(--color-danger-hover);--color-danger-bg: var(--color-danger-light)}*,*:before,*:after{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);font-size:.9375rem;line-height:1.5;color:var(--color-gray-900);background:var(--color-gray-50)}h1,h2,h3,h4{margin:0 0 var(--space-4);line-height:1.25;font-weight:600}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.125rem}h4{font-size:1rem}p{margin:0 0 var(--space-4)}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.page-shell{display:flex;flex-direction:column;min-height:100vh}.page-content{max-width:1100px;margin:0 auto;padding:var(--space-8) var(--space-6);width:100%}.auth-bar{background:var(--color-gray-800);color:var(--color-white);padding:var(--space-2) var(--space-6);display:flex;align-items:center;gap:var(--space-3);font-size:.875rem}.auth-bar .spacer{flex:1}.auth-bar a{color:var(--color-gray-300)}.auth-bar a:hover{color:var(--color-white)}.btn-signout{background:none;border:none;padding:0;cursor:pointer;color:var(--color-gray-300);font-size:.875rem;font-family:inherit;line-height:inherit}.btn-signout:hover{color:var(--color-white)}.btn-signout:focus-visible{outline:2px solid var(--color-white);outline-offset:2px;border-radius:2px}.main-nav{background:var(--color-white);border-bottom:1px solid var(--color-gray-200);padding:0 var(--space-6);display:flex;align-items:center;gap:var(--space-2)}.main-nav a{display:block;padding:var(--space-3) var(--space-4);color:var(--color-gray-600);font-weight:500;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;text-decoration:none}.main-nav a:hover{color:var(--color-gray-900);text-decoration:none}.main-nav a.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.role-chip{display:inline-block;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.role-chip.admin{background:var(--color-danger-light);color:var(--color-danger)}.role-chip.mapper{background:var(--color-primary-light);color:var(--color-primary)}.role-chip.viewer{background:var(--color-gray-200);color:var(--color-gray-600)}.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius);border:1px solid transparent;font-size:.875rem;font-weight:500;cursor:pointer;text-decoration:none;transition:background-color .15s,border-color .15s;font-family:inherit;line-height:1.5}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-white);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover);text-decoration:none;color:var(--color-white)}.btn-secondary{background:var(--color-white);color:var(--color-gray-700);border-color:var(--color-gray-300)}.btn-secondary:hover:not(:disabled){background:var(--color-gray-50);text-decoration:none;color:var(--color-gray-700)}.btn-danger{background:var(--color-danger);color:var(--color-white);border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover);border-color:var(--color-danger-hover);text-decoration:none;color:var(--color-white)}.btn-ghost{background:transparent;color:var(--color-gray-600);border-color:transparent;padding:var(--space-1) var(--space-2);font-size:.8125rem}.btn-ghost:hover:not(:disabled){background:var(--color-gray-100);text-decoration:none;color:var(--color-gray-900)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:.8125rem}.form-group{margin-bottom:var(--space-5)}label{display:block;font-size:.875rem;font-weight:500;margin-bottom:var(--space-2);color:var(--color-gray-700)}label .required{color:var(--color-danger);margin-left:var(--space-1)}input[type=text],input[type=email],input[type=url],input[type=datetime-local],input[type=search],select,textarea{display:block;width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-input-border);border-radius:var(--radius);font-size:.9375rem;font-family:inherit;color:var(--color-gray-900);background:var(--color-white);transition:border-color .15s}input:focus,select:focus,textarea:focus{outline:2px solid var(--color-primary);outline-offset:-1px;border-color:var(--color-primary)}input.error,select.error,textarea.error{border-color:var(--color-danger)}.field-error{margin-top:var(--space-1);font-size:.8125rem;color:var(--color-danger)}.form-actions{display:flex;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--color-gray-200);margin-top:var(--space-6)}.error-banner{background:var(--color-danger-light);border:1px solid var(--color-danger);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-6);display:flex;align-items:flex-start;gap:var(--space-3)}.error-banner p{margin:0;color:var(--color-danger);font-size:.9375rem}.table-wrapper{overflow-x:auto;border:1px solid var(--color-gray-200);border-radius:var(--radius)}table{width:100%;border-collapse:collapse;font-size:.9375rem}thead tr{background:var(--color-gray-50);border-bottom:1px solid var(--color-gray-200)}th{padding:var(--space-3) var(--space-4);text-align:left;font-size:.8125rem;font-weight:600;color:var(--color-gray-600);text-transform:uppercase;letter-spacing:.04em}td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-gray-100);vertical-align:top}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--color-gray-50)}.card{background:var(--color-white);border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);padding:var(--space-6);margin-bottom:var(--space-6)}.card h2,.card h3{margin-bottom:var(--space-4)}.badge{display:inline-block;padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600}.badge-info{background:var(--color-primary-light);color:var(--color-primary)}.badge-warn{background:var(--color-warning-light);color:var(--color-warning-fg)}.badge-error{background:var(--color-danger-light);color:var(--color-danger-hover)}.badge-success{background:var(--color-success-light);color:var(--color-success-fg)}.badge-neutral{background:var(--color-gray-100);color:var(--color-gray-600)}.toast-container{position:fixed;bottom:var(--space-6);right:var(--space-6);display:flex;flex-direction:column;gap:var(--space-2);z-index:1000}.toast{background:var(--color-gray-800);color:var(--color-white);padding:var(--space-3) var(--space-5);border-radius:var(--radius);box-shadow:var(--shadow);font-size:.9375rem;max-width:380px;animation:toast-in .2s ease}.toast.success{background:var(--color-success)}.toast.error{background:var(--color-danger)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:900}.dialog{background:var(--color-white);border-radius:var(--radius-lg);padding:var(--space-6);max-width:420px;width:90%;box-shadow:var(--shadow)}.dialog h3{margin-bottom:var(--space-3)}.dialog p{margin-bottom:var(--space-5);color:var(--color-gray-600)}.dialog-actions{display:flex;gap:var(--space-3);justify-content:flex-end}.owner-badges{display:flex;flex-wrap:wrap;gap:var(--space-2)}.owner-chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--color-gray-100);border-radius:9999px;font-size:.8125rem;color:var(--color-gray-700)}.owner-chip button{background:none;border:none;cursor:pointer;padding:0;color:var(--color-gray-600);font-size:1rem;line-height:1;display:flex;align-items:center}.owner-chip button:hover{color:var(--color-danger)}.tree{list-style:none;padding:0;margin:0}.tree li{border-bottom:1px solid var(--color-gray-100)}.tree-node{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4)}.tree-node:hover{background:var(--color-gray-50)}.tree-toggle{background:none;border:none;cursor:pointer;padding:0;width:1.25rem;text-align:center;color:var(--color-gray-500);font-size:.875rem}.tree-label{flex:1;font-weight:500}.tree-label-inactive .tree-item-link{color:var(--color-text-muted);text-decoration:line-through;text-decoration-color:var(--color-gray-400)}.tree-actions{display:flex;gap:var(--space-2);opacity:.65;transition:opacity .1s}.tree-node:hover .tree-actions,.tree-node:focus-within .tree-actions{opacity:1}.tree-item{outline:none}.tree-item:focus-visible>.tree-node{background:var(--color-primary-light)}.tree-count{margin-left:.5rem;font-weight:400}.tree-children{list-style:none;padding:0;margin:0;padding-left:var(--space-6);border-left:2px solid var(--color-gray-100);margin-left:var(--space-8)}.empty-state{text-align:center;padding:var(--space-12) var(--space-6);color:var(--color-gray-500)}.empty-state p{margin:0 0 var(--space-4)}.breadcrumb{display:flex;align-items:center;gap:var(--space-2);font-size:.875rem;color:var(--color-gray-500);margin-bottom:var(--space-6)}.breadcrumb a{color:var(--color-gray-500)}.breadcrumb a:hover{color:var(--color-gray-900)}.breadcrumb span{color:var(--color-gray-300)}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.section-header h2{margin:0}.definition-list{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-2) var(--space-6)}.definition-list dt{font-weight:500;color:var(--color-gray-600);font-size:.875rem}.definition-list dd{margin:0;font-family:var(--font-mono);font-size:.875rem;word-break:break-all}.filter-row{display:flex;gap:var(--space-3);margin-bottom:var(--space-5);align-items:flex-end}.filter-row input,.filter-row select{width:auto;flex:1;max-width:300px}.monospace{font-family:var(--font-mono);font-size:.875rem}.text-muted{color:var(--color-gray-500);font-size:.875rem}.conflict-banner{background:var(--color-warning-light);border:1px solid var(--color-warning);border-radius:var(--radius);padding:var(--space-4);margin-bottom:var(--space-6);display:flex;align-items:center;gap:var(--space-4)}.rollback-badge{background:var(--color-gray-200);color:var(--color-gray-600);border-radius:var(--radius-sm);padding:2px var(--space-2);font-size:.75rem;font-family:var(--font-mono)}.skip-link{position:absolute;left:-9999px;top:0;z-index:10000}.skip-link:focus{left:0;padding:var(--space-2) var(--space-4);background:var(--color-primary);color:var(--color-white);font-weight:600;text-decoration:none}.btn-ghost-danger{color:var(--color-danger)}.btn-ghost-danger:hover:not(:disabled){color:var(--color-danger-hover);background:var(--color-danger-light)}.row-dimmed{opacity:.5}.action-group{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
