/* ================= 官方主题（Theme Pack → 官方主题）================= */
/* 只服务于 static/js/official-themes.js 渲染出来的列表页 / 详情页，
   外壳沿用 style.css 的 .settings-* / theme-center.css 的 .tc-* 规则，
   这里只补这个子页面独有的东西：色点、关键词、色块预览、Toast。 */

.oft-dot{
    width:14px;
    height:14px;
    border-radius:50%;
    flex-shrink:0;
    box-shadow:inset 0 0 0 1px rgba(0,0,0,.06);
}

.oft-row-info{
    flex:1;
    min-width:0;
    display:flex;
    flex-direction:column;
    gap:3px;
}

.oft-row-keywords{
    font-size:12px;
    color:var(--text-2);
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

.oft-preview-card,
.oft-swatch-card{
    padding:16px 16px 18px;
    display:flex;
    flex-direction:column;
    gap:12px;
    flex-shrink:0; /* .settings-group 有 overflow:hidden，又是 .settings-content 这个
                       flex column 的子项——不加这行，内容变高时会被压缩裁切，跟 chat.css
                       里 .storycard 的那个注释是同一个 flexbox 坑 */
}

.oft-preview-scope{
    background:var(--bg-2);
    border-radius:var(--radius-md);
    padding:16px;
    display:flex;
    flex-direction:column;
    gap:12px;
    overflow:hidden;
}

/* 下面这组 .oft-preview-scope .storycard* 规则是照着 chat.css 里 .storycard 系列的默认视觉
   （圆角/阴影/间距/字号）手抄的一份静态副本，颜色部分留空交给每个官方主题的 <style> 覆盖。
   这么做是为了不在主题中心页面里引入 chat.css ——chat.css 自己的 :root 会重新声明
   --accent 等变量，一旦加载会连带把主题中心自己的强调色也换掉。 */

.oft-preview-scope .storycard{
    position:relative;
    flex-shrink:0; /* 同 chat.css 里的注释：flex column 子元素 + overflow:hidden 不加这行会被压缩裁切正文 */
    border-radius:26px;
    padding:18px 20px 20px 22px;
    box-shadow:0 1px 2px rgba(43,36,32,.05),0 16px 34px -16px rgba(43,36,32,.22);
    border:1px solid transparent;
    overflow:hidden;
    pointer-events:none;
}

.oft-preview-scope .storycard-header{
    display:flex;
    align-items:flex-start;
    gap:12px;
    margin-bottom:16px;
    padding-bottom:14px;
    border-bottom:1px dashed var(--line);
}

.oft-preview-scope .storycard-avatar-col{
    flex-shrink:0;
}

.oft-preview-scope .storycard-avatar{
    width:38px;
    height:38px;
    border-radius:50%;
    object-fit:cover;
    box-shadow:0 1px 2px rgba(43,36,32,.05),0 6px 14px -8px rgba(43,36,32,.25);
}

.oft-preview-scope .storycard-meta{
    flex:1;
    min-width:0;
    display:flex;
    flex-direction:column;
    gap:3px;
    padding-top:2px;
}

.oft-preview-scope .storycard-name{
    font-size:16px;
    font-weight:700;
    color:var(--text-1);
    line-height:1.3;
}

.oft-preview-scope .storycard-time{
    font-size:12px;
    color:var(--text-2);
    line-height:1.3;
}

.oft-preview-scope .storycard-body{
    font-size:15px;
    line-height:1.8;
    color:var(--text-1);
}

.oft-preview-scope .storycard-body p{
    margin:0;
    text-indent:2em;
}

.oft-mock-inputbar{
    pointer-events:none;
    align-items:center;
    padding:8px;
    gap:8px;
    background:var(--bg-0);
    border-top:none;
    border-radius:var(--radius-lg);
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
}

.oft-swatch-row{
    display:flex;
    align-items:center;
    gap:12px;
    padding:8px 2px;
    border-bottom:1px solid var(--line);
}

.oft-swatch-row:last-child{
    border-bottom:none;
}

.oft-swatch-dot{
    width:22px;
    height:22px;
    border-radius:8px;
    flex-shrink:0;
    box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);
}

.oft-swatch-label{
    flex:1;
    font-size:14px;
    color:var(--text-1);
}

.oft-swatch-hex{
    font-family:"SF Mono",Consolas,Menlo,monospace;
    font-size:12px;
    color:var(--text-2);
}

.oft-actions{
    justify-content:flex-end;
    gap:10px;
    padding-bottom:8px;
}

.oft-toast{
    position:fixed;
    left:50%;
    bottom:36px;
    transform:translate(-50%,12px);
    background:rgba(28,28,30,.92);
    color:#fff;
    font-size:13px;
    padding:10px 18px;
    border-radius:var(--radius-pill);
    opacity:0;
    pointer-events:none;
    transition:opacity .2s ease,transform .2s ease;
    z-index:50;
    max-width:86%;
    text-align:center;
}

.oft-toast.is-visible{
    opacity:1;
    transform:translate(-50%,0);
}
