:root{--color-bg:#f8fafc;--color-surface:#fff;--color-surface-hover:#f1f5f9;--color-surface-alt:#f8fafc;--color-border:#e2e8f0;--color-border-light:#f1f5f9;--color-border-focus:#3b82f6;--color-text:#0f172a;--color-text-secondary:#475569;--color-text-muted:#94a3b8;--color-primary:#3b82f6;--color-primary-hover:#2563eb;--color-primary-light:#eff6ff;--color-success:#10b981;--color-success-light:#ecfdf5;--color-warning:#f59e0b;--color-warning-light:#fffbeb;--color-error:#ef4444;--color-error-light:#fef2f2;--color-text-active:var(--color-primary);--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono","Fira Code",monospace;--text-xs:0.6875rem;--text-sm:0.8125rem;--text-base:0.875rem;--text-lg:1rem;--text-xl:1.125rem;--text-2xl:1.25rem;--text-3xl:1.5rem;--space-0:0;--space-1:0.125rem;--space-2:0.25rem;--space-3:0.5rem;--space-4:0.75rem;--space-5:1rem;--space-6:1.25rem;--space-8:1.5rem;--space-10:2rem;--space-12:2.5rem;--space-16:3rem;--radius-sm:0.1875rem;--radius-md:0.375rem;--radius-lg:0.5rem;--radius-xl:0.75rem;--radius-full:9999px;--shadow-xs:0 1px 2px rgba(0,0,0,.03);--shadow-sm:0 1px 3px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.02);--shadow-md:0 4px 6px rgba(0,0,0,.04),0 2px 4px rgba(0,0,0,.02);--shadow-lg:0 10px 15px rgba(0,0,0,.05),0 4px 6px rgba(0,0,0,.02);--transition-fast:100ms ease;--transition-normal:150ms ease;--sidebar-width:200px;--sidebar-collapsed:56px}:root[data-theme=dark]{--color-text-active:#fff}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--color-bg:#0c0c0f;--color-surface:#16161a;--color-surface-hover:#1e1e24;--color-surface-alt:#121215;--color-border:#27272a;--color-border-light:#1e1e24;--color-text:#fafafa;--color-text-secondary:#a1a1aa;--color-text-muted:#71717a;--color-primary-light:#1e3a5f;--color-success-light:#052e16;--color-warning-light:#451a03;--color-error-light:#450a0a;--color-text-active:#fff}}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body,html{overflow:hidden;height:100%;overscroll-behavior:none;touch-action:none;font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);line-height:1.5;font-size:var(--text-base)}h3,h4,h5,h6{font-weight:600;line-height:1.2;letter-spacing:-.01em}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}h3,h4{font-weight:500}h4{font-size:var(--text-base)}p{color:var(--color-text-secondary)}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-primary-hover)}.container{max-width:1100px;margin:0 auto;padding:0 var(--space-5)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-5)}.card-sm{padding:var(--space-4)}.card-hover{cursor:pointer;transition:all var(--transition-normal)}.card-hover:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-md);border:none;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;height:32px}.btn-primary{background:var(--color-primary)}.btn-primary:hover{background:var(--color-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-surface-hover);border-color:var(--color-text-muted)}.btn-ghost{background:transparent;color:var(--color-text-secondary);padding:var(--space-2) var(--space-3)}.btn-ghost:hover{background:var(--color-surface-hover);color:var(--color-text)}.btn-sm{height:28px;padding:var(--space-1) var(--space-3);font-size:var(--text-xs)}.btn-lg{height:40px;padding:var(--space-3) var(--space-6);font-size:var(--text-base)}.btn-icon{width:32px;padding:0}.btn-icon.btn-sm{width:28px;height:28px}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.form-group{margin-bottom:var(--space-4)}.form-group-compact{margin-bottom:var(--space-3)}.form-label{display:block;font-size:var(--text-xs);font-weight:500;margin-bottom:var(--space-1);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.03em}.form-input{width:100%;padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-family:inherit;background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-fast);height:36px}.form-input:focus{outline:none;border-color:var(--color-border-focus);box-shadow:0 0 0 2px var(--color-primary-light)}.form-input::placeholder{color:var(--color-text-muted)}textarea.form-input{height:auto;min-height:80px;resize:vertical}select.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%2394a3b8' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .375rem center;background-repeat:no-repeat;background-size:1.25em;padding-right:2rem}input[type=checkbox],input[type=radio]{width:16px;height:16px;accent-color:var(--color-primary)}.badge{display:inline-flex;align-items:center;padding:2px 6px;font-size:var(--text-xs);font-weight:500;border-radius:var(--radius-full);line-height:1.4}.badge-success{background:var(--color-success-light);color:var(--color-success)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning)}.badge-error{background:var(--color-error-light);color:var(--color-error)}.badge-primary{background:var(--color-primary-light);color:var(--color-primary)}.grid{display:grid;grid-gap:var(--space-4);gap:var(--space-4)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width:1024px){.grid-4{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.grid-2,.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-5{padding:var(--space-5)}.text-center{text-align:center}.text-right{text-align:right}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) 0;border-bottom:1px solid var(--color-border)}.nav-logo{font-size:var(--text-lg);font-weight:700;color:var(--color-text);letter-spacing:-.02em}.nav-links{display:flex;gap:var(--space-5);list-style:none}.nav-link{color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:500;transition:color var(--transition-fast)}.nav-link.active,.nav-link:hover{color:var(--color-text)}.sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);position:fixed;top:0;left:0;bottom:0;display:flex;flex-direction:column;z-index:100}.sidebar-header{padding:var(--space-4);border-bottom:1px solid var(--color-border-light)}.sidebar-nav{flex:1 1;padding:var(--space-3);overflow-y:auto}.sidebar-nav ul{list-style:none}.sidebar-link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:450;color:var(--color-text-secondary);transition:all var(--transition-fast);margin-bottom:2px}.sidebar-link:hover{background:var(--color-surface-hover);color:var(--color-text)}.sidebar-link.active{background:var(--color-primary-light);color:var(--color-primary)}.sidebar-link-icon{font-size:var(--text-base);width:20px;text-align:center}.sidebar-footer{padding:var(--space-3);border-top:1px solid var(--color-border-light)}.main-content{margin-left:var(--sidebar-width);padding:var(--space-5);min-height:100vh}.page-header{justify-content:space-between;margin-bottom:var(--space-5)}.page-header,.page-header h1{display:flex;align-items:center}.page-header h1{gap:var(--space-3)}.page-header-actions{display:flex;gap:var(--space-2)}.empty-state{text-align:center;padding:var(--space-10) var(--space-4)}.empty-state-icon{font-size:2rem;margin-bottom:var(--space-3);opacity:.3}.loading{display:flex;align-items:center;justify-content:center;padding:var(--space-6)}.spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .15s ease}.modal{background:var(--color-surface);border-radius:var(--radius-xl);max-width:420px;width:90%;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:modalIn .2s ease}@keyframes modalIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border)}.modal-header h3{font-size:var(--text-base)}.modal-body{padding:var(--space-5)}.modal-footer{padding:var(--space-3) var(--space-5);border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:var(--space-2)}.stat-card{background:var(--color-surface-alt);border:1px solid var(--color-border-light);border-radius:var(--radius-md);padding:var(--space-4)}.stat-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;margin-bottom:var(--space-1)}.stat-value{font-size:var(--text-xl);font-weight:600;line-height:1.2}.table{width:100%;border-collapse:collapse}.table td,.table th{padding:var(--space-2) var(--space-3);text-align:left;border-bottom:1px solid var(--color-border-light)}.table th{font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em}.table td{font-size:var(--text-sm)}.table tbody tr{transition:background var(--transition-fast)}.table tbody tr:hover{background:var(--color-surface-hover)}@media (max-width:1024px){.table thead{display:none}.table tbody tr{display:block;margin-bottom:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);padding:var(--space-4);box-shadow:var(--shadow-sm)}.table td{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--color-border-light);padding:var(--space-3) 0;text-align:right}.table td:last-child{border-bottom:none;justify-content:flex-end;padding-top:var(--space-4)}.table td:before{content:attr(data-label);font-weight:600;text-align:left;margin-right:var(--space-4);color:var(--color-text-secondary);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em}}.data-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3);border-bottom:1px solid var(--color-border-light);transition:background var(--transition-fast)}.data-row:hover{background:var(--color-surface-hover)}.data-row:last-child{border-bottom:none}@media (max-width:1024px){.data-row{flex-direction:column;align-items:flex-start;gap:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-3);box-shadow:var(--shadow-xs)}.data-row>div:first-child{width:100%}.data-row>div:last-child{width:100%;justify-content:flex-end;margin-top:var(--space-2);border-top:1px solid var(--color-border-light);padding-top:var(--space-3)}}.info-block{background:var(--color-surface-alt);border-radius:var(--radius-md);padding:var(--space-3)}.info-block-label{font-size:var(--text-xs);color:var(--color-text-muted);margin-bottom:var(--space-1)}.info-block-value{font-size:var(--text-sm);font-weight:500}.divider{height:1px;background:var(--color-border-light);margin:var(--space-4) 0}.section{margin-bottom:var(--space-5)}.section-title{font-size:var(--text-xs);font-weight:500;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-3)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}:focus:not(:focus-visible){outline:none}.btn{transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.btn-primary{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 2px 8px rgba(59,130,246,.3)}.btn-primary:hover{background:linear-gradient(135deg,#2563eb,#1d4ed8);color:#fff;transform:translateY(-2px);box-shadow:0 4px 16px rgba(59,130,246,.4)}.btn-primary:active{transform:translateY(0);box-shadow:0 1px 4px rgba(59,130,246,.3)}.btn-secondary:hover{background:var(--color-surface);border-color:var(--color-primary);color:var(--color-primary);transform:translateY(-1px);box-shadow:0 3px 8px rgba(0,0,0,.08)}.btn-secondary:active{transform:translateY(0)}.btn-ghost:hover{transform:translateY(-1px)}.btn:disabled{box-shadow:none!important}.app-container{position:fixed;inset:0;overflow:hidden}.map-background{position:absolute;inset:0;z-index:1}.panel-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:300;animation:fadeIn .2s ease}.panel-container{position:fixed;top:0;right:0;bottom:0;width:min(1000px,95vw);z-index:400;animation:slideIn .25s cubic-bezier(.4,0,.2,1)}@keyframes slideIn{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.panel{inset:0;box-shadow:-10px 0 30px rgba(0,0,0,.15);flex-direction:column;overflow:hidden}.panel,.panel-close{position:absolute;background:var(--color-surface);display:flex}.panel-close{top:16px;right:16px;width:36px;height:36px;border-radius:var(--radius-lg);border:1px solid var(--color-border);color:var(--color-text-secondary);cursor:pointer;align-items:center;justify-content:center;z-index:10;transition:all .15s ease}.panel-close:hover{background:var(--color-surface-hover);color:var(--color-text);transform:scale(1.05)}.panel-content{flex:1 1;overflow-y:auto;padding:64px 24px 24px}@media (max-width:640px){.panel-container{width:100vw}.panel-content{padding:56px 16px 16px}}:root[data-theme=dark]{--color-bg:#0c0c0f;--color-surface:#16161a;--color-surface-hover:#1e1e24;--color-surface-alt:#121215;--color-border:#27272a;--color-border-light:#1e1e24;--color-text:#fafafa;--color-text-secondary:#a1a1aa;--color-text-muted:#71717a;--color-primary-light:#1e3a5f;--color-success-light:#052e16;--color-warning-light:#451a03;--color-error-light:#450a0a}:root[data-theme=light]{--color-bg:#f8fafc;--color-surface:#fff;--color-surface-hover:#f1f5f9;--color-surface-alt:#f8fafc;--color-border:#e2e8f0;--color-border-light:#f1f5f9;--color-text:#0f172a;--color-text-secondary:#475569;--color-text-muted:#94a3b8;--color-primary-light:#eff6ff;--color-success-light:#ecfdf5;--color-warning-light:#fffbeb;--color-error-light:#fef2f2}