:root{--bg-color:#fff;--text-color:#333;--border-color:#ddd;--primary-color:#06c;--hover-color:#05a;--drop-bg-active:#f0f7ff}body,html{background-color:var(--bg-color);width:100%;height:100%;color:var(--text-color);margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;overflow:hidden}.hidden{display:none!important}#canvas-container{width:100%;height:100%;overflow:auto}#loading{z-index:1000;background:#ffffffe6;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}#loading-text{color:var(--text-color);margin-top:1rem;font-size:1.1rem;font-weight:500}#progress-container{background:var(--border-color);border-radius:4px;width:300px;height:8px;margin-top:.75rem;overflow:hidden}#progress-bar{background:var(--primary-color);border-radius:4px;width:0%;height:100%;transition:width .15s ease-out}#progress-detail{color:#888;min-height:1.2em;margin-top:.4rem;font-size:.85rem}.spinner{border:4px solid var(--border-color);border-top:4px solid var(--primary-color);border-radius:50%;width:40px;height:40px;animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#drop-zone{background-color:#f5f5f5;justify-content:center;align-items:center;width:100%;height:100%;transition:all .2s;display:flex}.landing-content{text-align:center;z-index:10;background:linear-gradient(145deg,#fff,#f9f9f9);border:2px solid #0000;border-radius:16px;width:90%;max-width:900px;padding:3rem;transition:all .25s ease-in-out;position:relative;box-shadow:0 10px 30px #0000001a}#drop-zone.drag-active .landing-content{border:2px dashed var(--primary-color);background:#e9f5ff;transform:scale(1.02);box-shadow:0 15px 40px #06c3}.landing-logo{z-index:20;border:3px solid #fff;border-radius:20px;width:100px;height:auto;margin-bottom:0;position:absolute;top:2.5rem;left:2.5rem;box-shadow:0 10px 24px #0000001f}@media (width<=768px){.landing-logo{margin-bottom:1.5rem;position:relative;top:0;left:0}}.landing-content h2{color:#1a1a1a;letter-spacing:-.5px;margin-top:0;margin-bottom:.5rem;font-size:2.5rem;font-weight:800}.tagline{color:#555;margin-bottom:2.5rem;font-size:1.25rem}.features{justify-content:center;gap:1.5rem;margin-bottom:3rem;display:flex}.featureCard{text-align:left;border:1px solid var(--border-color);background:#fff;border-radius:12px;flex:1;padding:1.5rem;box-shadow:0 4px 6px #0000000d}.featureCard h3{color:var(--primary-color);margin-top:0;margin-bottom:.75rem;font-size:1.1rem}.featureCard p{color:#666;margin:0;font-size:.95rem;line-height:1.4}.upload-section{background:#fafafa;border:2px dashed #ccc;border-radius:12px;margin-bottom:2rem;padding:2rem;transition:border-color .2s}#drop-zone.drag-active .upload-section{border-color:var(--primary-color)}.upload-hint{color:#444;margin-top:0;margin-bottom:1.5rem;font-size:1.1rem;font-weight:500}.sub-hint{color:#777;margin-top:1rem;margin-bottom:0;font-size:.9rem}#upload-btn{cursor:pointer;background-color:var(--primary-color);color:#fff;border:none;border-radius:8px;padding:14px 32px;font-size:1.15rem;font-weight:600;transition:background-color .2s,transform .1s,box-shadow .2s;box-shadow:0 4px 10px #0066cc4d}#upload-btn:hover{background-color:var(--hover-color);transform:translateY(-1px);box-shadow:0 6px 15px #06c6}#upload-btn:active{transform:translateY(1px);box-shadow:0 2px 5px #0066cc4d}.external-links{justify-content:center;gap:1rem;display:flex}.github-link{color:#fff;background-color:#24292e;border-radius:6px;padding:10px 20px;font-size:.95rem;font-weight:600;text-decoration:none;transition:background-color .2s;display:inline-block}.github-link:hover{background-color:#000}.viewer-header{background:#f5f7f9;border-bottom:1px solid #ccc;flex-shrink:0;justify-content:space-between;align-items:center;gap:1rem;height:auto;min-height:48px;padding:8px 1rem 0;display:flex;box-shadow:0 1px 3px #0000000d}.viewer-header.has-tabs{align-items:flex-end}.tabs-scroll-wrapper{flex:1;align-items:flex-end;min-width:0;display:flex;position:relative;overflow:hidden}.tab-scroll-btn{cursor:pointer;color:#555;z-index:10;background:#f5f7f9;border:none;border-bottom:1px solid #ccc;align-items:center;height:100%;margin-bottom:-1px;padding:8px 6px;font-size:.8rem;transition:color .15s,background .15s;display:flex}.tab-scroll-btn:hover{color:var(--primary-color);background:#e0e4e8}.tabs-container{white-space:nowrap;scroll-behavior:smooth;-ms-overflow-style:none;scrollbar-width:none;flex:1;gap:4px;display:flex;overflow-x:auto}.tabs-container::-webkit-scrollbar{display:none}.viewer-tab.dragging{opacity:.5;border-style:dashed;border-color:var(--primary-color)}.viewer-tab.drag-over-left{border-left:2px solid var(--primary-color)}.viewer-tab.drag-over-right{border-right:2px solid var(--primary-color)}.viewer-tab{color:#555;cursor:pointer;-webkit-user-select:none;user-select:none;background:#e0e4e8;border:1px solid #0000;border-top-width:3px;border-bottom:none;border-radius:6px 6px 0 0;align-items:center;padding:8px 16px;font-size:.95rem;font-weight:500;transition:background .15s,color .15s;display:flex}.viewer-tab:hover{background:#d4d8dc}.viewer-tab.active{color:var(--primary-color);border-color:#ccc;border-top:3px solid var(--req-border-color,#005cc5);background:#fff;border-bottom:1px solid #fff;margin-bottom:-1px;padding-bottom:9px;font-weight:600;position:relative}.tab-title{margin-right:4px}.tab-close{color:#888;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0 0 0 6px;font-size:1.1rem;line-height:1;display:flex}.tab-close:hover{color:#d00}.viewer-header h1{color:var(--text-color);margin:0;font-size:1.1rem;font-weight:500}#canvas-container{flex-direction:column;display:flex}.tabs-body{flex:1;width:100%;position:relative}.tab-content{visibility:hidden;opacity:0;pointer-events:none;z-index:1;background:#fff;transition:opacity .15s ease-in-out;position:absolute;inset:0;overflow:auto}.tab-content.active{visibility:visible;opacity:1;pointer-events:auto;z-index:2}#trace-overlay,#netlog-overlay{z-index:10;background:#ffffffe6;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}#trace-overlay-content,#netlog-overlay-content{color:var(--text-color);font-size:1.5rem;font-family:var(--font-stack)}#btn-back-tiles,#btn-settings{border:1px solid var(--border-color);cursor:pointer;background:#fff;border-radius:4px;margin-bottom:8px;padding:6px 12px;font-size:.9rem;transition:background .2s}#btn-back-tiles:hover,#btn-settings:hover{background:#f0f0f0}#tile-view{background:#f5f7f9;flex-direction:column;width:100%;height:100%;display:flex;overflow:auto}#tile-grid{flex-wrap:wrap;align-items:flex-start;gap:1.5rem;padding:2rem;display:flex}.page-tile{border:1px solid var(--border-color);cursor:pointer;background:#fff;border-radius:8px;flex-direction:column;flex:none;width:280px;transition:transform .3s cubic-bezier(.175,.885,.32,1.275),box-shadow .3s;display:flex;overflow:hidden;box-shadow:0 4px 12px #0000000f}.page-tile:hover{border-color:var(--primary-color);transform:translateY(-6px);box-shadow:0 12px 24px #0000001f}.page-tile.has-screenshot{width:fit-content;min-width:520px}@media (width<=640px){.page-tile.has-screenshot{width:100%;min-width:0}}.tile-thumbnail-wrapper{border-top:1px solid var(--border-color);background:#fff;justify-content:center;width:100%;padding:10px 0;display:flex}.tile-thumbnail{width:100%;max-width:250px;height:auto;min-height:100px}.tile-top{flex-direction:column;display:flex}.tile-title{border-bottom:1px solid #f0f0f0;padding:1rem 1rem .5rem}.tile-title h3{white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:1rem;overflow:hidden}.tile-split-body{flex-direction:row;justify-content:center;gap:1rem;display:flex}.tile-details{flex:none;width:220px;min-width:0;padding:1rem}.tile-screenshot{justify-content:center;align-items:center;padding:1rem 1rem 1rem 0;display:flex}.tile-screenshot img{object-fit:contain;border:1px solid #ddd;border-radius:6px;max-width:250px;max-height:250px;box-shadow:0 2px 6px #00000014}.tile-metrics{grid-template-columns:1fr 1fr;gap:.5rem;font-size:.85rem;display:grid}.tile-split-body.has-screenshot .tile-metrics{grid-template-columns:1fr}.metric-item{border-bottom:1px dotted #e0e0e0;flex-direction:row;justify-content:space-between;align-items:baseline;padding:2px 0;display:flex}.metric-label{color:#888;text-transform:uppercase;font-size:.75rem}.metric-value{font-weight:500}#settings-overlay{z-index:2000;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.settings-modal{background:#fff;border-radius:8px;flex-direction:column;width:90%;max-width:500px;display:flex;box-shadow:0 4px 24px #0003}.settings-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.settings-header h2{margin:0;font-size:1.25rem}#btn-settings-close{cursor:pointer;background:0 0;border:none;font-size:1.25rem}.settings-body{padding:1.5rem}.settings-separator{background:var(--border-color);height:1px;margin:1.5rem 0}.settings-body h4{margin-top:0;margin-bottom:1rem}.settings-grid{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.settings-grid label{cursor:pointer;align-items:center;gap:.5rem;font-size:.9rem;display:flex}#summary-view{color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol}.summary-header{border-bottom:1px solid #eee;margin-bottom:20px;padding-bottom:15px}.summary-header h2{margin:0 0 10px;font-size:24px}.summary-section{background:#fff;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:30px;overflow:hidden}.summary-section-header{cursor:pointer;-webkit-user-select:none;user-select:none;background:#f8f9fa;border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;margin:0;padding:12px 20px;font-size:16px;display:flex}.summary-section-header:hover{background:#f0f0f0}.summary-section-header svg{color:#555;transition:color .2s}.summary-section-header:hover svg{color:#000}.summary-section-body{padding:20px}.summary-section.collapsed .summary-section-body{display:none}.summary-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:15px;display:grid}.summary-metric.metric-bg-good{background-color:#e6f4ea;border-color:#ceead6}.summary-metric.metric-bg-warning{background-color:#fef7e0;border-color:#fde293}.summary-metric.metric-bg-poor{background-color:#fce8e6;border-color:#fad2cf}.summary-metric{background:#fbfbfb;border:1px solid #eee;border-radius:6px;flex-direction:column;padding:15px;display:flex}.summary-metric-label{color:#666;text-transform:uppercase;letter-spacing:.5px;margin-bottom:5px;font-size:12px}.summary-metric-value{color:#2c3e50;font-size:22px;font-weight:600}.custom-metrics-grid{grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:20px;display:grid}.custom-metric-card{background:#fafafa;border:1px solid #e0e0e0;border-radius:6px;flex-direction:column;display:flex}.custom-metric-header{background:#f0f0f0;border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;padding:8px 12px;font-size:14px;font-weight:600;display:flex}.cm-actions{align-items:center;gap:8px;display:flex}.copy-btn{cursor:pointer;color:#444;background:#f0f0f0;border:1px solid #ccc;border-radius:4px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;transition:background .2s;display:flex}.copy-btn:hover{background:#e0e0e0}.custom-metric-content{color:#333;background:#fdfdfd;padding:12px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px;line-height:1.4;position:relative;overflow-x:auto}.custom-metric-content.clipped{max-height:1.6em;padding-top:6px;padding-bottom:6px;overflow:hidden}.custom-metric-content pre{white-space:pre-wrap;word-break:break-word;margin:0}.expand-indicator{cursor:pointer;color:#555;background:0 0;border:none;padding:0 4px;font-size:16px;line-height:1;transition:transform .2s}.expand-indicator:hover{color:#000}.hl-key{color:#d73a49;font-weight:600}.hl-string{color:#032f62}.hl-number{color:#005cc5}.hl-boolean{color:#005cc5;font-weight:700}.hl-null{color:#6f42c1;font-weight:700}.hl-tag{color:#22863a}.hl-attr{color:#6f42c1}.hl-keyword{color:#d73a49;font-weight:700}#waterfall-tooltip{pointer-events:none;z-index:10000;color:#333;white-space:nowrap;text-overflow:ellipsis;background:#fffffff2;border:1px solid #ccc;border-radius:4px;max-width:400px;padding:6px 10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:13px;position:fixed;overflow:hidden;box-shadow:0 2px 6px #0003}.req-tab-content{color:#333;background:#fff;padding:10px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:13px;overflow-y:auto}.req-section{background:#fff;border:1px solid #e0e0e0;border-radius:6px;margin-bottom:12px;overflow:hidden}.req-section-header{cursor:pointer;background:#f8f9fa;border-bottom:1px solid #e0e0e0;justify-content:space-between;align-items:center;margin:0;padding:6px 12px;font-size:14px;font-weight:600;display:flex}.req-section-header:hover{background:#f0f0f0}.req-section-body{padding:8px 12px}.req-section.collapsed .req-section-body{display:none}.req-details-table{border-collapse:collapse;width:100%}.req-group-header{color:#444;background:#fdfdfd;border-bottom:1px solid #eee;font-size:13px;font-weight:600;padding-top:10px!important;padding-bottom:3px!important}.req-group-item td:first-child{padding-left:20px!important}.req-details-table td{border-bottom:1px solid #eee;padding:3px 0}.req-details-table td:first-child{color:#555;width:250px;font-weight:600}.req-details-table td:last-child{word-break:break-all}.req-details-table tr:last-child td{border-bottom:none}.req-code-block{white-space:pre-wrap;word-break:break-all;background:#fdfdfd;border:1px solid #eee;border-radius:4px;max-height:500px;margin:0;padding:10px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:11px;line-height:1.4;overflow-y:auto}.req-preview-controls{margin-bottom:15px}.req-preview-controls button{cursor:pointer;background:#f0f0f0;border:1px solid #ccc;border-radius:4px;padding:6px 12px;font-size:13px}.req-preview-controls button:hover{background:#e0e0e0}.req-preview-content img{background:#f0f0f0;border:1px solid #ccc;max-width:100%}.req-top-grid{flex-direction:column;gap:0;display:flex}@media (width>=1920px){.req-top-grid{grid-template-columns:1fr 1fr 1fr;gap:15px;display:grid}}
