2026-02-16 01:23:58 +08:00
html { scroll-behavior : smooth ; }
2026-03-09 21:38:02 +08:00
body { background : #ffffff !important ; }
2026-02-16 01:23:58 +08:00
. tool-home { display : grid ; grid-template-columns : 208 px minmax ( 0 , 1 fr ) ; gap : .72 rem ; align-items : start ; }
2026-03-09 21:38:02 +08:00
. tool-side { position : sticky ; top : .72 rem ; border : 1 px solid #e5e7eb ; border-radius : 12 px ; background : #ffffff ; box-shadow : 0 1 px 3 px rgba ( 0 , 0 , 0 , 0.08 ) ; padding : .6 rem .48 rem ; max-height : calc ( 100 vh - 1.44 rem ) ; overflow : auto ; }
2026-02-16 01:23:58 +08:00
. tool-side-logo { display : flex ; align-items : center ; gap : .38 rem ; padding : .22 rem .3 rem .56 rem ; border-bottom : 1 px solid var ( - - line ) ; margin-bottom : .36 rem ; font-family : "Outfit" , "Noto Sans SC" , sans-serif ; color : var ( - - text - main ) ; font-size : 1.12 rem ; font-weight : 800 ; }
. tool-side-logo-dot { width : 1.35 rem ; height : 1.35 rem ; border-radius : .38 rem ; background : linear-gradient ( 135 deg , #a777ff , #6e77ff ) ; color : #fff ; font-size : .68 rem ; font-weight : 700 ; display : inline-flex ; align-items : center ; justify-content : center ; }
. tool-side-links { display : grid ; gap : .16 rem ; }
. tool-side-link { display : grid ; grid-template-columns : 1 rem minmax ( 0 , 1 fr ) auto ; align-items : center ; gap : .42 rem ; border : 1 px solid transparent ; border-radius : .58 rem ; text-decoration : none ; color : #4e6189 ; padding : .38 rem .42 rem ; font-size : .82 rem ; transition : .16 s ease ; }
. tool-side-link : hover , . tool-side-link . active , . tool-side-link . is-active { border-color : var ( - - line - strong ) ; background : var ( - - brand - soft ) ; color : #21345f ; box-shadow : inset 3 px 0 0 #5f72ff ; }
. tool-side-link i { color : #687ba2 ; text-align : center ; }
. tool-side-link small { color : #97a9c8 ; font-size : .7 rem ; }
. tool-main { min-width : 0 ; display : grid ; gap : .62 rem ; }
2026-03-09 21:38:02 +08:00
. tool-hero { border : 1 px solid #e5e7eb ; border-radius : 12 px ; background : #ffffff ; box-shadow : 0 1 px 3 px rgba ( 0 , 0 , 0 , 0.08 ) ; padding : 1.2 rem 1 rem 1 rem ; text-align : center ; }
. tool-chip { display : inline-flex ; border : 1 px solid var ( - - line - strong ) ; border-radius : 999 px ; background : var ( - - bg - surface ) ; color : #6f81a7 ; font-size : .68 rem ; font-weight : 700 ; padding : .14 rem .5 rem ; margin-bottom : .4 rem ; }
. tool-title { margin : 0 0 .24 rem ; font-family : "Outfit" , "Noto Sans SC" , sans-serif ; font-size : clamp ( 1.8 rem , 3 vw , 2.8 rem ) ; font-weight : 800 ; color : var ( - - text - main ) ; line-height : 1.1 ; }
. tool-sub { margin : 0 0 .7 rem ; color : var ( - - text - muted ) ; font-size : .92 rem ; max-width : 600 px ; margin-left : auto ; margin-right : auto ; }
2026-02-16 01:23:58 +08:00
: root [ data-theme = "dark" ] . tool-hero { background : linear-gradient ( 180 deg , #1b2849 0 , #16223f 100 % ) ; }
2026-03-09 21:38:02 +08:00
. tool-search { margin : 0 auto .8 rem ; width : min ( 860 px , 100 % ) ; display : grid ; grid-template-columns : minmax ( 0 , 1 fr ) auto ; gap : .38 rem ; border : 1 px solid var ( - - line - strong ) ; border-radius : 999 px ; background : var ( - - bg - surface ) ; padding : .3 rem ; }
. tool-search input { border : 0 ; box-shadow : none ; height : 2.4 rem ; padding : 0 1 rem ; background : transparent ; color : var ( - - text - main ) ; font-size : .9 rem ; }
. tool-search button { border-radius : 999 px ; min-width : 100 px ; height : 2.4 rem ; font-size : .88 rem ; font-weight : 600 ; }
2026-02-16 01:23:58 +08:00
2026-03-09 21:38:02 +08:00
. tool-kpis { display : grid ; grid-template-columns : repeat ( 4 , minmax ( 0 , 1 fr ) ) ; gap : .6 rem ; margin-top : .8 rem ; margin-bottom : .6 rem ; }
. tool-kpi { border : 1 px solid #e5e7eb ; border-radius : .8 rem ; background : #ffffff ; box-shadow : 0 1 px 3 px rgba ( 0 , 0 , 0 , 0.08 ) ; padding : .56 rem .6 rem ; text-align : center ; }
. tool-kpi . label { display : block ; color : #7b8fb2 ; font-size : .76 rem ; margin-bottom : .2 rem ; }
. tool-kpi . value { font-family : "Outfit" , "Noto Sans SC" , sans-serif ; font-size : 1.2 rem ; font-weight : 800 ; color : var ( - - text - main ) ; line-height : 1.1 ; }
2026-02-16 01:23:58 +08:00
2026-03-09 21:38:02 +08:00
. tool-channel { border : none ; border-radius : 12 px ; background : transparent ; padding : .6 rem ; display : grid ; grid-template-columns : 70 px repeat ( 4 , minmax ( 0 , 1 fr ) ) ; gap : .5 rem ; }
. tool-channel-mini { border : 1 px solid #e5e7eb ; border-radius : 10 px ; background : #ffffff ; box-shadow : 0 1 px 3 px rgba ( 0 , 0 , 0 , 0.08 ) ; display : grid ; gap : .4 rem ; padding : .5 rem .35 rem ; }
. tool-channel-mini a { text-decoration : none ; color : #5f7399 ; font-size : .76 rem ; text-align : center ; }
. tool-channel-mini a i { display : block ; font-size : 1.1 rem ; margin-bottom : .2 rem ; color : var ( - - brand - strong ) ; }
. tool-channel-card { border : 1 px solid #e5e7eb ; border-radius : 10 px ; min-height : 110 px ; display : flex ; align-items : flex-end ; justify-content : flex-start ; text-decoration : none ; font-family : "Outfit" , "Noto Sans SC" , sans-serif ; font-size : .96 rem ; font-weight : 700 ; color : #fff ; background-size : cover ; background-position : center ; position : relative ; overflow : hidden ; padding : .6 rem ; box-shadow : 0 1 px 3 px rgba ( 0 , 0 , 0 , 0.08 ) ; }
2026-02-16 01:23:58 +08:00
. tool-channel-card :: after { content : '' ; position : absolute ; inset : 0 ; background : linear-gradient ( 180 deg , rgba ( 20 , 32 , 56 , .08 ) , rgba ( 20 , 32 , 56 , .68 ) ) ; }
. tool-channel-card span { position : relative ; z-index : 1 ; }
2026-03-09 21:38:02 +08:00
. tool-banner-row { display : grid ; grid-template-columns : repeat ( 2 , minmax ( 0 , 1 fr ) ) ; gap : .6 rem ; }
. tool-banner { border : 1 px solid #e5e7eb ; border-radius : 10 px ; background : #ffffff ; min-height : 80 px ; display : flex ; align-items : center ; justify-content : space-between ; gap : .6 rem ; padding : .65 rem .8 rem ; text-decoration : none ; transition : .16 s ease ; box-shadow : 0 1 px 3 px rgba ( 0 , 0 , 0 , 0.08 ) ; }
. tool-banner : hover { transform : translateY ( -2 px ) ; box-shadow : 0 8 px 20 px rgba ( 0 , 0 , 0 , 0.12 ) ; border-color : #d1d5db ; }
. tool-banner . alt { background : #f9fafb ; }
. tool-banner b { color : var ( - - text - main ) ; font-size : 1.1 rem ; font-family : "Outfit" , "Noto Sans SC" , sans-serif ; font-weight : 700 ; }
. tool-banner small { border : 1 px solid var ( - - line - strong ) ; border-radius : 999 px ; background : var ( - - bg - surface ) ; color : #5f749a ; font-size : .76 rem ; padding : .16 rem .5 rem ; }
2026-02-16 01:23:58 +08:00
2026-03-09 21:38:02 +08:00
. tool-section { border : none ; border-radius : 12 px ; background : transparent ; padding : .7 rem ; scroll-margin-top : 1 rem ; }
. tool-section-head { display : flex ; align-items : center ; justify-content : space-between ; margin-bottom : .56 rem ; }
. tool-section-head h2 { margin : 0 ; color : var ( - - text - main ) ; font-size : 1.08 rem ; font-family : "Outfit" , "Noto Sans SC" , sans-serif ; font-weight : 700 ; }
. tool-section-head a { color : var ( - - brand - strong ) ; text-decoration : none ; font-size : .8 rem ; font-weight : 600 ; transition : color .16 s ease ; }
. tool-section-head a : hover { color : var ( - - brand ) ; }
2026-02-16 01:23:58 +08:00
2026-03-09 21:38:02 +08:00
. tool-grid { display : grid ; grid-template-columns : repeat ( 4 , minmax ( 0 , 1 fr ) ) ; gap : .6 rem ; }
. tool-card { border : 1 px solid #e5e7eb ; border-radius : 10 px ; background : #ffffff ; box-shadow : 0 1 px 3 px rgba ( 0 , 0 , 0 , 0.08 ) ; padding : .7 rem .75 rem ; text-decoration : none ; transition : .18 s ease ; position : relative ; overflow : hidden ; display : flex ; flex-direction : column ; height : 100 % ; }
. tool-card : hover { transform : translateY ( -3 px ) ; box-shadow : 0 8 px 20 px rgba ( 0 , 0 , 0 , 0.12 ) ; border-color : #d1d5db ; }
. tool-card-icon { width : 48 px ; height : 48 px ; border-radius : 10 px ; background : #f8fafc ; display : flex ; align-items : center ; justify-content : center ; margin-bottom : .5 rem ; flex-shrink : 0 ; overflow : hidden ; }
. tool-card-icon img { width : 100 % ; height : 100 % ; object-fit : contain ; }
. tool-card-name { color : var ( - - text - main ) ; font-size : .96 rem ; line-height : 1.3 ; font-weight : 700 ; margin-bottom : .25 rem ; flex-shrink : 0 ; }
. tool-card-meta { color : var ( - - text - muted ) ; font-size : .78 rem ; margin-bottom : .45 rem ; flex-shrink : 0 ; }
. tool-card-desc { color : var ( - - text - muted ) ; font-size : .8 rem ; line-height : 1.4 ; margin : 0 0 .6 rem ; flex-grow : 1 ; display : -webkit- box ; -webkit- line-clamp : 2 ; -webkit- box-orient : vertical ; overflow : hidden ; }
. tool-card-footer { display : flex ; align-items : center ; justify-content : space-between ; gap : .4 rem ; margin-top : auto ; flex-shrink : 0 ; }
. tool-card-tag { display : inline-flex ; border : 1 px solid var ( - - line - strong ) ; border-radius : 999 px ; padding : .14 rem .5 rem ; color : var ( - - brand - strong ) ; background : var ( - - brand - soft ) ; font-size : .72 rem ; font-weight : 500 ; flex-shrink : 0 ; }
. tool-card-date { color : #97a9c8 ; font-size : .7 rem ; flex-shrink : 0 ; white-space : nowrap ; }
. channel-tabs { display : flex ; align-items : center ; gap : .4 rem ; flex-wrap : wrap ; justify-content : center ; margin-top : .6 rem ; }
. channel-tab { border : 1 px solid transparent ; border-radius : 999 px ; padding : .24 rem .65 rem ; color : #56698d ; text-decoration : none ; font-size : .82 rem ; white-space : nowrap ; transition : .16 s ease ; font-weight : 500 ; }
. channel-tab . active , . channel-tab : hover { border-color : #d7dff1 ; background : #f4f7ff ; color : #27406f ; }
2026-02-16 01:23:58 +08:00
@ media ( max-width : 1199px ) {
. tool-home { grid-template-columns : 1 fr ; }
. tool-side { position : static ; max-height : none ; }
. tool-grid { grid-template-columns : repeat ( 4 , minmax ( 0 , 1 fr ) ) ; }
}
2026-03-09 21:38:02 +08:00
@ media ( max-width : 991px ) {
. tool-grid { grid-template-columns : repeat ( 3 , minmax ( 0 , 1 fr ) ) ; }
}
2026-02-16 01:23:58 +08:00
@ media ( max-width : 767px ) {
. tool-kpis { grid-template-columns : repeat ( 2 , minmax ( 0 , 1 fr ) ) ; }
. tool-grid { grid-template-columns : repeat ( 2 , minmax ( 0 , 1 fr ) ) ; }
. tool-search { grid-template-columns : 1 fr ; border-radius : 12 px ; }
. tool-search button { width : 100 % ; border-radius : 10 px ; }
. tool-channel { grid-template-columns : repeat ( 2 , minmax ( 0 , 1 fr ) ) ; }
. tool-banner-row { grid-template-columns : 1 fr ; }
2026-03-09 21:38:02 +08:00
. tool-hero { padding : 1 rem .8 rem ; }
. tool-title { font-size : clamp ( 1.6 rem , 6 vw , 2.2 rem ) ; }
}
@ media ( max-width : 575px ) {
. tool-grid { grid-template-columns : 1 fr ; }
. tool-kpis { grid-template-columns : 1 fr ; }
. tool-channel { grid-template-columns : 1 fr ; }
2026-02-16 01:23:58 +08:00
}