*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Microsoft YaHei","PingFang SC",sans-serif;background:#f2f4f8;color:#333;font-size:14px}
a{text-decoration:none;color:inherit}
/* 顶部栏 */
.topbar{height:56px;background:#fff;display:flex;align-items:center;padding:0 20px;box-shadow:0 1px 4px rgba(0,0,0,.06);position:fixed;left:0;right:0;top:0;z-index:50}
.brand{display:flex;align-items:center;gap:8px}
.brand .logo{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,#ff8a4c,#7a5cff);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:16px}
.brand b{font-size:17px;background:linear-gradient(90deg,#ff7a45,#7a5cff);-webkit-background-clip:text;background-clip:text;color:transparent}
.brand i{font-style:normal;font-size:12px;color:#9aa3b2;border-left:1px solid #e5e8ef;padding-left:8px}
.topnav{margin-left:auto;display:flex;gap:20px;align-items:center}
.topnav a{color:#5a6472;font-size:13px;display:inline-flex;gap:4px;align-items:center}
.topnav a:hover{color:#2f7bff}
.topnav .bell,.topnav .avatar{cursor:pointer;font-size:16px}
.topnav .avatar{width:30px;height:30px;border-radius:50%;background:#fff3e8;display:inline-flex;align-items:center;justify-content:center;border:1px solid #ffe0c2}
/* 侧栏底部渠道卡 */
.side-foot{margin-top:18px;padding:14px 12px 18px;border-top:1px solid #eef0f4;text-align:left}
.chan-badge{display:inline-block;background:#fff3e8;color:#ff8a4c;font-size:12px;font-weight:700;padding:3px 10px;border-radius:6px}
.chan-no{font-size:15px;font-weight:700;color:#333;margin-top:8px}
.chan-user{font-size:12px;color:#8a94a6;margin-top:2px}
.back-home{display:inline-block;margin-top:10px;font-size:12px;color:#5a6472}
.back-home:hover{color:#2f7bff}
/* 主题卡片 */
.theme-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.tcard{background:#f7f9fc;border-radius:10px;overflow:hidden;border:1px solid #eef0f4;transition:.15s}
.tcard:hover{box-shadow:0 4px 16px rgba(40,60,120,.10)}
.tprev{position:relative;aspect-ratio:16/9;display:flex;flex-direction:column;cursor:grab}
.tbadge{position:absolute;top:6px;right:8px;background:rgba(255,255,255,.9);color:#5a6472;font-size:10px;padding:1px 8px;border-radius:8px}
.tfoot{padding:12px 14px 14px;background:#fff}
.tfoot .pen{color:#9aa3b2;cursor:pointer;font-size:13px}
.tfoot .pen:hover{color:#2f7bff}
.topright{display:flex;align-items:center;gap:14px;margin-left:24px}
.chan{font-size:12px;color:#8a94a6}.chan em{font-style:normal;color:#ff8a4c;font-weight:700}
.who{font-size:13px;color:#5a6472}
.out{font-size:13px;color:#2f7bff}
/* 左侧双列导航：一级列 + 二级弹出列 */
.wrap{display:flex;padding-top:56px;min-height:100vh}
.side{background:#fff;flex:none;border-right:1px solid #eef0f4;padding-top:10px;position:fixed;top:56px;bottom:0;overflow:auto}
.side-1{width:168px;z-index:5}
.side-2{width:150px;left:168px;box-shadow:2px 0 6px rgba(40,60,120,.04);padding-top:14px}
.grp-t{display:flex;align-items:center;gap:8px;min-height:44px;padding:8px 16px;margin:0 8px 2px;color:#4a5462;font-size:14px;line-height:1.4;border-radius:8px}
.grp-t i{font-style:normal;width:16px;text-align:center;flex:none}
.grp-t .arw{margin-left:auto;font-style:normal;font-size:11px;color:#b6bfcc}
.grp-t:hover{background:#f2f6ff;color:#2f7bff}
.grp-t.on{background:#2f7bff;color:#fff}
.grp-t.on .arw{color:#dce8ff}
.side-2 a{display:block;padding:11px 14px;font-size:14px;color:#4a5462;text-align:center;border-radius:8px;margin:2px 10px}
.side-2 a:hover{background:#f2f6ff;color:#2f7bff}
.side-2 a.on{background:#eaf2ff;color:#2f7bff;font-weight:700}
.side-2 .back-home{position:absolute;bottom:10px;left:0;right:0;text-align:center;font-size:12px;color:#8a94a6;background:none;margin:0}
.main{margin-left:168px;flex:1;padding:18px 22px;min-width:0;overflow-x:auto}
.main.with-sub{margin-left:318px}
/* 页面卡片 */
.card{background:#fff;border-radius:10px;padding:18px 20px;box-shadow:0 1px 4px rgba(0,0,0,.05);margin-bottom:16px}
.page-h{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}
.page-h h2{font-size:17px}
.page-h .tip{font-size:12px;color:#9aa3b2}
.page-h .right{margin-left:auto;display:flex;gap:10px;align-items:center}
/* 按钮 */
.btn{display:inline-block;padding:8px 20px;border-radius:6px;border:1px solid #dfe3ea;background:#fff;color:#4a5462;font-size:13px;cursor:pointer}
.btn:hover{border-color:#2f7bff;color:#2f7bff}
.btn.pri{background:#2f7bff;border-color:#2f7bff;color:#fff}
.btn.pri:hover{background:#1e63e0;color:#fff}
.btn.dan{color:#e04b4b;border-color:#f2c7c7}
.btn.sm{padding:4px 10px;font-size:12px}
/* 主题页签 */
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;position:relative}
.tab{padding:7px 16px;border-radius:16px;font-size:14px;color:#4a5462;cursor:pointer;position:relative}
.tab:hover{color:#2f7bff}
.tab.on{background:#2f7bff;color:#fff}
.tab .badge{position:absolute;top:-14px;left:50%;transform:translateX(-50%);background:#b6f5c8;color:#1e8e4e;font-size:11px;padding:1px 6px;border-radius:6px;white-space:nowrap}
/* 预览 + 右侧配置（空间不足时面板换到画布下方，避免被裁切） */
.editor{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.canvas{flex:1 1 620px;min-width:0}
/* 右侧配置面板：面板内独立滚动，不带动整页（overscroll 防滚动穿透） */
.panel{width:268px;flex:none;background:#f7f9fc;border-radius:10px;padding:14px;max-height:calc(100vh - 120px);overflow-y:auto;overscroll-behavior:contain}
.panel h3{font-size:15px;margin-bottom:12px}
.panel .row{display:flex;align-items:center;justify-content:space-between;margin:12px 0;font-size:13px;color:#4a5462;gap:10px}
.panel .row label{color:#8a94a6;flex:none}
.panel input[type=text]{flex:1;padding:6px 8px;border:1px solid #dfe3ea;border-radius:5px;font-size:13px;min-width:0}
/* 16:9 桌面预览 */
.tv{position:relative;width:100%;aspect-ratio:16/9;border-radius:8px;overflow:hidden;border:2px dashed #ff8a4c;background:#17213a}
.tv.no-dash{border:0}
.tv .tv-bg{position:absolute;inset:0;background-size:cover;background-position:center}
.tv .tv-top{position:absolute;left:0;right:0;top:0;height:11%;display:flex;align-items:center;padding:0 2%;gap:1.2%}
.tv .tv-top .t-logo{width:26px;height:26px;border-radius:6px;background:linear-gradient(135deg,#ff8a4c,#7a5cff);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:13px}
.tv .tv-top .t-name{color:#fff;font-size:13px;text-shadow:0 1px 3px rgba(0,0,0,.4)}
.tv .tv-top .t-icons{margin-left:auto;display:flex;gap:10px;align-items:center;color:#fff;font-size:12px;opacity:.92}
.tv .tv-clock{position:absolute;left:4%;top:22%;color:#fff}
.tv .tv-clock .time{font-size:34px;font-weight:300;letter-spacing:1px}
.tv .tv-clock .date{font-size:11px;opacity:.85;margin-top:4px;line-height:1.6}
.tv .tv-clock .wthr{display:inline-block;margin-left:18px;font-size:12px;opacity:.9}
.tv .tv-grid{position:absolute;left:4%;right:4%;top:16%;bottom:26%;display:grid;gap:1.2%}
.tv .tv-grid.l-simple{grid-template-columns:1fr}
.tv .tv-grid.l-elder{grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr}
.tv .tv-grid.l-standard{grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr}
.tv .tv-grid.l-standard .g:first-child{grid-row:span 2}
.tv .tv-grid.l-grid{grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr}
.tv .tv-grid.l-poster{grid-template-columns:repeat(3,1fr);grid-auto-rows:1fr}
.tv .tv-grid.l-dynamic{grid-template-columns:1.6fr 1fr 1fr;grid-template-rows:1.4fr 1fr}
.tv .tv-grid.l-dynamic .g:first-child{grid-row:span 2}
.tv .tv-grid.l-clock{grid-template-columns:1.6fr 1fr;grid-template-rows:1fr 1fr}
.tv .tv-grid.l-clock .g:first-child{grid-row:span 2}
.tv .g{background:rgba(255,255,255,.10);border-radius:6px;position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:6px;color:#fff;font-size:11px}
.tv .g.sel{outline:2px dashed #ff8a4c;outline-offset:-2px}
.tv .g img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tv .g span{position:relative;text-shadow:0 1px 3px rgba(0,0,0,.6)}
/* 底部 7 槽位 */
/* 底部槽位：框更小、间距更开、图标占比大、整行上移 */
.tv .tv-slots{position:absolute;left:0;right:0;bottom:5.2%;display:flex;justify-content:center;gap:5%}
.tv .slot{width:7.6%;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;position:relative;background:none}
.tv .slot .sbox{width:100%;aspect-ratio:1/.98;border-radius:9px;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;color:#fff}
.tv .slot:hover .sbox{background:rgba(255,255,255,.32)}
.tv .slot.sel .sbox{outline:2px dashed #ff8a4c}
.tv .slot .plus{font-size:20px;line-height:1;font-weight:300}
.tv .slot .sbox img{width:78%;height:78%;object-fit:contain;border-radius:8px}
.tv .slot .cap{font-size:10px;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5);max-width:150%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tv .slot:empty{aspect-ratio:1/.86;border-radius:10px;background:rgba(255,255,255,.16)}
/* 时钟+天气分列 */
.tv .clkblk .clkrow2{display:flex;align-items:flex-start;gap:6%}
.tv .clkblk .wcol{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:#fff;margin-top:-1.6cqw}
.tv .clkblk .td{margin-top:-2.2cqw}
.tv .clkblk .wcol .wicon{font-size:26px;line-height:1}
/* 表单 */
table.tb{width:100%;border-collapse:collapse;font-size:13px}
table.tb th{background:#f6f8fb;color:#6b7480;font-weight:400;padding:10px 12px;text-align:left}
table.tb td{padding:10px 12px;border-bottom:1px solid #f0f2f6}
table.tb tr:hover td{background:#fafcff}
.frm{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:flex-end}
.frm .f{display:flex;flex-direction:column;gap:5px;min-width:150px}
.frm .f label{font-size:12px;color:#8a94a6}
.frm input,.frm select,.frm textarea{padding:7px 9px;border:1px solid #dfe3ea;border-radius:5px;font-size:13px;font-family:inherit}
.frm textarea{min-height:70px;resize:vertical}
/* 开关 */
.sw{width:40px;height:22px;border-radius:11px;background:#d6dbe4;position:relative;cursor:pointer;flex:none;transition:.2s}
.sw::after{content:"";position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;top:2px;left:2px;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.sw.on{background:#2f7bff}.sw.on::after{left:20px}
/* 色值 */
.swatches{display:flex;flex-direction:column;gap:8px}
.swatch{display:flex;align-items:center;gap:10px;font-size:13px}
.swatch i{width:74px;height:26px;border-radius:4px;display:inline-block;border:1px solid #e3e6ec}
/* 素材/壁纸网格 */
.grid-img{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-top:14px}
.cell{position:relative;border-radius:8px;overflow:hidden;aspect-ratio:16/9;background:#eef1f6;cursor:pointer}
.cell img{width:100%;height:100%;object-fit:cover;display:block}
.cell .nm{position:absolute;left:0;right:0;bottom:0;background:rgba(0,0,0,.45);color:#fff;font-size:11px;padding:3px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cell .del{position:absolute;top:6px;right:6px;width:26px;height:26px;border-radius:50%;background:#e04b4b;color:#fff;display:none;align-items:center;justify-content:center;font-size:13px}
.cell:hover .del{display:flex}
.cell .use{position:absolute;inset:0;background:rgba(47,123,255,.35);color:#fff;display:none;align-items:center;justify-content:center;font-size:13px}
.cell:hover .use{display:flex}
/* 上传区 */
.drop{border:1px dashed #c9d3e2;border-radius:8px;padding:18px;text-align:center;background:#f8fafd;color:#8a94a6;font-size:12px}
.drop .btns{display:flex;gap:10px;justify-content:center;margin-bottom:8px}
.hint{font-size:12px;color:#9aa3b2;margin-top:8px}
/* 统计卡 */
.stat-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px}
.sc{border-radius:10px;padding:22px;text-align:center}
.sc b{display:block;font-size:26px;margin-bottom:6px}
.sc.o{background:linear-gradient(180deg,#fff3e8,#fff)}.sc.o b{color:#ff8a4c}
.sc.g{background:linear-gradient(180deg,#eafaf0,#fff)}.sc.g b{color:#1e8e4e}
.sc.b{background:linear-gradient(180deg,#eaf1ff,#fff)}.sc.b b{color:#2f7bff}
/* 弹窗 */
.modal{position:fixed;inset:0;background:rgba(15,20,30,.45);display:none;align-items:center;justify-content:center;z-index:80}
.modal.on{display:flex}
.mbox{background:#fff;border-radius:10px;padding:22px;width:640px;max-width:92vw;max-height:84vh;overflow:auto}
.mbox h3{font-size:16px;margin-bottom:14px}
.mtabs{display:flex;gap:18px;border-bottom:1px solid #eef0f4;margin-bottom:14px}
.mtabs div{padding:8px 2px;font-size:14px;color:#6b7480;cursor:pointer;border-bottom:2px solid transparent}
.mtabs div.on{color:#2f7bff;border-color:#2f7bff}
.x{float:right;cursor:pointer;color:#9aa3b2;font-size:18px}
/* toast */
.toast{position:fixed;top:70px;left:50%;transform:translateX(-50%);background:#1e8e4e;color:#fff;padding:9px 22px;border-radius:6px;font-size:13px;opacity:0;transition:.25s;z-index:99;pointer-events:none}
.toast.show{opacity:1}
.toast.err{background:#e04b4b}
/* 上传进度遮罩（所有上传统一使用） */
.upmask{position:fixed;inset:0;background:rgba(15,20,30,.4);display:none;align-items:center;justify-content:center;z-index:90}
.upmask.on{display:flex}
.upbox{background:#fff;border-radius:10px;padding:22px 26px;width:420px}
.up-title{display:flex;justify-content:space-between;font-size:13px;margin-bottom:10px}
.up-title b{color:#2f7bff}
.bar{height:8px;border-radius:4px;background:#eef1f6;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#4a90ff,#2f7bff);transition:width .2s}
.up-stage{font-size:12px;color:#8a94a6;margin-top:10px;min-height:18px}
/* 登录 */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#eef3fb,#f7f4ff)}
.login{background:#fff;border-radius:12px;padding:36px 40px;width:360px;box-shadow:0 6px 30px rgba(40,60,120,.12)}
.login h1{font-size:19px;margin-bottom:4px}.login p{color:#9aa3b2;font-size:12px;margin-bottom:22px}
.login input{width:100%;padding:11px 12px;border:1px solid #dfe3ea;border-radius:7px;margin-bottom:14px;font-size:14px}
.login .btn{width:100%;padding:11px}
.err-tip{background:#fdecec;color:#c0392b;padding:8px 12px;border-radius:6px;font-size:13px;margin-bottom:14px}
.muted{color:#9aa3b2;font-size:12px}
/* 内联开关（页头/卡片中）：避免 inline 元素宽度失效导致滑块压住按钮 */
span.sw,.panel .sw,.frm .sw{display:inline-block;vertical-align:middle;margin-left:6px}
/* 背景选中框 / 槽位删除标记 / 背景删除按钮 */
.canvas .tv{border:2px dashed transparent}
.canvas .tv.bg-sel{border-color:#ff8a4c}
.tv .delx{position:absolute;top:-8px;right:-8px;width:22px;height:22px;border-radius:50%;background:#111;color:#fff;font-size:14px;line-height:20px;text-align:center;cursor:pointer;z-index:5;box-shadow:0 1px 4px rgba(0,0,0,.4)}
.tv .delx:hover{background:#e04b4b}
.tv .slot .delx{top:-10px;right:-4px}
.bg-del{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:34px;height:34px;border-radius:8px;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:16px;cursor:pointer}
.bg-del:hover{background:#e04b4b}
/* 时间三行（时刻/日期星期/农历）整体加大，天气组上移；仅作用于极简/灵动等左侧大时钟布局，
   经典时钟主题保持原有大小不变；字号随画布宽度等比缩放 */
.tv{container-type:inline-size}
.tv .tv-zone.z-simple,.tv .tv-zone.z-dynamic{left:8%}
.tv .tv-zone.z-simple .clkblk,.tv .tv-zone.z-dynamic .clkblk{width:64%}
.tv .tv-zone:not(.z-clock) .clkblk .time{font-size:44px;font-size:5.4cqw;font-weight:700}
.tv .tv-zone:not(.z-clock) .clkblk.big .time{font-size:54px;font-size:8.2cqw;font-weight:700;letter-spacing:1px}
.tv .tv-zone:not(.z-clock) .clkblk .date{font-size:19px;font-size:2cqw;font-weight:600;margin-top:.8cqw;line-height:1.55}
.tv .tv-zone:not(.z-clock) .clkblk .wcol{font-size:15px;font-weight:500;gap:6px;margin-top:-2.2cqw;margin-left:2%}
.tv .tv-zone:not(.z-clock) .clkblk .wcol .wicon{line-height:1;display:inline-flex}
.tv .tv-zone:not(.z-clock) .clkblk .wcol .wicon svg{width:max(72px,6.8cqw);height:max(72px,6.8cqw)}
.tv .tv-zone:not(.z-clock) .clkblk .wcol .wtxt{font-size:22px;font-size:2.5cqw;font-weight:600}
.tv .tv-zone:not(.z-clock) .clkblk .wcol .wcity{opacity:.9;font-size:16px;font-size:1.8cqw}
/* 经典时钟主题：时间天气整体右移，天气项目放大显示 */
.tv .tv-zone.z-clock .clkrow{margin-left:8%;margin-top:3%}
.tv .tv-zone.z-clock .clkblk .td{margin-top:0}
.tv .tv-zone.z-clock .clkblk .clkrow2{gap:13%}
.tv .tv-zone.z-clock .clkblk .time{font-size:58px;font-weight:600;letter-spacing:1px}
.tv .tv-zone.z-clock .clkblk .date{font-size:17px;font-weight:500;margin-top:8px;line-height:1.7;opacity:.92}
.tv .tv-zone.z-clock .clkblk .wcol{font-size:14px;font-weight:400;gap:6px;margin-top:0;margin-left:0}
.tv .tv-zone.z-clock .clkblk .wcol .wicon svg{width:58px;height:58px}
.tv .tv-zone.z-clock .clkblk .wcol .wtxt{font-size:22px;font-weight:600}
.tv .tv-zone.z-clock .clkblk .wcol .wcity{font-size:16px;opacity:.9}
.tv .t-icons .tpill{font-size:13px;display:inline-flex;align-items:center;gap:3px}
/* 自由画布：浮动可拖拽元素；编辑区铺满整个画布，元素可拖到任意位置含最底部 */
.tv .tv-zone.z-free{top:0;left:0;right:0;bottom:0}
.tv .free-wrap{position:absolute;inset:0}
.tv .fel{position:absolute;border-radius:8px}
.tv .fel.selE{outline:2px dashed #ff8a4c;outline-offset:2px}
.tv .fel .fgrip{position:absolute;top:-7px;left:-7px;width:14px;height:14px;border-radius:50%;background:#ff8a4c;cursor:move;z-index:6;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.tv .fel .frz{position:absolute;right:-7px;bottom:-7px;width:14px;height:14px;border-radius:3px;background:#2f7bff;cursor:nwse-resize;z-index:6;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.tv .fel .fdock{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:3.2%}
.tv .fel .fdock .slot{width:auto;flex:1;max-width:14%}
.tv .fel .slot{width:100%;height:100%}
.tv .fel .slot .sbox{height:72%}
.tv .fel .clkblk{width:100%}
.tv .fel .wcol{width:100%}
.tv .fel .g{width:100%;height:100%}
/* 新建主题布局实时预览 */
.nt-prev{position:relative;width:100%;aspect-ratio:16/7;background:#17213a;border-radius:8px;overflow:hidden;padding:6px 8px;display:flex;flex-direction:column;gap:4px;transition:background .2s}
.nt-prev .nt-top{display:flex;align-items:center;gap:5px;color:#fff;font-size:9px}
.nt-prev .nt-top span{width:12px;height:12px;border-radius:3px;background:linear-gradient(135deg,#ff8a4c,#7a5cff);display:inline-flex;align-items:center;justify-content:center;font-size:8px;color:#fff;flex:none}
.nt-prev .nt-top i{width:30px;height:8px;border-radius:2px;background:rgba(255,255,255,.25)}
.nt-prev .nt-top b{margin-left:auto;font-weight:400}
.nt-prev .nt-body{flex:1;display:flex;gap:5px;min-height:0}
.nt-prev .nt-body .ntclk{color:#fff;flex:0 0 40%}
.nt-prev .nt-body .ntclk b{font-size:17px;font-weight:300;display:block;line-height:1.2}
.nt-prev .nt-body .ntclk span{font-size:8px;opacity:.8}
.nt-prev .ntgrid{flex:1;display:grid;gap:4px;grid-auto-rows:1fr}
.nt-prev .c{background:hsla(210,30%,70%,.3);border-radius:3px;display:block}
.nt-prev .ntrow{flex:1;display:flex;gap:4px}
.nt-prev .ntrow .c{flex:0 0 22%}
.nt-prev .ntclock{flex:1;display:flex;gap:5px}
.nt-prev .ntclock .c.big{flex:0 0 46%}
.nt-prev .ntclock .rc{flex:1;display:flex;flex-direction:column;gap:4px}
.nt-prev .ntclock .rc .t{color:#fff;font-size:10px}
.nt-prev .ntclock .rc .two{flex:1;display:flex;gap:4px}
.nt-prev .nt-dock{display:flex;justify-content:center;gap:4px;padding:2px 0}
.nt-prev .nt-dock span{width:16px;height:12px;border-radius:3px;background:rgba(255,255,255,.2)}
/* 按键设置行条 */
.krow{display:flex;align-items:center;gap:12px;background:#f2f4f8;border-radius:8px;padding:14px 18px;margin-bottom:10px;flex-wrap:wrap}
.krow .kl{color:#4a5462;font-size:14px;flex:none}
.krow input.kn{width:180px;padding:8px 10px;border:1px solid #dfe3ea;border-radius:5px;font-size:13px}
.krow input.kc{width:110px;padding:8px 10px;border:1px solid #dfe3ea;border-radius:5px;font-size:13px}
.krow select.ka{min-width:150px;padding:8px 10px;border:1px solid #dfe3ea;border-radius:5px;font-size:13px;background:#fff}
.krow .sp{flex:1}
/* 顶栏时间/天气胶囊 */
.tv .t-icons .tpill{background:rgba(255,255,255,.18);border-radius:10px;padding:1px 8px}
.tv .t-icons .ttime{font-weight:700;font-size:13px;letter-spacing:.5px}
/* 画布主区域：8 套主题分区布局 */
.tv .tv-zone{position:absolute;left:3.2%;right:3.2%;top:13%;bottom:26%;display:flex;gap:1.6%}
.tv .tv-zone.hide-grid .rgrid,.tv .tv-zone.hide-grid .prow,.tv .tv-zone.hide-grid .lz-clock{display:none}
.tv .tv-zone.z-elder{flex-direction:column;gap:1.4%}
.tv .tv-zone.z-simple .clkblk,.tv .tv-zone.z-dynamic .clkblk{flex:none;width:64%;align-self:flex-start;margin-top:8cqw}
.tv .tv-zone.z-dynamic{bottom:24%}
.tv .tv-zone.z-clock{gap:2%}
.tv .tv-zone.z-grid{padding:0;bottom:4%}
.tv .tv-zone.z-grid .prow{align-items:stretch}
.tv .clkblk{color:#fff;line-height:1.1}
.tv .clkblk .wthr{display:inline-block;margin-left:16px;font-size:12px;opacity:.9}
.tv .rgrid{flex:1;display:grid;gap:1.2%;min-width:0}
.tv .rgrid.g-elder{grid-template-columns:repeat(12,1fr);grid-auto-rows:1fr}
.tv .rgrid.g-elder .g:nth-child(-n+3){grid-column:span 4}
.tv .rgrid.g-elder .g:nth-child(n+4){grid-column:span 3}
.tv .rgrid.g-standard{grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr}
.tv .rgrid.g-standard .g:first-child{grid-row:span 2}
.tv .rgrid.g-classic{grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr}
.tv .rgrid.g-classic .g:first-child{grid-row:span 2}
.tv .rgrid.g-classic .g:nth-child(2){grid-column:span 2}
.tv .rgrid.g-grid8{grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr}
.tv .prow{flex:1;display:flex;gap:1.4%;overflow-x:auto;min-width:0;scrollbar-width:thin}
.tv .prow .g{flex:0 0 22%;border-radius:8px}
.tv .prow.p-grid .g{flex-basis:23.5%}
.tv .prow.p-poster .g{flex-basis:24.5%}
.tv .lz-clock{flex:1;display:flex;gap:2%;min-width:0;align-items:stretch}
.tv .lz-clock .g.big{flex:0 0 55%}
.tv .lz-clock .rcol{flex:1;display:flex;flex-direction:column;gap:4%;justify-content:space-between;min-width:0}
.tv .lz-clock .clkrow{color:#fff;flex:none}
.tv .lz-clock .two{flex:0 0 42%;display:flex;gap:4%}
.tv .lz-clock .two .g{flex:1;min-height:0}
/* 底部槽位变体 */
.tv .tv-slots.hide{display:none}
.tv .tv-slots.s6{bottom:5.6%}
.tv .tv-slots.s6 .slot{width:11%}
.tv .tv-slots.s6 .slot .sbox{aspect-ratio:1/.55;border-radius:12px}
.tv .slot.allapps .sbox{background:linear-gradient(135deg,#ff8a4c,#7a5cff)}
.tv .slot .allapp-ico{display:grid;grid-template-columns:1fr 1fr;gap:3px;width:26px;height:26px}
.tv .slot .allapp-ico i{background:#fff;border-radius:3px}
.pill{display:inline-block;padding:2px 10px;border-radius:10px;font-size:12px}
.pill.g{background:#e8f8ef;color:#1e8e4e}.pill.o{background:#fff3e8;color:#ff8a4c}.pill.b{background:#eaf2ff;color:#2f7bff}
