*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--sidebar-bg: #ffffff;--sidebar-width: 260px;--primary: #6366f1;--primary-hover: #4f46e5;--primary-light: #e0e7ff;--primary-50: #eef2ff;--bg-main: #f1f5f9;--bg-card: #ffffff;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--text-sidebar: #475569;--text-sidebar-active: #6366f1;--border: #e2e8f0;--border-light: #f1f5f9;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--status-normal: #22c55e;--status-normal-bg: #f0fdf4;--status-normal-text: #15803d;--status-warning: #eab308;--status-warning-bg: #fefce8;--status-warning-text: #a16207;--status-critical: #ef4444;--status-critical-bg: #fef2f2;--status-critical-text: #b91c1c;--status-fail: #7f1d1d;--status-fail-bg: #fef2f2;--status-fail-text: #7f1d1d;--status-no-data: #94a3b8;--card-radius: 12px;--card-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--card-border: 1px solid var(--border);--font-sans: "Inter", -apple-system, system-ui, sans-serif;--radius-sm: 6px;--radius: 8px;--radius-lg: 12px;--radius-xl: 16px;--transition: .15s ease;--muted: var(--text-muted);--body-strong: var(--text-primary);--body: var(--text-secondary);--hairline: var(--border);--hairline-strong: var(--border);--text-link: var(--primary);--canvas-soft: var(--bg-main);--surface: var(--bg-card);--surface-strong: var(--border-light);--semaphore-green: var(--status-normal);--semaphore-yellow: var(--status-warning);--semaphore-orange: var(--status-warning-text);--semaphore-red: var(--status-critical);--gradient-sky-light: var(--primary-50)}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);font-weight:400;line-height:1.5;color:var(--text-primary);background:var(--bg-main)}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25;letter-spacing:-.02em;color:var(--text-primary)}h1{font-size:1.75rem}h2{font-size:1.375rem}h3{font-size:1.125rem}p{color:var(--text-secondary);line-height:1.6}a{color:var(--primary);text-decoration:none;transition:color var(--transition)}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer;border:none;outline:none}input,select,textarea{font-family:inherit;font-size:1rem}code{font-family:JetBrains Mono,Fira Code,monospace;font-size:.875rem}.app-layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:50;overflow-y:auto;border-right:1px solid var(--border)}.sidebar-logo{display:flex;align-items:center;gap:.75rem;padding:1.5rem 1.25rem 1.75rem;border-bottom:1px solid var(--border);flex-shrink:0}.sidebar-logo img{height:36px;width:auto;border-radius:8px}.sidebar-logo-text{font-size:.8125rem;font-weight:600;color:var(--text-primary);line-height:1.3;letter-spacing:-.01em}.sidebar-nav{flex:1;padding:.75rem;display:flex;flex-direction:column;gap:.125rem}.sidebar-nav-item{display:flex;align-items:center;gap:.75rem;padding:.625rem .75rem;border-radius:var(--radius);color:var(--text-sidebar);font-size:.875rem;font-weight:500;cursor:pointer;transition:all var(--transition);-webkit-user-select:none;user-select:none}.sidebar-nav-item:hover{background:var(--primary-50);color:var(--text-sidebar-active)}.sidebar-nav-item.active{background:var(--primary-50);color:var(--text-sidebar-active);font-weight:600}.sidebar-nav-item svg{width:20px;height:20px;flex-shrink:0;opacity:.7;color:var(--text-sidebar)}.sidebar-nav-item.active svg{opacity:1;color:var(--text-sidebar-active)}.sidebar-nav-item:hover svg{color:var(--text-sidebar-active)}.sidebar-spacer{flex:1}.sidebar-user{padding:.75rem;border-top:1px solid var(--border)}.sidebar-user-email{font-size:.75rem;color:var(--text-muted);padding:0 .75rem .25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main-area{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;min-height:100vh;background:linear-gradient(180deg,#eef2ff,#f1f5f9 300px)}.main-header{background:var(--bg-card);border-bottom:1px solid var(--border);padding:1rem 2rem;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:30}.main-header-left{display:flex;align-items:center;gap:1rem}.main-header-title{font-size:1.125rem;font-weight:600;color:var(--text-primary)}.main-header-right{display:flex;align-items:center;gap:.75rem}.main-header-right .user-avatar{width:32px;height:32px;border-radius:50%;background:var(--primary-light);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:.8125rem;font-weight:600}.main-content{flex:1;padding:1.5rem 2rem 2rem;max-width:1280px;width:100%;margin:0 auto}.card{background:var(--bg-card);border:var(--card-border);border-radius:var(--card-radius);padding:1.5rem;box-shadow:var(--card-shadow)}.card-title{font-size:1rem;font-weight:600;margin-bottom:1rem;color:var(--text-primary)}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.5rem}.stats-card{background:var(--bg-card);border:var(--card-border);border-radius:var(--card-radius);padding:1.25rem;box-shadow:var(--card-shadow);display:flex;align-items:flex-start;gap:1rem}.stats-card-icon{width:44px;height:44px;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;flex-shrink:0}.stats-card-icon svg{width:22px;height:22px}.stats-card-icon.normal{background:var(--status-normal-bg);color:var(--status-normal)}.stats-card-icon.warning{background:var(--status-warning-bg);color:var(--status-warning)}.stats-card-icon.critical{background:var(--status-critical-bg);color:var(--status-critical)}.stats-card-icon.fail{background:#7f1d1d14;color:var(--status-fail)}.stats-card-body{flex:1;min-width:0}.stats-card-value{font-size:1.75rem;font-weight:700;line-height:1.1;color:var(--text-primary)}.stats-card-label{font-size:.8125rem;color:var(--text-muted);margin-top:.125rem}.btn{display:inline-flex;align-items:center;gap:.5rem;font-size:.875rem;font-weight:500;padding:.5rem 1rem;border-radius:var(--radius);line-height:1;transition:all var(--transition);white-space:nowrap}.btn svg{width:16px;height:16px}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-secondary{background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover{background:var(--bg-main)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-main);color:var(--text-primary)}.btn-danger{background:var(--status-critical);color:#fff}.btn-danger:hover{background:#dc2626}.status-badge{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .625rem;border-radius:100px;font-size:.75rem;font-weight:600}.status-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.status-badge.normal{background:var(--status-normal-bg);color:var(--status-normal-text)}.status-badge.normal .status-dot{background:var(--status-normal)}.status-badge.warning{background:var(--status-warning-bg);color:var(--status-warning-text)}.status-badge.warning .status-dot{background:var(--status-warning)}.status-badge.critical{background:var(--status-critical-bg);color:var(--status-critical-text)}.status-badge.critical .status-dot{background:var(--status-critical)}.status-badge.fail{background:var(--status-fail-bg);color:var(--status-fail-text)}.status-badge.fail .status-dot{background:var(--status-fail)}.status-badge.no-data{background:#f1f5f9;color:var(--text-muted)}.status-badge.no-data .status-dot{background:var(--status-no-data)}.table-card{background:var(--bg-card);border:var(--card-border);border-radius:var(--card-radius);box-shadow:var(--card-shadow);overflow:hidden}.table-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.table-header-left{display:flex;align-items:center;gap:.75rem}.table-header-count{font-size:.875rem;font-weight:600;color:var(--text-primary)}.table-header-right{display:flex;align-items:center;gap:.75rem}.search-input{display:flex;align-items:center;gap:.5rem;padding:.4375rem .75rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);transition:all var(--transition)}.search-input:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a}.search-input svg{width:16px;height:16px;color:var(--text-muted);flex-shrink:0}.search-input input{border:none;outline:none;background:transparent;font-size:.875rem;color:var(--text-primary);width:180px}.search-input input::placeholder{color:var(--text-muted)}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table thead th{text-align:left;padding:.75rem 1.25rem;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:#f8fafc;border-bottom:1px solid var(--border)}.data-table tbody td{padding:.75rem 1.25rem;border-bottom:1px solid var(--border-light);color:var(--text-primary);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr{transition:background var(--transition)}.data-table tbody tr:hover{background:#f8fafc}.data-table .cell-link{color:var(--primary);font-weight:500;cursor:pointer}.data-table .cell-link:hover{text-decoration:underline}.input-field{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.875rem;color:var(--text-primary);background:var(--bg-card);transition:all var(--transition)}.input-field:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a}.input-label{display:block;font-size:.8125rem;font-weight:500;color:var(--text-primary);margin-bottom:.375rem}.input-group{margin-bottom:1rem}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.section{margin-bottom:1.5rem}.badge{display:inline-block;padding:.2rem .5rem;border-radius:100px;font-size:.6875rem;font-weight:600;letter-spacing:.03em;background:#f1f5f9;color:var(--text-secondary)}.hero-band{text-align:center;padding:2.5rem 0 1.5rem;position:relative}.hero-band h1{font-size:1.75rem;margin-bottom:.5rem}.hero-band p{font-size:.9375rem;max-width:500px;margin:0 auto;color:var(--text-muted)}.hero-band .hero-brand{margin-top:.75rem;display:flex;align-items:center;justify-content:center;gap:.375rem;font-size:.6875rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--primary);opacity:.5}.dropzone-container{width:100%}.dropzone{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:2.5rem 2rem;text-align:center;cursor:pointer;transition:all var(--transition);background:#fafafa;min-height:160px;display:flex;align-items:center;justify-content:center}.dropzone:hover{border-color:var(--primary);background:#f8fafc}.dropzone-dragging{border-color:var(--primary);background:var(--primary-50);border-style:solid;transform:scale(1.01)}.dropzone-has-file{border-color:var(--status-normal);border-style:solid;background:var(--status-normal-bg)}.dropzone-disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.dropzone-placeholder{display:flex;flex-direction:column;align-items:center;gap:.5rem}.dropzone-icon{color:var(--text-muted);margin-bottom:.25rem}.dropzone-label{font-size:.9375rem;font-weight:500;color:var(--text-primary);margin:0}.dropzone-hint{font-size:.8125rem;color:var(--text-muted);margin:0}.dropzone-file-info{display:flex;align-items:center;gap:1rem;width:100%}.dropzone-file-details{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:.25rem}.dropzone-file-name{font-size:.9375rem;font-weight:600;color:var(--text-primary);word-break:break-all}.dropzone-file-size{font-size:.75rem;color:var(--text-muted)}.dropzone-check{flex-shrink:0}.dropzone-error{margin-top:.5rem;font-size:.8125rem;color:var(--status-critical-text);text-align:center}.dropzone-clear{display:inline-block;margin-top:.5rem;font-size:.75rem;color:var(--text-secondary);background:none;border:none;cursor:pointer;text-decoration:underline;padding:.25rem .5rem}.dropzone-clear:hover{color:var(--status-critical)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0f172a80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;animation:modalFadeIn .15s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--bg-card);border-radius:var(--radius-xl);width:100%;max-width:720px;max-height:85vh;display:flex;flex-direction:column;box-shadow:var(--shadow-xl);animation:modalSlideIn .15s ease}@keyframes modalSlideIn{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid var(--border)}.modal-title{font-size:1.125rem;font-weight:600;color:var(--text-primary);margin:0}.modal-close{width:32px;height:32px;border-radius:var(--radius);border:none;background:#f1f5f9;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition)}.modal-close:hover{background:var(--border);color:var(--text-primary)}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--border);border-radius:0 0 var(--radius-xl) var(--radius-xl)}.app-footer{border-top:1px solid var(--border);background:var(--bg-card);padding:1rem 2rem;margin-top:auto}.footer-inner{max-width:1280px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.footer-brand{display:flex;align-items:center;gap:.5rem}.footer-label{font-size:.8125rem;font-weight:500;color:var(--text-secondary)}.footer-credit{font-size:.8125rem;color:var(--text-muted);display:flex;align-items:center;gap:.25rem}.footer-link{font-weight:600;color:var(--primary);text-decoration:none}.footer-link:hover{text-decoration:underline}.footer-year{font-size:.8125rem;color:var(--text-muted)}.info-note{display:flex;align-items:flex-start;gap:.5rem;padding:.625rem .875rem;background:#f8fafc;border:1px solid var(--border);border-radius:var(--radius);font-size:.8125rem;color:var(--text-secondary);line-height:1.4}.info-note svg{color:var(--primary);margin-top:.125rem;flex-shrink:0;width:16px;height:16px}.profile-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.profile-header-left{display:flex;flex-direction:column;gap:.5rem}.profile-header-back{display:inline-flex;align-items:center;gap:.375rem;font-size:.8125rem;color:var(--text-secondary);cursor:pointer;transition:color var(--transition);background:none;border:none;padding:0}.profile-header-back:hover{color:var(--primary)}.profile-header-back svg{width:16px;height:16px}.profile-header-title{font-size:1.75rem;font-weight:700;color:var(--text-primary);line-height:1.1}.profile-header-subtitle{font-size:.9375rem;color:var(--text-muted)}.profile-header-right{display:flex;gap:.5rem;flex-shrink:0}.profile-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1.5rem}.profile-metric-card{background:var(--bg-card);border:var(--card-border);border-radius:var(--card-radius);padding:1.25rem;box-shadow:var(--card-shadow)}.profile-metric-label{font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.375rem}.profile-metric-value{font-size:1.75rem;font-weight:700;line-height:1.1;color:var(--text-primary)}.profile-metric-sub{font-size:.8125rem;color:var(--text-muted);margin-top:.125rem}.profile-metric-card .status-badge{margin-top:.5rem}.status-indicator-circle{width:56px;height:56px;border-radius:50%;margin:0 auto .5rem;display:flex;align-items:center;justify-content:center}.status-indicator-circle svg{width:28px;height:28px;color:#fff}.timeline-row{display:flex;gap:1.5rem;flex-wrap:wrap}.timeline-item{flex:1;min-width:140px}.timeline-item-label{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:.25rem}.timeline-item-value{font-size:1.375rem;font-weight:700;line-height:1.1}.timeline-item-value.warning-color{color:var(--status-warning-text)}.timeline-item-value.critical-color{color:var(--status-critical)}.timeline-item-value.normal-color{color:var(--text-primary)}.tp-table{width:100%;border-collapse:collapse;font-size:.8125rem}.tp-table thead th{text-align:left;padding:.5rem .75rem;font-weight:600;color:var(--text-muted);font-size:.6875rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border)}.tp-table tbody td{padding:.5rem .75rem;border-bottom:1px solid var(--border-light);color:var(--text-primary);vertical-align:middle}.tp-table tbody tr:last-child td{border-bottom:none}.tp-table tbody tr{transition:background var(--transition)}.tp-table tbody tr:hover{background:#f8fafc}.tp-table tbody tr.latest{background:var(--primary-50)}.tp-table-cell-date{font-weight:500}.tp-table-row{cursor:pointer}.tp-chart-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.75rem;flex-wrap:wrap}.tp-gas-toggles{display:flex;gap:.375rem;flex-wrap:wrap}.tp-gas-toggle{font-size:.6875rem;font-weight:600;padding:.25rem .625rem;border-radius:100px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);cursor:pointer;transition:all var(--transition)}.tp-gas-toggle.active{background:var(--gas-color, var(--primary));color:#fff;border-color:var(--gas-color, var(--primary))}.tp-gauge{height:6px;background:#f1f5f9;border-radius:3px;overflow:hidden;margin-bottom:.5rem}.tp-gauge-fill{height:100%;border-radius:3px;transition:width .5s ease;background:var(--gauge-color, var(--primary))}.tp-gauge-value{font-size:.9375rem;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:.5rem}.modal-icon{width:40px;height:40px;border-radius:var(--radius);background:var(--primary-50);color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-icon svg{width:22px;height:22px}.modal-description{font-size:.875rem;color:var(--text-secondary);margin-bottom:1.25rem;line-height:1.5}.modal-tips{margin-top:1.25rem;padding:1rem 1.25rem;background:var(--primary-50);border-radius:var(--radius);border-left:3px solid var(--primary)}.modal-tips h4{font-size:.8125rem;font-weight:600;color:var(--primary);margin-bottom:.5rem}.modal-tips ul{margin:0;padding:0 0 0 1.25rem}.modal-tips li{font-size:.8125rem;color:var(--text-secondary);line-height:1.5;margin-bottom:.25rem}.template-table-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius)}.template-table{width:100%;border-collapse:collapse;font-size:.8125rem}.template-table th{padding:.5rem .75rem;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:#f8fafc;border-bottom:1px solid var(--border);text-align:left}.template-table td{padding:.4375rem .75rem;border-bottom:1px solid var(--border-light);color:var(--text-primary);vertical-align:top}.template-table tbody tr:last-child td{border-bottom:none}.template-col-name{font-weight:600;font-family:JetBrains Mono,Fira Code,monospace;font-size:.75rem;color:var(--text-primary)}.template-col-desc{color:var(--text-secondary);font-size:.75rem}.template-col-example{font-family:JetBrains Mono,Fira Code,monospace;color:var(--text-muted);font-size:.75rem}@media (max-width: 1024px){.stats-row,.profile-metrics{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.sidebar{width:100%;height:auto;position:relative;flex-direction:row;flex-wrap:wrap;padding-bottom:0}.sidebar-logo{padding:.75rem 1rem}.sidebar-nav{flex-direction:row;flex-wrap:wrap;padding:.5rem;gap:.25rem}.sidebar-nav-item{font-size:.75rem;padding:.375rem .5rem}.sidebar-spacer,.sidebar-user{display:none}.main-area{margin-left:0}.main-header{padding:.75rem 1rem}.main-content{padding:1rem}.stats-row,.profile-metrics,.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.data-table{font-size:.8125rem}.data-table thead th,.data-table tbody td{padding:.5rem .75rem}.search-input input{width:120px}.profile-header{flex-direction:column}.hero-band h1{font-size:1.5rem}}@media print{body{background:#fff;color:#000}.sidebar{display:none}.main-area{margin-left:0}.main-header,.app-footer{display:none}.card{break-inside:avoid;border:1px solid #ccc}}
