.tool-grid{grid-template-columns:repeat(2,1fr);gap:1.2rem;display:grid}.tool-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.5rem;position:relative;overflow:hidden}.tool-card:before{content:"";height:4px;position:absolute;top:0;left:0;right:0}.tool-card.t1:before{background:var(--primary)}.tool-card.t2:before{background:var(--env)}.tool-card.t3:before{background:var(--warn)}.tool-card.t4:before{background:var(--blue)}.tool-icon{margin-bottom:.8rem;font-size:2rem}.tool-card h3{color:var(--primary-dark);margin-bottom:.5rem;font-size:1.1rem;font-weight:700}.tool-card p{color:var(--text2);margin-bottom:1rem;font-size:.85rem;line-height:1.7}.form-group{margin-bottom:1rem}.form-label{color:var(--text);margin-bottom:.4rem;font-size:.82rem;font-weight:600;display:block}.form-hint{color:var(--text2);margin-top:.2rem;font-size:.72rem}.checkbox-group{gap:.65rem;display:grid}.checkbox-item{cursor:pointer;border-radius:8px;align-items:center;gap:.7rem;min-height:36px;padding:.45rem .6rem;font-size:.85rem;line-height:1.45;display:flex}.checkbox-item:hover{background:var(--bg)}.checkbox-item input[type=checkbox]{cursor:pointer;flex-shrink:0;width:18px;height:18px}.input-field{border:1px solid var(--border);border-radius:8px;width:100%;padding:.6rem .8rem;font-family:inherit;font-size:.85rem}.input-field:focus{border-color:var(--primary);outline:none}.input-row{grid-template-columns:1fr 1fr;gap:.8rem;display:grid}.btn{white-space:nowrap;cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:.45rem;min-height:38px;padding:.68rem 1.25rem;font-family:inherit;font-size:.85rem;font-weight:600;line-height:1.2;transition:all .15s;display:inline-flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-secondary{background:var(--bg);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--primary);color:var(--primary)}.result-box{border-radius:10px;margin-top:1rem;padding:1rem;font-size:.85rem;line-height:1.7}.result-box.success{color:#15803d;background:#dcfce7;border:1px solid #86efac}.result-box.warning{color:#92400e;background:#fef3c7;border:1px solid #fcd34d}.result-box.info{color:#1e40af;background:#dbeafe;border:1px solid #93c5fd}.result-box.error{color:#991b1b;background:#fee2e2;border:1px solid #fca5a5}.result-title{margin-bottom:.5rem;font-size:.95rem;font-weight:700}.result-list{padding-left:1.2rem}.result-list li{margin-bottom:.3rem}.slider-group{margin-bottom:1.2rem}.slider-label{justify-content:space-between;align-items:center;margin-bottom:.4rem;font-size:.82rem;font-weight:600;display:flex}.slider-value{color:var(--primary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:700}.slider{background:var(--border);-webkit-appearance:none;border-radius:3px;outline:none;width:100%;height:6px}.slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--primary);cursor:pointer;border-radius:50%;width:18px;height:18px}.slider::-moz-range-thumb{background:var(--primary);cursor:pointer;border:none;border-radius:50%;width:18px;height:18px}.progress-wrap{margin-top:1rem}.progress-bar{background:var(--bg);border:1px solid var(--border);border-radius:12px;width:100%;height:24px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--primary) 0%, var(--env) 100%);color:#fff;justify-content:center;align-items:center;height:100%;font-size:.75rem;font-weight:700;transition:width .4s;display:flex}.progress-stats{color:var(--text2);justify-content:space-between;margin-top:.5rem;font-size:.78rem;display:flex}.checklist-grid{grid-template-columns:repeat(3,1fr);gap:.85rem;margin-top:1rem;display:grid}.check-item{border:1px solid var(--border);cursor:pointer;user-select:none;background:#fff;border-radius:10px;grid-template-columns:22px 1fr;align-items:center;column-gap:.85rem;min-height:56px;padding:.85rem .95rem;transition:border-color .15s,background .15s,box-shadow .15s,transform .15s;display:grid;position:relative;box-shadow:0 1px 2px #0f172a0a}.check-item:hover{border-color:var(--primary);background:#f8fffb;transform:translateY(-1px);box-shadow:0 6px 18px #0f172a14}.check-item.checked{border-color:var(--primary);background:linear-gradient(#f0fdf4 0%,#dcfce7 100%);box-shadow:inset 0 0 0 1px #16a34a29,0 4px 12px #16a34a1a}.check-item input[type=checkbox]{opacity:0;pointer-events:none;position:absolute}.check-item-marker{background:#fff;border:2px solid #cbd5e1;border-radius:999px;justify-content:center;align-items:center;width:22px;height:22px;transition:all .15s;display:inline-flex}.check-item-marker:after{content:"";transform-origin:50%;border:2px solid #fff;border-width:0 2px 2px 0;width:6px;height:10px;margin-top:-2px;transition:transform .12s;transform:rotate(45deg)scale(0)}.check-item.checked .check-item-marker{background:var(--primary);border-color:var(--primary)}.check-item.checked .check-item-marker:after{transform:rotate(45deg)scale(1)}.check-item-label{align-items:baseline;gap:.55rem;min-width:0;font-size:.83rem;line-height:1.4;display:flex}.check-item-no{color:var(--text2);letter-spacing:.02em;flex-shrink:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.68rem;font-weight:700}.check-item-name{color:var(--text);overflow-wrap:anywhere;font-weight:600}.check-item.checked .check-item-no,.check-item.checked .check-item-name{color:var(--primary-dark)}.scope-tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.55rem;margin-bottom:1rem;display:flex}.scope-tab{min-height:38px;color:var(--text2);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.62rem 1.15rem;font-family:inherit;font-size:.82rem;font-weight:600;line-height:1.2;transition:all .15s}.scope-tab:hover{color:var(--primary)}.scope-tab.active{color:var(--primary);border-bottom-color:var(--primary)}.scope-panel{display:none}.scope-panel.active{display:block}.method-toggle{background:var(--bg);border:1px solid var(--border);border-radius:8px;gap:2px;margin-bottom:1rem;padding:3px;display:inline-flex}.method-toggle button{min-height:32px;color:var(--text2);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.45rem .95rem;font-family:inherit;font-size:.76rem;font-weight:600;line-height:1.2}.method-toggle button.active{background:var(--primary);color:#fff}.callout{background:var(--primary-light);border-left:3px solid var(--primary);color:var(--primary-dark);border-radius:0 8px 8px 0;margin-bottom:.8rem;padding:.7rem .9rem;font-size:.78rem}.callout code{background:#fff;border-radius:4px;padding:.05rem .35rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.76rem}.s3-chain{grid-template-columns:1fr 26px auto 26px 1fr;align-items:stretch;margin-bottom:1.1rem;display:grid}.s3-chain-node{border:1px solid;border-radius:10px;flex-direction:column;justify-content:center;gap:.1rem;padding:.55rem .85rem;display:flex}.s3-chain-title{font-size:.8rem;font-weight:700;line-height:1.3}.s3-chain-sub{opacity:.72;letter-spacing:.03em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.66rem}.s3-chain-up{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.s3-chain-down{color:#b45309;background:#fffbeb;border-color:#fde68a}.s3-chain-co{background:var(--primary-50);border-color:var(--primary-200);color:var(--primary-800);flex-direction:row;align-items:center;gap:.45rem;padding:.55rem 1.05rem}.s3-chain-co-icon{font-size:1.05rem;line-height:1}.s3-chain-link{position:relative}.s3-chain-link:before{content:"";background:repeating-linear-gradient(90deg,#cbd5e1 0 5px,#0000 5px 10px);height:2px;margin-top:-1px;position:absolute;top:50%;left:3px;right:6px}.s3-chain-link:after{content:"";border-top:2px solid #cbd5e1;border-right:2px solid #cbd5e1;width:7px;height:7px;margin-top:-4px;position:absolute;top:50%;right:3px;transform:rotate(45deg)}.s3-board{grid-template-columns:1fr 1fr;align-items:start;gap:1rem;display:grid}.s3-group{border:1px solid var(--border);background:var(--surface);border-radius:12px;overflow:hidden;box-shadow:0 1px 2px #0f172a0a}.s3-group-up{border-color:#dbeafe}.s3-group-down{border-color:#fde68a}.s3-group-head{border-bottom:1px solid;align-items:center;gap:.5rem;padding:.62rem .8rem;display:flex}.s3-group-up .s3-group-head{background:#eff6ff;border-bottom-color:#dbeafe}.s3-group-down .s3-group-head{background:#fffbeb;border-bottom-color:#fde68a}.s3-group-tag{font-size:.78rem;font-weight:700}.s3-group-up .s3-group-tag{color:#1d4ed8}.s3-group-down .s3-group-tag{color:#b45309}.s3-group-range{color:var(--text2);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.66rem}.s3-group-sum{white-space:nowrap;background:#fff;border:1px solid;border-radius:999px;margin-left:auto;padding:.16rem .55rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.7rem;font-weight:700}.s3-group-up .s3-group-sum{color:#1d4ed8;border-color:#bfdbfe}.s3-group-down .s3-group-sum{color:#b45309;border-color:#fde68a}.s3-cat{background:var(--surface);border-bottom:1px solid var(--border);cursor:pointer;grid-template-columns:auto auto 1fr 138px;align-items:center;gap:.55rem;padding:.48rem .7rem;transition:background .15s,box-shadow .15s;display:grid}.s3-cat:last-child{border-bottom:none}.s3-cat:hover{background:#f8fafc}.s3-cat input[type=checkbox]{cursor:pointer;flex-shrink:0;width:16px;height:16px}.s3-group-up .s3-cat input[type=checkbox]{accent-color:#2563eb}.s3-group-down .s3-cat input[type=checkbox]{accent-color:#d97706}.s3-cat-no{color:var(--text2);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.1rem .3rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.66rem;font-weight:700;line-height:1.35;transition:all .15s}.s3-cat-name{color:var(--text);overflow-wrap:anywhere;font-size:.79rem;line-height:1.35}.s3-cat-field{align-items:center;gap:.32rem;min-width:0;display:flex}.s3-cat-field input{border:1px solid var(--border);text-align:right;background:#fff;border-radius:7px;width:100%;min-width:0;padding:.32rem .5rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.77rem;transition:border-color .15s,box-shadow .15s}.s3-cat-field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100);outline:none}.s3-cat-unit{color:var(--text2);white-space:nowrap;font-size:.6rem}.s3-group-up .s3-cat:has(.s3-check:checked){background:#eff6ff;box-shadow:inset 3px 0 #2563eb}.s3-group-up .s3-cat:has(.s3-check:checked) .s3-cat-no{color:#fff;background:#2563eb;border-color:#2563eb}.s3-group-down .s3-cat:has(.s3-check:checked){background:#fffbeb;box-shadow:inset 3px 0 #d97706}.s3-group-down .s3-cat:has(.s3-check:checked) .s3-cat-no{color:#fff;background:#d97706;border-color:#d97706}.s3-cat:has(.s3-check:checked) .s3-cat-name{font-weight:600}.s3-toolbar{flex-wrap:wrap;align-items:center;gap:.6rem;margin-top:1.05rem;display:flex}.s3-live{color:var(--text2);background:var(--bg);border:1px dashed var(--border);white-space:nowrap;border-radius:999px;margin-left:auto;padding:.42rem .85rem;font-size:.77rem}.s3-live strong{color:var(--primary-dark);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.result-box.s3-report{background:var(--primary-50);border-color:var(--primary-200);color:var(--primary-900)}.s3-bars{gap:.5rem;margin:.35rem 0 0;padding:0;list-style:none;display:grid}.s3-bar{--bar-c:var(--primary);border:1px solid var(--border);background:#fff;border-radius:9px;grid-template-columns:1fr auto auto;align-items:center;gap:.38rem .6rem;padding:.55rem .75rem;display:grid}.s3-bar.up{--bar-c:#3b82f6}.s3-bar.down{--bar-c:#f59e0b}.s3-bar-label{color:var(--text);align-items:baseline;gap:.45rem;min-width:0;font-size:.78rem;display:flex}.s3-bar-label b{color:#fff;background:var(--bar-c);border-radius:5px;flex-shrink:0;padding:.1rem .3rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.64rem;font-weight:700}.s3-bar-val{color:var(--text);white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.75rem;font-weight:700}.s3-bar-pct{color:var(--text2);white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.67rem}.s3-bar-track{background:var(--bg);border-radius:3px;grid-column:1/-1;height:6px;overflow:hidden}.s3-bar-fill{background:var(--bar-c);border-radius:3px;height:100%;transition:width .4s;display:block}.s3-report-total{border-top:1px dashed var(--primary-200);flex-wrap:wrap;align-items:center;gap:.35rem .9rem;margin-top:.85rem;padding-top:.75rem;font-size:.78rem;display:flex}.s3-report-total b{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.s3-report-grand{border:1px solid var(--primary-200);background:#fff;border-radius:999px;margin-left:auto;padding:.4rem .95rem;font-size:.92rem;font-weight:700}.s3-report-grand b{font-size:1.02rem}@media (width<=880px){.s3-board{grid-template-columns:1fr}.s3-chain{grid-template-columns:1fr;gap:.45rem}.s3-chain-link{display:none}.s3-live{text-align:center;width:100%;margin-left:0}.s3-cat{grid-template-columns:auto auto 1fr}.s3-cat-field{grid-column:1/-1}.s3-cat-field input{text-align:left}}.mini-table{border-collapse:collapse;width:100%;margin-bottom:.8rem;font-size:.78rem}.mini-table th{background:var(--bg);text-align:left;color:var(--text2);border-bottom:1px solid var(--border);padding:.5rem .6rem;font-size:.74rem;font-weight:600}.mini-table td{border-bottom:1px solid var(--border);padding:.35rem .6rem}.mini-table td input{border:1px solid var(--border);border-radius:6px;width:100%;padding:.3rem .45rem;font-family:inherit;font-size:.76rem}.mini-table .clean-row{background:#f0fdf4}.mini-table .clean-row td:first-child{color:#15803d}.tag-clean{color:#15803d;vertical-align:middle;background:#dcfce7;border-radius:8px;margin-left:.3rem;padding:.05rem .4rem;font-size:.64rem;font-weight:700;display:inline-block}.mini-table td.k-cell{color:var(--text2);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.72rem}.mini-table td.unit-cell{color:var(--text2);font-size:.72rem}.mini-table td.type-cell{color:var(--text2);font-size:.7rem}@media (width<=1024px){.tool-grid{grid-template-columns:1fr}.checklist-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=768px){.checklist-grid,.input-row{grid-template-columns:1fr}}
