:root{--tb-color-primary: #2563EB;--tb-color-text: #1F2937;--tb-color-bg: #F9FAFB;--tb-color-white: #FFFFFF;--tb-color-dark: #111827;--tb-color-success: #10B981;--tb-color-warning: #F59E0B;--tb-color-danger: #EF4444;--tb-color-gray-100: #F3F4F6;--tb-color-gray-200: #E9ECEF;--tb-color-gray-300: #E5E7EB;--tb-color-gray-400: #9CA3AF;--tb-color-gray-500: #6B7280;--tb-color-gray-600: #374151;--tb-color-blue: #3B82F6;--tb-color-blue-light: #EFF6FF;--tb-color-green: #10B981;--tb-color-green-light: #ECFDF5;--tb-color-amber: #F59E0B;--tb-color-amber-light: #FFFBEB;--tb-color-pink: #EC4899;--tb-color-pink-light: #FDF2F8;--tb-font-body: "Inter", ui-sans-serif, system-ui, sans-serif;--tb-font-mono: "JetBrains Mono", ui-monospace, monospace;--tb-font-size-xs: .75rem;--tb-font-size-sm: .8125rem;--tb-font-size-base: .875rem;--tb-font-size-lg: 1rem;--tb-font-size-xl: 1.125rem;--tb-font-size-2xl: 1.25rem;--tb-font-size-3xl: 1.5rem;--tb-font-size-4xl: 1.75rem;--tb-font-size-input: var(--tb-font-size-base);--tb-font-size-input-mono: var(--tb-font-size-sm);--tb-space-0-5: .125rem;--tb-space-1: .25rem;--tb-space-1-5: .375rem;--tb-space-2: .5rem;--tb-space-3: .75rem;--tb-space-4: 1rem;--tb-space-5: 1.25rem;--tb-space-6: 1.5rem;--tb-space-8: 2rem;--tb-space-10: 2.5rem;--tb-radius-sm: .375rem;--tb-radius-md: .5rem;--tb-radius-lg: .625rem;--tb-radius-xl: .75rem;--tb-radius-full: 9999px;--tb-shadow-card: 0 2px 8px rgba(0, 0, 0, .05);--tb-shadow-card-hover: 0 4px 16px rgba(0, 0, 0, .1);--tb-transition-fast: .15s ease;--tb-transition-normal: .2s ease;--tb-focus-ring: 0 0 0 3px rgba(16, 185, 129, .3);--tb-focus-border: #34D399;--tb-color-gray-50: #F9FAFB;--tb-bg-secondary: #F3F4F6;--tb-bg-primary: #1a1a1a;--tb-bg-hover: #F9FAFB;--tb-bg-dark: #111827;--tb-border: #E5E7EB;--tb-surface: #F9FAFB;--tb-surface-hover: #EEEEEE;--tb-text: var(--tb-color-text);--tb-text-primary: #111827;--tb-text-secondary: #6B7280;--tb-text-inverse: #FFFFFF;--tb-muted: #9CA3AF;--tb-accent: var(--tb-color-primary);--color-border: var(--tb-border);--color-text-secondary: var(--tb-text-secondary);--color-surface-hover: var(--tb-bg-hover)}.tb-tool *,.tb-tool *:before,.tb-tool *:after{box-sizing:border-box}.tb-tool{font-family:var(--tb-font-body);color:var(--tb-color-text);font-size:var(--tb-font-size-base);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tb-tool{display:flex;flex-direction:column;gap:var(--tb-space-5);padding:var(--tb-space-6);overflow-x:hidden;background:var(--tb-color-white);border:1px solid var(--tb-color-gray-200);border-radius:var(--tb-radius-lg)}.tb-stack{display:flex;flex-direction:column}.tb-row{display:flex;align-items:center}.tb-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--tb-space-4)}.tb-grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--tb-space-4)}.tb-grid-4{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--tb-space-4)}.tb-gap-1{gap:var(--tb-space-1)}.tb-gap-2{gap:var(--tb-space-2)}.tb-gap-3{gap:var(--tb-space-3)}.tb-gap-4{gap:var(--tb-space-4)}.tb-gap-5{gap:var(--tb-space-5)}.tb-gap-6{gap:var(--tb-space-6)}.tb-gap-8{gap:var(--tb-space-8)}.tb-gap-10{gap:var(--tb-space-10)}.tb-justify-between{justify-content:space-between}.tb-items-start{align-items:flex-start}.tb-items-center{align-items:center}.tb-wrap{flex-wrap:wrap}.tb-text-muted{color:var(--tb-color-gray-500)}.tb-text-dark{color:var(--tb-color-dark)}.tb-font-mono{font-family:var(--tb-font-mono)}.tb-font-bold{font-weight:700}.tb-font-medium{font-weight:500}.tb-field{display:flex;flex-direction:column;gap:var(--tb-space-2)}.tb-field+.tb-field{margin-top:var(--tb-space-4)}[class*=tb-grid-]>.tb-field+.tb-field,.tb-row>.tb-field+.tb-field,.tb-tool>.tb-field+.tb-field,.tb-tab-panel>.tb-field+.tb-field,.tb-accordion-content>.tb-field+.tb-field{margin-top:0}.tb-fields{display:flex;flex-direction:column;gap:var(--tb-space-4)}.tb-fields>.tb-field+.tb-field{margin-top:0}.tb-label{display:block;font-size:var(--tb-font-size-sm);font-weight:500;color:var(--tb-color-gray-600)}.tb-help{font-size:var(--tb-font-size-sm);color:var(--tb-color-gray-400);line-height:1.6}.tb-input,.tb-textarea,.tb-select{width:100%;padding:.625rem 1rem;background:var(--tb-color-bg);border:1px solid var(--tb-color-gray-200);border-radius:var(--tb-radius-md);font-family:var(--tb-font-body);font-size:var(--tb-font-size-input);color:var(--tb-color-text);line-height:1.6;transition:border-color var(--tb-transition-fast),box-shadow var(--tb-transition-fast)}.tb-input::placeholder,.tb-textarea::placeholder,.tb-select::placeholder{color:var(--tb-color-gray-400)}.tb-input:focus,.tb-textarea:focus,.tb-select:focus{outline:none;border-color:var(--tb-focus-border);box-shadow:var(--tb-focus-ring)}.tb-input:disabled,.tb-textarea:disabled,.tb-select:disabled{opacity:.5;cursor:not-allowed}.tb-input.is-error,.tb-textarea.is-error,.tb-select.is-error{border-color:var(--tb-color-danger);box-shadow:0 0 0 3px #ef444426}.tb-textarea{min-height:220px;line-height:1.7;resize:vertical}.tb-textarea-sm{min-height:120px}.tb-textarea-lg{min-height:320px}.tb-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:2.5rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;cursor:pointer}.tb-input-number{font-family:var(--tb-font-mono)}.tb-error-message{font-size:var(--tb-font-size-sm);color:var(--tb-color-danger)}.tb-checkbox,.tb-radio{display:inline-flex;align-items:center;gap:var(--tb-space-2);cursor:pointer;font-size:var(--tb-font-size-base)}.tb-checkbox input[type=checkbox],.tb-radio input[type=radio]{width:1rem;height:1rem;accent-color:var(--tb-color-primary);cursor:pointer}.tb-radio-group{display:flex;flex-direction:column;gap:var(--tb-space-2)}.tb-radio-group-inline{flex-direction:row;flex-wrap:wrap;gap:var(--tb-space-3)}.tb-radio-label{display:inline-flex;align-items:center;gap:var(--tb-space-2);padding:var(--tb-space-2) var(--tb-space-3);border:1px solid var(--tb-color-gray-200);border-radius:var(--tb-radius-md);font-size:var(--tb-font-size-base);color:var(--tb-color-gray-600);cursor:pointer;transition:border-color var(--tb-transition-fast),background-color var(--tb-transition-fast)}.tb-radio-label:hover{background:var(--tb-color-bg)}.tb-radio-label:has(input:checked){border-color:var(--tb-color-primary);background:#2563eb0d}.tb-toggle{position:relative;display:inline-flex;align-items:center;gap:var(--tb-space-2);cursor:pointer}.tb-toggle input{position:absolute;opacity:0;width:0;height:0}.tb-toggle-track{position:relative;width:2.5rem;height:1.25rem;background:var(--tb-color-gray-300);border-radius:var(--tb-radius-full);transition:background-color var(--tb-transition-fast)}.tb-toggle-track:after{content:"";position:absolute;top:2px;left:2px;width:1rem;height:1rem;background:var(--tb-color-white);border-radius:50%;transition:transform var(--tb-transition-fast)}.tb-toggle input:checked+.tb-toggle-track{background:var(--tb-color-primary)}.tb-toggle input:checked+.tb-toggle-track:after{transform:translate(1.25rem)}.tb-range{width:100%;height:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--tb-color-gray-200);border-radius:var(--tb-radius-full);outline:none;cursor:pointer}.tb-range::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25rem;height:1.25rem;background:var(--tb-color-primary);border-radius:50%;border:2px solid var(--tb-color-white);box-shadow:0 1px 3px #00000026;cursor:pointer}.tb-range::-moz-range-thumb{width:1.25rem;height:1.25rem;background:var(--tb-color-primary);border-radius:50%;border:2px solid var(--tb-color-white);box-shadow:0 1px 3px #00000026;cursor:pointer}.tb-upload{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--tb-space-2);padding:var(--tb-space-8);border:2px dashed var(--tb-color-gray-300);border-radius:var(--tb-radius-xl);font-size:var(--tb-font-size-base);color:var(--tb-color-gray-500);cursor:pointer;transition:border-color var(--tb-transition-fast),background-color var(--tb-transition-fast)}.tb-upload:hover,.tb-upload.is-dragover{border-color:var(--tb-color-primary);background:#2563eb08}.tb-upload input[type=file]{display:none}.tb-upload-text{font-weight:500;color:var(--tb-color-text)}.tb-upload-hint{font-size:var(--tb-font-size-sm);color:var(--tb-color-gray-400)}.tb-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--tb-space-1-5);padding:var(--tb-space-2) var(--tb-space-4);font-family:var(--tb-font-body);font-size:var(--tb-font-size-sm);font-weight:500;line-height:1;border:1px solid transparent;border-radius:var(--tb-radius-sm);cursor:pointer;text-decoration:none;transition:background-color var(--tb-transition-fast),color var(--tb-transition-fast),border-color var(--tb-transition-fast)}.tb-btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.tb-btn-primary{background:var(--tb-color-dark);color:var(--tb-color-white);font-weight:600}.tb-btn-primary:hover{background:var(--tb-color-gray-600)}.tb-btn-secondary{background:transparent;color:var(--tb-color-gray-500);border-color:var(--tb-color-gray-200)}.tb-btn-secondary:hover{background:var(--tb-color-bg)}.tb-btn-ghost{background:transparent;color:var(--tb-color-gray-500)}.tb-btn-ghost:hover{background:var(--tb-color-bg)}.tb-btn-success{background:var(--tb-color-success);color:var(--tb-color-white);font-weight:600}.tb-btn-success:hover{background:#059669}.tb-btn-danger{background:var(--tb-color-danger);color:var(--tb-color-white);font-weight:600}.tb-btn-danger:hover{background:#dc2626}.tb-btn-icon{padding:var(--tb-space-2)}.tb-btn-copy{font-size:var(--tb-font-size-sm)}.tb-btn-sm{padding:.375rem .625rem;font-size:var(--tb-font-size-xs);gap:var(--tb-space-1)}.tb-btn-lg{padding:.75rem 1.5rem;font-size:var(--tb-font-size-lg);border-radius:var(--tb-radius-md)}.tb-stat{display:flex;flex-direction:column;align-items:center;gap:var(--tb-space-1-5);background:var(--tb-color-bg);border-radius:var(--tb-radius-md);padding:var(--tb-space-5)}.tb-stat-value{font-size:var(--tb-font-size-4xl);font-weight:700;color:var(--tb-color-dark);font-family:var(--tb-font-mono);line-height:1}.tb-stat-label{font-size:var(--tb-font-size-sm);font-weight:500;color:var(--tb-color-gray-500)}.tb-result{padding:var(--tb-space-4);background:var(--tb-color-bg);border:1px solid var(--tb-color-gray-200);border-radius:var(--tb-radius-md);font-family:var(--tb-font-mono);font-size:var(--tb-font-size-base)}.tb-result-value{font-size:var(--tb-font-size-3xl);font-weight:700;color:var(--tb-color-text);font-family:var(--tb-font-mono)}.tb-output-card{background:var(--tb-color-white);border:1px solid var(--tb-color-gray-200);border-radius:var(--tb-radius-xl);padding:var(--tb-space-5)}.tb-output-row{display:flex;align-items:center;justify-content:space-between;padding:var(--tb-space-2) 0;border-bottom:1px solid var(--tb-color-gray-100)}.tb-output-row:last-child{border-bottom:none}.tb-output-label{font-size:var(--tb-font-size-base);color:var(--tb-color-gray-500)}.tb-output-value{font-size:var(--tb-font-size-base);font-weight:500;color:var(--tb-color-text);font-family:var(--tb-font-mono)}.tb-detail-table{border:1px solid var(--tb-color-gray-200);border-radius:var(--tb-radius-md);overflow:hidden}.tb-detail-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--tb-space-3);padding:var(--tb-space-3);border-bottom:1px solid var(--tb-color-gray-100)}.tb-detail-row:last-child{border-bottom:none}.tb-detail-label{font-size:.8125rem;color:var(--tb-color-gray-500);white-space:nowrap}.tb-detail-value{margin:0;font-weight:600;text-align:right}.tb-alert{display:flex;align-items:flex-start;gap:var(--tb-space-3);padding:var(--tb-space-4);border-radius:var(--tb-radius-md);font-size:var(--tb-font-size-base)}.tb-alert-info{background:var(--tb-color-blue-light);color:var(--tb-color-blue)}.tb-alert-success{background:var(--tb-color-green-light);color:var(--tb-color-green)}.tb-alert-warning{background:var(--tb-color-amber-light);color:var(--tb-color-amber)}.tb-alert-danger{background:var(--tb-color-pink-light);color:var(--tb-color-danger)}.tb-tabs{display:flex;border-bottom:1px solid var(--tb-color-gray-200);gap:var(--tb-space-1)}.tb-tab{padding:var(--tb-space-2) var(--tb-space-4);font-size:var(--tb-font-size-base);font-weight:500;color:var(--tb-color-gray-500);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color var(--tb-transition-fast),border-color var(--tb-transition-fast);margin-bottom:-1px}.tb-tab:hover{color:var(--tb-color-text)}.tb-tab.is-active{color:var(--tb-color-primary);border-bottom-color:var(--tb-color-primary)}.tb-tab-panel{display:none}.tb-tab-panel.is-active{display:flex;flex-direction:column;gap:var(--tb-space-5)}.tb-accordion{display:flex;flex-direction:column}.tb-accordion-item{border-bottom:1px solid var(--tb-color-gray-200)}.tb-accordion-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--tb-space-4) 0;font-size:var(--tb-font-size-base);font-weight:500;color:var(--tb-color-text);background:none;border:none;cursor:pointer;text-align:left}.tb-accordion-content{display:none;padding-bottom:var(--tb-space-4);font-size:var(--tb-font-size-base);color:var(--tb-color-gray-500);line-height:1.6}.tb-accordion-content.is-open{display:flex;flex-direction:column;gap:var(--tb-space-4)}.tb-divider{border:none;border-top:1px solid var(--tb-color-gray-200);margin:var(--tb-space-4) 0}.tb-meta{display:flex;align-items:center;gap:var(--tb-space-4);font-size:var(--tb-font-size-sm);color:var(--tb-color-gray-500)}.tb-meta-value{font-weight:500;color:var(--tb-color-gray-600)}.tb-meta-separator{color:var(--tb-color-gray-300)}.tb-hidden{display:none}.tb-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width:639px){:root{--tb-font-size-input: 1rem;--tb-font-size-input-mono: 1rem}.tb-tool{padding:var(--tb-space-4);gap:var(--tb-space-4)}.tb-grid-2,.tb-grid-3{grid-template-columns:1fr;gap:var(--tb-space-3)}.tb-fields{gap:var(--tb-space-3)}.tb-tab-panel.is-active{gap:var(--tb-space-4)}.tb-output-row{flex-direction:column;align-items:flex-start;gap:var(--tb-space-1)}.tb-stat{padding:var(--tb-space-3)}.tb-stat-value{font-size:var(--tb-font-size-2xl)}.tb-btn-lg{width:100%}}@media(min-width:640px){.tb-sm-row{flex-direction:row}.tb-sm-items-center{align-items:center}.tb-sm-inline{display:inline}}@media(min-width:768px){.tb-grid-3{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.tb-grid-3{grid-template-columns:repeat(3,1fr)}.tb-grid-4{grid-template-columns:repeat(4,1fr)}}.toolbox-toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);padding:.5rem 1.5rem;background-color:var(--tb-color-text);color:var(--tb-color-white);border-radius:var(--tb-radius-md);font-size:var(--tb-font-size-base);z-index:9999;animation:toolbox-fade-in .2s ease-out}@keyframes toolbox-fade-in{0%{opacity:0;transform:translate(-50%) translateY(.5rem)}to{opacity:1;transform:translate(-50%) translateY(0)}}[data-theme=dark]{--tb-color-primary: #3B82F6;--tb-color-text: #a3a3a3;--tb-color-bg: #0e0e0e;--tb-color-white: #1a1a1a;--tb-color-dark: #e5e5e5;--tb-color-success: #34D399;--tb-color-warning: #FBBF24;--tb-color-danger: #F87171;--tb-color-blue-light: rgba(59, 130, 246, .12);--tb-color-green-light: rgba(16, 185, 129, .12);--tb-color-amber-light: rgba(251, 191, 36, .12);--tb-color-pink-light: rgba(236, 72, 153, .12);--tb-color-gray-50: #141414;--tb-color-gray-100: #171717;--tb-color-gray-200: #262626;--tb-color-gray-300: #333333;--tb-color-gray-400: #525252;--tb-color-gray-500: #a3a3a3;--tb-color-gray-600: #d4d4d4;--tb-bg-secondary: #171717;--tb-bg-primary: #e5e5e5;--tb-bg-hover: #1a1a1a;--tb-bg-dark: #111111;--tb-border: #262626;--tb-surface: #171717;--tb-surface-hover: #262626;--tb-text-primary: #e5e5e5;--tb-text-secondary: #a3a3a3;--tb-text-inverse: #0e0e0e;--tb-muted: #737373;--tb-shadow-card: 0 2px 8px rgba(0, 0, 0, .5);--tb-shadow-card-hover: 0 4px 16px rgba(0, 0, 0, .6)}.tb-seg{display:inline-flex;border:1px solid var(--tb-color-gray-200);border-radius:var(--tb-radius-sm);overflow:hidden}.tb-seg-btn{display:inline-flex;align-items:center;gap:var(--tb-space-1);padding:var(--tb-space-1) var(--tb-space-3);font-size:var(--tb-font-size-sm);font-weight:500;background:transparent;border:none;border-right:1px solid var(--tb-color-gray-200);cursor:pointer;color:var(--tb-color-gray-500);transition:background var(--tb-transition-fast),color var(--tb-transition-fast);line-height:1.4;white-space:nowrap}.tb-seg-btn:last-child{border-right:none}.tb-seg-btn:hover{background:var(--tb-color-gray-100);color:var(--tb-color-dark)}.tb-seg-btn--active{background:var(--tb-color-dark);color:var(--tb-color-white)}.tb-seg-btn--active:hover{background:var(--tb-color-gray-600);color:var(--tb-color-white)}.tb-diff-table{width:100%;border-collapse:collapse;font-family:var(--tb-font-mono);font-size:var(--tb-font-size-sm);line-height:1.6;table-layout:fixed}.tb-diff-table td,.tb-diff-table th{padding:var(--tb-space-1) var(--tb-space-3);vertical-align:top;word-break:break-word;white-space:pre-wrap}.tb-diff-lineno{width:3rem;min-width:3rem;text-align:right;color:var(--tb-color-gray-400);-webkit-user-select:none;user-select:none;border-right:1px solid var(--tb-color-gray-200);font-size:var(--tb-font-size-xs);padding-right:var(--tb-space-2)}.tb-diff-line--added{background:color-mix(in srgb,var(--tb-color-success) 15%,transparent)}.tb-diff-line--removed{background:color-mix(in srgb,var(--tb-color-danger) 15%,transparent)}.tb-diff-line--added .tb-diff-lineno{color:var(--tb-color-success)}.tb-diff-line--removed .tb-diff-lineno{color:var(--tb-color-danger)}.tb-diff-ins{background:color-mix(in srgb,var(--tb-color-success) 35%,transparent);border-radius:var(--tb-radius-sm)}.tb-diff-del{background:color-mix(in srgb,var(--tb-color-danger) 35%,transparent);text-decoration:line-through;border-radius:var(--tb-radius-sm)}.badge-aaa{background:var(--tb-color-success);color:var(--tb-color-white)}.badge-aa{background:var(--tb-color-warning);color:var(--tb-color-white)}.badge-fail{background:var(--tb-color-danger);color:var(--tb-color-white)}
