.sb-app{--sb-bg: #0f1117;--sb-surface: #1a1d27;--sb-surface-header: #22262f;--sb-surface-inset: #0a0c12;--sb-surface-raised: #2a2e3a;--sb-border: rgba(255, 255, 255, .06);--sb-border-strong: rgba(255, 255, 255, .12);--sb-border-focus: rgba(59, 130, 246, .4);--sb-text: #f3f4f6;--sb-text-secondary: #9ca3af;--sb-text-tertiary: #6b7280;--sb-accent: #3b82f6;--sb-accent-hover: #2563eb;--sb-success: #22c55e;--sb-warning: #f59e0b;--sb-error: #ef4444;--sb-color-norm: #10b981;--sb-color-edu: #a78bfa;--sb-color-edu-dim: rgba(167, 139, 250, .15);--sb-color-data: #22d3ee;--sb-color-data-dim: rgba(34, 211, 238, .25);--sb-color-data-secondary: #f59e0b;--sb-shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--sb-shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--sb-shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--sb-radius: 8px;--sb-radius-sm: 6px;--sb-radius-xs: 4px;--sb-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--sb-mono: "SF Mono", "Fira Code", monospace;--sb-transition-fast: .12s ease;--sb-transition-normal: .2s ease}.sb-app{display:flex;flex-direction:column;width:100%;min-height:60vh;font-family:var(--sb-font);color:var(--sb-text)}.sb-header{display:flex;align-items:center;gap:24px;padding:16px 0;border-bottom:1px solid var(--sb-border);margin-bottom:20px}.sb-header__title{font-size:1.5rem;font-weight:600;color:var(--sb-text);margin:0;white-space:nowrap}.sb-header__nav{display:flex;gap:4px}.sb-header__tab{padding:6px 14px;border-radius:var(--sb-radius-sm);font-size:.85rem;font-weight:500;color:var(--sb-text-secondary);background:transparent;border:none;cursor:pointer;text-decoration:none;transition:background var(--sb-transition-fast),color var(--sb-transition-fast)}.sb-header__tab:hover,.sb-header__tab--active{background:var(--sb-surface-raised);color:var(--sb-text)}.sb-page--full{display:block}.sb-home{text-align:center;padding:40px 0}.sb-home__title{font-size:2rem;font-weight:600;color:var(--sb-text);margin:0 0 8px}.sb-home__subtitle{font-size:1rem;color:var(--sb-text-secondary);margin:0 0 40px}.sb-home__tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px;max-width:960px;margin:0 auto}.sb-tool-card{display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px 24px;background:var(--sb-surface);border:1px solid var(--sb-border);border-radius:var(--sb-radius);cursor:pointer;text-decoration:none;transition:border-color var(--sb-transition-normal),box-shadow var(--sb-transition-normal)}.sb-tool-card:hover{border-color:var(--sb-border-strong);box-shadow:var(--sb-shadow-md)}.sb-tool-card__icon{width:48px;height:48px;border-radius:var(--sb-radius);display:flex;align-items:center;justify-content:center;color:#fff}.sb-tool-card__icon svg{width:24px;height:24px}.sb-tool-card__name{font-size:1rem;font-weight:600;color:var(--sb-text);margin:0}.sb-tool-card__desc{font-size:.85rem;color:var(--sb-text-secondary);margin:0;text-align:center;line-height:1.5}.sb-toolbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--sb-surface);border:1px solid var(--sb-border);border-radius:var(--sb-radius-sm);margin-bottom:16px}.sb-toolbar__title{font-size:1rem;font-weight:600;color:var(--sb-text);margin:0}@media print{.sb-header{display:none!important}.sb-app{color:#000;background:#fff}}.norm-editor{display:flex;gap:20px}.norm-editor__main{flex:1;min-width:0;display:flex;flex-direction:column;gap:16px}.norm-editor__sidebar{width:320px;flex-shrink:0}.norm-dropzone{display:flex;align-items:center;justify-content:center;padding:32px;border:2px dashed var(--sb-border-strong);border-radius:var(--sb-radius);text-align:center;cursor:pointer;transition:border-color var(--sb-transition-fast),background var(--sb-transition-fast)}.norm-dropzone:hover,.norm-dropzone--active{border-color:var(--sb-color-norm);background:#10b9810d}.norm-dropzone--disabled{opacity:.5;pointer-events:none}.norm-dropzone__content{display:flex;flex-direction:column;align-items:center;gap:8px}.norm-dropzone__icon{width:32px;height:32px;color:var(--sb-text-tertiary)}.norm-dropzone__label{font-size:.85rem;color:var(--sb-text-secondary);margin:0}.norm-dropzone__hint{font-size:.75rem;color:var(--sb-text-tertiary);margin:0}.norm-file-list{border:1px solid var(--sb-border);border-radius:var(--sb-radius-sm);overflow:hidden}.norm-file-list__header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--sb-surface-header);border-bottom:1px solid var(--sb-border)}.norm-file-list__count{font-size:.75rem;font-weight:600;color:var(--sb-text-secondary);text-transform:uppercase;letter-spacing:.04em}.norm-file-list__clear{font-size:.75rem;color:var(--sb-text-tertiary);background:none;border:none;cursor:pointer;font-family:var(--sb-font);padding:2px 6px;border-radius:var(--sb-radius-xs);transition:color var(--sb-transition-fast),background var(--sb-transition-fast)}.norm-file-list__clear:hover{color:var(--sb-error);background:#ef44441a}.norm-file-list__items{display:flex;flex-direction:column}.norm-file-row{display:flex;align-items:center;gap:12px;padding:8px 12px;border-bottom:1px solid var(--sb-border);transition:background var(--sb-transition-fast)}.norm-file-row:last-child{border-bottom:none}.norm-file-row:hover{background:#ffffff05}.norm-file-row--error{background:#ef44440d}.norm-file-row--done{background:#22c55e08}.norm-file-row__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.norm-file-row__name{font-size:.85rem;font-weight:500;color:var(--sb-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.norm-file-row__meta{font-size:.7rem;color:var(--sb-text-tertiary)}.norm-file-row__error{font-size:.7rem;color:var(--sb-error)}.norm-file-row__measurements{display:flex;gap:12px;font-size:.75rem;font-family:var(--sb-mono);color:var(--sb-text-secondary);white-space:nowrap}.norm-file-row__remove{width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--sb-text-tertiary);cursor:pointer;font-size:1.1rem;border-radius:var(--sb-radius-xs);transition:color var(--sb-transition-fast),background var(--sb-transition-fast);opacity:0;flex-shrink:0}.norm-file-row:hover .norm-file-row__remove{opacity:1}.norm-file-row__remove:hover{color:var(--sb-error);background:#ef44441a}.norm-presets{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--sb-border);border-radius:var(--sb-radius-sm);background:var(--sb-surface);flex-wrap:wrap}.norm-presets__select{flex:1;min-width:120px;padding:5px 8px;border:1px solid var(--sb-border);border-radius:var(--sb-radius-xs);background:var(--sb-surface-inset);color:var(--sb-text);font-size:.8rem;font-family:var(--sb-font);outline:none;cursor:pointer;transition:border-color var(--sb-transition-fast)}.norm-presets__select:focus{border-color:var(--sb-border-focus)}.norm-presets__actions{display:flex;gap:4px;flex-shrink:0}.norm-presets__btn{padding:4px 8px;border:1px solid var(--sb-border);border-radius:var(--sb-radius-xs);background:var(--sb-surface-inset);color:var(--sb-text-secondary);font-size:.7rem;font-weight:500;font-family:var(--sb-font);cursor:pointer;transition:color var(--sb-transition-fast),background var(--sb-transition-fast),border-color var(--sb-transition-fast);white-space:nowrap}.norm-presets__btn:hover{color:var(--sb-text);background:var(--sb-surface-raised);border-color:var(--sb-border-strong)}.norm-presets__btn--delete{color:var(--sb-text-tertiary)}.norm-presets__btn--delete:hover{color:var(--sb-error);background:#ef44441a;border-color:#ef44444d}.norm-presets__modified{font-size:.7rem;color:var(--sb-text-tertiary);font-style:italic}.norm-presets__save-row{display:flex;width:100%}.norm-presets__name-input{flex:1;padding:5px 8px;border:1px solid var(--sb-border-focus);border-radius:var(--sb-radius-xs);background:var(--sb-surface-inset);color:var(--sb-text);font-size:.8rem;font-family:var(--sb-font);outline:none}.norm-presets__confirm{display:flex;align-items:center;gap:8px;width:100%}.norm-presets__confirm-text{flex:1;font-size:.75rem;color:var(--sb-text-secondary)}.norm-settings{display:flex;flex-direction:column;gap:12px}.norm-section{border:1px solid var(--sb-border);border-radius:var(--sb-radius-sm);padding:0;margin:0}.norm-section__legend{padding:10px 12px;font-size:.8rem;font-weight:600;color:var(--sb-text);width:100%}.norm-section__toggle{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.8rem;font-weight:600;color:var(--sb-text)}.norm-section__toggle input[type=checkbox]{accent-color:var(--sb-color-norm);width:15px;height:15px;cursor:pointer}.norm-section__body{padding:0 12px 12px;display:flex;flex-direction:column;gap:10px}.norm-field{display:flex;flex-direction:column;gap:4px}.norm-field__label{font-size:.7rem;font-weight:600;color:var(--sb-text-secondary);text-transform:uppercase;letter-spacing:.04em}.norm-field__select{padding:6px 8px;border:1px solid var(--sb-border);border-radius:var(--sb-radius-xs);background:var(--sb-surface-inset);color:var(--sb-text);font-size:.8rem;font-family:var(--sb-font);outline:none;transition:border-color var(--sb-transition-fast);cursor:pointer}.norm-field__select:focus{border-color:var(--sb-border-focus)}.norm-field__input-group{display:flex;align-items:center;gap:6px}.norm-field__input{padding:6px 8px;border:1px solid var(--sb-border);border-radius:var(--sb-radius-xs);background:var(--sb-surface-inset);color:var(--sb-text);font-size:.8rem;font-family:var(--sb-mono);outline:none;transition:border-color var(--sb-transition-fast);width:100%}.norm-field__input:focus{border-color:var(--sb-border-focus)}.norm-field__input[type=number]{width:80px}.norm-field__unit{font-size:.75rem;color:var(--sb-text-tertiary);white-space:nowrap}.norm-process-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;background:var(--sb-color-norm);color:#fff;border:none;border-radius:var(--sb-radius-sm);font-size:.9rem;font-weight:600;font-family:var(--sb-font);cursor:pointer;transition:background var(--sb-transition-fast)}.norm-process-btn:hover{background:#059669}.norm-process-btn:disabled{opacity:.4;cursor:not-allowed}.norm-progress{display:flex;flex-direction:column;gap:6px}.norm-progress__bar-track{height:6px;background:var(--sb-surface-inset);border-radius:3px;overflow:hidden}.norm-progress__bar-fill{height:100%;background:var(--sb-color-norm);border-radius:3px;transition:width .2s ease}.norm-progress__footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.norm-progress__info{font-size:.75rem;color:var(--sb-text-secondary)}.norm-cancel-btn{padding:3px 10px;border:1px solid var(--sb-border);border-radius:var(--sb-radius-xs);background:transparent;color:var(--sb-text-secondary);font-size:.7rem;font-weight:500;font-family:var(--sb-font);cursor:pointer;transition:color var(--sb-transition-fast),background var(--sb-transition-fast),border-color var(--sb-transition-fast);flex-shrink:0}.norm-cancel-btn:hover{color:var(--sb-error);background:#ef44441a;border-color:#ef44444d}.norm-error-panel{padding:32px;text-align:center}.norm-error-panel__title{font-size:1rem;font-weight:600;color:var(--sb-text);margin:0 0 8px}.norm-error-panel__message{font-size:.85rem;color:var(--sb-text-secondary);margin:0 0 16px}.norm-error-panel__btn{padding:8px 16px;border:1px solid var(--sb-border-strong);border-radius:var(--sb-radius-sm);background:var(--sb-surface);color:var(--sb-text);font-size:.85rem;font-weight:500;font-family:var(--sb-font);cursor:pointer;transition:background var(--sb-transition-fast)}.norm-error-panel__btn:hover{background:var(--sb-surface-raised)}.norm-results{border:1px solid var(--sb-border);border-radius:var(--sb-radius-sm);overflow:hidden}.norm-results__title{padding:10px 12px;margin:0;font-size:.8rem;font-weight:600;color:var(--sb-text);background:var(--sb-surface-header);border-bottom:1px solid var(--sb-border)}.norm-results__table{width:100%;border-collapse:collapse;font-size:.8rem}.norm-results__table th{padding:6px 10px;text-align:left;font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--sb-text-secondary);background:var(--sb-surface-header);border-bottom:1px solid var(--sb-border-strong);white-space:nowrap}.norm-results__subheader th{font-size:.65rem;font-weight:500;color:var(--sb-text-tertiary);padding-top:2px;padding-bottom:6px}.norm-results__table td{padding:8px 10px;border-bottom:1px solid var(--sb-border);color:var(--sb-text)}.norm-results__table tr:last-child td{border-bottom:none}.norm-results__name{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.norm-results__value{font-family:var(--sb-mono);font-size:.75rem;text-align:right;white-space:nowrap}.norm-results__download{padding:4px 10px;background:var(--sb-color-norm);color:#fff;border:none;border-radius:var(--sb-radius-xs);font-size:.75rem;font-weight:500;font-family:var(--sb-font);cursor:pointer;transition:background var(--sb-transition-fast);white-space:nowrap}.norm-results__download:hover{background:#059669}.norm-results__download-all{display:block;width:100%;padding:10px;background:var(--sb-surface);color:var(--sb-text-secondary);border:none;border-top:1px solid var(--sb-border);font-size:.8rem;font-weight:500;font-family:var(--sb-font);cursor:pointer;transition:background var(--sb-transition-fast),color var(--sb-transition-fast)}.norm-results__download-all:hover{background:var(--sb-surface-raised);color:var(--sb-text)}.norm-results__actions{display:flex;border-top:1px solid var(--sb-border)}.norm-results__actions .norm-results__download-all{flex:1;border-top:none;border-right:1px solid var(--sb-border)}.norm-results__download-zip{flex:1;padding:10px;background:var(--sb-surface);color:var(--sb-text-secondary);border:none;font-size:.8rem;font-weight:500;font-family:var(--sb-font);cursor:pointer;transition:background var(--sb-transition-fast),color var(--sb-transition-fast)}.norm-results__download-zip:hover{background:var(--sb-surface-raised);color:var(--sb-text)}.norm-results__download-group{display:flex;gap:4px;align-items:center}.norm-results__download--split{padding:4px 6px;font-size:.7rem;min-width:24px;text-align:center}.norm-progress__batch{color:var(--sb-text-tertiary)}.norm-field--inline{flex-direction:row;align-items:center;gap:16px}.norm-results__table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}[data-tooltip]{position:relative;cursor:help}[data-tooltip]:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);padding:4px 8px;background:var(--sb-surface-raised);border:1px solid var(--sb-border-strong);border-radius:var(--sb-radius-xs);color:var(--sb-text);font-size:.7rem;font-weight:400;text-transform:none;letter-spacing:normal;line-height:1.4;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--sb-transition-fast);z-index:100}[data-tooltip]:hover:after,[data-tooltip]:focus-within:after{opacity:1}@media(max-width:1024px){.norm-editor__sidebar{width:280px}}@media(max-width:768px){.norm-editor{flex-direction:column}.norm-editor__sidebar{width:100%}.norm-file-row__measurements{display:none}.norm-presets{flex-wrap:wrap}.norm-presets__select{width:100%;min-width:0}}@media(max-width:480px){.norm-dropzone{padding:20px 16px}.norm-dropzone__icon{width:24px;height:24px}}.norm-showme__toggle{padding:4px 12px;border:1px solid var(--sb-color-edu);border-radius:12px;background:transparent;color:var(--sb-color-edu);font-size:.7rem;font-family:var(--sb-font);font-weight:500;letter-spacing:.02em;cursor:pointer;transition:background var(--sb-transition-fast),color var(--sb-transition-fast);white-space:nowrap}.norm-showme__toggle:hover{background:var(--sb-color-edu-dim)}.norm-showme__toggle--active{background:var(--sb-color-edu);color:#0f1117}.norm-showme{margin-top:16px;border:1px solid var(--sb-border-strong);border-left:3px solid var(--sb-color-edu);border-radius:var(--sb-radius);background:var(--sb-surface);overflow:hidden;animation:showme-slide-in .2s ease-out}@keyframes showme-slide-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.norm-showme__header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--sb-border);background:var(--sb-color-edu-dim)}.norm-showme__title{margin:0;font-size:.8rem;font-weight:600;color:var(--sb-color-edu);display:flex;align-items:center;gap:8px}.norm-showme__filename{color:var(--sb-text-secondary);font-weight:400}.norm-showme__close{padding:4px 8px;border:none;border-radius:var(--sb-radius-xs);background:transparent;color:var(--sb-text-tertiary);font-size:.9rem;cursor:pointer;transition:color var(--sb-transition-fast),background var(--sb-transition-fast)}.norm-showme__close:hover{color:var(--sb-text);background:var(--sb-surface-raised)}.norm-showme__body{padding:16px;display:flex;flex-direction:column;gap:20px}.norm-showme__section{display:flex;flex-direction:column;gap:8px}.norm-showme__section-title{margin:0;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--sb-color-edu)}.norm-showme__waveform{width:100%;height:160px;border-radius:var(--sb-radius-sm);background:var(--sb-surface-inset);border:1px solid var(--sb-border);overflow:hidden}.norm-showme__waveform canvas{display:block;width:100%;height:100%}.norm-showme__gain{display:flex;align-items:center;justify-content:center;padding:12px 16px;border-radius:var(--sb-radius-sm);background:var(--sb-surface-inset);border:1px solid var(--sb-border);font-family:var(--sb-mono);font-size:1.1rem;color:var(--sb-text-secondary)}.norm-showme__gain-value{color:var(--sb-color-data);font-weight:600}.norm-showme__gain-muted{color:var(--sb-text-tertiary);font-style:italic;font-family:var(--sb-font);font-size:.85rem}.norm-showme__meter{width:100%;height:56px;border-radius:var(--sb-radius-sm);background:var(--sb-surface-inset);border:1px solid var(--sb-border);overflow:hidden}.norm-showme__meter canvas{display:block;width:100%;height:100%}.norm-showme__text{font-size:.8rem;line-height:1.6;color:var(--sb-text-secondary);font-weight:300}.norm-showme__text strong{color:var(--sb-text);font-weight:500}.norm-showme__note{padding:10px 14px;border-radius:var(--sb-radius-sm);background:#f59e0b0f;border:1px solid rgba(245,158,11,.15);font-size:.75rem;line-height:1.5;color:var(--sb-text-secondary)}@media(max-width:768px){.norm-showme__body{padding:12px}.norm-showme__gain{font-size:.9rem;flex-wrap:wrap}}
