body[data-theme="forest"]{
    --bg-grad: radial-gradient(1200px 540px at 50% -10%, #d6ead2 0%, #c6ddc3 46%, #b6d0b3 100%);
    --panel-bg: rgba(255,255,255,.94);
    --panel-border: #bcd6ba;
    --ink: #1e3626; --ink-2: #46614f; --ink-3: #7c9484;
    --accent: #2c7a4a; --accent-2: #4d9e68; --accent-soft: #d5ecd5;
    --chip-bg: #f1f9f0; --chip-border: #b2d2b2;
    --chip-active: linear-gradient(180deg,#4d9e68,#2c7a4a);
    --btn-bg: #f1f9f0; --btn-border: #b2d2b2;
    --btn-primary: linear-gradient(180deg,#4d9e68,#2c7a4a);
    --btn-primary-b: #1f5c37;
    --btn-warn: #a8452f; --btn-warn-border: #e0bcb2;
    --card-bg: #ffffff;
    --error: #c84040; --error-bg: #fdeaea; --error-border: #e8a5a5;
    --ok: #2c8a52;
    --target-bg: #fbfffa;
    --canvas-frame: #9ec29c;
}
body[data-theme="dusk"]{
    --bg-grad: radial-gradient(1200px 540px at 50% -10%, #f7e0be 0%, #efd0a8 46%, #e4c194 100%);
    --panel-bg: rgba(255,250,242,.95);
    --panel-border: #dcc09c;
    --ink: #3a2614; --ink-2: #79552f; --ink-3: #a98a62;
    --accent: #b2541e; --accent-2: #d8803a; --accent-soft: #f8e4cc;
    --chip-bg: #fdf4e6; --chip-border: #dcc09c;
    --chip-active: linear-gradient(180deg,#d8803a,#a8501a);
    --btn-bg: #fdf4e6; --btn-border: #dcc09c;
    --btn-primary: linear-gradient(180deg,#d8803a,#a8501a);
    --btn-primary-b: #7e3a10;
    --btn-warn: #a5352a; --btn-warn-border: #e0b6aa;
    --card-bg: #fffdf7;
    --error: #c43a3a; --error-bg: #fde8e6; --error-border: #e8a09c;
    --ok: #3a8236;
    --target-bg: #fffdf7;
    --canvas-frame: #c8a878;
}
body[data-theme="frost"]{
    --bg-grad: radial-gradient(1200px 540px at 50% -10%, #dae9f6 0%, #c6dbee 46%, #b2cbe2 100%);
    --panel-bg: rgba(252,254,255,.95);
    --panel-border: #b0c8de;
    --ink: #16293a; --ink-2: #3f5f78; --ink-3: #7794ab;
    --accent: #235f88; --accent-2: #3e83b2; --accent-soft: #d3e7f7;
    --chip-bg: #eff7fd; --chip-border: #b0c8de;
    --chip-active: linear-gradient(180deg,#3e83b2,#235f88);
    --btn-bg: #eff7fd; --btn-border: #b0c8de;
    --btn-primary: linear-gradient(180deg,#3e83b2,#1f5273);
    --btn-primary-b: #164058;
    --btn-warn: #a03a4a; --btn-warn-border: #d8b0b8;
    --card-bg: #ffffff;
    --error: #c23c50; --error-bg: #fcecef; --error-border: #e8a8b2;
    --ok: #24706a;
    --target-bg: #fbffff;
    --canvas-frame: #93b4ce;
}

*{box-sizing:border-box;}
html,body{height:100%;}
body{
    margin:0;
    background:var(--bg-grad);
    font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Segoe UI",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif;
    color:var(--ink);
    -webkit-font-smoothing:antialiased;
    -webkit-tap-highlight-color:transparent;
    overflow-x:hidden;
    transition:background .4s ease;
}
.tf-wrap{max-width:1320px;margin:0 auto;padding:12px 16px 24px;}

.tf-header{
    display:flex;align-items:center;justify-content:space-between;
    flex-wrap:wrap;gap:10px;margin-bottom:10px;
}
.tf-brand{display:flex;align-items:baseline;gap:10px;flex-shrink:0;margin:0;}
.tf-brand .logo{font-size:23px;font-weight:800;letter-spacing:.4px;color:var(--accent);line-height:1.1;}
.tf-brand .logo em{font-style:normal;color:var(--accent-2);}
.tf-brand .sub{
    font-size:16px;color:var(--ink-3);letter-spacing:3px;
    border-left:1px solid var(--panel-border);padding-left:10px;font-weight:400;
}
.tf-actions{display:flex;gap:7px;flex-wrap:wrap;align-items:center;}

.tf-cfg-summary{
    display:none;align-items:center;gap:6px;
    font-size:11.5px;font-weight:700;color:var(--ink-2);
    background:var(--accent-soft);border:1px solid var(--chip-border);
    border-radius:20px;padding:5px 13px;letter-spacing:.3px;white-space:nowrap;
}
.tf-cfg-summary .glyphicon{font-size:11px;color:var(--accent);opacity:.85;}
@media (min-width:768px){ .tf-cfg-summary{display:inline-flex;} }

.tf-btn{
    border:1px solid var(--btn-border);background:var(--btn-bg);color:var(--ink-2);
    border-radius:9px;padding:5px 15px;font-size:13.5px;font-weight:700;
    cursor:pointer;outline:none;white-space:nowrap;
    transition:transform .15s ease, background .15s ease, box-shadow .15s ease, border-color .15s;
    box-shadow:0 1px 3px rgba(0,0,0,.08);
    user-select:none;
}
.tf-btn .glyphicon{font-size:12px;margin-right:3px;opacity:.9;}
.tf-btn:hover{background:var(--accent-soft);border-color:var(--accent-2);transform:translateY(-1px);box-shadow:0 4px 10px rgba(0,0,0,.12);}
.tf-btn:active{transform:translateY(1px) scale(.985);box-shadow:none;}
.tf-btn.primary{background:var(--btn-primary);border-color:var(--btn-primary-b);color:#fff;}
.tf-btn.primary:hover{filter:brightness(1.08);}
.tf-btn.warn{color:var(--btn-warn);border-color:var(--btn-warn-border);}
.tf-btn.warn:hover{background:var(--error-bg);}
.tf-btn[disabled]{opacity:.42;cursor:not-allowed;transform:none;}

.tf-panel{
    background:var(--panel-bg);border:1px solid var(--panel-border);
    border-radius:13px;box-shadow:0 5px 18px rgba(0,0,0,.08);
    padding:11px 13px;margin-bottom:10px;backdrop-filter:blur(4px);
}

#canvasWrap{
    position:relative;width:100%;border-radius:11px;overflow:hidden;
    background:#cfe0e8;line-height:0;border:1px solid var(--canvas-frame);
    display:flex;align-items:center;justify-content:center;
}
#gameCanvas{display:block;max-width:100%;max-height:100%;}

.tf-typing-panel{padding:12px 14px 14px;}

.tf-target-wrap{
    position: relative;
    width: 100%;
    background: var(--target-bg);
    border: 2px solid var(--panel-border);
    border-radius: 11px;
    cursor: text;
    overflow: hidden;
    transition: box-shadow .22s ease, border-color .22s ease, background .22s ease;
}
.tf-target-wrap.focused{
    border-color: var(--accent-2);
    box-shadow: 0 0 0 4px rgba(80,160,120,.16);
}
.tf-target-wrap.success{
    border-color: var(--ok);
    box-shadow: 0 0 0 4px rgba(80,180,120,.28);
    background: var(--accent-soft);
}
.tf-target-wrap.error{
    border-color: var(--error-border);
    box-shadow: 0 0 0 4px rgba(200,80,80,.15);
    background: var(--error-bg);
}
.tf-target-wrap.disabled{cursor: default;}

.tf-target{
    font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,"Courier New","PingFang SC","Microsoft YaHei",monospace;
    font-size:20px;line-height:1.72;letter-spacing:1.1px;
    white-space:pre-wrap;word-break:break-word;
    min-height:74px;padding:11px 15px;
    user-select:none;
    color: var(--ink-3);
    position: relative;
    z-index: 1;
}
.tf-target .ch{color:var(--ink-3);transition:color .1s,background .1s;}
.tf-target .ch.ok{color:var(--ok);background:rgba(80,180,120,.16);border-radius:3px;font-weight:700;}
.tf-target .ch.bad{color:#fff;background:var(--error);border-radius:3px;font-weight:700;}
.tf-target .ch.space{min-width:8px;display:inline-block;}

.tf-cursor{
    display:inline-block;
    width:2.5px;
    height:1.08em;
    background: var(--accent);
    vertical-align:-0.18em;
    border-radius:1.5px;
    margin: 0 0.5px;
    box-shadow: 0 0 6px rgba(80,160,120,.55);
    animation: tfBlink 1.05s step-end infinite;
}
@keyframes tfBlink{
    0%, 49% { opacity: 1; }
    50%, 100% { opacity: 0; }
}

.tf-input-hidden{
    position:absolute;
    top:0; left:0;
    width:100%;
    height:100%;
    padding:0;
    margin:0;
    border:none;
    outline:none;
    background:transparent;
    color:transparent;
    caret-color:transparent;
    opacity:0.01;
    font-size:16px;
    z-index: 2;
    cursor: text;
    resize: none;
    -webkit-appearance: none;
    appearance: none;
    -webkit-user-select: text;
    user-select: text;
}
.tf-input-hidden:disabled{cursor: default;}

.tf-hint{
    margin-top:8px;font-size:12px;color:var(--ink-3);
    display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;
}
.tf-hint b{color:var(--accent);}

.tf-unitbar{
    display:grid;grid-template-columns: repeat(4, 1fr);gap: 8px;margin-top: 12px;
}
@media (max-width: 767px){ .tf-unitbar{grid-template-columns: repeat(2, 1fr);} }
@media (max-width: 380px){ .tf-unitbar{grid-template-columns: 1fr;} }

.unit-card{
    display:flex;align-items:center;gap:9px;
    padding:8px 10px;border:2px solid var(--chip-border);border-radius:12px;
    background:var(--card-bg);cursor:pointer;user-select:none;position:relative;
    transition:transform .18s ease,border-color .18s,box-shadow .18s,background .18s,opacity .3s;
    min-width:0;
}
.unit-card:hover{transform:translateY(-3px);border-color:var(--accent-2);box-shadow:0 8px 20px rgba(0,0,0,.14);}
.unit-card:active{transform:translateY(-1px) scale(.985);}
.unit-card.active{
    border-color:var(--accent);background:var(--accent-soft);
    box-shadow:0 0 0 3px rgba(80,160,120,.20),0 6px 16px rgba(0,0,0,.12);
}
.unit-card.locked{
    opacity:.55;cursor:not-allowed;filter:grayscale(.65);background:var(--chip-bg);
}
.unit-card.locked:hover{transform:none;border-color:var(--chip-border);box-shadow:0 1px 3px rgba(0,0,0,.06);}
.unit-card.locked:active{transform:none;}
.unit-card.locked .swatch-icon{
    transform:none !important;
    box-shadow: inset 0 -2px 0 rgba(0,0,0,.06), 0 2px 6px rgba(0,0,0,.06) !important;
}
.unit-card.locked .uc-badge{background:var(--ink-3);}
.unit-card.shake{animation: tfShake .4s ease;}
@keyframes tfShake{
    0%,100%{transform:translateX(0);}
    25%{transform:translateX(-5px);}
    75%{transform:translateX(5px);}
}
.unit-card.just-unlocked{animation: tfJustUnlocked 1.6s ease;}
@keyframes tfJustUnlocked{
    0%{transform:scale(1);box-shadow:0 0 0 0 rgba(255,200,60,.85);}
    30%{transform:scale(1.10);box-shadow:0 0 0 14px rgba(255,200,60,0);}
    60%{transform:scale(1.05);box-shadow:0 0 0 20px rgba(255,200,60,0);}
    100%{transform:scale(1);box-shadow:0 0 0 0 rgba(255,200,60,0);}
}

.swatch-icon{
    width: 36px;height: 36px;border-radius: 11px;
    display:flex;align-items:center;justify-content:center;
    font-size: 21px;line-height: 1;flex-shrink:0;
    background: linear-gradient(135deg, rgba(255,255,255,.92), rgba(240,248,240,.85));
    border: 1.5px solid var(--chip-border);
    box-shadow: inset 0 -2px 0 rgba(0,0,0,.06), 0 2px 6px rgba(0,0,0,.06);
    transition: transform .22s cubic-bezier(.34,1.56,.64,1), box-shadow .22s;
    font-family: "Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif;
    -webkit-user-select:none;user-select:none;
}
.unit-card:hover:not(.locked) .swatch-icon{transform: scale(1.14) rotate(-6deg);}
.unit-card.active .swatch-icon{
    border-color: var(--accent);
    box-shadow: inset 0 -2px 0 rgba(0,0,0,.06), 0 0 0 3px rgba(80,160,120,.20);
    transform: scale(1.05);
}

.unit-card .uc-body{flex:1;min-width:0;}
.unit-card .uc-name{font-size:13px;font-weight:800;color:var(--ink);line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.unit-card .uc-name small{font-size:9px;font-weight:600;color:var(--ink-3);letter-spacing:.4px;}
.unit-card .uc-stats{font-size:9.5px;color:var(--ink-2);margin-top:2px;display:flex;gap:5px;flex-wrap:wrap;font-weight:700;white-space:nowrap;overflow:hidden;}
.unit-card .uc-badge{
    position:absolute;top:4px;right:6px;font-size:8px;font-weight:800;
    color:#fff;background:var(--accent-2);border-radius:20px;padding:1px 5px;letter-spacing:.3px;
    white-space:nowrap;
}
.unit-card.active .uc-badge{background:var(--accent);}
@media (max-width:767px){
    .unit-card .uc-badge{display:none;}
    .unit-card .uc-name{font-size:12px;}
    .unit-card .uc-stats{font-size:9px;gap:4px;}
    .swatch-icon{width:32px;height:32px;font-size:18px;}
}

.tf-footer{display:flex;flex-direction:column;align-items:center;margin-top:6px;}
.tf-about-toggle{margin-bottom: 10px;}
.tf-about{
    display:none;width: 100%;padding: 14px 18px;
    background: var(--panel-bg);border: 1px solid var(--panel-border);
    border-radius: 13px;font-size: 13px;line-height: 1.85;
    color: var(--ink-2);box-shadow: 0 5px 18px rgba(0,0,0,.06);
}
.tf-about h2{font-size:15px;color:var(--accent);margin:0 0 8px;font-weight:800;letter-spacing:.5px;}
.tf-about h3{font-size:13.5px;color:var(--accent);margin:12px 0 5px;font-weight:800;letter-spacing:.3px;}
.tf-about h3:first-of-type{margin-top:0;}
.tf-about p{margin:0 0 8px;}
.tf-about strong{color: var(--accent);}
.tf-about .tag-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;}
.tf-about .tag-list span{
    font-size:11px;padding:2px 9px;border-radius:12px;
    background: var(--accent-soft); color: var(--accent); font-weight:700;
}
@media (max-width:767px){
    .tf-about{font-size:12px;padding:12px 14px;}
    .tf-about h2{font-size:14px;}
    .tf-about h3{font-size:12.5px;}
}

.tf-modal{
    position:fixed;inset:0;background:rgba(20,34,26,.55);
    display:none;z-index:3000;padding:22px 16px;overflow-y:auto;
    -webkit-overflow-scrolling:touch;backdrop-filter:blur(3px);
}
.tf-modal.show{display:flex;align-items:flex-start;justify-content:center;animation:tfFade .18s ease;}
@keyframes tfFade{from{opacity:0}to{opacity:1}}
.tf-modal-box{
    background:var(--panel-bg);border-radius:16px;max-width:600px;width:100%;
    padding:22px 26px 20px;box-shadow:0 26px 64px rgba(0,0,0,.38);
    border:1px solid var(--panel-border);margin:auto;
    animation:tfPop .24s cubic-bezier(.2,1.2,.4,1);
}
@keyframes tfPop{from{transform:translateY(14px) scale(.97);opacity:0}to{transform:none;opacity:1}}
.tf-modal-box h3{
    margin:0 0 16px;font-size:18px;color:var(--accent);font-weight:800;
    display:flex;align-items:center;gap:9px;
}
.tf-modal-box h3 .tag{
    font-size:10px;background:var(--accent-soft);color:var(--accent);
    padding:2px 9px;border-radius:20px;font-weight:800;letter-spacing:1px;
}
.tf-modal-box .close-row{display:flex;justify-content:flex-end;margin-top:20px;gap:8px;}

.tf-set-group{margin-bottom:18px;}
.tf-set-group:last-of-type{margin-bottom:0;}
.tf-set-label{
    font-size:11.5px;color:var(--ink-3);margin-bottom:8px;
    letter-spacing:1.2px;font-weight:800;
    display:flex;align-items:center;gap:6px;
}
.tf-set-label .glyphicon{font-size:11px;color:var(--accent);opacity:.85;}
.tf-set-label span{color:var(--ink-3);font-weight:500;letter-spacing:0;margin-left:6px;font-size:10.5px;opacity:.8;}
.tf-chips{display:flex;flex-wrap:wrap;gap:8px;}
.tf-chip{
    border:1px solid var(--chip-border);background:var(--chip-bg);color:var(--ink-2);
    font-size:12.5px;font-weight:700;padding:7px 15px;border-radius:20px;
    cursor:pointer;transition:all .15s ease;outline:none;
    display:flex;flex-direction:column;align-items:center;line-height:1.35;font-family:inherit;
}
.tf-chip small{font-size:9.5px;color:var(--ink-3);font-weight:500;letter-spacing:0;margin-top:1px;}
.tf-chip:hover{background:var(--accent-soft);border-color:var(--accent-2);transform:translateY(-1px);}
.tf-chip:active{transform:translateY(0) scale(.97);}
.tf-chip.active{background:var(--chip-active);border-color:transparent;color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.22);}
.tf-chip.active small{color:rgba(255,255,255,.82);}

.theme-chip{
    display:flex;align-items:center;gap:9px;
    border:2px solid var(--chip-border);background:var(--card-bg);
    padding:8px 14px;border-radius:11px;cursor:pointer;
    font-size:12.5px;font-weight:700;color:var(--ink-2);
    transition:all .15s ease;outline:none;font-family:inherit;
}
.theme-chip:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(0,0,0,.13);}
.theme-chip:active{transform:translateY(0) scale(.97);}
.theme-chip.active{border-color:var(--accent);box-shadow:0 0 0 3px rgba(80,160,120,.22);}
.theme-swatch{display:flex;gap:3px;}
.theme-swatch i{width:13px;height:20px;border-radius:4px;display:block;}

.tf-rules{font-size:13px;line-height:1.9;color:var(--ink-2);}
.tf-rules ol{padding-left:19px;margin:0;}
.tf-rules li{margin-bottom:6px;}
.tf-rules b{color:var(--accent);}
.tf-rules .hl{background:var(--accent-soft);border-radius:5px;padding:0 5px;color:var(--accent);font-weight:800;}
.tf-rules .sec-title{
    font-weight:800;color:var(--accent);font-size:13.5px;margin:14px 0 5px;
    border-left:3px solid var(--accent);padding-left:9px;
}
.tf-rules .sec-title:first-child{margin-top:0;}
.tf-rules p{margin:0;}
.tf-rules .diff-table{
    width:100%;border-collapse:collapse;margin:6px 0 10px;font-size:12px;
}
.tf-rules .diff-table th,.tf-rules .diff-table td{
    border:1px solid var(--chip-border);padding:5px 8px;text-align:left;
}
.tf-rules .diff-table th{
    background:var(--accent-soft);color:var(--accent);font-weight:800;
}
.tf-rules .diff-table td{background:var(--card-bg);}

.report-box{max-width:560px;padding:0;overflow:hidden;display:flex;flex-direction:column;}
.report-hero{
    padding:24px 24px 20px;text-align:center;
    border-bottom:1px solid var(--panel-border);position:relative;
}
.report-hero.win{background:linear-gradient(180deg,var(--accent-soft),transparent);}
.report-hero.lose{background:linear-gradient(180deg,var(--error-bg),transparent);}
.rh-icon{font-size:42px;line-height:1;margin-bottom:8px;display:block;}
.report-hero.win .rh-icon{color:var(--ok);text-shadow:0 4px 12px rgba(80,180,120,.35);}
.report-hero.lose .rh-icon{color:var(--btn-warn);text-shadow:0 4px 12px rgba(200,100,80,.30);}
.rh-title{font-size:28px;font-weight:900;letter-spacing:7px;margin-bottom:6px;}
.report-hero.win .rh-title{color:var(--ok);}
.report-hero.lose .rh-title{color:var(--btn-warn);}
.rh-sub{font-size:12.5px;color:var(--ink-3);font-weight:700;letter-spacing:.5px;}

.report-body{padding:18px 24px 4px;}
.report-section{margin-bottom:16px;}
.report-section:last-child{margin-bottom:0;}
.report-sec-title{
    font-size:12px;font-weight:800;color:var(--ink-2);letter-spacing:1.5px;
    margin-bottom:10px;display:flex;align-items:center;gap:6px;text-transform:uppercase;
}
.report-sec-title .glyphicon{font-size:12px;color:var(--accent);opacity:.85;}
.report-sec-title::after{
    content:'';flex:1;height:1px;
    background:linear-gradient(90deg,var(--panel-border),transparent);
}
.report-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;}
.report-item{
    background:var(--accent-soft);border:1px solid var(--chip-border);
    border-radius:11px;padding:10px 6px 9px;text-align:center;
    transition:transform .15s ease,box-shadow .15s ease;
}
.report-item:hover{transform:translateY(-2px);box-shadow:0 5px 14px rgba(0,0,0,.10);}
.report-item .ri-icon{font-size:15px;color:var(--accent);opacity:.80;display:block;margin-bottom:4px;}
.report-item .ri-value{font-size:19px;font-weight:800;color:var(--accent);line-height:1.1;letter-spacing:.3px;}
.report-item .ri-label{font-size:10px;color:var(--ink-3);margin-top:3px;letter-spacing:.6px;font-weight:700;}

.report-tip{
    margin:0 24px 4px;padding:11px 14px;
    background:var(--accent-soft);border-left:3px solid var(--accent);
    border-radius:8px;font-size:12.5px;color:var(--ink-2);line-height:1.65;
    display:flex;align-items:flex-start;gap:8px;
}
.report-tip .glyphicon{color:var(--accent);font-size:13px;margin-top:2px;flex-shrink:0;}
.report-tip:empty{display:none;}
.report-box .close-row{
    padding:18px 24px 20px;margin:0;
    border-top:1px solid var(--panel-border);
    justify-content:center;background:var(--accent-soft);
}
.report-box .close-row .tf-btn{min-width:110px;justify-content:center;display:inline-flex;align-items:center;}

@media (max-width:991px){
    .tf-target{font-size:18px;}
    .tf-brand .sub{display:none;}
}
@media (max-width:767px){
    .tf-wrap{padding:10px 10px 20px;}
    .tf-brand .logo{font-size:19px;}
    .tf-actions{gap:5px;}
    .tf-btn{padding:6px 11px;font-size:12px;}
    .tf-target{font-size:16px;padding:10px 12px;min-height:64px;}
    .tf-modal{padding:14px 10px;}
    .tf-modal-box{padding:18px 18px 16px;border-radius:14px;}
    .report-box{padding:0;}
    .report-hero{padding:20px 18px 16px;}
    .rh-icon{font-size:34px;}
    .rh-title{font-size:23px;letter-spacing:5px;}
    .report-body{padding:15px 18px 2px;}
    .report-tip{margin:0 18px 4px;}
    .report-box .close-row{padding:15px 18px 17px;}
    .report-grid{grid-template-columns:repeat(2,1fr);}
    .tf-rules .diff-table{font-size:11px;}
    .tf-rules .diff-table th,.tf-rules .diff-table td{padding:4px 6px;}
}
@media (max-width:479px){
    .tf-wrap{padding:8px 8px 16px;}
    .tf-brand .logo{font-size:17px;}
    .tf-actions{width:100%;}
    .tf-actions .tf-btn{flex:1 1 0;text-align:center;justify-content:center;display:inline-flex;align-items:center;}
    .tf-hint{font-size:11px;}
    .report-grid{grid-template-columns:repeat(2,1fr);gap:7px;}
    .report-item .ri-value{font-size:17px;}
}
@media (hover:none){
    .tf-btn:hover,.unit-card:hover,.report-item:hover{transform:none;box-shadow:0 1px 3px rgba(0,0,0,.08);}
}