/** 在线工具箱（多标签 + iframe 架构）：左分类手风琴 + 右多标签页 + iframe 嵌独立工具页 *//* 品牌橙强调（覆盖框架默认蓝），固定应用布局（不整页滚动，iframe 内部滚动） *//* 视觉隐藏但保留 DOM/无障碍树：供 SEO/GEO 的静态标题与描述使用。禁用 display:none（会被视为隐藏文本） */.sr-only {position: absolute;width: 1px;height: 1px;padding: 0;margin: -1px;overflow: hidden;clip: rect(0 0 0 0);clip-path: inset(50%);white-space: nowrap;border: 0;}/* 页面级 .fmt / .urlrow 这类 display 规则会盖掉 UA 的 [hidden]{display:none}，导致 JS 设 hidden 不生效 */[hidden] {display: none !important;}body.tk-shell {--portal-accent: #ff5000;--portal-hover: #fff5f0;--tk-side-w: 120px;background: #fff;}body.tk-shell .portal-mid {overflow: hidden;}body.tk-shell .portal-main {overflow: hidden !important;display: flex;flex-direction: column;background: #fff;}/* —— 工作区骨架 —— */.tk {flex: 1;min-height: 0;display: flex;flex-direction: column;background: #fff;color: var(--portal-text, #333);font: 12px/1.5 "Microsoft YaHei", Tahoma, sans-serif;}.tk * {border-radius: 0 !important;}.tk-body {flex: 1;min-height: 0;display: flex;}/* —— 左侧分类栏 —— */.tk-side {flex: 0 0 var(--tk-side-w);width: var(--tk-side-w);min-width: var(--tk-side-w);display: flex;flex-direction: column;border-right: 1px solid var(--portal-border, #e5e7eb);background: #fafafa;box-sizing: border-box;}.tk-search {display: flex;flex: 0 0 auto;width: 100%;margin: 0;padding: 0 0 6px;box-sizing: border-box;}.tk-search input {flex: 1;width: 100%;min-width: 0;padding: 6px 26px;border: 0;border-bottom: 1px solid var(--portal-border, #e5e7eb);outline: none;font-size: 12px;background: #fff;box-sizing: border-box;}.tk-search input:focus {}.tk-cats {flex: 1 1 auto;min-height: 0;overflow-y: auto;margin: 0;padding: 0 0 12px;list-style: none;}.tk-cat {display: flex;align-items: center;gap: 6px;padding: 7px 0;cursor: pointer;color: var(--portal-text, #333);font-size: 12px;border-left: 3px solid transparent;box-sizing: border-box;}.tk-cat:hover {background: #fff5f0;color: var(--portal-accent, #ff5000);}.tk-cat.is-open {background: #fff5f0;color: var(--portal-accent, #ff5000);font-weight: 700;}.tk-cat .ic {flex: 0 0 20px;width: 20px;font-size: 15px;line-height: 1;text-align: center;}.tk-cat .nm {flex: 1 1 auto;min-width: 0;}.tk-cat .cnt {flex: 0 0 auto;font-size: 11px;color: var(--portal-muted, #374151);background: #eef0f3;padding: 0 7px;line-height: 16px;border-radius: 8px !important;}.tk-cat.is-open .cnt {background: #fff0e8;color: var(--portal-accent, #ff5000);}.tk-tool {display: flex;align-items: center;gap: 6px;padding: 5px 0 5px 18px;cursor: pointer;color: var(--portal-sub, #6b7280);font-size: 12px;text-decoration: none;border-left: 2px solid transparent;box-sizing: border-box;}.tk-tool:hover {color: var(--portal-accent, #ff5000);background: #fff8f5;}.tk-tool.is-on {color: var(--portal-accent, #ff5000);font-weight: 700;border-left-color: var(--portal-accent, #ff5000);background: #fff5f0;}.tk-tool .nm {flex: 1 1 auto;min-width: 0;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}.tk-tool .tag {flex: 0 0 auto;font-size: 10px;line-height: 1;padding: 2px 4px;color: #fff;}.tk-tool .tag--hot {background: #e53935;}.tk-tool .tag--srv {background: #096dd9;}/* —— 右侧：多标签 + iframe —— */.tk-main {flex: 1;min-width: 0;display: flex;flex-direction: column;background: #fff;}.tk-tabs {flex: 0 0 auto;display: flex;align-items: stretch;gap: 0;padding: 0 6px;border-bottom: 1px solid var(--portal-border, #e5e7eb);background: #fafafa;overflow-x: auto;}/* 标签栏：仅在打开工具时显示；关闭全部工具（只剩首页）后整栏隐藏 */.tk-tabs:not(.tk-tabs--show) {display: none;}/* 首页常驻标签 */.tk-tab--home {position: relative;margin-right: 8px;}.tk-tab--home::after {content: '';position: absolute;right: 0;top: 6px;bottom: 6px;width: 1px;background: var(--portal-border, #e5e7eb);}.tk-tab {flex: 0 0 auto;display: flex;align-items: center;gap: 6px;padding: 7px 12px;border: 0;border-bottom: 2px solid transparent;background: transparent;color: var(--portal-sub, #6b7280);font: inherit;font-size: 12px;cursor: pointer;white-space: nowrap;}.tk-tab:hover {color: var(--portal-accent, #ff5000);}.tk-tab.is-active {color: var(--portal-accent, #ff5000);font-weight: 700;border-bottom-color: var(--portal-accent, #ff5000);background: #fff;}.tk-tab .close {flex: 0 0 auto;display: inline-flex;align-items: center;justify-content: center;width: 16px;height: 16px;font-size: 13px;line-height: 1;color: var(--portal-muted, #374151);cursor: pointer;border-radius: 8px !important;}.tk-tab .close:hover {background: #f3f4f6;color: #111;}.tk-panels {flex: 1;min-height: 0;position: relative;overflow: hidden;background: #fff;}.tk-panel {position: absolute;inset: 0;width: 100%;height: 100%;border: 0;display: none;background: #fff;}.tk-panel.is-active {display: block;}.tk-empty {position: absolute;inset: 0;display: flex;flex-direction: column;align-items: center;justify-content: center;gap: 10px;color: var(--portal-sub, #6b7280);font-size: 13px;background: #fff;}.tk-empty .big {font-size: 34px;}.tk-empty .tip {font-size: 12px;color: var(--portal-muted, #999);}/* 右侧默认视图：全部工具入口（按分类分组） */.tk-overview {position: absolute;inset: 0;overflow: auto;background: #fff;display: none;columns: 330px; /* 瀑布流：每列>=330px，列内分组按各自内容高度纵向堆叠（高度独立，不强行拉齐） */column-gap: 5px; /* 列间距，导航同款 */padding: 5px; /* 分组与容器留白，导航同款（5px） */}.tk-overview.is-active {display: block;}/* 侧栏底部统计：静态写死 + JS 兜底，共x组y个；沉底固定、居中 */.tk-summary {flex: 0 0 auto;padding: 6px 8px 10px;font-size: 12px;color: var(--portal-muted, #6b7280);line-height: 1;text-align: center;}.tk-summary b {color: var(--portal-accent, #ff5000);font-weight: 700;}/* 分类分组：瀑布流格子，高度由内容撑开，纵向紧贴（columns 连续排列无纵向间隔） */.tk-ov-cat {break-inside: avoid; /* 分组不跨列，保持独立高度堆叠 */margin: 0 0 5px; /* 纵向 5px 间隔 */padding: 5px; /* 导航分组内边距 */border: 1px solid #e5e7eb; /* 导航分组边框 */border-radius: 0; /* 导航直角 */background: #fff;}.tk-ov-cat.is-flash {animation: tk-cat-flash 1.2s ease;}@keyframes tk-cat-flash {0% { border-color: #ff5000; box-shadow: 0 0 0 3px rgba(255, 80, 0, .22); }100% { border-color: #e5e7eb; box-shadow: 0 0 0 0 rgba(255, 80, 0, 0); }}.tk-ov-hd {display: flex;align-items: center;gap: 5px;height: 24px; /* 固定整数高度：避免 emoji 行高产生小数，导致标题文字发虚 */line-height: 24px;font-size: 12px; /* 工具首页统一 12px */font-weight: 700;color: #333;margin: 0 0 5px; /* 底部间隔，参考导航 */padding: 0 0 5px;border-bottom: 1px solid #f3f4f6; /* 导航标题下划线 */background: transparent; /* 去浅灰底，与导航一致 */}/* 分组标题右侧：工具数量小字（JS 补，纯装饰） */.tk-ov-hd .tk-ov-cnt {margin-left: auto;font-size: 12px;font-weight: 400;color: #999;}/* 分组内工具：表格式网格。用 gap 露出容器背景色充当 1px 网格线，容器四边框闭合外框—— * 内部线/最右列/最下行/四角全部有线，不缺失；纯 CSS，无 JS（SEO/GEO 无关）。列数自适应窗口宽度 */.tk-ov-grid {display: grid;grid-template-columns: repeat(3, minmax(0, 1fr)); /* 导航同款 3 列，自适应填满，行数随工具数量自动 */gap: 0 5px; /* 导航列间距；行紧贴 */}.tk-ov-card {position: relative;display: flex; /* 导航式：图标 + 标题横排 */align-items: center;gap: 5px; /* 导航图标与文字间距 */height: 28px; /* 导航卡片行高 */padding: 0 5px;border-radius: 2px; /* 导航卡片圆角 */cursor: pointer;text-align: left;box-sizing: border-box;text-decoration: none; /* 卡片已改为 <a>，去下划线，颜色交给 .n/.d */color: inherit;transition: background .12s ease;}.tk-ov-card:hover {background: #fff5f0; /* 导航 hover 背景 */color: #ff5000; /* 导航 hover 文字色 */}.tk-ov-card .ic {flex: 0 0 20px; /* 图标 20x20，无背景 */width: 20px;height: 20px;font-size: 16px; /* emoji 在 20x20 内居中留白，视觉与导航 favicon 一致、间距正常 */line-height: 20px;text-align: center;}.tk-ov-card .n {flex: 1 1 auto; /* 标题占满剩余宽度 */min-width: 0; /* 省略号生效 */font-size: 12px; /* 工具首页统一 12px */font-weight: 400; /* 导航工具名常规字重（不粗体） */color: #374151; /* 导航工具名颜色 */line-height: 16px; /* 整数行高：原 1.3*12=15.6px 会产生小数字高，导致文字落在小数像素而发虚 */white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}/* 描述：当前只显示图标+工具名，描述仅视觉隐藏（保留在 DOM 供 SEO/搜索读取） */.tk-ov-card .d {display: none;}/* 标签：绝对定位右上角（需服务标记） */.tk-ov-card .tags {position: absolute;top: 6px;right: 6px;display: flex;gap: 4px;}.tk-ov-card .tag {font-size: 10px;line-height: 1;padding: 2px 4px;color: #fff;}.tk-ov-card .tag--srv { background: #096dd9; }/* —— 底部提示条 —— */.tools-toast {position: fixed;left: 50%;bottom: 40px;transform: translateX(-50%) translateY(20px);z-index: 300;max-width: 70vw;padding: 10px 18px;background: #333;color: #fff;font-size: 13px;opacity: 0;pointer-events: none;transition: opacity 0.2s, transform 0.2s;box-sizing: border-box;}.tools-toast.is-show {opacity: 1;transform: translateX(-50%) translateY(0);}/* 窄屏：侧栏收窄 */@media (max-width: 980px) {body.tk-shell {--tk-side-w: 120px;}}